Отладка индикатора - страница 2

 
Rubick:

Но задача стоит такая, чтобы индикатор на mql5 работал под МТ4! И странное дело, я закомментировал строки,  в работе которых сомневаюсь и под МТ5 индикатор не выдает никаких результатов, но этот же самый код под МТ4 дает предварительные результаты, которые должен.

Ну там только CopySeries вроде проблема, если есть такое в коде, в МЕ4 нет такой команды.



 
evillive:

Ну там только CopySeries вроде проблема, если есть такое в коде, в МЕ4 нет такой команды.

А CopyHigh, CopyLow, CopyClose есть?
 
Rubick:
А CopyHigh, CopyLow, CopyClose есть?


есть, также есть CopyOpen, CopyTimе, CopyTickVolume, CopyRealVolume, CopySpread
 
Тогда не понятки какие-то. У меня CopySeries в коде не используется. А индикатор работать не хочет и не хочет отлаживаться.
 
Rubick:
Тогда не понятки какие-то. У меня CopySeries в коде не используется. А индикатор работать не хочет и не хочет отлаживаться.

что пишет в журнале? код можете показать?
 
evillive:

что пишет в журнале? код можете показать?
Код к сожалению не могу показать. А в журнале не пишет ничего! При переходе в редактор он показывает, что процесс отладки запущен. При этом поставленная в функцию OnCalculate точка останова не срабатывает. А должна!
 
Rubick:
Код к сожалению не могу показать. А в журнале не пишет ничего! При переходе в редактор он показывает, что процесс отладки запущен. При этом поставленная в функцию OnCalculate точка останова не срабатывает. А должна!

Ну, должна или нет - вопрос открытый. Print("Слава ВДВ") перед оной точкой воткните. 
 

Чувствую мне надо насколько раскрыть свою проблему, поэтому приведу часть кода, а именно функцию OnCalculate:

int OnCalculate (const int rates_total,      // размер входных таймсерий
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const datetime &time[],     // Time
                 const double &open[],       // Open
                 const double &high[],       // High
                 const double &low[],        // Low
                 const double &close[],      // Close
                 const long &tick_volume[],  // Tick Volume
                 const long &volume[],       // Real Volume
                 const int &spread[]         // Spread
                 ){
   //--- Объявление переменных
   int UpT=0,DownT=0;
   ResetLastError();//сбрасываем сообщения об ошибках
   if (N1>0) {
      //--- Верхние ТД точки для N1
      Filling_Up_TDPoints_Array(N1,TDHighPoints_N1);
      //--- Нижние ТД точки для N1
      Filling_Low_TDpoints_Array(N1,TDLowPoints_N1);
      //--- Trend Lines Level 1
      UpT=Filling_Up_Trends_Array(N1,TDLowPoints_N1,Lvl1UpTrend);
      PlotIndexSetInteger(6,PLOT_DRAW_BEGIN,UpT);
      DownT=Filling_Down_Trends_Array(N1,TDHighPoints_N1,Lvl1DownTrend);
      PlotIndexSetInteger(7,PLOT_DRAW_BEGIN,DownT);
   }   
   if (N2>0) {
      //--- Верхние ТД точки для N2
      Filling_Up_TDPoints_Array(N2,TDHighPoints_N2);
      //--- Нижние ТД точки для N2
      Filling_Low_TDpoints_Array(N2,TDLowPoints_N2);
      //--- Trend Lines Level 2
      UpT=Filling_Up_Trends_Array(N2,TDLowPoints_N2,Lvl2UpTrend);
      PlotIndexSetInteger(8,PLOT_DRAW_BEGIN,UpT);
      DownT=Filling_Down_Trends_Array(N2,TDHighPoints_N2,Lvl2DownTrend);
      PlotIndexSetInteger(9,PLOT_DRAW_BEGIN,DownT);

   }  
   if (N3>0) {
      //--- Верхние ТД точки для N3
      Filling_Up_TDPoints_Array(N3,TDHighPoints_N3);
      //--- Нижние ТД точки для N3
      Filling_Low_TDpoints_Array(N3,TDLowPoints_N3);
      //--- TD Trend Lines Level 3
      UpT=Filling_Up_Trends_Array(N3,TDLowPoints_N3,Lvl3UpTrend);
      PlotIndexSetInteger(10,PLOT_DRAW_BEGIN,UpT);
      DownT=Filling_Down_Trends_Array(N3,TDHighPoints_N3,Lvl3DownTrend);
      PlotIndexSetInteger(11,PLOT_DRAW_BEGIN,DownT);
   }
   return(rates_total);
}

При запуске алгоритма на отладку с точкой останова у строчки:  UpT=Filling_Up_Trends_Array(N1,TDLowPoints_N1,Lvl1UpTrend);

я получаю график с заполненными всеми тремя парами массивов для верхних и нижних точек Демарка. Массивы точек он заполнил все три пары!, но точка останова то стоит после заполнения первых двух массивов! И она не сработала!

Точка останова срабатывает только на объявлении переменных. В любом месте ниже - нет.

Хорошо. Жму F11 от того места где срабатывает. Меня перекидывают в функцию, вызова которой из OnCalculate вообще не происходит!

 
Получил помощь на mql5.com. Дело не в отладчике. Код оказался слишком тяжелым, из-за чего вызывал зависания. Тема закрыта.
 
Rubick:
Получил помощь на mql5.com. Дело не в отладчике. Код оказался слишком тяжелым, из-за чего вызывал зависания. Тема закрыта.

если бы код был показан здесь, помогли бы точно так же )))
Причина обращения: