При переводе свечных стратегий с других систем (Ami, Wealthlab, старые версии S#) естественное желание выверить результаты системы - чтобы всё с точностью сопадало.
В свечных стратегиях обычно принято входить по цене клоуза свечи. В старой версии (3.2.7) я так и входил, сделки проходили по этой же цене.
void OnCandlesFinished
....
var order = this.CreateOrder(direction, candleList.Last().ClosePrice, volume);
base.RegisterOrder(order);
В версии 4.0.10 поведение изменилось, пытаюсь разобраться как именно. Свечи - TimeFrame. Для этого сравнил цену сделки из отчёта с ценой заявки (у меня ClosePrice) и Security.GetMarketPrice(direction) - как теперь входит SampleHistoryTesting.
Не совпадает ни с тем ни с другим.
Проковырявшись со сделками выяснил что цена входа равна цене второго Trade из следующей свечи. (видимо первый trade - был сигналом окончания для старой свечи и на следующем оно вошло)
Может быть имеет смысл это параметризировать для EmulationTrader чтобы он входил по цене Order (так как это было раньше)? Иначе как-то затруднительно выверять со сторонними системами - только по заявкам.
Comentários (2)
Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário
Будет фикс
О, супер! Т.е. теперь пуская заявку по маркету можно получить оценку проскальзывания.
Проверил - по сделкам - так и работает - кидаю Buy выше маркета на 20 лотов - оно аккуратно их по Trades матчит. Начиная со второго Trade следующей свечи (ну тут не принципиально) поскольку первый уже прошёл - он и спровоцировал CandleFinished для TimeFrameCandle.
Это очень полезно для детального тестирования, выбора более првильного входа или котирования и т.п.
Но еслиб тестер умел (опционально) проводить сделку по цене Order внезависимости от объёма - было бы полезно для выверки и предварительного тестирования.
Плюс тест наверное пошустрей работать будет - щас по сравнению с 3.2.7 получается примерно раза в два медленней (тест на минутках - стратегия без котирования - Open в 00 минут, Close в 30 минут).