Стырил. Теперь можно делать расписание на неделю.
Например, ситуация. Долго пыхтел, составил расписание на неделю. Все работает. Неожиданно здрасте Новый год. Праздники. Нужно расписание с учетом праздников. Ломать недельное жаль. Решение: создаю дополнительный экземпляр недельного расписания с запретом торговли в праздники. Вопрос: может расширить m_state до размера века года?. Или как решаете этот вопрос за пределами одной недели?
Стырил. Теперь можно делать расписание на неделю.
Например, ситуация. Долго пыхтел, составил расписание на неделю. Все работает. Неожиданно здрасте Новый год. Праздники. Нужно расписание с учетом праздников. Ломать недельное жаль. Решение: создаю дополнительный экземпляр недельного расписания с запретом торговли в праздники. Вопрос: может расширить m_state до размера века года?. Или как решаете этот вопрос за пределами одной недели?
Да, есть такая задача. Пока обдумываю как это сделать. Пока к красивому решению не пришел. Но есть понимание того, как это должно выглядеть.
- Интерфейс SetTradeState(...) - сам подсказывает, что если в переменных time_begin и time_end задать дату в формате D'hh:mm' - то данный режим будет действовать постоянно, для всех дней удовлетворяющим условию day_of_week. Если же дату задать конкретно, с указанием года, месяца и дня в фоhмате D'YYYY.MM.DD hh:mm', то устанавливаемый режим должен будет действовать конкретно на этот диапазон времени.
- По всей видимости, второй вариант времени, потребуется размещать в другом типе данных (это может быть массив каких-то структур или что-то иное). Тогда придется двумя разными способами искать торговый режим в двух разных коллекциях и сопоставлять режимы, решая какой именно режим должен действовать. При этом интерфейс GetTradeState должен остаться неизменным.
+5
day_of_week - чаще это бывает группа дней: ПН..ПТ или "кроме пятницы" или "кроме понедельника и пятницы"
+5
day_of_week - чаще это бывает группа дней: ПН..ПТ или "кроме пятницы" или "кроме понедельника и пятницы"
Группа дней формируется следующим образом: допустим мы хотим торговать по понедельникам, вторникам и пятницам. Тогда в среду и четверг запрещаем торговлю:
//+------------------------------------------------------------------+ //| TestTradeState.mq5 | //| Copyright 2015, Vasiliy Sokolov. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, Vasiliy Sokolov." #property link "http://www.mql5.com" #property version "1.00" #include <Strategy\TradeState.mqh> CTradeState TradeState(TRADE_BUY_AND_SELL); // Устанавливаем режим по умолчанию Buy And Sell //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { TradeState.SetTradeState(D'00:00', D'23:59', WEDNESDAY, TRADE_STOP); TradeState.SetTradeState(D'00:00', D'23:59', THURSDAY, TRADE_STOP); }Т.е. каждый день недели с точностью до минуты конфигурируется индивидуально.
У себя в советниках это реализовываю, правда не в классе.
как заменить D'00:00'на обычные цифры 00:00 ??? ато datetime бесит(((
в TradeState.SetTradeState(D'00:00', D'23:59', WEDNESDAY, TRADE_STOP);
Пожалуйста:
TradeState.SetTradeState(0, 86399, WEDNESDAY, TRADE_STOP);
#include <Strategy\TradeState.mqh> CTradeState TradeState(TRADE_BUY_AND_SELL); void OnTick() { ......здесь работаем с закрытием (тралом и прочим).... TradeState.SetTradeState(ontime, offtime, ALL_DAYS_OF_WEEK, TRADE_NO_NEW_ENTRY); ......остальной код, в частности для открытия.... }
правильное расположение кода?
заранее извиняюсь за тупые вопросы!!! просто новичок)))
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
TradeState - переключатель торгового режима эксперта в зависимости от времени:
Класс ограничивает торговлю эксперта по времени. Обладает гибкими возможностями конфигурирования, позволяя задавать произвольное количество временных зон, а также разрешать торговлю только по определенным дням недели.
Автор: Vasiliy Sokolov