PureBytes Links
Trading Reference Links
|
Hi Tomasz,
The codes produce wrong exit as I mentioned. I produced a sample code
to demonstrate that Amibroker sometimes gives wrong exit signals, and
for this reason it is not reliable.
If you backtest the following code, you can find cases, where the
close hits below the StopLoss but no Sell signal is given the next
day at Open. Try to analyse the longest #bars trades, so that you can
find sooner or later trades with missed Sell signals.
I had to browse through the AFL code library to find this Equity(1)
trick as the documentation is poor on Equity and ApplyStop functions.
I must repeat myself that Amibroker works like a black box, only you
know how it works. It is very hard to program it without proper
documentation and without beeing able to analyse what happens with
signals, why the are missed.
Best regards,
Zozu
//////////Parameters/////////////
NumPos= 100;
InitEq=10000;
StopLoss=3;
ProfitTarget=5;
SetOption("AllowSameBarExit",0);
SetOption( "CommissionMode", 1 );
SetOption( "CommissionAmount", 0.15 );
SetOption( "InitialEquity", InitEq);
SetOption( "PriceBoundChecking", 1);
SetOption( "ActivateStopsImmediately",
1);
SetTradeDelays( 1, 1, 1, 1 );
/////////fix positionsize////////////////////
SetOption("MaxOpenPositions", NumPos);
PositionSize =InitEq/NumPos;
//////////Formula/////////////////
Buy = Cross(RSI(),30);
BuyPrice=O;//
//////////Exit StopLoss-ProfitTarget/////////
Sell=C<ValueWhen(Ref(Buy,-1),O,1)*(1-StopLoss/100);
ApplyStop(stopTypeProfit,stopModePercent,ProfitTarget,ExitAtStop =
1,Volatile = False, ReentryDelay = 1 ); // +
SellPrice=O;
Equity(1); //stop signals are implemented and redundant signals are
removed (use for visualisation)
//Chart draw:
Plot(ValueWhen(Ref(Buy,-1),O,1)*(1-
StopLoss/100),"SL",colorWhite,styleThick);
Plot(ValueWhen(Ref(Buy,-1),O,1)*
(1+ProfitTarget/100),"SL",colorWhite,styleThick);
--- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@xxx>
wrote:
>
> Hello,
>
> The codes are correct.
> You can get same buyprice and sell price
> for two reasons
> a) your system generates regular exit at bar that happens to have
same price as entry bar
> b) the NEXT bar after stop penetration bar happens to have same
price as entry bar.
>
> If you recollect what original poster asked for,
> " want the stop function to check the PREVIOUS day Close instead
of the H-L range."
>
> So if current CLOSE price is X% lower than trade entry price (open)
then trade
> is exited NEXT bar. This is as per requirement of original poster.
> Since the stop is executed at next bar, the price may be higher or
lower than actual
> stop target.
> If it happens that next bar open gaps up to the price of entry bar
you will see the same price.
>
> If you can not program by yourself, there are 3rd party AFL coding
services available either
> at www.aflwriting.com or www.patternexplorer.com or support at
amibroker.com can write
> code for the fee http://www.amibroker.com/freesupport.html
>
> Best regards,
> Tomasz Janeczko
> amibroker.com
> ----- Original Message -----
> From: "zozuzoza" <zozuka@xxx>
> To: <amibroker@xxxxxxxxxxxxxxx>
> Sent: Tuesday, October 14, 2008 5:15 PM
> Subject: [amibroker] Re: Applystop StopLoss - trade on next day
OPEN when PREVIOUS day CLOSE
>
>
> > Hi,
> >
> > Both codes are WRONG. There are trades with the same buyprice and
> > sellprice, i.e. 0% profit.
> >
> > I am sorry to say that it is not possible to program a useful
system
> > with combined StopLoss and Profittarget with TRADE DELAY in
> > Amibroker. Let's forget the trailing stop that we discussed
below.
> > Let's make it simple.
> >
> > OK, show me a simple system that has any buy condition based on
Close
> > price and Buyprice is on next day Open. It exits anytime if the
High
> > hits Profittarget% OR it exits if the Close price drops below
StopLoss
> > % of the BuyPrice and exits on next day at Open price.
> >
> > Please copy the code here and I will show you that it has wrong
exits.
> >
> > BR,
> > Zozuka
> >
> >
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@>
> > wrote:
> >>
> >> Hello,
> >>
> >> Of course it should be:
> >> ApplyStop( stopTypeLoss, stopModePoint, Close - High +
> > OrigStopAmount, 2, True );
> >>
> >> The rest (the second formula) is OK.
> >>
> >> Best regards,
> >> Tomasz Janeczko
> >> amibroker.com
> >> ----- Original Message -----
> >> From: "zozuzoza" <zozuka@>
> >> To: <amibroker@xxxxxxxxxxxxxxx>
> >> Sent: Tuesday, October 14, 2008 3:23 PM
> >> Subject: [amibroker] Re: Applystop StopLoss - trade on next day
> > OPEN when PREVIOUS day CLOSE
> >>
> >>
> >> > Hello,
> >> >
> >> > Please note that SetOption("AllowSameBarExit",1) is NOT wrong
> > because
> >> > I want to use Profittarget since Buyprice=Open triggered on
> > previous
> >> > day Buy signal (SetTradeDelays( 1, 1, 1, 1 )). I want to exit
on
> > the
> >> > same day with Profittarget if possible.
> >> >
> >> > Your code is not according to the AFL Function Reference,
which
> > says
> >> > ApplyStop( type, mode, amount, exitatstop, volatile = False,
> >> > ReEntryDelay = 0 )
> >> >
> >> > and your code is
> >> > ApplyStop( stopTypeLoss, stopModePoint, OrigStopAmount, Close
-
> > High
> >> > + OrigStopAmount, 2, True );
> >> >
> >> > I have already tried the 2nd code and I could not get it
right. I
> > try
> >> > again but I doubt that the exit signals will be right.
> >> >
> >> > Best regards,
> >> > Zozuka
> >> >
> >> > --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@>
> >> > wrote:
> >> >>
> >> >> Hello,
> >> >>
> >> >> *Everything* is possible in AFL.
> >> >> You can print it and hang over your desk.
> >> >>
> >> >> What's more there are usually many ways to do every thing.
> >> >> From complicated ones to easy ones.
> >> >>
> >> >> The fact that you don't know how to do given thing
> >> >> does not mean that it is impossible. It only means that
> >> >> you need to learn.
> >> >>
> >> >> Answering original poster:
> >> >> >> The settings I would like to use is as follows.
> >> >> >> SetOption("AllowSameBarExit",1);
> >> >> WRONG. Should be set to zero (false).
> >> >> This should be only set to true when SINGLE BAR trade is
allowed.
> >> >> In your case it is NOT because exit is based on PREVIOUS BAR
> > close.
> >> >>
> >> >> If you want to use CLOSE instead of High-Low range for stop
loss,
> >> >> you should simply use Volatile = True setting in ApplyStop
> >> >> and add the difference between High and Close to your stop
> > amount:
> >> >>
> >> >> OrigStopAmount = 0.3;
> >> >>
> >> >> ApplyStop( stopTypeLoss, stopModePoint, OrigStopAmount, Close
-
> >> > High + OrigStopAmount, 2, True );
> >> >>
> >> >> This is assuming that you need stop in points.
> >> >>
> >> >> The other method is presented in the Knowledge Base and it
does
> >> >> not require ApplyStop at all. It is general-purpose code for
any
> >> > kind of stop
> >> >> with any imaginable setup
> >> >> http://www.amibroker.com/kb/2007/03/24/how-to-plot-a-trailing-
> > stop-
> >> > in-the-price-chart/
> >> >>
> >> >> With modification of two lines we can adopt it to max. loss
stop
> >> > that acts on next
> >> >> open based on prev day penetration of stop level by close
price
> >> >>
> >> >> stopLevel = 1 - Param("stop %", 3, 0.1, 10, 0.1)/100;
> >> >>
> >> >> Buy = Cross( MACD(), Signal() );
> >> >> Sell = 0;
> >> >> trailARRAY = Null;
> >> >> trailstop = 0;
> >> >>
> >> >> for( i = 1; i < BarCount; i++ )
> >> >> {
> >> >> if( trailstop > 0 AND Low[ i ] < trailstop )
> >> >> {
> >> >> Sell[ i ] = 1;
> >> >> SellPrice[ i ] = Open[ i ];
> >> >> trailstop = 0;
> >> >> }
> >> >>
> >> >> if( trailstop == 0 AND Buy[ i ] )
> >> >> {
> >> >> trailstop = Close[ i ] * stoplevel;
> >> >> }
> >> >> else Buy[ i ] = 0; // remove excess buy signals
> >> >>
> >> >> if( trailstop > 0 )
> >> >> {
> >> >> trailARRAY[ i ] = trailstop;
> >> >> }
> >> >>
> >> >> }
> >> >>
> >> >> PlotShapes(Buy*shapeUpArrow,colorGreen,0,Low);
> >> >> PlotShapes(Sell*shapeDownArrow,colorRed,0,High);
> >> >>
> >> >> Plot( Close,"Price",colorBlack,styleBar);
> >> >> Plot( trailARRAY,"trailing stop level", colorRed );
> >> >>
> >> >> Best regards,
> >> >> Tomasz Janeczko
> >> >> amibroker.com
> >> >> ----- Original Message -----
> >> >> From: "zozuzoza" <zozuka@>
> >> >> To: <amibroker@xxxxxxxxxxxxxxx>
> >> >> Sent: Tuesday, October 14, 2008 2:16 PM
> >> >> Subject: [amibroker] Re: Applystop StopLoss - trade on next
day
> >> > OPEN when PREVIOUS day CLOSE
> >> >>
> >> >>
> >> >> > Unfortunately, this is not possible in AFL I am afraid. I
> > tried
> >> > the
> >> >> > following but does not work either because sometimes it
gives
> >> > wrong
> >> >> > signals.
> >> >> >
> >> >> > Sell=C<(1-StopLoss/100)*ValueWhen(Buy,Ref(O,1),1)
> >> >> >
> >> >> > I wonder if anybody managed to build proper trading system
> > based
> >> > on
> >> >> > EOD data in Amibroker, which can be used in real trading.
If
> > your
> >> >> > indicators are based on Close then you have to trade on
next
> > day
> >> >> > Open, in which case you need to use Settradedelays and you
are
> >> >> > immediately dead as AFL does not support this. If you want
to
> > use
> >> >> > combined StopLoss and Profittarget exits together, it does
not
> >> > work.
> >> >> > If you want to use combined Trailing stop and PT exits, it
> > does
> >> > not
> >> >> > work. You can find couple of useless examples in AFL
Function
> >> >> > Reference under ApplyStop, which has nothing to do with
real
> >> > trading.
> >> >> >
> >> >> > I am really disappointed with Amibroker and AFL. I have
been
> >> >> > programming it for 2 years so I know what I am talking
about.
> > You
> >> >> > cannot find out what the reason of the bad exit signals
are.
> > It
> >> > is
> >> >> > like a black box.
> >> >> >
> >> >> >
> >> >> > --- In amibroker@xxxxxxxxxxxxxxx, "zozuzoza" <zozuka@>
wrote:
> >> >> >>
> >> >> >> Hi,
> >> >> >>
> >> >> >> I would like to apply a stoploss on next day OPEN when
> > PREVIOUS
> >> > day
> >> >> >> CLOSE hits stop and Sellprice=Open. In the AFL library, I
> > could
> >> > only
> >> >> >> find the solution for
> >> >> >> "Scenario 3:
> >> >> >> you trade on next day OPEN and want to exit by stop on
OPEN
> > price
> >> >> >> when PREVIOUS day H-L range hits stop"
> >> >> >>
> >> >> >> This is almost good for me except I want the Applystop
> > function
> >> > to
> >> >> >> check the PREVIOUS day Close instead of the H-L range.
> >> >> >>
> >> >> >> The settings I would like to use is as follows.
> >> >> >> SetOption("AllowSameBarExit",1);
> >> >> >> SetOption( "ActivateStopsImmediately", 1);
> >> >> >> SetTradeDelays( 1, 1, 1, 1 );
> >> >> >> BuyPrice=O;
> >> >> >> SellPrice=O;
> >> >> >>
> >> >> >> I am stucked. Could anybody help me please how I can do it.
> >> >> >>
> >> >> >> Thank you.
> >> >> >>
> >> >> >
> >> >> >
> >> >> >
> >> >> > ------------------------------------
> >> >> >
> >> >> > **** IMPORTANT ****
> >> >> > This group is for the discussion between users only.
> >> >> > This is *NOT* technical support channel.
> >> >> >
> >> >> > *********************
> >> >> > TO GET TECHNICAL SUPPORT from AmiBroker please send an e-
mail
> >> > directly to
> >> >> > SUPPORT {at} amibroker.com
> >> >> > *********************
> >> >> >
> >> >> > For NEW RELEASE ANNOUNCEMENTS and other news always check
> > DEVLOG:
> >> >> > http://www.amibroker.com/devlog/
> >> >> >
> >> >> > For other support material please check also:
> >> >> > http://www.amibroker.com/support.html
> >> >> >
> >> >> > *********************************
> >> >> > Yahoo! Groups Links
> >> >> >
> >> >> >
> >> >> >
> >> >>
> >> >
> >> >
> >> >
> >> > ------------------------------------
> >> >
> >> > **** IMPORTANT ****
> >> > This group is for the discussion between users only.
> >> > This is *NOT* technical support channel.
> >> >
> >> > *********************
> >> > TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail
> > directly to
> >> > SUPPORT {at} amibroker.com
> >> > *********************
> >> >
> >> > For NEW RELEASE ANNOUNCEMENTS and other news always check
DEVLOG:
> >> > http://www.amibroker.com/devlog/
> >> >
> >> > For other support material please check also:
> >> > http://www.amibroker.com/support.html
> >> >
> >> > *********************************
> >> > Yahoo! Groups Links
> >> >
> >> >
> >> >
> >>
> >
> >
> >
> > ------------------------------------
> >
> > **** IMPORTANT ****
> > This group is for the discussion between users only.
> > This is *NOT* technical support channel.
> >
> > *********************
> > TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail
directly to
> > SUPPORT {at} amibroker.com
> > *********************
> >
> > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> > http://www.amibroker.com/devlog/
> >
> > For other support material please check also:
> > http://www.amibroker.com/support.html
> >
> > *********************************
> > Yahoo! Groups Links
> >
> >
> >
>
------------------------------------
**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
*********************
TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com
*********************
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
For other support material please check also:
http://www.amibroker.com/support.html
*********************************
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/amibroker/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/amibroker/join
(Yahoo! ID required)
<*> To change settings via email:
mailto:amibroker-digest@xxxxxxxxxxxxxxx
mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx
<*> To unsubscribe from this group, send an email to:
amibroker-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|