I am looking to introduce a stop loss that is the lowest low of the previous two bars when the condition "look to sell" is met. If it is not met on that bar, the stop loss should continue to be the lowest low of the previous two bars until stopped out.
When an exploration is run, the AddColumn instructions show that the correct values are being produced, just that the exit only occurs after the 2nd time the "look to sell" condition is met.
Can someone please enlighten me why this is the case, and point me in the right direction so the exit occurs after the first time the "look to sell" condition is met?
Many thanks
SetPositionSize( 1, spsShares );
TradeDelay = 1; // set it to 0 for no delays
SetTradeDelays( TradeDelay, TradeDelay, TradeDelay, TradeDelay );
TickSize = 0.01;
Sell = 0;
Account_Balance = 60000;
Median_price = (H+L)/2;
divisor = MA(Median_price,5);
Median_price_difference = (H-L);
Median_price_divisor = (((H - L) + (Ref(H, -1) - Ref(L, -1)) + (Ref(H, -2) - Ref(L, -2)) + (Ref(H, -3) - Ref(L, -3)) + (Ref(H, -4) - Ref(L, -4)))/5) * 0.16;
relative_value = l - Median_price;
relative_ratio = relative_value / Median_price_divisor;
_Buy = Buy = relative_ratio <= -7.5 AND Ref(L, 1) <= L AND C > MA(L,200);
BuyPrice = Min(L, Ref(O,1));
AddColumn(L, "entry", 1.3);
AddColumn(floor((Account_Balance/10)/L), "qth to Buy", 1.0);
//Exit
Period = Param("SVAPO period", 8, 2, 20, 1 );
CutOff = Param("Min. % price change", 1, 0, 10, 0.1 );
devH = Param("Std. Dev High", 1.5, 0.1, 5, 0.1 );
devL = Param("Std. Dev Low", 1.3, 0.1, 5, 0.1 );
StDevPer = Param("Std. Dev. Period", 100, 1, 200, 1 );
// heikin-ashi smoothing
Av4 = (O+H+L+C)/4;
HaOpen = AMA( Ref( Av4, -1 ), 0.5 );
HaCl = ( Av4 + HaOpen + Max( Av4, Max( H, HaOpen ) ) + Min( Av4, Min( L, HaOpen ) ) ) / 4;
HaC = TEMA( HaCl, period/1.6 );
// medium term MA of volume to limit extremes
Vave = Ref( MA( C, period * 5 ), -1 );
// basic trend
Vtr = TEMA( LinRegSlope( C, period ), period );
HaCLimitUp = Ref( HaC, -1 ) * (1 + Cutoff/1000);
HaCLimitDn = Ref( HaC, -1 ) * (1 - Cutoff/1000);
// SVAPO result of price only
SVAPOSum = Sum( IIf( ( HaC > HaCLimitUp ) AND Hold( Vtr >= Ref( Vtr,-1 ), 2 ), C,
IIf( ( HaC < HaCLimitDn ) AND Hold( Vtr > Ref( Vtr, -1 ), 2 ), -C, 0 ) ), period );
SVAPO = TEMA( SVAPOSum / (Vave+1), period );
Sell_trigger = SVAPO > (devH * StDev( SVAPO, StDevPer ));//
Sell_done_by_now = !Sell_trigger AND Ref(Sell_trigger, -1);
look_to_sell = Sell_trigger AND !Ref(Sell_trigger, -1) AND Volume > 10000000 AND Ref(Volume, -1) > 1000000;
//2 day trailing stop distance
tighten_trailing_stop = Flip(look_to_sell, Sell_done_by_now);
trailing_stop_distance = IIf(tighten_trailing_stop, BuyPrice - Ref( LLV( Low, 2 ), -1 ),99999);
ApplyStop( stopTypeLoss, stopModePoint, trailing_stop_distance, True, True ); // 2-bar LLV trailing stop
Filter = 1;
AddColumn(BuyPrice, "buy price", 1.3);
AddColumn(Ref(L, -1), "yesterdays Low", 1.3);
AddColumn(Ref(L, -2), "Low 2d ago", 1.3);
AddColumn(Ref( LLV( Low, 2 ), -1 ), "tested Low", 1.3);
AddColumn(trailing_stop_distance, "distance of trailing stop", 1.3);
Equity(1); // THIS EVALUATES STOPS
Plot(Sell==4,"ApplyStop Sell",colorRed,1|styleOwnScale);
buy = ExRem( buy, sell );
sell = ExRem( sell, buy );