Добрый день.
Имею странную проблему.
Есть индикатор на MQL5, в который заложена вся логика поиска сигналов для покупки/продажи, сигналы он обычным способом (через буфера) рисует на графике.
Вызываю этот индикатор из эксперта, проверяю, есть сигнал на баре или нет. Если есть - эксперт покупает или продает.
Проблема в том, что некоторые сигналы индикатора эксперт не получает. Выводил в логи в эксперте по конкретным точкам, где на графике сигнал рисуется, данные из буферов индикатора, которые получает эксперт - там значение EMPTY_VALUE (сигнала нет). Такая реакция только на некоторые сигналы, большинство нормально получаются и отрабатывают. Входные параметры индикатора на графике и те параметры, с которыми эксперт вызывает этот индикатор, идентичные, проверено несколько раз.
Вопрос: в чем может быть дело?
например
- эксперт ищет сигнал при открытии бара, а индикатор работает по тикам и при открытии там как правило EMPTY_VALUE.
- (как-бы в продолжении) индикатор или советник мультитаймфреймовый, а всё запущено не на самом старшем периоде; на младшем периоде бар открылся, а на старшем-то ещё нет и сигнала потому нет
- или индикатор выставляет сигнал post-factum - то есть уже в прошлом, например на предыдущий бар. Визуально не слишком заметно, смотрится красиво, но эксперт сигнал не найдёт
- или индикаторный буфер имеет смещение, и эксперт просто не на том баре смотрит
- некоторые визуальные метки индикатор делает обычными объектами не связанными с доступными буферами.
похоже на проблему с NewBar,
если используете, нужно удалить эту адскую г. функцию
Имею странную проблему.
Есть индикатор на MQL5, в который заложена вся логика поиска сигналов для покупки/продажи, сигналы он обычным способом (через буфера) рисует на графике.
Вызываю этот индикатор из эксперта, проверяю, есть сигнал на баре или нет. Если есть - эксперт покупает или продает.
Проблема в том, что некоторые сигналы индикатора эксперт не получает. Выводил в логи в эксперте по конкретным точкам, где на графике сигнал рисуется, данные из буферов индикатора, которые получает эксперт - там значение EMPTY_VALUE (сигнала нет). Такая реакция только на некоторые сигналы, большинство нормально получаются и отрабатывают. Входные параметры индикатора на графике и те параметры, с которыми эксперт вызывает этот индикатор, идентичные, проверено несколько раз.
Вопрос: в чем может быть дело?
Пишите больше деталей. Индикатор с исходным кодом или без? Проблема в тестере и онлайн? Например, если это происходит в тестере в невизуальном режиме по тикам, то индикатор не будет пересчитываться на каждом тике без директивы #property tester_everytick_calculate.
у него похоже проблема как на ASC Trend у меня в свое время была, в обычном тестере все сигналы соблюдаются, а в реалтайм торговле пропуски часто на первом тике сигнала (NewBar),
убрать newbar и сигнал на втором тике откроет. Нужны какие-то проверки, но я забил тогда, не смог получить прибыль из системы
уже гораздо позже опять столкнулся, что при newbar иногда в одном из 3 терминалов не срабатывает сигнал, начал печатать значения и обнаружил, что на новом баре значение индикатора - равно из прошлого бара, только на втором тике получается верное значение из iCustom
не стал искать причину, просто убрал функцию NewBar
кто пользуется Newbar делали замер разницы в Тестере? В современных реалиях
недавно на мультисимвольном роботе (7 пар) перенес функцию проверку "Есть ли открытая позиция по символу" стояла она после проверки торговых условий с Copybuffer на каждом тике (индикатор-шпион), перенес эту проверку в самое начало OnChartEvent,
думал, т.к. каждый из символов большое время находится в торговле, то избегу проверки условий и CopyBuffer на каждом тике, сократится время теста. А нет, нисколько я не выиграл из 15 минутных тестов разницы абсолютно никакой небыло, Кеш тестера отключен всегда
у него похоже проблема как на ASC Trend у меня в свое время была, в обычном тестере все сигналы соблюдаются, а в реалтайм торговле пропуски часто на первом тике сигнала (NewBar),
убрать newbar и сигнал на втором тике откроет. Нужны какие-то проверки, но я забил тогда, не смог получить прибыль из системы
уже гораздо позже опять столкнулся, что при newbar иногда в одном из 3 терминалов не срабатывает сигнал, начал печатать значения и обнаружил, что на новом баре значение индикатора - равно из прошлого бара, только на втором тике получается верное значение из iCustom
не стал искать причину, просто убрал функцию NewBar
кто пользуется Newbar делали замер разницы в Тестере? В современных реалиях
недавно на мультисимвольном роботе (7 пар) перенес функцию проверку "Есть ли открытая позиция по символу" стояла она после проверки торговых условий с Copybuffer на каждом тике (индикатор-шпион), перенес эту проверку в самое начало OnChartEvent,
думал, т.к. каждый из символов большое время находится в торговле, то избегу проверки условий и CopyBuffer на каждом тике, сократится время теста. А нет, нисколько я не выиграл из 15 минутных тестов разницы абсолютно никакой небыло, Кеш тестера отключен всегда
Многое зависит от нюансов. Например, если эксперт написан с использованием стандартной библиотеки классов, то там автоматически присутствуют все её баги. Один из них, касающийся пропуска первого (одного или нескольких) тика бара, описан в англоязычном блоге (см. раздел D).
Если коротко, то в методе CExpert::Refresh присутствует баг, который не отслеживает формирование нового бара по новому тику, а в МТ5 из-за его асинхронности вполне может быть ситуация, что тик проброшен (и библиотека по нему помечает, что бар яко-бы обработан), но на самом деле бар может быть ещё не сформирован, из-за чего результаты последующего пересчета индикаторов на новом баре (может быть, выполненные через пару миллисекунд) уже не попадают в сигналы эксперта.
- 2024.12.07
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день.
Имею странную проблему.
Есть индикатор на MQL5, в который заложена вся логика поиска сигналов для покупки/продажи, сигналы он обычным способом (через буфера) рисует на графике.
Вызываю этот индикатор из эксперта, проверяю, есть сигнал на баре или нет. Если есть - эксперт покупает или продает.
Проблема в том, что некоторые сигналы индикатора эксперт не получает. Выводил в логи в эксперте по конкретным точкам, где на графике сигнал рисуется, данные из буферов индикатора, которые получает эксперт - там значение EMPTY_VALUE (сигнала нет). Такая реакция только на некоторые сигналы, большинство нормально получаются и отрабатывают. Входные параметры индикатора на графике и те параметры, с которыми эксперт вызывает этот индикатор, идентичные, проверено несколько раз.
Вопрос: в чем может быть дело?