Цена исполнения при тестировании на истории
При переводе свечных стратегий с других систем (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 (так как это было раньше)? Иначе как-то затруднительно выверять со сторонними системами - только по заявкам.