Заинтересовался вопросом: Тестирую стратегию на EmulationTrader. Таймфрейм, допустим, 10 мин. Не хочу, чтобы стратегия торговала в первую минуту торгов. Известные мне варианты:
- Самый простой - поставить условие, чтобы выбрасывать первую свечку. Не самый лучший вариант по многим причинам. Сложность вижу, чтобы заставить правила тоже не работать в первую свечку. Кроме того, видимо, что WorkingTime не дружит с EmulationTrader. Создал производный класс от WorkingTime и поставил внутри него метки с выводом их в лог – ни разу к WorkingTime.Times никто не обратился
- Смастерить "костыль". Например, подписаться на получение минутных свечей, из которых уже мастерить десятиминутные (а первую свечу дня - девятиминутную). Та же проблема: заставить правила тоже не работать в первую, выкинутую, минуту.
Кто-нить знаем более адекватные способы решения этой проблемы? Или же есть встроенные методы?
Ежели их нет, то предложение авторам библиотеки предусмотреть такую фичу
评论 (7)
登录 或 创建账户, 登录或注册以发表评论
вот такое условие в правилах должно работать```csharp if(Strategy.Trader.MarketTime.TimeOfDay < TimeForOpen.TimeOfDay) return;
то больше оно не сработает. А не ставить Once() - получу целый поток сделок, который трудно проконтролировать
if(Strategy.Trader.MarketTime.TimeOfDay < TimeForOpen.TimeOfDay) return;
Я тоже примерно так делаю, чтобы закрывался за минуту до клиринга, закрывал позы и открывался после. Но я через DateTime сам ввожу требуемое время и в region исполнения сигналов ставлю флаг, что текущее время входит в заданные мною промежутки
Примерно так: