Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
IsNewBar - библиотека для MetaTrader 5
- Просмотров:
- 3633
- Рейтинг:
- Опубликован:
- 2011.12.20 11:13
- Обновлен:
- 2023.03.16 17:42
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Класс С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 (Average True Range) от скользящего среднего.
3X_ParabolicRegressionДва прямолинейных канала стандартных отклонений + криволинейный канал параболической регрессии с интерполяцией будущих значений ценового графика.
Нормированный осциллятор с добавленной сигнальной линией и цветными точками для совершения сделок.
i-Fractals-sigИндикатор сигналов входа по фракталам.