EventChartCustom => indicator is too slow - страница 3

 
Andrey Khatimlianskii:

А если в миллисекундном таймере?

Будет потеря на постановке события таймера и на вызове OnTimer.

В бесконечном цикле со Sleep(1) таких потерь нет

 
Andrey Khatimlianskii:

А если в миллисекундном таймере?

В Тестере то же самое. Sleep - сдвигает внутреннее время на заданное количество миллисекунд. Таймер - аналогично.

 
fxsaber:

Сравнение здесь не при чем. Если три тика с разными полями, но с совпадающим time_msc, то без индикатора-шпиона нет ни единого способа добраться до второго тика.

GlobalVariableSetOnCondition была специально разработана для организации семафоров-синхронизаторов.

Сохраняйте критически важную информацию в глобальных переменных клиентского терминала и никаких потерь на передачу - постановку - обработку событий

Документация по MQL5: Глобальные переменные терминала / GlobalVariableSetOnCondition
Документация по MQL5: Глобальные переменные терминала / GlobalVariableSetOnCondition
  • www.mql5.com
Устанавливает новое значение существующей глобальной переменной, если текущее значение переменной равно значению третьего параметра check_value. Если переменной не существует, функция сгенерирует ошибку ERR_GLOBALVARIABLE_NOT_FOUND (4501) и вернет false. При успешном выполнении функция возвращает true, иначе false. Для получения информации об...
 

Как вариант код шпиона, обернуть в класс.
Поля проинициализировать в конструкторе класса.
mql функцию обернуть в метод класса.
Для каждого символа создавать объект new/delete.

 
Slava:

GlobalVariableSetOnCondition была специально разработана для организации семафоров-синхронизаторов.

Сохраняйте критически важную информацию в глобальных переменных клиентского терминала и никаких потерь на передачу - постановку - обработку событий

Речь о двух вещах.

  1. Советник в Тестере не может поймать все тики не своего символа без индикатора-шпиона.
  2. Советник (даже не торговый) на реале будет пропускать тики своего символа даже с бесконечным Sleep(1). Поэтому в MT4 нет совсем альтернативы индикатору-шпиону. А в MT5 - CopyTicks+SymbolInfoTick.
 
fxsaber:

Аналога такой ошибки в MT4 нет?

Проверил. В MT4 нет проверки на наличие советника.

 
fxsaber:

Речь о двух вещах.

  1. Советник в Тестере не может поймать все тики не своего символа без индикатора-шпиона.
  2. Советник (даже не торговый) на реале будет пропускать тики своего символа даже с бесконечным Sleep(1). Поэтому в MT4 нет совсем альтернативы индикатору-шпиону. А в MT5 - CopyTicks+SymbolInfoTick.

Индикатор-шпион ведёт счётчик тиков, которые поймал. В глобальной переменной клиентского терминала.

Советник считывает этот счётчик, сбрасывает счётчик в 0 и забирает себе столько тиков, сколько там было насчитано

 
Slava:

Индикатор-шпион ведёт счётчик тиков, которые поймал. В глобальной переменной клиентского терминала.

Советник считывает этот счётчик, сбрасывает счётчик в 0 и забирает себе столько тиков, сколько там было насчитано

Это возможно только через CopyTicks. При наличии CopyTicks индикатор-шпион не нужен.

 
Slava:

В бесконечном цикле со Sleep(1) таких потерь нет

Но придется отказаться от других обработчиков событий.

Родной ОнТик, допустим, не много экономии даст, а вот если есть интерактивная графика, то без OnChartEvent она работать не будет.

 
Andrey Khatimlianskii:

Но придется отказаться от других обработчиков событий.

Родной ОнТик, допустим, не много экономии даст, а вот если есть интерактивная графика, то без OnChartEvent она работать не будет.

Это да.
Причина обращения: