Торговые системы: Эксперты на основе популярных торговых систем и алхимия оптимизации торгового робота (Продолжение) - страница 3

 
ias:
kirpish:
"Скачал я советник с этой статьи 22.04.08"

Ну ниже же в ком. автора:

Да была такая ошибочка, я всё исправил, больше этой ошибки не будет, так что надо загрузить новые файлы в понедельник и перекомпилировать всех экспертов. от 27.04

Следовательно ближайший понедельник - с 28.04.08.Сделай как написано и будет тебе счастье!

 


Все эксперты абсолютно рабочие.Проблемы полнейшего незнания работы с тестером автора не касаются никак! Я персональным обучением не занимаюсь. Так что этот случай меня не касается
 

Маленький вопросик возник по одной функции. На самом деле код повторяется, но повторяться не хочется

Библиотека TestReport.mqh

double CountProfit(int cmd) {
   double Profit;      
   int pos, Total = OrdersHistoryTotal();
   
   for(pos = 0; pos < Total; pos++)     
      if (OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
         if ((OrderType() == cmd) || (cmd < 0 && cmd > 1))
            if (OrderType() < 2)
               Profit += OrderProfit() + OrderCommission() + OrderSwap(); 
   return(Profit);
}
Вот по этой строке if ((OrderType() == cmd) || (cmd < 0 && cmd > 1))
Вторая часть условия никогда не будет выполняться. Так и было задумано или опечатка.            
 
Vinin:

Маленький вопросик возник по одной функции. На самом деле код повторяется, но повторяться не хочется

Библиотека TestReport.mqh

double CountProfit(int cmd) {
   double Profit;      
   int pos, Total = OrdersHistoryTotal();
   
   for(pos = 0; pos < Total; pos++)     
      if (OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
         if ((OrderType() == cmd) || (cmd < 0 && cmd > 1))
            if (OrderType() < 2)
               Profit += OrderProfit() + OrderCommission() + OrderSwap(); 
   return(Profit);
}
Вот по этой строке if ((OrderType() == cmd) || (cmd < 0 && cmd > 1))
Вторая часть условия никогда не будет выполняться. Так и было задумано или опечатка.            

Нет! Это всё-таки опечатка! Задумано было:

double CountProfit(int cmd)
  {
//----+
  double Profit;      
  int pos, Total = OrdersHistoryTotal();
  //----
  for(pos = 0; pos < Total; pos++)     
    if (OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
    if (OrderType() == cmd || cmd < 0 || cmd > 1)
      if (OrderType() < 2)
           Profit += OrderProfit()
                    + OrderCommission() + OrderSwap(); 
   return(Profit);
//----+
  }
Так что исправим!