Здравствуйте. У меня 2 вопроса по тестеру. API 4.2.2.27
Вопрос 1: Скажите, тестирование на истории на свечах через HistoryEmulationConnector подразумевает, что нужно обязательно генерировать и регистрировать стакан таким образом? Из примера SampleHistoryTesting:
connector.RegisterMarketDepth(new TrendMarketDepthGenerator(connector.GetSecurityId(security))
Потому что в этом примере тестирование просто "На свечках" без генерации стакана работает неправильно - сделки часто проходят по непонятным ценам вне диапазона свечей.
Вопрос 2: Берем тот же пример SampleHistoryTesting. Проводим тестирование на истории на свечах с генерацией стаканов. RIM4 таймфрейм 5 секунд. Свечи сгенерированы в гидре из тиковых финамовских данных, скачанных ею же. Тестирование с определенного момента начинает выдавать ошибки и дальше не работает. На таймфреймах от 1 минуты и выше все в норме.
2014/04/01 10:56:55.000|Debug |HistoryEmulationConnector|BP:MarketDataError,T=2014/04/01 10:57:00.000,Error=Объем заявки 0 задан не верно.
Имя параметра: message
Фактическое значение было 0.
2014/04/01 10:57:00.000|Error |HistoryEmulationConnector|System.ArgumentOutOfRangeException: Объем заявки 0 задан не верно.
Имя параметра: message
Фактическое значение было 0.
в StockSharp.Algo.Testing.MarketEmulator.#=qqiyOdS7pa1C1Euj27KpOOTJ6yPRTs1gAJJnEXL1LJGA=.#=qbFl2u1tZpSoaeyRJryZurQ==(ExecutionMessage #=qRDfxRFPZsgnpE$EhJlNmBQ==, ICollection`1 #=qTDSqy72PaXe9_M9_RAlR6g==)
в StockSharp.Algo.Testing.MarketEmulator.#=qqiyOdS7pa1C1Euj27KpOOTJ6yPRTs1gAJJnEXL1LJGA=.#=qpxzeUUEXP1acrXHj2HVaTg==(Message #=qhSs4ouD7GtYTof62FtdUhw==, ICollection`1 #=qbSMj8JoNCujQbZB7hWHuVg==)
в StockSharp.Algo.Testing.MarketEmulator.#=qqiyOdS7pa1C1Euj27KpOOTJ6yPRTs1gAJJnEXL1LJGA=.#=qpxzeUUEXP1acrXHj2HVaTg==(Message #=qhSs4ouD7GtYTof62FtdUhw==, ICollection`1 #=qbSMj8JoNCujQbZB7hWHuVg==)
в StockSharp.Algo.Testing.MarketEmulator.#=qqiyOdS7pa1C1Euj27KpOOTJ6yPRTs1gAJJnEXL1LJGA=.#=qDjrfsgdqGTHQmueXiiw3lnyKbw0i6JxsnMTCmCxJtFA=(Message #=qmRF$WttvLW6wg1yqEtOjMA==, ICollection`1 #=qNH8VCWinpuhwK1m3QOftkw==)
в StockSharp.Algo.Testing.MarketEmulator.#=qqiyOdS7pa1C1Euj27KpOOTJ6yPRTs1gAJJnEXL1LJGA=.#=qLzr0XVCE3cg7F1D2Chw0EQ==(Message #=q_MM8y0u9ssdDKZCeUz0tSA==, ICollection`1 #=qoD0RJbPcCD952kDATXoukQ==)
в StockSharp.Algo.Testing.MarketEmulator.#=qqiyOdS7pa1C1Euj27KpOOTJ6yPRTs1gAJJnEXL1LJGA=.#=qpxzeUUEXP1acrXHj2HVaTg==(Message #=qhSs4ouD7GtYTof62FtdUhw==, ICollection`1 #=qbSMj8JoNCujQbZB7hWHuVg==)
в StockSharp.Algo.Testing.MarketEmulator.#=qqiyOdS7pa1C1Euj27KpOOTJ6yPRTs1gAJJnEXL1LJGA=.#=qpxzeUUEXP1acrXHj2HVaTg==(Message #=qhSs4ouD7GtYTof62FtdUhw==, ICollection`1 #=qbSMj8JoNCujQbZB7hWHuVg==)
в StockSharp.Algo.Testing.MarketEmulator.#=qqiyOdS7pa1C1Euj27KpOOTJ6yPRTs1gAJJnEXL1LJGA=.#=qpxzeUUEXP1acrXHj2HVaTg==(Message #=qhSs4ouD7GtYTof62FtdUhw==, ICollection`1 #=qbSMj8JoNCujQbZB7hWHuVg==)
в StockSharp.Algo.Testing.MarketEmulator.#=qqiyOdS7pa1C1Euj27KpOOTJ6yPRTs1gAJJnEXL1LJGA=.#=q8eTsNwsUafa3d7KPwE8CaJaLGMhZlqCD$_LFpaapVTakRoK2cuM5Etf0ygrNrAT9zO5jd1YMGtVR0yjJT3ITgw==(Message #=qywaU0r7G0fCjLlUwJ2$cmA==)
в StockSharp.Algo.Testing.MarketEmulator.#=qAwDD2ai4NOPaT0G15edYLwPnAFOG9atzOSDUgzxHBIURPZhsbgU9el_eDqLiKUSTkfr_jQfTtfuAU5I1Lnn5Rw==(Message #=q3qgUO48qchl7XArvDTufMw==)
в StockSharp.Algo.Testing.EmulationMessageAdapter.OnSendInMessage(Message message)
в StockSharp.Messages.MessageAdapter`1.OnInMessageProcessor(Message message, IMessageAdapter adapter)
Дебаг лог до ошибки прилагается.
Comments (6)
Login or Create account, Log in or register to leave a comment
Распишите про это подробнее.
Взят за основу пример SampleHistoryTesting. Добавил только вывод свечей и сделок на SciChart по завершении тестирования. Также добавил вывод Best Bid/Ask на момент завершения каждой свечи.
Иллюстрация тестирования "На свечках" (без генерации стакана) на скрине. Я отметил неправильные сделки. Почти все по бидам, но и по оферам бывает. Также обратите внимание на Bid/Ask по сравнению с диапазоном свечи и на спред. Собственно по этим ценам сделки и проходят.
Сделки берутся из strategy.MyTrades.
Свечи и стакан берутся так: (Насчет стакана не уверен, т.к. стакан по условию тестирования не регистрируется, а если регистрировать, но не генерировать, то картина существенно не меняется):
Дебаг лог прилагаю.
Кстати такое тестирование без генерации стакана не дает ошибок на маленькойм таймфрейме в 5 секунд, но сделки неправильные. А с генерацией стакана - ошибки. (Это к вопросу №2)
Тестирование идет на свечках или на стаканах? Первоначально вы писали про свечки. Теперь пишите про бид-аски.
В версии 4.2.3.0 обе проблемы сохранились.
Пока не смотрели на ваше описание. В релизе мы всегда указываем ссылки на те ошибки, что писали пользователи. Нет смысла поднимать топик, если ссылки на него нет в релизе.