Время исполнения заявки
Atom Ответить
27.04.2011


Добрый день.

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

// если короткая меньше чем длинная, то продажа, иначе, покупка.
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 висят обработчики которые пишут информацию в лог. Лог получаю следующего вида:
Цитата:

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 минут по времени рынка?



Спасибо:




7 Ответов
pyhta4og

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


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

esper

Фотография
Программист
Дата: 28.04.2011
Ответить


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

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

esper

Фотография
Программист
Дата: 04.05.2011
Ответить


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

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

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

pyhta4og

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


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

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

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



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

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

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

esper

Фотография
Программист
Дата: 04.05.2011
Ответить


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


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

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

roman

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


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

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

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



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

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

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

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


Спасибо:

esper

Фотография
Программист
Дата: 08.05.2011
Ответить


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


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

loading
clippy