Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
New Bar Event - библиотека для MetaTrader 5
- Просмотров:
- 1517
- Рейтинг:
- Опубликован:
- 2022.02.03 23:54
- Обновлен:
- 2022.07.06 14:00
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Позволяет определить наступление события нового бара в мультивалютном советнике.
В мультивалютном советнике событие формирования нового бара может происходить в разные моменты времени для разных инструментов. Но так как советник всегда работает на графике одного инструмента, то возникает необходимость корректно определять в обработчике события OnTick() сформировался ли уже новый бар для нужного периода на другом инструменте.
Данная библиотека реализует такую функциональность. Для определения наступления нового бара на нужном периоде на каждом тике сохраняется информация о времени первого тика бара по каждому интересующему инструменту. В тот тик, когда начинается новый бар, время начала нового бара меняется. Затем до наступления нового бара это время всегда остаётся постоянным. В данной библиотеке выполняется вся черновая работа по созданию необходимых переменных для хранения времен для разных инструментов и периодов. Пользователю остается только применять в нужных местах функцию IsNewBar() и UpdateNewBar().
Для использования понадобится подключить библиотеку NewBarEvent.mqh и затем:
- Обязательно вызвать функцию UpdateNewBar() в начале OnTick()
- Использовать функцию IsNewBar(symbol, timeframe) для проверки наступления события в OnTick()
Пример использования приведён ниже и в файле NewBarEventExample.mq5.
void OnTick() { //--- 1. IMPORTANT! Call UpdateNewBar() function at begin of OnTick() UpdateNewBar(); //--- 2.1 Check events if(IsNewBar(Symbol(), Period())) { Print("New Bar at " + EnumToString(Period()) + " for " + Symbol()); } if(IsNewBar("EURGBP", PERIOD_M15)) { Print("New Bar at PERIOD_M15 for EURGBP"); } if(IsNewBar("USDCAD", PERIOD_M15)) { Print("New Bar at PERIOD_M15 for USDCAD"); } if(IsNewBar("USDCHF", PERIOD_M15)) { Print("New Bar at PERIOD_M15 for USDCHF"); } if(IsNewBar("EURGBP", PERIOD_H1)) { Print("New Bar at PERIOD_H1 for EURGBP"); } if(IsNewBar("USDCAD", PERIOD_H1)) { Print("New Bar at PERIOD_H1 for USDCAD"); } if(IsNewBar("USDCHF", PERIOD_H1)) { Print("New Bar at PERIOD_H1 for USDCHF"); } //--- Perform some actions... Sleep(1500); //--- 2.2 Check events again if needed if(IsNewBar(Symbol(), Period())) { Print("New Bar at " + EnumToString(Period()) + " for " + Symbol() + " second time at the same tick"); } if(IsNewBar("EURGBP", PERIOD_M15)) { Print("New Bar at PERIOD_M15 for EURGBP second time at the same tick"); } if(IsNewBar("USDCAD", PERIOD_M15)) { Print("New Bar at PERIOD_M15 for USDCAD second time at the same tick"); } if(IsNewBar("USDCHF", PERIOD_M15)) { Print("New Bar at PERIOD_M15 for USDCHF second time at the same tick"); } if(IsNewBar("EURGBP", PERIOD_H1)) { Print("New Bar at PERIOD_H1 for EURGBP second time at the same tick"); } if(IsNewBar("USDCAD", PERIOD_H1)) { Print("New Bar at PERIOD_H1 for USDCAD second time at the same tick"); } if(IsNewBar("USDCHF", PERIOD_H1)) { Print("New Bar at PERIOD_H1 for USDCHF second time at the same tick"); } }
При запуске на GBPAUD M30 можно увидеть примерно такой вывод
2022.04.01 22:30:00 New Bar at PERIOD_M30 for GBPAUD 2022.04.01 22:30:00 New Bar at PERIOD_M15 for EURGBP 2022.04.01 22:30:00 New Bar at PERIOD_M15 for USDCAD 2022.04.01 22:30:00 New Bar at PERIOD_M15 for USDCHF 2022.04.01 22:30:02 New Bar at PERIOD_M30 for GBPAUD second time at the same tick 2022.04.01 22:30:02 New Bar at PERIOD_M15 for EURGBP second time at the same tick 2022.04.01 22:30:02 New Bar at PERIOD_M15 for USDCAD second time at the same tick 2022.04.01 22:30:02 New Bar at PERIOD_M15 for USDCHF second time at the same tick 2022.04.01 22:45:01 New Bar at PERIOD_M15 for EURGBP 2022.04.01 22:45:01 New Bar at PERIOD_M15 for USDCAD 2022.04.01 22:45:01 New Bar at PERIOD_M15 for USDCHF 2022.04.01 22:45:02 New Bar at PERIOD_M15 for EURGBP second time at the same tick 2022.04.01 22:45:02 New Bar at PERIOD_M15 for USDCAD second time at the same tick 2022.04.01 22:45:02 New Bar at PERIOD_M15 for USDCHF second time at the same tick
Не сглаженная разница показаний iMA (Moving Average, MA) с двух соседних баров в виде гистограммы
OHLC InfoВывод OHLC бара после клика
Индикатор iWPR (Williams’ Percent Range, %R) у которого во входные параметры вынесены значение двух уровней
MA Color N Bars SeparateСерия индикаторов 'MA Color N Bars' Индикатор iMA (Moving Average, MA) на базе графического стиля DRAW_COLOR_ARROW - отображает три цвета: "нейтральный", "тренд вверх" и "тренд вниз". Отображение в подокне построено в одну линию.