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....@...>
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
>

Reply via email to