[3.0.11] History Testing
Atom Ответить
03.03.2011


1)
В Trader.NewTrades сделки приходят в прямом порядке, а в
MarketDepthGenerator.Generate(MarketDepth data, Security security, IEnumerable<Trade> trades)
сделки в trades записаны в обратном порядке.

Возможно фича, но по-моему баг.

2) При сведении сделки допустим стакана

OFFER 200
BID 100

c виртуальной заявкой SELL 50 сделка будет по цене TRADE=100

Таким образом перекос засчитывается в пользу заявки стратегии.

Нельзя переделать чтобы сделка засчитывалась по цене 100 (т.е. на худший для стратегии случай)?

Иначе получаются слишком оптимистичные результаты тестирования.



Спасибо:




5 Ответов
Mikhail Sukhov

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


1. Порядок данных в событиях не детерминирован. Так что и не бага и не фича. Просто так получилось.
2.

pyhta4og Перейти
c виртуальной заявкой SELL 50 сделка будет по цене TRADE=100

Таким образом перекос засчитывается в пользу заявки стратегии.

Нельзя переделать чтобы сделка засчитывалась по цене 100 (т.е. на худший для стратегии случай)?


Наверное, описка. Предлагаете сделку по цене 50?
Спасибо:

pyhta4og

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


1. C учетом того что ByTrendMarketGenerator использует эти сделки для построения стакана, лучще была бы таже последовательность что и в событии NewTrades

2. Нет, именно по 100. Поясню почему.

Я сделал кастомный генератор стакана, который генерирует стакан для последовательности сделок вверх как лучший бид=максимальная цена, для последовательности сделок вниз лучший аск=минимальная цена. Это приводит к следующей картинке


Здесь розовые квадраты на цене 150030 - виртуальная заявка на продажу.
Красные квадраты - это заявки аск в стакане, зеленые - заявки бид в стакане.

Этот стакан - очередная попытка более-менее. корректной симуляции лимиток, о чем мы уже много писали, но решения устраивающего всех так и не нашли.

Так вот, сгенерировал я стакан 150085/150090 в надежде что моя лимитка исполнится ровно по своей цене 150030.
А она исполняется по 150085.
Понятно, что в реальности она исполнится по 150030.
Отсюда и просьба.
Автор топика
Спасибо:

Nord

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


То есть когда мы в цикле
foreach (var trade in trades)
{

}
обрабатываем сделки они не обязательно в том порядке в каком были в квике?
Спасибо:

Mikhail Sukhov

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


Nord Перейти
То есть когда мы в цикле
foreach (var trade in trades)
{

}
обрабатываем сделки они не обязательно в том порядке в каком были в квике?


Да, не обязательно. Просто так получается, что они идут в том порядке (ДДЕ присылает упорядоченно). Но сам порядок никто не контролирует больше.
Спасибо:

Mikhail Sukhov

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


pyhta4og Перейти
Так вот, сгенерировал я стакан 150085/150090 в надежде что моя лимитка исполнится ровно по своей цене 150030.
А она исполняется по 150085.
Понятно, что в реальности она исполнится по 150030.
Отсюда и просьба.


Да, понятно. Видимо, для истории недостаточно одного стакана в момент времени. Для правильного матчинга нужны и предыдущие стаканы, чтобы правильно рассчитать динамику.

Все выглядит так, будто это фича реквест к 3.1.Smile Право же, для 3.0 уже нужен релиз.
Спасибо:


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

loading
clippy