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


Добрый день.

Сейчас тестирую немного измененную стратегию 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 минут по времени рынка?




Спасибо:


pyhta4og

Фотография
Дата: 28.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

Фотография
Дата: 05.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