Заинтересовался вопросом: Тестирую стратегию на EmulationTrader. Таймфрейм, допустим, 10 мин. Не хочу, чтобы стратегия торговала в первую минуту торгов. Известные мне варианты:
- Самый простой - поставить условие, чтобы выбрасывать первую свечку. Не самый лучший вариант по многим причинам. Сложность вижу, чтобы заставить правила тоже не работать в первую свечку. Кроме того, видимо, что WorkingTime не дружит с EmulationTrader. Создал производный класс от WorkingTime и поставил внутри него метки с выводом их в лог – ни разу к WorkingTime.Times никто не обратился
- Смастерить "костыль". Например, подписаться на получение минутных свечей, из которых уже мастерить десятиминутные (а первую свечу дня - девятиминутную). Та же проблема: заставить правила тоже не работать в первую, выкинутую, минуту.
Кто-нить знаем более адекватные способы решения этой проблемы? Или же есть встроенные методы?
Ежели их нет, то предложение авторам библиотеки предусмотреть такую фичу
Comments (7)
Login or Create account, Log in or register to leave a comment
вот такое условие в правилах должно работать```csharp if(Strategy.Trader.MarketTime.TimeOfDay < TimeForOpen.TimeOfDay) return;
то больше оно не сработает. А не ставить Once() - получу целый поток сделок, который трудно проконтролировать
if(Strategy.Trader.MarketTime.TimeOfDay < TimeForOpen.TimeOfDay) return;
Я тоже примерно так делаю, чтобы закрывался за минуту до клиринга, закрывал позы и открывался после. Но я через DateTime сам ввожу требуемое время и в region исполнения сигналов ставлю флаг, что текущее время входит в заданные мною промежутки
Примерно так: