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

IsNewBar - библиотека для MetaTrader 5

Просмотров:
3530
Рейтинг:
(23)
Опубликован:
2011.12.20 11:13
Обновлен:
2023.03.16 17:42
\MQL5\Experts\ \MQL5\Include\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Класс СIsNewBar необходим для экономной работы экспертов, делающих свои расчеты в момент времени прихода нового бара.

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

Сам код библиотеки следует включить в содержимое файла на глобальном уровне директивой #include:

#include <IsNewBar.mqh>

Затем в блоке OnTick() эксперта необходимо объявить требуемое количество переменных класса СIsNewBar:

static CIsNewBar NB1,NB2;

После этого можно делать вызовы функций IsNewBar()

bool IsNewBar(string symbol,            // символ валюты
              ENUM_TIMEFRAMES timeframe) // таймфрейм графика для расчета

в коде эксперта:

if(NB1.IsNewBar(Symbol(),PERIOD_D1)) // проверка на появление нового бара
     {
      /* Здесь код блока получения торгового сигнала 1 */
     }

Например, вот возможный вариант кода с использованием класса  СIsNewBar внутри функции OnTick():

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//----

   double iClose1[1],iClose2[1];
//---- объявление статических переменных
   static bool Recount1=true,Recount2=true;
   static CIsNewBar NB1,NB2;

//+----------------------------------------------+
//| Определение сигналов для сделок              |
//+----------------------------------------------+
   if(NB1.IsNewBar(Symbol(),PERIOD_D1) || Recount1) // проверка на появление нового бара
     {
      Recount1=false;
      
      //---- копируем вновь появившиеся данные в массивы
      if(CopyClose(Symbol(),PERIOD_D1,1,1,iClose1)<=0) {Recount1=true; return;}
      
      /* Здесь код блока получения торгового сигнала 1 */
      
     }
     
   if(NB2.IsNewBar(Symbol(),PERIOD_H4) || Recount2) // проверка на появление нового бара
     {
      Recount2=false;
      
      //---- копируем вновь появившиеся данные в массивы
      if(CopyClose(Symbol(),PERIOD_H4,1,1,iClose2)<=0) {Recount2=true; return;}
      
      /* Здесь код блока получения торгового сигнала 2 */
      
     }

ATR channel ATR channel

Канал, основанный на отклонениях технического индикатора ATR (Average True Range) от скользящего среднего.

3X_ParabolicRegression 3X_ParabolicRegression

Два прямолинейных канала стандартных отклонений + криволинейный канал параболической регрессии с интерполяцией будущих значений ценового графика.

Forecast Oscillator Forecast Oscillator

Нормированный осциллятор с добавленной сигнальной линией и цветными точками для совершения сделок.

i-Fractals-sig i-Fractals-sig

Индикатор сигналов входа по фракталам.