[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: Multiple buy signals not taken in backtest


  • Date: Tue, 16 Feb 2010 21:55:30 -0000
  • From: "Mike" <sfclimbers@xxxxxxxxx>
  • Subject: [amibroker] Re: Multiple buy signals not taken in backtest

PureBytes Links

Trading Reference Links

Just as a follow up...

You can get rid of the redundant Sell arrows by using ExRem against the fistTrigger. Also no need to add all the extra arguments to the Plot of the Buy, the defaults will do fine:

PlotShapes((Buy > 0) * shapeUpArrow, buyColors);
PlotShapes(ExRem(Sell, firstTrigger) * shapeDownArrow, colorRed);

Mike

--- In amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@xxx> wrote:
>
> Hi,
> Try something like the following. The Buy/Sell seems to work. You can
> add the Short/Cover using the same principles. The code assumes that you
> are trading at the Close on the day of the signal.
> SetTradeDelays(0, 0, 0, 0);
> BuyPrice = Close;
> SellPrice = Close;
> 
> previousClose = Ref(Close, -1);
> rsi2 = RSI(2);
> 
> Sell = Cross(rsi2, 70);
> 
> bull100 = Close > EMA(Close, 200) AND Sum(rsi2 < 25, 2) == 2;
> inFirstPos = Flip(bull100, Sell);
> 
> bull200 = Close < previousClose AND inFirstPos AND Ref(inFirstPos, -1);
> inSecondPos = Flip(bull200, Sell);
> 
> bull300 = Close < previousClose AND inSecondPos AND Ref(inSecondPos,
> -1);
> inThirdPos = Flip(bull300, Sell);
> 
> bull400 = Close < previousClose AND inThirdPos AND Ref(inThirdPos, -1);
> inFourthPos = Flip(bull400, Sell);
> 
> firstTrigger = ExRem(inFirstPos, Sell);
> secondTrigger = ExRem(inSecondPos, Sell);
> thirdTrigger = ExRem(inThirdPos, Sell);
> fourthTrigger = ExRem(inFourthPos, Sell);
> 
> Buy = firstTrigger + (secondTrigger * sigScaleIn) + (thirdTrigger *
> sigScaleIn) + (fourthTrigger * sigScaleIn);
> SetPositionSize(IIf(firstTrigger, 100, IIf(secondTrigger, 200,
> IIf(thirdTrigger, 300, 400))), spsShares);
> 
> priceColors = IIf(Close > previousClose, colorDarkGreen, IIf(Close <
> previousClose, colorDarkRed, colorDarkGrey));
> buyColors = IIf(firstTrigger, colorGreen, IIf(secondTrigger, colorLime,
> IIf(thirdTrigger, colorYellow, colorOrange)));
> 
> Plot(Close, "Price", priceColors, styleBar);
> PlotShapes((Buy > 0) * shapeUpArrow, buyColors, 0, L, -10);
> PlotShapes(Sell * shapeDownArrow, colorRed);
> Mike
> --- In amibroker@xxxxxxxxxxxxxxx, "cvanhaesendonck" <carl.van@>
> wrote:
> >
> > I posted some days ago but got no answer; however this system is
> powerfull yet simple: it scales in after the initial signal then exit
> quickly as soon as RSI(2) oberbought.
> > Problem I struggle with the code below: I can see the multiple buy
> entry arrows on the chart but backtest will only take the initial
> signals.
> > Please help with this - in return you will discover a very interesting
> system. Here we go:
> >
> > The system is simple:
> > - buy 10% of your position (for exempla, 100 shares) when RSI(2) is
> below 25 for 2 consecutive bars; close must be above the 200 EMA.
> > - buy 20% of the position if, any time after the initial buy above,
> close < ref(close,-1)
> > - buy 30% of the pôsition if, any time after the buy above, close <
> ref(close,-1)
> > - buy 40% of the position if, any time after the buy above, close <
> ref(close,-1)
> >
> > You now own 1,000 shares. Don't buy anymore.
> > Just wait and sell all when RSI(2 periods) rise above 70.
> >
> > Please see the code below and tell me what is wrong - I am struggling
> with this for days now as the backtest takes only the initial "10%"
> trade...
> >
> > bull= C> EMA(C,200) AND Sum(RSI(2)< 25==2;
> > bear= C< EMA(C,200) AND Sum(RSI(2)>25==2;
> > Buy=0;
> > Short= 0;
> >
> > Sell= Cross(RSI(2),70) ;
> > Cover=Cross(70,RSI(2)) ;
> > bull200= C<Ref(C,-1) AND BarsSince(Bull)<BarsSince(Sell) AND
> Ref(Sum(Bull,BarsSince(Sell)),-1)==1;
> > bear200= C>Ref(C,-1) AND BarsSince(bear)<BarsSince(Cover) AND
> Ref(Sum(bear,BarsSince(Cover)),-1)==1;
> > bull300= C<Ref(C,-1) AND Ref(Sum(Bull200,BarsSince(Sell)),-1)==1 ;
> > bear300= C>Ref(C,-1) AND Ref(Sum(bear200,BarsSince(Cover)),-1)==1 ;
> > bull400= C<Ref(C,-1) AND Ref(Sum(Bull300,BarsSince(Sell)),-1)==1 ;
> > bear400= C>Ref(C,-1) AND Ref(Sum(bear300,BarsSince(Cover)),-1)==1 ;
> > SetPositionSize(IIf(Sum(Buy,BarsSince(Sell))==1,
> 100,IIf(Sum(Buy,BarsSince(Sell))==2,200,IIf(Sum(Buy,BarsSince(Sell))==3,\
> 300,IIf(Sum(Buy,BarsSince(Sell))==4,400,Null)))),4);
> > SetPositionSize(IIf(Sum(Short,BarsSince(Sell))==1,
> 100,IIf(Sum(Short,BarsSince(Sell))==2,200,IIf(Sum(Short,BarsSince(Sell))\
> ==3,300,IIf(Sum(Short,BarsSince(Sell))==4,400,Null)))),4);
> > Buy= IIf(Sum(Bull,BarsSince(Sell))<4 AND
> Sum(Bull200,BarsSince(Sell))<4 AND Sum(Bull300,BarsSince(Sell))<4 AND
> Sum(Bull400,BarsSince(Sell))<4 ,bull OR bull200 OR bull300 OR
> bull400,Null);
> > Short= IIf(Sum(Bear,BarsSince(Sell))<4 AND
> Sum(Bear200,BarsSince(Sell))<4 AND Sum(Bear300,BarsSince(Sell))<4 AND
> Sum(Bear400,BarsSince(Sell))<4,bear OR bear200 OR bear300 OR bear400,
> Null);
> > Sell=ExRem(Sell,Buy);
> > Cover=ExRem(Cover,Short);
> >
> > PlotShapes(Buy*shapeUpArrow,colorBlue,0,L,-10);
> > PlotShapes(Short*shapeDownArrow,colorRed,0,H,-10);
> > PlotShapes(Sell*shapeSmallCircle,colorBlue,0,H,10);
> > PlotShapes(Cover*shapeSmallCircle,colorRed,0,L,-10);
> >
> > Thanks,
> > Carl
> >
>




------------------------------------

**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

TO GET TECHNICAL SUPPORT send an e-mail directly to 
SUPPORT {at} amibroker.com

TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

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:
    amibroker-digest@xxxxxxxxxxxxxxx 
    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/