Библиотеки: Control_Trade_Sessions

 

Control_Trade_Sessions:

Библиотека для контроля торговой сессии. При запуске считает время торговых сессий за все 7 дней недели (в сб и вс может быть торговля по криптовалютам), до 10 сессий в день. Затем в OnTick() можно делать проверки, и если тик пришел вне торговой сессии, то можно выйти из дальнейшей его обработки.

Автор: Forester

 

Всё это чушь. Если брокер заполнит спецификацию инструмента не так как в действительности идут котировки, то ваша библиотека будет откровенно врать как и брокер.

Пример можно запустить на финаме.

 
Alexey Viktorov #:

Всё это чушь. Если брокер заполнит спецификацию инструмента не так как в действительности идут котировки, то ваша библиотека будет откровенно врать как и брокер.

Пример можно запустить на финаме.

Кто виноват выяснили. А что делать?

Могу добавить вариант ввода сессий по дням через sinput-ы.
 
Отличная библиотека, спасибо! Основная фишка - скорость. Для оптимизатора - самое то.
 
Forester #:
Кто виноват выяснили. А что делать?

Могу добавить вариант ввода сессий по дням через sinput-ы.

Добавил такую опцию. См. описание и код.

 
Еще немного ускорил код. Раньше на каждом тике вне торговой сессии происходили вычисления времени и сравнение его с массивами сессий,
теперь при смене сессий вычисляю кроме времени окончания текущей сессии и время начала следующей сессии. В результате так же стала всего 1 проверка:
if(time < this.NextTradeStart ) { return false; }
 
Forester #:
Еще немного ускорил код. Раньше на каждом тике вне торговой сессии происходили вычисления времени и сравнение его с массивами сессий,
теперь при смене сессий вычисляю кроме времени окончания текущей сессии и время начала следующей сессии. В результате так же стала всего 1 проверка:

Это самый правильный подход для расчета попадания в любой интервал. Например, если торговля должна быть с 12 до 15 часов, то должен использоваться подобный NextTime-подход.

Из сторонних кодов только у Вас увидел такое.

 
SymbolInfoSessionTrade  error 4307
 
Я не очень сильно вчитывался, но похоже текущая реализация предполагает, что сессия должна лежать строго в пределах одного дня, что не так при существенной разнице в часовых поясах, то есть, например, если европейские сессии торгуются от азиатского брокера или наоборот. То есть, бывают случаи, когда время To меньше From, если отбросить дату из datetime.
 
Stanislav Korotky #:
На кастомных символах можно задать любую каверзную ситуацию с сессиями и проверить корректность библиотеки. Благо, изменение сессий не требует перезаписывания котировок.
 
Stanislav Korotky #:
Я не очень сильно вчитывался, но похоже текущая реализация предполагает, что сессия должна лежать строго в пределах одного дня, что не так при существенной разнице в часовых поясах, то есть, например, если европейские сессии торгуются от азиатского брокера или наоборот. То есть, бывают случаи, когда время To меньше From, если отбросить дату из datetime.
Просто сравнение по времени идет.
if(!TradeSession.isSessionTrade(TimeCurrent())){Print("Market closed. OnTick return");return;}
Вместо 
TimeCurrent()
Можете любое задать, кстати.

Время сессий берется от брокера или можно установить вручную.