Но задача стоит такая, чтобы индикатор на mql5 работал под МТ4! И
странное дело, я закомментировал строки, в работе которых сомневаюсь и
под МТ5 индикатор не выдает никаких результатов, но этот же самый код
под МТ4 дает предварительные результаты, которые должен.
Ну там только CopySeries вроде проблема, если есть такое в коде, в МЕ4 нет такой команды.
Код к сожалению не могу показать. А в журнале не пишет ничего! При переходе в редактор он показывает, что процесс отладки запущен. При этом поставленная в функцию 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 работал под МТ4! И странное дело, я закомментировал строки, в работе которых сомневаюсь и под МТ5 индикатор не выдает никаких результатов, но этот же самый код под МТ4 дает предварительные результаты, которые должен.
Ну там только CopySeries вроде проблема, если есть такое в коде, в МЕ4 нет такой команды.
Ну там только CopySeries вроде проблема, если есть такое в коде, в МЕ4 нет такой команды.
А CopyHigh, CopyLow, CopyClose есть?
есть, также есть CopyOpen, CopyTimе, CopyTickVolume, CopyRealVolume, CopySpread
Тогда не понятки какие-то. У меня CopySeries в коде не используется. А индикатор работать не хочет и не хочет отлаживаться.
что пишет в журнале? код можете показать?
что пишет в журнале? код можете показать?
Код к сожалению не могу показать. А в журнале не пишет ничего! При переходе в редактор он показывает, что процесс отладки запущен. При этом поставленная в функцию OnCalculate точка останова не срабатывает. А должна!
Ну, должна или нет - вопрос открытый. Print("Слава ВДВ") перед оной точкой воткните.
Чувствую мне надо насколько раскрыть свою проблему, поэтому приведу часть кода, а именно функцию OnCalculate:
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. Дело не в отладчике. Код оказался слишком тяжелым, из-за чего вызывал зависания. Тема закрыта.
если бы код был показан здесь, помогли бы точно так же )))