Недостаточно информации. Предположительно, надо очищать буферы при prev_calculated==0, или более аккуратно - инициализировать начальный элемент буфера.
Если бы это было нужно, то остальные таймфреймы бы глючили. А тут именно стандартные работают ровно, а нестандартные выдают билеберду. Мне кажется ошибка закралась где-то в этих функциях, хотя я ее не вижу
Проверьте, что в переменной timeframe при вызове iMA()
При вызове с H8 в переменной 16392, все как надо в общем. И дальше оно поидее должно работать, как в случае с H4.
Смотрите в логах, нет ли сообщение "ERROR: Object iMA doesn't created. Code:".
Если нет, то надо смотреть функцию CopyBufferMQL4(), что там в ней творится. Там в ней должно быть вызывается CopyBuffer(), но результат не проверяется.
Вообще подход странный - при каждом вызове функции загружать индикатор и получать хэндл.
история точно есть по этим периодам? если есть, то достаточно ли её? (например, чтобы посчитать экспонентное сглаживание, нужно начать глубже по истории, иначе подхватятся EMPTY_VALUE - для double это как раз число, порядка обозначенного вами)
а вообще не правильно это при каждом вызове новый хэндл создавать. пишите сразу "по-пятёрошному" - создайте хэндл в OnInit(), а в остальном коде только обращайтесь к значениям буфера по хэндлу.
Смотрите в логах, нет ли сообщение "ERROR: Object iMA doesn't created. Code:".
Если нет, то надо смотреть функцию CopyBufferMQL4(), что там в ней творится. Там в ней должно быть вызывается CopyBuffer(), но результат не проверяется.
Вообще подход странный - при каждом вызове функции загружать индикатор и получать хэндл.
Ошибок нету вообще, оно все вычисляет (просто неправильно - см. выше). Даже предупреждений нету
история точно есть по этим периодам? если есть, то достаточно ли её? (например, чтобы посчитать экспонентное сглаживание, нужно начать глубже по истории, иначе подхватятся EMPTY_VALUE - для double это как раз число, порядка обозначенного вами)
а вообще не правильно это при каждом вызове новый хэндл создавать. пишите сразу "по-пятёрошному" - создайте хэндл в OnInit(), а в остальном коде только обращайтесь к значениям буфера по хэндлу.
Истории достаточно. Я в инициализации загружаю историю, если она отсутствует, по логам - загрузка проходит успешно. И опять же, остальные таймфреймы работают прекрасно, даже если я использую символ, ранее не использовавшийся в терминале, т.е инициирую загрузку с нуля. Такие значения у меня кривые все, даже на последние бары, причем баров 3 тыс, а период машки всего 5
Вам будет проще посмотреть пример использования IMA в mql5
У меня по сути тоже самое, только создается доп функция iMAMQL4, а из нее вызывается iMA (который по всем правилам MQL5). И вызов вроде правильный и хендл правильный и оно, что интересно работает везде, кроме нестандартных таймфреймов. Я уже 3 дня перед тем как спросить на форуме сидела с этим кодом и за**лась уже)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Портировала эксперта из MQL4, используя соответствующие статьи из форума, и все в принципе работает, но при использовании таймфреймов нестандартных (например М2, H8 и т.д.) индикатор машки выдает значение: MA = 1.797693134862316e+308
Код:
И сам индикатор:
Не могу понять, почему со стандартными оно работает, а с нестандартными нет. Помогите найти ошибку пожалуйста