![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Но задача стоит такая, чтобы индикатор на 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. Дело не в отладчике. Код оказался слишком тяжелым, из-за чего вызывал зависания. Тема закрыта.
если бы код был показан здесь, помогли бы точно так же )))