← Zurück

Тестер. 4.2.2.27. Пара вопросов.

Здравствуйте. У меня 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)

Дебаг лог до ошибки прилагается.

War dieses Thema hilfreich?

Thema teilen

Kommentare (6)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Mikhail Sukhov
Mikhail Sukhov

GigaMike: Потому что в этом примере тестирование просто "На свечках" без генерации стакана работает неправильно - сделки часто проходят по непонятным ценам вне диапазона свечей.

Распишите про это подробнее.

GigaMike
GigaMike Autor

Михаил Сухов:

GigaMike: Потому что в этом примере тестирование просто "На свечках" без генерации стакана работает неправильно - сделки часто проходят по непонятным ценам вне диапазона свечей.

Распишите про это подробнее.

Взят за основу пример SampleHistoryTesting. Добавил только вывод свечей и сделок на SciChart по завершении тестирования. Также добавил вывод Best Bid/Ask на момент завершения каждой свечи.

Иллюстрация тестирования "На свечках" (без генерации стакана) на скрине. Я отметил неправильные сделки. Почти все по бидам, но и по оферам бывает. Также обратите внимание на Bid/Ask по сравнению с диапазоном свечи и на спред. Собственно по этим ценам сделки и проходят.

Сделки берутся из strategy.MyTrades.

Свечи и стакан берутся так: (Насчет стакана не уверен, т.к. стакан по условию тестирования не регистрируется, а если регистрировать, но не генерировать, то картина существенно не меняется):

connector.MarketDepthsChanged += depths =>
				{
				    var d = depths.First();
                    this.GuiAsync(() =>
                    {
                        MarketDepth.UpdateDepth(d);

                        // запоминаем последний стакан для вывода в инфо
                        _lastDepth = d;
                    });
				};

candleManager.Processing += (candleSeries, candle) =>
			    {
			        if (candle.State == CandleStates.Finished)
			        {
			            this.GuiAsync(() =>
			            {
			                // запоминаем свечу в хранилище
                                        // свечи из него потом выводятся на график
                                        _candleSource.Add(candle);

			                // выводим инфу о свече и BestPair
			                wnd.TextBox1.AppendText("Candle: {0}\nLOW: {1} HIGH: {2}\nBestPair:\n{3} {4}\n\n"
			                    .Put(candle.OpenTime, candle.LowPrice, candle.HighPrice, _lastDepth.BestBid, _lastDepth.BestAsk));
			            });
			        }
			    };

Дебаг лог прилагаю.

Кстати такое тестирование без генерации стакана не дает ошибок на маленькойм таймфрейме в 5 секунд, но сделки неправильные. А с генерацией стакана - ошибки. (Это к вопросу №2)

Mikhail Sukhov
Mikhail Sukhov

GigaMike: Иллюстрация тестирования "На свечках" (без генерации стакана) на скрине. Я отметил неправильные сделки. Почти все по бидам, но и по оферам бывает. Также обратите внимание на Bid/Ask по сравнению с диапазоном свечи и на спред. Собственно по этим ценам сделки и проходят.

Тестирование идет на свечках или на стаканах? Первоначально вы писали про свечки. Теперь пишите про бид-аски.

GigaMike
GigaMike Autor

Михаил Сухов:

GigaMike: Иллюстрация тестирования "На свечках" (без генерации стакана) на скрине. Я отметил неправильные сделки. Почти все по бидам, но и по оферам бывает. Также обратите внимание на Bid/Ask по сравнению с диапазоном свечи и на спред. Собственно по этим ценам сделки и проходят.

Тестирование идет на свечках или на стаканах? Первоначально вы писали про свечки. Теперь пишите про бид-аски. Тестирование на свечках. Сделки на скрине при тесте на свечках. Это я когда пытался выяснить в чем проблема - вывод бид/аск добавил (сомнение в том, что это корректно, я там выразил). Но если убрать то ничего не меняется.

GigaMike
GigaMike Autor

В версии 4.2.3.0 обе проблемы сохранились.

Mikhail Sukhov
Mikhail Sukhov

GigaMike: В версии 4.2.3.0 обе проблемы сохранились.

Пока не смотрели на ваше описание. В релизе мы всегда указываем ссылки на те ошибки, что писали пользователи. Нет смысла поднимать топик, если ссылки на него нет в релизе.