Тестер. 4.2.2.27. Пара вопросов.
Atom Ответить
21.04.2014


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

Дебаг лог до ошибки прилагается.
#samplelog.txt 5 MB (0)



Спасибо:




6 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 21.04.2014
Ответить


GigaMike Перейти

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


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

GigaMike

Фотография
Дата: 21.04.2014
Ответить


Михаил Сухов Перейти
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)
Commented.png 99 KB (0) #debuglog.txt 8 MB (0)
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 22.04.2014
Ответить


GigaMike Перейти

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


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

GigaMike

Фотография
Дата: 22.04.2014
Ответить


Михаил Сухов Перейти
GigaMike Перейти

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


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

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

GigaMike

Фотография
Дата: 23.04.2014
Ответить


В версии 4.2.3.0 обе проблемы сохранились.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 23.04.2014
Ответить


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


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


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy