Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я пользуюсь вот такой функцией для проверки возможности торговать:
Но она не рассчитана на сессии, переходящие через полночь.
А, кстати, интересный вопрос. Как можно задавать сессии для конкретного дня, залезая на другой день? Если бы они были одинаковыми на все 7 дней — то да. А иначе появляется неоднозначность.
Мне, например, по приведенному скриншоту не понятно, можно ли торговать в пятницу с 00:00 до 00:55, т.к. для нее указан совершенно конкретный интервал 03:05-23:05.
Хотелось бы комментариев разработчиков.
Получается, нужна возможность указывать несколько интервалов для каждого дня или сложная функция парсинга торговых сессий с учетом перехода через дни.
По правильному должны быть возвращены все сессии с правильным временем когда from < to
тогда было бы две сессии каждый день
с 00:00 по 00:55 и
с 03:05 по 00:00 (24:00)
А вот это признак from > to заставляет ломать голову как учитывать вчерашний день, и как он заползает на сегодня.
-----------------------------------------------------
Ваш код возьму на заметку, но мне кажется while(SymbolInfoSessionTrade... боле правильно чем какое либо ограничение сессий по кол-ву (#define MAX_TRADE_SESSIONS 5)
Вот эти ф-ции в 4-ке у меня всегда возвращали 0
SymbolInfoInteger( symbol, SYMBOL_EXPIRATION_TIME )
SymbolInfoInteger( symbol, SYMBOL_START_TIME );
Ваш код возьму на заметку, но мне кажется while(SymbolInfoSessionTrade... боле правильно чем какое либо ограничение сессий по кол-ву (#define MAX_TRADE_SESSIONS 5)
Не, лучше ограничить. Ну, или IsStopped проверять.
Вот эти ф-ции в 4-ке у меня всегда возвращали 0
SymbolInfoInteger( symbol, SYMBOL_EXPIRATION_TIME )
SymbolInfoInteger( symbol, SYMBOL_START_TIME );
Они для фьючерсов.
Ну что то такое сделал, надо понаблюдать...
Идея такая
- если сегодня не воскресенье, то можно посмотреть вчера сессии
- из всех вчерашних сессий найти ту у которой from > to, она же будет и последней.
- вычислить это to и прибавить к началу сегодняшнего дня, это и будет время окончания вчерашней сессии, которая заползла на сегодня
- а далее все по if (TimeCurrent()...
Еще прикрепил файлик с ф-цией для наблюдений.
Ну пока все по плану
пятница. Возвраты ф-ций
0 00:05:00.353 0_session07 BRENT-SEP16,M5: IsTradeAllowed(symbolF, TimeCurrent() )= false
0 00:05:00.353 0_session07 BRENT-SEP16,M5: MarketInfo(symbolF, MODE_TRADEALLOWED)= 0.0
0 00:05:00.353 0_session07 BRENT-SEP16,M5: todayStart= 2016.07.22 00:00:00 day_of_weekF= FRIDAY
0 00:05:00.353 0_session07 BRENT-SEP16,M5: yesterdayStart= 2016.07.21 00:00:00 yesterday_day_of_weekF= THURSDAY
0 00:05:00.353 0_session07 BRENT-SEP16,M5: while vr_fromF > vr_toF. Yesterday_day_of_weekF. Today toF= 2016.07.22 00:55:00 session_indexF= 0
0 00:05:00.353 0_session07 BRENT-SEP16,M5: IF vr_fromF > vr_toF Yesterday_day_of_weekF toF= 2016.07.22 00:55:00
0 00:05:00.353 0_session07 BRENT-SEP16,M5: 2016.07.22 00:05:00 ==== dz_SymbolInfoSessionTrade02= true
моя ф-ция разрешила торговать и действительно можно...
0 00:05:38.559 '8715750': order sell market 1.00 BRENT-SEP16 sl: 0.00 tp: 0.00
0 00:05:38.719 '8715750': order was opened : #30289279 sell 1.00 BRENT-SEP16 at 46.04 sl: 0.00 tp: 0.00
0 00:05:44.809 '8715750': close order #30289279 sell 1.00 BRENT-SEP16 at 46.04 sl: 0.00 tp: 0.00 at price 0.00
0 00:05:44.949 '8715750': order #30289279 sell 1.00 BRENT-SEP16 at 46.04 sl: 0.00 tp: 0.00 closed at price 46.09
Надо еще раз проверить понедельник
Понедельник
00:52:25.398 0_session07 BRENT-SEP16,M5: INIT IsTradeAllowed()= true
0 00:52:25.398 0_session07 BRENT-SEP16,M5: INIT IsTradeAllowed(symbolF, TimeCurrent() )= false
0 00:52:25.398 0_session07 BRENT-SEP16,M5: INIT MarketInfo(symbolF, MODE_TRADEALLOWED)= 0.0
0 00:52:25.398 0_session07 BRENT-SEP16,M5: todayStart= 2016.07.25 00:00:00 day_of_weekF= MONDAY
0 00:52:25.398 0_session07 BRENT-SEP16,M5: yesterdayStart= 2016.07.24 00:00:00 yesterday_day_of_weekF= SUNDAY
0 00:52:25.398 0_session07 BRENT-SEP16,M5: while Today fromF= 2016.07.25 03:05:00 toF= 2016.07.25 00:55:00 session_indexF= 0
0 00:52:25.398 0_session07 BRENT-SEP16,M5: 2016.07.25 00:52:25 ==== INIT dz_SymbolInfoSessionTrade02= false
и ручками подверждаю
0 00:52:40.251 '8715750': order sell market 1.00 BRENT-SEP16 sl: 0.00 tp: 0.00
1 00:52:40.368 '8715750': order sell 1.00 BRENT-SEP16 opening at market sl: 0.00 tp: 0.00 failed [Market is closed]
0 00:52:43.128 '8715750': order buy market 1.00 BRENT-SEP16 sl: 0.00 tp: 0.00
1 00:52:43.257 '8715750': order buy 1.00 BRENT-SEP16 opening at market sl: 0.00 tp: 0.00 failed [Market is closed]
Извините что встреваю, если можно один вопрос:
Сегодня, понедельник, случилось что эти строки
выдали что tNew 23 часа пятницы
Не может-ли это быть связано с проблемой торговой и котировочной сессией? Как я понял, в момент выполнения CopyRates сегодняшний бар не обозначился и нулевым считался последний бар пятницы.
Это МТ5, форекс.
Топикстартер усложняет чересчур. Полагаться всецело на системные функции нельзя, а лучше один раз задать торговые режимы так как Вам хочеться или согласно фактическому расписанию. Такое решение мною уже было опубликовано.
TradeState - переключатель торгового режима эксперта в зависимости от времени - библиотека для MetaTrader 5
Топикстартер усложняет чересчур. Полагаться всецело на системные функции нельзя, а лучше один раз задать торговые режимы так как Вам хочеться или согласно фактическому расписанию. Такое решение мною уже было опубликовано.
TradeState - переключатель торгового режима эксперта в зависимости от времени - библиотека для MetaTrader 5
При чем здесь задаваемое время? Функции должны работать.
А то дойдет до того, что надо будет вручную указывать, на каких инструментах можно торговать, а на каких нельзя. Или указывать спред советнику.
Топикстартер усложняет чересчур. Полагаться всецело на системные функции нельзя, а лучше один раз задать торговые режимы так как Вам хочеться или согласно фактическому расписанию. Такое решение мною уже было опубликовано.
TradeState - переключатель торгового режима эксперта в зависимости от времени - библиотека для MetaTrader 5