Если вы занимаетесь трейдингом какое-то время, вы знаете, что некоторые часы лучше всего подходят для торговли, чем другие. Некоторые инструменты более активны в какой-то период времени, а иногда вы хотите избежать торговли в определенные моменты дня. В этой статье я расскажу, как можно использовать MQL4 для ограничения торговли в заданное время.
Валютный рынок — это круглосуточный рынок. Рынок форекс прекращает свою работу только в выходные дни, в остальное время он открыт и активен. Будучи глобальным децентрализованным рынком, вы всегда можете найти торговые возможности в любой точке земного шара и в любое время суток. Также вы должны знать, что в некоторые моменты времени рынок более активен, чем в другие. Например, пересечение европейской сессии и открытие американской сессии отличаются наибольшей волатильностью.
24-часовой рынок, безусловно, дает много преимуществ, но что если вы предпочитаете алготрейдинг? Тогда у вас появляется еще больше возможностей! Когда торговая стратегия управляется компьютером, она может выполняться 24 часа без остановки. Некоторые стратегии работают лучше только в течение нескольких часов дня, и в этом случае вам нужно найти способ включить свой советник в работу только в заданное время.
Как можно ограничить торговлю на форекс в определенное время?
С помощью MQL4 вы можете выполнять некоторые действия только в течение определенных периодов времени.
Как и во многих других случаях, MQL4 предоставляет некоторые полезные инструменты для достижения данной цели, в этом случае это функция Hour(). Функция Hour() возвращает последний час сервера MetaTrader. Это текущий час со значением от 0 до 23.
Помните, что Hour() возвращает значение часа на сервере, которое может отличаться от вашего местного времени, если вы находитесь в другом часовом поясе.
Вы можете увидеть время сервера в окне «Обзор рынка»:
Нам нужно создать скрипт или советник с двумя внешними параметрами:
- Стартовый час, числа от 0 до 23 — это будет начало операции.
- Час остановки, числа от 0 до 23 — для установки последнего часа работы.
Стартовый час и час остановки могут совпадать, тогда операции будут разрешены. Стартовый час может быть до или после часа остановки. Если он установлен после часа остановки, тогда операции будут разрешены в ночное время.
К примеру, время начала 7, время остановки 19, операции разрешены с 7:00 до 19:00. Начало в 20, время остановки 6, операции разрешены с 8 вечера до 6 утра.
У нас получится следующий код:
//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ #property strict #property show_inputs //Перечисление всех часов. Это необходимо для меню ввода часа. enum Enum_Hour{ h00=00, //00:00 h01=01, //01:00 h02=02, //02:00 h03=03, //03:00 h04=04, //04:00 h05=05, //05:00 h06=06, //06:00 h07=07, //07:00 h08=08, //08:00 h09=09, //09:00 h10=10, //10:00 h11=11, //11:00 h12=12, //12:00 h13=13, //13:00 h14=14, //14:00 h15=15, //15:00 h16=16, //16:00 h17=17, //17:00 h18=18, //18:00 h19=19, //19:00 h20=20, //20:00 h21=21, //21:00 h22=22, //22:00 h23=23, //23:00 }; input Enum_Hour StartHour=h07; //Час начала работы. input Enum_Hour LastHour=h17; //Час окончания работы. bool CheckActiveHours(){ //По умолчанию операции отключены bool OperationsAllowed=false; //Проверяем, находится ли текущий час между разрешенными часами работы, если да, то возвращаем true. if(StartHour==LastHour && Hour()==StartHour) OperationsAllowed=true; if(StartHour<LastHour && Hour()>=StartHour && Hour()<=LastHour) OperationsAllowed=true; if(StartHour>LastHour && ((Hour()>=LastHour && Hour()<=23) || (Hour()<=StartHour && Hour()>0))) OperationsAllowed=true; return OperationsAllowed; } void OnStart() { //--- if(CheckActiveHours()) Alert("Операции разрешены"); else Alert("Операции запрещены"); } //+------------------------------------------------------------------+
Мы проверяем, включен ли текущий час в час операций и возвращаем true или false. Затем мы можем использовать true или false, чтобы ограничить выполнение определенных задач.
Что-то вставил код в советиник, по тесту не работает, как открывал сделки в том числе и ночью так и открывает… жаль
Быть может он код для MT5? может в этом причина