почему советник показывает разные результаты с компиляцией #property strict и без неё?

 
void ecnmodify(double stoploss,double takeprofit){
   if(OrdersTotal()>0){
      for(i=OrdersTotal()-1;i>=0;i--){
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic){
            if(OrderType()==OP_BUY){
               if(OrderStopLoss()==0 && stoploss>0 && takeprofit==0){
                  RefreshRates();
                  OrderModify(OrderTicket(),OrderOpenPrice(),nd(Ask-stoploss*pt,dg),OrderTakeProfit(),0,Red);
                  return(0);
               }
               if(OrderTakeProfit()==0 && stoploss==0 && takeprofit>0){
                  RefreshRates();
                  OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),nd(Ask+takeprofit*pt,dg),0,Red);
                  return(0);
               }
               if(OrderTakeProfit()==0 && OrderStopLoss()==0 && stoploss>0 && takeprofit>0){
                  RefreshRates();
                  OrderModify(OrderTicket(),OrderOpenPrice(),nd(Ask-stoploss*pt,dg),nd(Ask+takeprofit*pt,dg),0,Red);
                  return(0);
               }
            }
            if(OrderType()==OP_SELL){
               if(OrderStopLoss()==0 && stoploss>0 && takeprofit==0){
                  RefreshRates();
                  OrderModify(OrderTicket(),OrderOpenPrice(),nd(Bid+stoploss*pt,dg),OrderTakeProfit(),0,Red);
                  return(0);
               }
               if(OrderTakeProfit()==0 && stoploss==0 && takeprofit>0){
                  RefreshRates();
                  OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),nd(Bid-takeprofit*pt,dg),0,Red);
                  return(0);
               }
               if(OrderTakeProfit()==0 && OrderStopLoss()==0 && stoploss>0 && takeprofit>0){
                  RefreshRates();
                  OrderModify(OrderTicket(),OrderOpenPrice(),nd(Bid+stoploss*pt,dg),nd(Bid-takeprofit*pt,dg),0,Red);
                  return(0);
               }
            }
         }
      }
   }
}
здравствуйте!да в коде есть ошибки связанные с return ..я эти ошибки исправляю,компилирую с #property strict ни одной ошибки не выдаёт..тестирую советника,но он открывает в несколько раз меньше сделок,чем версия советника с ошибками..с чем это может быть связанно?

проблема была с return ,я его удалил и проблема исправилась).но мне думается,что удалять было не верным решением..

 
Pavel Malyshko:
здравствуйте!да в коде есть ошибки связанные с return ..я эти ошибки исправляю,компилирую с #property strict ни одной ошибки не выдаёт..тестирую советника,но он открывает в несколько раз меньше сделок,чем версия советника с ошибками..с чем это может быть связанно?

проблема была с return ,я его удалил и проблема исправилась).но мне думается,что удалять было не верным решением..

Потому, что не надо прерывать цикл. А просто надо проверить результат выполнения команды

if(!OrderModify(OrderTicket(),OrderOpenPrice(),nd(Bid+stoploss*pt,dg),nd(Bid-takeprofit*pt,dg),0,Red))
Print("Фигня какая-то.");
 
Alexey Viktorov:

Потому, что не надо прерывать цикл. А просто надо проверить результат выполнения команды

но с ошибками он работает гораздо лучше)

не смотря на то,что вы пишите :фигня какая-то)
 
Pavel Malyshko:

но с ошибками он работает гораздо лучше)

не смотря на то,что вы пишите :фигня какая-то)

Ну напиши "Как прекрасен этот Мир, посмотри..."

Эта фигня будет печататься в случае неудачной попытки модифицировать ордер.

 
Pavel Malyshko:
 он
открывает
в несколько раз меньше сделок,чем версия советника с ошибками..с чем это может быть связанно?

может стоит проверить блок отрывающий сделки, а не модифицирующий?

PS чаще всего даёт о себе знать разница в инизиализации и области видимости переменных и массивов (сброс при выходе из функции, инициализация с 0)