Добрый день.
Сейчас тестирую немного измененную стратегию 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)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Можно попробовать в поставить Timestep в эмуляторе уменьшить. Он по дефолту равен Timeframe=5min
И все-таки, эта ситуация довольно странная.
Предположим что есть стратегия, работающая на часовых свечках, если TimeStep у TimeShiftStrategyManager выставить в 1 час, то тестирование будет идти довольно быстро, но заявки будут выполняться по "левым" ценам, а если выставить TimeStep в 1 секунду, то заявки выполняются по "нормальным" ценам, но тестирование стратегии происходит очень долго.
Почему сделки совершаются только на следующем шаге, а не текущем?
Ответ что называется by Design HistoryTrader-a. Сейчас его меняем ;)
В новой реализации заявки будут выполнятся (при наличии подходящего контрагента) сразу в момент выставлеения заявки.
Вам же пока остается посоветовать поставить достаточно малый TimeStep.
Изначально таким образом и сделал, вот только тестирование хоть в ночь запускай😢
P.s. Может посоветуете, каким образом лучше тестировать множество стратегий, порядка нескольких тысяч, это надо для подбора параметров. Стратегии отличаются только параметрами (период средних, смещение и т.д. и т.п.), интервал тестирования и тайм-фрейм одинаковые. Сейчас просто делю весь набор на меньшие и запускаю несколько стратегий одновременно и таких наборов по числу ядер, может есть способы быстрее?
Все стратегии, добавленные в EmulationStrategyManager, выполняются поочереди в одном потоке? Или можно как-то задавать размер пула потоков?