Проблема в том, что в тестере при старте считается, что истории до старта нет (хотя на экране видны предыдущие бары).
У вас в индикаторе стоит
Window = 2000; // период, баров
т.е. индикатор использует историю в 2000 баров и формирует на них гистограмму.
Поэтому, чтобы индикатор заработал без ошибок, вам нужно подождать, когда пройдут 2000 баров, а затем наложить на график ваш индюк.
Но, если вам лень ждать 2000 баров, измените эту переменную на 200 и подождите 200 баров и наложите этот индикатор.
Если для вас это не критично. Всё будет ОК.
Проблема в том, что в тестере при старте считается, что истории до старта нет (хотя на экране видны предыдущие бары).
Спасибо, почему-то вовремя не пришло оповещение о новом сообщении в форуме, только сейчас прочитал.
Ещё раз спасибо. Как много приходится узнавать того, чего никак не найти в официальных мануалах.
Где-то у меня был кусок кода, который заставлял тестер некоторый период прогонять в холостую и только потом начинался тест. Я всё не мог понять зачем это. Только бы он не затерялся.
input datetime StartTime=D'1971.00.00'; int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { for(int i=rates_total-1; i>=0; i--) { if(time[i]<StartTime) return(rates_total); //ваш код } return(rates_total); }
типа такого
типа такого
типа такого
За подсказку спасибо, то есть какое-то направление наметилось. Буду ломать голову.
Хотя языком MQL разочарован - некоторые простые вещи можно реализовать только в обход и с танцами.
Вставьте в этот же код в советник
input datetime StartTime=D'1971.00.00'; void OnTick() { if(Time[0]<StartTime) return; //ваш код }
Только разобрался с одним индикатором, очередной заартачился - работает на реале на ура, а в тестере:
Пробовал всё что мог - никак не исправить, чтобы не ждать 500 баров (History=500). Меньше 500 искажаются показания индикатора.
Неужели нет другого способа чтобы без ожидания (500 баров на H4 это 84 дня)?
Только разобрался с одним индикатором, очередной заартачился - работает на реале на ура, а в тестере:
Пробовал всё что мог - никак не исправить, чтобы не ждать 500 баров (History=500). Меньше 500 искажаются показания индикатора.
Неужели нет другого способа чтобы без ожидания (500 баров на H4 это 84 дня)?
что то наверное с этим у Вас на-мудрёно https://www.mql5.com/ru/docs/indicators/icustom

- www.mql5.com

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Прошу поправить индикатор, чтобы его можно было прогнать в тестере.
Советник использует индикатор для подтверждения тренда. На реальном счету и демо работает без проблем. Но при попытке тестирования на истории советник не может получить данные от индикатора:
0 11:03:01.912 Custom indicator Used\# Once Trend primary AUDCADm,H4: loaded successfully
2 11:03:01.912 # Once Trend primary inputs: Smoothing=5; Window=2000; Price=0;
1 11:03:01.978 # Once Trend primary AUDCADm,H4: zero divide in '# Once Trend primary.mq4' (94,88)
3 11:03:02.683 2019.12.02 01:00:06 # Once Trend primary AUDCADm,H4: initialization failed (-1)
0 11:03:02.683 2019.12.02 01:00:06 AUDCADm,H4: 1 tick events (0 bars, 33302455 bar states) processed in 0:00:00.000 (total time 0:00:00.797)
3 11:03:02.689 2019.12.02 01:00:06 # Once Trend primary AUDCADm,H4: initialization failed (-1)
0 11:03:02.691 2019.12.02 01:00:06 Custom indicator # Once Trend primary AUDCADm,H4: removed
Пробовал сделать проверку на ноль - zero divide ушло, но появились проблемы с массивом. Самому разобраться не по силам. Но очень хочется прогнать советник в тестере, на демо ждать результата долго ...