← Zurück

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

Добрый день.

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (7)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

pyhta4og
pyhta4og

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

esper
esper Autor

pyhta4og: Можно попробовать в поставить Timestep в эмуляторе уменьшить. Он по дефолту равен Timeframe=5min это-то понятно, что можно уменьшить, непонятно почему заявки выполняются только на следующей итерации, а не текущей

esper
esper Autor

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

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

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

pyhta4og
pyhta4og

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

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

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

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

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

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

esper
esper Autor

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

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

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

roman
roman

pyhta4og:

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

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

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

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

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

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

esper
esper Autor

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