Для этого используем функцию f_InDiapazon().
Алгоритм действий:
1. Создать новый советник
2. Скопировать код функции f_InDiapazon() и вставить после функции OnTick(), т.е. в самый конец кода.
3. Создать две переменные, определяющие час начала и конец интервала для торговли, которые можно будет редактировать при запуске советника во вкладке "Входные параметры" свойств советника.
- Код: выделить все
input int intTradeH1 = 10; // Час начала торговли (0-23)
input int intTradeH2 = 22; // Час конца торговли (0-23)
В коде советника эти строки записываются перед функцией OnInit().
4. В теле функции OnTick() ввести следующий код:
- Код: выделить все
bool bolH = false;
int intHour = TimeHour(TimeCurrent());
bolH = f_InDiapazon(intTradeH1, intTradeH2, intHour);
Comment("\n", "Находится ли данный час в интервале для торговли: ", bolH);
Переменная bolH определяет находится ли данный час в интервале для торговли. Переменной intHour присваивается значение текущего часа. Присваиваем переменной bolH значение функции f_InDiapazon(), в качестве параметров функции указав начальный час и конечный час диапазона, а также величину текущего часа. Выведем через функцию Comment() в качестве комментария в левом верхнем углу графика расчетное значение переменной bolH.
5. Откомпилируем советник.
Советник готов к использованию. Запустив его на какой-нибудь паре, мы получим сообщение о наличие нахождения в торговом диапазоне времени (true - да, false - нет).
Код советника:
- Код: выделить все
//+------------------------------------------------------------------+
//| EA-Example-03.mq4 |
//| Haos |
//| http://www.investforum.ru/forum/ |
//+------------------------------------------------------------------+
#property copyright "Haos"
#property link "http://www.investforum.ru/forum/"
#property version "1.00"
#property strict
//******************************************************************************************
input int intTradeH1 = 10; // Час начала торговли (0-23)
input int intTradeH2 = 22; // Час конца торговли (0-23)
//******************************************************************************************
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//******************************************************************************************
void OnDeinit(const int reason)
{
//---
}
//******************************************************************************************
void OnTick()
{
bool bolH = false; // находится ли данный час в интервале для торговли
int intHour = TimeHour(TimeCurrent());
bolH = f_InDiapazon(intTradeH1, intTradeH2, intHour);
Comment("\n", "Находится ли данный час в интервале для торговли: ", bolH);
}
//******************************************************************************************
bool f_InDiapazon(int h1, int h2, int h)
{
// Функция анализирует находится ли указанный час в диапазоне (между h1 и h2)
if(h >= h1 && h < h2) return(true);
else if(h2 < h1)
{
if((h >= h1 && h < 23) || (h >= 0 && h < h1)) return(true);
}
return(false);
}
//*********************************************************************************************