Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

New Bar Event - библиотека для MetaTrader 5

Просмотров:
1505
Рейтинг:
(10)
Опубликован:
2022.02.03 23:54
Обновлен:
2022.07.06 14:00
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Позволяет определить наступление события нового бара в мультивалютном советнике. 

В мультивалютном советнике событие формирования нового бара может происходить в разные моменты времени для разных инструментов. Но так как советник всегда работает на графике одного инструмента, то возникает необходимость корректно определять в обработчике события OnTick() сформировался ли уже новый бар для нужного периода на другом инструменте.

Данная библиотека реализует такую функциональность. Для определения наступления нового бара на нужном периоде на каждом тике сохраняется информация о времени первого тика бара по каждому интересующему инструменту. В тот тик, когда начинается новый бар, время начала нового бара меняется. Затем до наступления нового бара это время всегда остаётся постоянным. В данной библиотеке выполняется вся черновая работа по созданию необходимых переменных для хранения времен для разных инструментов и периодов. Пользователю остается только применять в нужных местах функцию IsNewBar() и UpdateNewBar().

Для использования понадобится подключить библиотеку NewBarEvent.mqh и затем:

  1. Обязательно вызвать функцию UpdateNewBar() в начале OnTick()
  2. Использовать функцию 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



    Difference of two bars MA histogram Difference of two bars MA histogram

    Не сглаженная разница показаний iMA (Moving Average, MA) с двух соседних баров в виде гистограммы

    OHLC Info OHLC Info

    Вывод OHLC бара после клика

    WPR Custom Cloud WPR Custom Cloud

    Индикатор iWPR (Williams’ Percent Range, %R) у которого во входные параметры вынесены значение двух уровней

    MA Color N Bars Separate MA Color N Bars Separate

    Серия индикаторов 'MA Color N Bars' Индикатор iMA (Moving Average, MA) на базе графического стиля DRAW_COLOR_ARROW - отображает три цвета: "нейтральный", "тренд вверх" и "тренд вниз". Отображение в подокне построено в одну линию.