Нормализовка данных.

 

Помогите разобраться в следующем коде:

    OrderSelect(j,SELECT_BY_POS,MODE_TRADES);
    Print("UnitSize=");
    Print(UnitSize);
    Print("OrderLots=");
    Print(OrderLots());    
    if (  ( UnitSize != OrderLots() ) &&
          ( (OrderType()==OP_BUYSTOP) || (OrderType()==OP_SELLSTOP) )  )
    { 
      OrderDelete(OrderTicket()); return;
    }


оператор OrederDelete срабатывает всегда!
То есть условие в операторе if - всегда истина.
Но на самом деле в это время UnitSize = OrderLots().
Вот подтверждение из сообщений эксперта (читай снизу вверх):

2006.10.25 17:43:23 System2v2 EURUSD,Daily: delete #2145990 buy stop 0.60 EURUSD at 1.2937 sl: 1.2900 tp: 0.0000 ok
2006.10.25 17:43:22 System2v2 EURUSD,Daily: 0.6
2006.10.25 17:43:22 System2v2 EURUSD,Daily: OrderLots=
2006.10.25 17:43:22 System2v2 EURUSD,Daily: 0.6
2006.10.25 17:43:22 System2v2 EURUSD,Daily: UnitSize=

Как такое может быть, чего я не догоняю?


 
Попробуй:
Print(unitSize!=OrderLots());
Возможно тебе нужно нормализировать данные - много раз писали об этом.
 
Itso:
Попробуй:
Print(unitSize!=OrderLots());
Возможно тебе нужно нормализировать данные - много раз писали об этом.

Да, всё изменилось после нормализазации OrderLots:

if ( ( NormalizeDouble(UnitSize,1) != NormalizeDouble(OrderLots(), 1) ) &&
( (OrderType()==OP_BUYSTOP) || (OrderType()==OP_SELLSTOP) ) )

Вот уж никогда не подумал бы что данные из ордера надо нормализовать!!!

Спасибо, Itso.
 
vendim:

Да, всё изменилось после нормализазации OrderLots:

if ( ( NormalizeDouble(UnitSize,1) != NormalizeDouble(OrderLots(), 1) ) &&
( (OrderType()==OP_BUYSTOP) || (OrderType()==OP_SELLSTOP) ) )

Всё равно неправильно =)
Должно быть так:
if ( NormalizeDouble(UnitSize - OrderLots(),1) != 0.0 )

Вот уж никогда не подумал бы что данные из ордера надо нормализовать!!!

Почему из ордера? А UnitSize?