Баг с трейлинг стопом

 

Вот простой код :

int Magic = 227 ;
int i = 0 ;

int StartTrall     = 300;
int start()
  {
if ( i == 0 )
if ( OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"My order #",Magic,0,Green) > 0 )
i=1;
Trall();
  }
void Trall()
  {
   double bid = NormalizeDouble(Bid,Digits);
   double tr = NormalizeDouble(StartTrall*Point,Digits);
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i,SELECT_BY_POS))
         if(OrderSymbol()==Symbol())
            if(OrderMagicNumber()==Magic)
               if(OrderType()==0)
                  if((bid-tr)>OrderOpenPrice())
                       if((bid-tr)>OrderStopLoss())
                       {
                           Print((bid-tr)+"  "+OrderStopLoss());
                           if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(bid-tr,Digits),OrderTakeProfit(),0,Green)==true)
                             Print("Ok");
                                 else 
                                    Print(GetLastError());
                       }
  }

А вот лог :

11:22:54 2012.02.21 05:08  tr EURUSD,H1: 1.32463000  1.32460000
11:22:54 2012.02.21 05:08  tr EURUSD,H1: modify #1 buy 1.00 EURUSD at 1.32425 sl: 1.32463 tp: 0.00000 ok
11:22:54 2012.02.21 05:08  tr EURUSD,H1: Ok
11:22:54 2012.02.21 05:08  tr EURUSD,H1: 1.32463000  1.32463000
11:22:54 2012.02.21 05:08  tr EURUSD,H1: OrderModify error 1
11:22:54 2012.02.21 05:08  tr EURUSD,H1: 1
11:22:54 2012.02.21 05:08  tr EURUSD,H1: 1.32466000  1.32463000
11:22:54 2012.02.21 05:08  tr EURUSD,H1: modify #1 buy 1.00 EURUSD at 1.32425 sl: 1.32466 tp: 0.00000 ok
11:22:54 2012.02.21 05:08  tr EURUSD,H1: Ok
11:22:54 2012.02.21 05:08  tr EURUSD,H1: 1.32469000  1.32466000
11:22:54 2012.02.21 05:08  tr EURUSD,H1: modify #1 buy 1.00 EURUSD at 1.32425 sl: 1.32469 tp: 0.00000 ok
11:22:54 2012.02.21 05:08  tr EURUSD,H1: Ok

Оказывается 1.32463000 больше 1.32463000 . Чудеса ...

 

Годы идут, вопрос неизменен:

https://forum.mql4.com/ru/4498

 

Стоплосс нужно нормализовать. Или разницу значений с 0 сравнивать.