Problem with code, trying to use some Martingale

Hello all. Sorry for my bad English
I have a problem with backtesting my code. I use Donchian Channel strategy and try to use some Martingale method for position sizing.
Starting with 1 share, if i have a loss than use 2 shares, if loss again than 3 shares and so on untill profit trade or when i get 6 loss in row. Than return to trade 1 share.
The problem i have in backtest. Marking REDs the problem sizing. In both cases we have to use 1 shares instead of 2 in first case and 3 in second case.

This is my code:

SetBarsRequired(sbrAll, sbrAll); 
ps = 1; //quantity of shares in the beginning

//------------system------------
DonchianUpper = HHV(Ref(H,-1), 15); 
DonchianLower = LLV(Ref(L,-1), 15); 
DonchianMiddle = (DonchianUpper+DonchianLower)/2; 
  
Buy = Cross(High, DonchianUpper) ; 
Short = Cross(DonchianLower, Low) ; 
Sell = DonchianMiddle-20 > Low; 
Cover = DonchianMiddle+20 < High; 

BuyPrice=max(DonchianUpper, O);
SellPrice=min(DonchianMiddle-20,O);
ShortPrice=min(DonchianLower, O);
CoverPrice=max(DonchianMiddle+20,O);
//---------end of system--------------

Buy = ExRem(Buy,Sell);Sell = ExRem(Sell,Buy);Short = ExRem(Short,Cover);Cover = ExRem(Cover,Short); 

res = ValueWhen(Sell, SellPrice) - ValueWhen(Buy, BuyPrice); // result for long
res1 = ValueWhen(Short, ShortPrice) - ValueWhen(Cover, CoverPrice); //  result for short

losess  = 0; 

for (i = 1; i < BarCount; i++) 
{ 
   if(Sell[i]) 
   { 
      if ( res[i] < 0 ) 
         losess++; 
      else 
         losess = 0; 
      
      if(losess == 0)    
         ps[i] = 1; 
      else if(losess == 1) 
         ps[i] = 2; 
      else if(losess == 2) 
         ps[i] = 3; 
      else if(losess == 3) 
         ps[i] = 4; 
      else if(losess == 4) 
         ps[i] = 5; 
      else if(losess == 5) 
         ps[i] = 6; 
      else if(losess >= 6) 
         ps[i] = 1;       
   } 
   else 
   if(Cover[i]) 
   { 
      if ( res1[i] < 0 ) 
         losess++; 
      else 
         losess = 0; 
      
      if(losess == 0)    
         ps[i] = 1; 
      else if(losess == 1) 
         ps[i] = 2; 
      else if(losess == 2) 
         ps[i] = 3; 
      else if(losess == 3) 
         ps[i] = 4; 
      else if(losess == 4) 
         ps[i] = 5; 
      else if(losess == 5) 
         ps[i] = 6; 
      else if(losess >= 6) 
         ps[i] = 1;
   }     
   else 
      ps[i] = ps[i-1]; 
} 

SetPositionSize(ps, spsShares); 

and screen of trades:
bug

i think some problems with my BuyPrice, ShortPrice, CoverPrice, SellPrice. Because if i use simple system with crossing of 2 MA with BuyPrice=ShortPrice=CoverPrice=SellPrice=O, than i havnt any bugs...

Can anyone help me? Thank you in advance

trying to solve my problem by myself.
i have discovered that problem is ReverseSignalForcesExit option.

for my system i use ReverseSignalForcesExit option unticked. But in my code in first message while doing for (i = 1; i < BarCount; i++) amibroker using ReverseSignal... ticked!
Thats why in backtest i have invisible trades which take a part in the series of losses...

How can i prevent amibroker to use ReverseSignalForcesExit?

Try using SetOption(): https://www.amibroker.com/guide/afl/setoption.html .

i put SetOption("ReverseSignalForcesExit", False) but no luck