Советники в MetaTrader 4 пропускают тики, пришедшие в во время любых пауз: выполнение торговых приказов, вычисления, ожидание и т.д. Такая потеря информации может привести к серьезному искажению заложенной логики в ТС. Особенно для ТС, где используется анализ Ask-цен, спред и т.д.
Например, стандартное написание MetaTrader 4 советника не позволяет гарантированно выяснить OHLC-Ask для текущего бара, даже если советник был запущен до начала его формирования.
Данная библиотека/инструментарий позволяет наделить любой советник информацией о прошедших тиках между соседними NewTick-событиями - вызовы OnTick(). Для этого нужно в начале исходника прописать следующую строку:
#include <fxsaber\HistoryTicks\HistoryTicks.mqh> // Библиотека доступа советников к прошедшим тикам
В качестве демонстрации описанной возможности приложен советник, из кода которого хорошо видна логика происходящего.
#property strict #include <fxsaber\HistoryTicks\HistoryTicks.mqh> // Библиотека доступа советников к прошедшим тикам #define TOSTRING(A) #A + " = " + (string)(A) + " " void OnTick() { static int Num = 0; // Распечатываем все тики, что пришли во время выполнения предыдущей OnTick for (int i = 0; i < ArraySize(LastTicks); i++) Print(TOSTRING(Num++) + TOSTRING(LastTicks[i].time) + TOSTRING(LastTicks[i].bid) + TOSTRING(LastTicks[i].ask)); Print(TOSTRING(ArraySize(HistoryTicks))); // Количество всего сохраненных тиков за время работы советника Sleep(10000); // Несмотря на длительную паузу, накопление тиков для следующей OnTick будет происходить }
В коде видно, что стали доступны два тиковых массива:
Работа таких советников возможна только при условии, что будет запущен индикатор HistoryTicks. Иначе на каждом тике любой такой советник будет выдавать следующее предупреждение:
2018.03.26 00:05:14.924 HistoryTicks_Example EURGBP,M1: Run the HistoryTicks_EURGBP-indicator!!!
Этот приложенный индикатор и транслирует получаемые им тики во все советники своего символа. Индикатор следит за тем, чтобы не было запущено несколько его копий на одном и том же символе. Также при его удалении с графика сохраняет все накопленные тики в соответствующий файл песочницы терминала.
В итоге алгоритм работы с модифицированными строкой советниками следующий (на примере EURUSD):
Теперь на каждом вызове OnTick можно прогонять в цикле логику ТС через все тики (массив LastTicks), будучи уверенным в отсутствии пропусков, а так же в OnTick достучаться до любого тика (с момента запуска советника) через массив HistoryTicks.
VR Smart Grid Lite
Стратегия частичного усреднения и закрытия сети ордеров против тренда.
NYBOT Index
Формула расчета индикатора соответствует индексу NYBOT (New York Board of Trade). Это индекс доллара по корзине из шести тех валют, чьи страны образуют наибольший внешнеторговый оборот США.
RenkoOneBuffer
Индикатор RenkoOneBuffer позволяет отображать графики Ренко в подокне индикатора. Тип графиков Ренко показывает лишь движения цены, большие заданного (box size). Он помогает устранить шум и сосредоточиться на основных трендах.
DeleteTradeArrows
Удаляет с графика объекты-стрелки, которыми отмечаются сделки на графике. Утилита реализована в виде индикатора, который сам ничего не рисует.