Mike, This seems to work well - will do more backtesting now. A special thank you for the time you took on this. Adrian: you were right, my copy andpaste was a bit precipitated and part of this formula should have read "Sum(RSI(2)< 25,2) ==2"
Thanks again, Carl --- In [email protected], "Mike" <sfclimb...@...> 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 [email protected], "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 > > >
