Время исполнения заявки

Время исполнения заявки
Atom
4/27/2011
esper


Добрый день.

Сейчас тестирую немного измененную стратегию SMA. Заявки выставляются следующим образом:
Code

// если короткая меньше чем длинная, то продажа, иначе, покупка.
var direction = isShortLessThenLong ? OrderDirections.Sell : OrderDirections.Buy;

int pos = 40;

if (direction == OrderDirections.Buy)
{
if (Pos < 0)
{
pos *= 2;
}
}
else
{
if (Pos > 0)
{
pos *= 2;
}
}

// создаем заявку
var order = base.CreateOrder(direction, price, pos);
order.Type = OrderTypes.Market;

// регистрируем заявку (обычным способом - лимитированной заявкой)
base.RegisterOrder(order);


На событиях NewMyTrades и NewOrder висят обработчики которые пишут информацию в лог. Лог получаю следующего вида:
Quote:

SS_01:00:05 15:00:03.2775395 Стратегия запущена.
SS_01:00:05 15:00:04.4306055 Заявка №:634395132030855286 дата:21.03.2011 17:15:00 направление:Sell цена:223 объем:40
SS_01:00:05 15:00:04.4886088 Сделка №:634395132030855286 дата:21.03.2011 17:20:00 цена:222,250000061914 объем:10
SS_01:00:05 15:00:04.4886088 Сделка №:634395132030855286 дата:21.03.2011 17:20:00 цена:222,19 объем:14
SS_01:00:05 15:00:04.4896088 Сделка №:634395132030855286 дата:21.03.2011 17:20:00 цена:222,13 объем:16
SS_01:00:05 15:00:05.8826885 Заявка №:634395132030855287 дата:23.03.2011 12:05:00 направление:Buy цена:220,99 объем:80
SS_01:00:05 15:00:05.8936892 Сделка №:634395132030855287 дата:23.03.2011 12:10:00 цена:221,649999954626 объем:80
SS_01:00:05 15:00:06.1987066 Заявка №:634395132030855288 дата:23.03.2011 16:55:00 направление:Sell цена:221,32 объем:80
SS_01:00:05 15:00:06.2297084 Сделка №:634395132030855288 дата:23.03.2011 17:00:00 цена:221,969999947473 объем:10
SS_01:00:05 15:00:06.2297084 Сделка №:634395132030855288 дата:23.03.2011 17:00:00 цена:221,83 объем:13
SS_01:00:05 15:00:06.2297084 Сделка №:634395132030855288 дата:23.03.2011 17:00:00 цена:221,82 объем:5
SS_01:00:05 15:00:06.2297084 Сделка №:634395132030855288 дата:23.03.2011 17:00:00 цена:221,75 объем:7
SS_01:00:05 15:00:06.2297084 Сделка №:634395132030855288 дата:23.03.2011 17:00:00 цена:221,69 объем:17
SS_01:00:05 15:00:06.2297084 Сделка №:634395132030855288 дата:23.03.2011 17:00:00 цена:221,65 объем:2
SS_01:00:05 15:00:06.2297084 Сделка №:634395132030855288 дата:23.03.2011 17:00:00 цена:221,59 объем:3
SS_01:00:05 15:00:06.2297084 Сделка №:634395132030855288 дата:23.03.2011 17:00:00 цена:221,54 объем:6
SS_01:00:05 15:00:06.2307084 Сделка №:634395132030855288 дата:23.03.2011 17:00:00 цена:221,49 объем:6
SS_01:00:05 15:00:06.2307084 Сделка №:634395132030855288 дата:23.03.2011 17:00:00 цена:221,49 объем:0
SS_01:00:05 15:00:06.2357087 Сделка №:634395132030855288 дата:23.03.2011 17:05:00 цена:221,40999995999 объем:11
SS_01:00:05 15:00:06.3747167 Заявка №:634395132030855289 дата:23.03.2011 18:45:00 направление:Buy цена:223,09 объем:80
SS_01:00:05 15:00:06.3777168 Сделка №:634395132030855289 дата:23.03.2011 18:50:00 цена:223,13 объем:15
SS_01:00:05 15:00:06.3777168 Сделка №:634395132030855289 дата:23.03.2011 18:50:00 цена:223,2 объем:12
SS_01:00:05 15:00:06.3777168 Сделка №:634395132030855289 дата:23.03.2011 18:50:00 цена:223,25 объем:6
SS_01:00:05 15:00:06.3787169 Сделка №:634395132030855289 дата:23.03.2011 18:50:00 цена:223,31 объем:9
SS_01:00:05 15:00:06.3787169 Сделка №:634395132030855289 дата:23.03.2011 18:50:00 цена:223,39 объем:17
SS_01:00:05 15:00:06.3787169 Сделка №:634395132030855289 дата:23.03.2011 18:50:00 цена:223,45 объем:14
SS_01:00:05 15:00:06.3787169 Сделка №:634395132030855289 дата:23.03.2011 18:50:00 цена:223,5 объем:7


Вопрос, почему заявка исполняется всегда только через 5 минут по времени рынка?



Thanks:


pyhta4og

Avatar
Date: 4/28/2011
Reply


Можно попробовать в поставить Timestep в эмуляторе уменьшить. Он по дефолту равен Timeframe=5min
Thanks:

esper

Avatar
Date: 4/28/2011
Reply


pyhta4og
Можно попробовать в поставить Timestep в эмуляторе уменьшить. Он по дефолту равен Timeframe=5min

это-то понятно, что можно уменьшить, непонятно почему заявки выполняются только на следующей итерации, а не текущей
Thanks:

esper

Avatar
Date: 5/4/2011
Reply


И все-таки, эта ситуация довольно странная.

Предположим что есть стратегия, работающая на часовых свечках, если TimeStep у TimeShiftStrategyManager выставить в 1 час, то тестирование будет идти довольно быстро, но заявки будут выполняться по "левым" ценам, а если выставить TimeStep в 1 секунду, то заявки выполняются по "нормальным" ценам, но тестирование стратегии происходит очень долго.

Почему сделки совершаются только на следующем шаге, а не текущем?
Thanks:

pyhta4og

Avatar
Date: 5/4/2011
Reply


esper
И все-таки, эта ситуация довольно странная.

Предположим что есть стратегия, работающая на часовых свечках, если TimeStep у TimeShiftStrategyManager выставить в 1 час, то тестирование будет идти довольно быстро, но заявки будут выполняться по "левым" ценам, а если выставить TimeStep в 1 секунду, то заявки выполняются по "нормальным" ценам, но тестирование стратегии происходит очень долго.

Почему сделки совершаются только на следующем шаге, а не текущем?



Ответ что называется by Design HistoryTrader-a. Сейчас его меняем ;)

В новой реализации заявки будут выполнятся (при наличии подходящего контрагента) сразу в момент выставлеения заявки.

Вам же пока остается посоветовать поставить достаточно малый TimeStep.
Thanks:

esper

Avatar
Date: 5/4/2011
Reply


pyhta4og
Вам же пока остается посоветовать поставить достаточно малый TimeStep.


Изначально таким образом и сделал, вот только тестирование хоть в ночь запускай[sad]

P.s. Может посоветуете, каким образом лучше тестировать множество стратегий, порядка нескольких тысяч, это надо для подбора параметров. Стратегии отличаются только параметрами (период средних, смещение и т.д. и т.п.), интервал тестирования и тайм-фрейм одинаковые. Сейчас просто делю весь набор на меньшие и запускаю несколько стратегий одновременно и таких наборов по числу ядер, может есть способы быстрее?
Thanks:

roman

Avatar
Date: 5/5/2011
Reply


pyhta4og
esper
И все-таки, эта ситуация довольно странная.

Предположим что есть стратегия, работающая на часовых свечках, если TimeStep у TimeShiftStrategyManager выставить в 1 час, то тестирование будет идти довольно быстро, но заявки будут выполняться по "левым" ценам, а если выставить TimeStep в 1 секунду, то заявки выполняются по "нормальным" ценам, но тестирование стратегии происходит очень долго.

Почему сделки совершаются только на следующем шаге, а не текущем?



Ответ что называется by Design HistoryTrader-a. Сейчас его меняем ;)

В новой реализации заявки будут выполнятся (при наличии подходящего контрагента) сразу в момент выставлеения заявки.

Вам же пока остается посоветовать поставить достаточно малый TimeStep.

Звучит обнадеживающе;)
Правильно ли я понимаю что если в 10:31:59 у меня в стакане за это время лучшая заявка на продажу = 101 и в эту же секунду в истории была сделка за 101, то моя лимитная заявка на продажу с ценой=101, выставленная в 10:31:59 исполнится?
Шаг подразумевается равный секунде.
Сейчас как я понимаю не так происходит(


Thanks:

esper

Avatar
Date: 5/8/2011
Reply


Все стратегии, добавленные в EmulationStrategyManager, выполняются поочереди в одном потоке? Или можно как-то задавать размер пула потоков?
Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy