Эксперт не получает данные от индикатора

 

Добрый день.

Имею странную проблему. 

Есть индикатор на MQL5, в который заложена вся логика поиска сигналов для покупки/продажи, сигналы он обычным способом (через буфера) рисует на графике.

Вызываю этот индикатор из эксперта, проверяю, есть сигнал на баре или нет. Если есть - эксперт покупает или продает.

Проблема в том, что некоторые сигналы индикатора эксперт не получает. Выводил в логи в эксперте по конкретным точкам, где на графике сигнал рисуется, данные из буферов индикатора, которые получает эксперт - там значение EMPTY_VALUE (сигнала нет). Такая реакция только на некоторые сигналы, большинство нормально получаются и отрабатывают. Входные параметры индикатора на графике и те параметры, с которыми эксперт вызывает этот индикатор, идентичные, проверено несколько раз.

Вопрос: в чем может быть дело?

 
Не видя исходного кода вряд ли тут кто-то что-то скажет. Если в одних случаях сигнал от индикатора приходит в советника нормально, а в других нет, наверно в коде что-то не так. Где-то по какой-то причине Ваш алгоритм не срабатывает. Нужно тестить код и искать причину.
 
satorifx:

Добрый день.

Имею странную проблему. 

Есть индикатор на MQL5, в который заложена вся логика поиска сигналов для покупки/продажи, сигналы он обычным способом (через буфера) рисует на графике.

Вызываю этот индикатор из эксперта, проверяю, есть сигнал на баре или нет. Если есть - эксперт покупает или продает.

Проблема в том, что некоторые сигналы индикатора эксперт не получает. Выводил в логи в эксперте по конкретным точкам, где на графике сигнал рисуется, данные из буферов индикатора, которые получает эксперт - там значение EMPTY_VALUE (сигнала нет). Такая реакция только на некоторые сигналы, большинство нормально получаются и отрабатывают. Входные параметры индикатора на графике и те параметры, с которыми эксперт вызывает этот индикатор, идентичные, проверено несколько раз.

Вопрос: в чем может быть дело?

например

- эксперт ищет сигнал при открытии бара, а индикатор работает по тикам и при открытии там как правило EMPTY_VALUE.

- (как-бы в продолжении) индикатор или советник мультитаймфреймовый, а всё запущено не на самом старшем периоде; на младшем периоде бар открылся, а на старшем-то ещё нет и сигнала потому нет

- или индикатор выставляет сигнал post-factum - то есть уже в прошлом, например на предыдущий бар. Визуально не слишком заметно, смотрится красиво, но эксперт сигнал не найдёт

- или индикаторный буфер имеет смещение, и эксперт просто не на том баре смотрит

- некоторые визуальные метки индикатор делает обычными объектами не связанными с доступными буферами. 

 

похоже на проблему с NewBar,

если используете, нужно удалить эту адскую г. функцию

 
satorifx:

Имею странную проблему. 

Есть индикатор на MQL5, в который заложена вся логика поиска сигналов для покупки/продажи, сигналы он обычным способом (через буфера) рисует на графике.

Вызываю этот индикатор из эксперта, проверяю, есть сигнал на баре или нет. Если есть - эксперт покупает или продает.

Проблема в том, что некоторые сигналы индикатора эксперт не получает. Выводил в логи в эксперте по конкретным точкам, где на графике сигнал рисуется, данные из буферов индикатора, которые получает эксперт - там значение EMPTY_VALUE (сигнала нет). Такая реакция только на некоторые сигналы, большинство нормально получаются и отрабатывают. Входные параметры индикатора на графике и те параметры, с которыми эксперт вызывает этот индикатор, идентичные, проверено несколько раз.

Вопрос: в чем может быть дело?

Пишите больше деталей. Индикатор с исходным кодом или без? Проблема в тестере и онлайн? Например, если это происходит в тестере в невизуальном режиме по тикам, то индикатор не будет пересчитываться на каждом тике без директивы #property tester_everytick_calculate.
 
Stanislav Korotky #:
Пишите больше деталей. Индикатор с исходным кодом или без? Проблема в тестере и онлайн? Например, если это происходит в тестере в невизуальном режиме по тикам, то индикатор не будет пересчитываться на каждом тике без директивы #property tester_everytick_calculate.

у него похоже проблема как на ASC Trend у меня в свое время была, в обычном тестере все сигналы соблюдаются, а в реалтайм торговле пропуски часто на первом тике сигнала (NewBar),

убрать newbar и сигнал на втором тике откроет. Нужны какие-то проверки, но я забил тогда, не смог получить прибыль из системы


уже гораздо позже опять столкнулся, что при newbar иногда в одном из 3 терминалов не срабатывает сигнал, начал печатать значения и обнаружил, что на новом баре значение индикатора  - равно из прошлого бара, только на втором тике получается верное значение из iCustom 

не стал искать причину, просто убрал функцию NewBar


кто пользуется Newbar делали замер разницы в Тестере? В современных реалиях

недавно на мультисимвольном роботе (7 пар) перенес функцию проверку "Есть ли открытая позиция по символу"  стояла она после проверки торговых условий с Copybuffer на каждом тике (индикатор-шпион), перенес эту проверку в самое начало OnChartEvent, 

думал, т.к. каждый из символов большое время находится в торговле, то избегу проверки условий и CopyBuffer на каждом тике, сократится время теста. А нет, нисколько я не выиграл из 15 минутных тестов разницы абсолютно никакой небыло, Кеш тестера отключен всегда

 
lynxntech #:

у него похоже проблема как на ASC Trend у меня в свое время была, в обычном тестере все сигналы соблюдаются, а в реалтайм торговле пропуски часто на первом тике сигнала (NewBar),

убрать newbar и сигнал на втором тике откроет. Нужны какие-то проверки, но я забил тогда, не смог получить прибыль из системы


уже гораздо позже опять столкнулся, что при newbar иногда в одном из 3 терминалов не срабатывает сигнал, начал печатать значения и обнаружил, что на новом баре значение индикатора  - равно из прошлого бара, только на втором тике получается верное значение из iCustom 

не стал искать причину, просто убрал функцию NewBar


кто пользуется Newbar делали замер разницы в Тестере? В современных реалиях

недавно на мультисимвольном роботе (7 пар) перенес функцию проверку "Есть ли открытая позиция по символу"  стояла она после проверки торговых условий с Copybuffer на каждом тике (индикатор-шпион), перенес эту проверку в самое начало OnChartEvent, 

думал, т.к. каждый из символов большое время находится в торговле, то избегу проверки условий и CopyBuffer на каждом тике, сократится время теста. А нет, нисколько я не выиграл из 15 минутных тестов разницы абсолютно никакой небыло, Кеш тестера отключен всегда

Многое зависит от нюансов. Например, если эксперт написан с использованием стандартной библиотеки классов, то там автоматически присутствуют все её баги. Один из них, касающийся пропуска первого (одного или нескольких) тика бара, описан в англоязычном блоге (см. раздел D).

Если коротко, то в методе CExpert::Refresh присутствует баг, который не отслеживает формирование нового бара по новому тику, а в МТ5 из-за его асинхронности вполне может быть ситуация, что тик проброшен (и библиотека по нему помечает, что бар яко-бы обработан), но на самом деле бар может быть ещё не сформирован, из-за чего результаты последующего пересчета индикаторов на новом баре (может быть, выполненные через пару миллисекунд) уже не попадают в сигналы эксперта.

Use of custom tick modeling to prevent illusory grail-like backtests of Renko-driven trading robots
Use of custom tick modeling to prevent illusory grail-like backtests of Renko-driven trading robots
  • 2024.12.07
  • www.mql5.com
Many traders like renko and other "timeless" charts for their clarity and price noise reduction. The charts are used not only for technical analysis but for building trading strategies on top of them