Запаздывание формирования свечей

Запаздывание формирования свечей
Atom
13.08.2012
Memory


Столкнулся со следующей проблемой. Через QuikTrader тяну TimeFrame свечи на сентябрьский индекс РТС и декабрьский Сбер. Таймфрейм 1 минута. Обнаружил что свечи по декабрьскому контракту формируются с очень большим опозданием.

В обработке свечей вставил следующий код:


        void CandleManager_Processing(CandleSeries Series, Candle Candle)
        {
             Console.WriteLine("Candle " + Candle.Security.Code + " time " + Candle.CloseTime + " volume " + Candle.TotalVolume+" local time "+DateTime.Now);
            if (Candle.State == CandleStates.Finished)
            {
             Console.WriteLine("Candle " + Candle.Security.Code + " time " + Candle.CloseTime + " volume " + Candle.TotalVolume+" local time "+DateTime.Now);
             ...
             ...
             ...
            }
         }

получил следующий результат:


Candle finished RIU2 time 13.08.2012 16:37:00 volume 1258 local time 13.08.2012 16:36:51
Candle finished RIU2 time 13.08.2012 16:38:00 volume 532 local time 13.08.2012 16:37:51
Candle finished RIU2 time 13.08.2012 16:39:00 volume 711 local time 13.08.2012 16:38:51
Candle finished SRZ2 time 13.08.2012 16:37:00 volume 1 local time 13.08.2012 16:39:03
Candle finished RIU2 time 13.08.2012 16:40:00 volume 1006 local time 13.08.2012 16:39:51
Candle finished RIU2 time 13.08.2012 16:41:00 volume 761 local time 13.08.2012 16:40:52
Candle finished RIU2 time 13.08.2012 16:42:00 volume 1170 local time 13.08.2012 16:41:51
Candle finished RIU2 time 13.08.2012 16:43:00 volume 886 local time 13.08.2012 16:42:51
Candle finished RIU2 time 13.08.2012 16:44:00 volume 425 local time 13.08.2012 16:43:51
Candle finished RIU2 time 13.08.2012 16:45:00 volume 583 local time 13.08.2012 16:44:51
Candle finished RIU2 time 13.08.2012 16:46:00 volume 929 local time 13.08.2012 16:45:51
Candle finished RIU2 time 13.08.2012 16:47:00 volume 1036 local time 13.08.2012 16:46:51
Candle finished RIU2 time 13.08.2012 16:48:00 volume 299 local time 13.08.2012 16:47:51
Candle finished RIU2 time 13.08.2012 16:49:00 volume 623 local time 13.08.2012 16:48:53
Candle finished RIU2 time 13.08.2012 16:50:00 volume 1249 local time 13.08.2012 16:49:51
Candle finished RIU2 time 13.08.2012 16:51:00 volume 735 local time 13.08.2012 16:50:51
Candle finished RIU2 time 13.08.2012 16:52:00 volume 368 local time 13.08.2012 16:51:51
Candle finished SRZ2 time 13.08.2012 16:40:00 volume 2 local time 13.08.2012 16:52:22
Candle finished RIU2 time 13.08.2012 16:53:00 volume 2071 local time 13.08.2012 16:52:51
Candle finished RIU2 time 13.08.2012 16:54:00 volume 3207 local time 13.08.2012 16:53:51
Candle finished SRZ2 time 13.08.2012 16:53:00 volume 3 local time 13.08.2012 16:53:52
Candle finished RIU2 time 13.08.2012 16:55:00 volume 3175 local time 13.08.2012 16:54:51
Candle finished RIU2 time 13.08.2012 16:56:00 volume 1876 local time 13.08.2012 16:55:51
Candle finished RIU2 time 13.08.2012 16:57:00 volume 844 local time 13.08.2012 16:56:51
Candle finished SRZ2 time 13.08.2012 16:55:00 volume 4 local time 13.08.2012 16:57:03
Candle finished RIU2 time 13.08.2012 16:58:00 volume 2532 local time 13.08.2012 16:57:51
Candle finished RIU2 time 13.08.2012 16:59:00 volume 2011 local time 13.08.2012 16:58:51
Candle finished RIU2 time 13.08.2012 17:00:00 volume 1555 local time 13.08.2012 16:59:51

Сильно похоже на то, что свечя финишируется не по завершению временного интервала а по приходу новой сделки, лежащей за пределами таймфрейма свечи. Вопроса собственно 2:

  1. Такой алгоритм формирования сечи общий для всех провайдеров?
  2. Как это можно обойти не заморачиваясь с собственным формированием свечей?

Теги:


Спасибо:


Moadip

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


Попробуйте изменить TimeOut у TimeFrameCandleBuilder


_candleManager.Sources.OfType<TimeFrameCandleBuilder>().Single().Timeout

Спасибо:

Memory

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


Не помогло [sad]Да и по первому логу видно, там куда больше 10%

Вот так пробовал


_CandleManager.Sources.OfType<TimeFrameCandleBuilder>().Single().Timeout = 1;

результат

Candle RIU2 time 13.08.2012 20:17:00 volume 1534 local time 13.08.2012 20:17:08 Candle RIZ2 time 13.08.2012 20:17:00 volume 1 local time 13.08.2012 20:17:08 Candle RIU2 time 13.08.2012 20:18:00 volume 410 local time 13.08.2012 20:17:51 Candle RIU2 time 13.08.2012 20:19:00 volume 99 local time 13.08.2012 20:18:51 Candle RIU2 time 13.08.2012 20:20:00 volume 465 local time 13.08.2012 20:19:54 Candle RIU2 time 13.08.2012 20:21:00 volume 663 local time 13.08.2012 20:20:51 Candle RIU2 time 13.08.2012 20:22:00 volume 386 local time 13.08.2012 20:21:51 Candle RIU2 time 13.08.2012 20:23:00 volume 222 local time 13.08.2012 20:22:51 Candle RIU2 time 13.08.2012 20:24:00 volume 389 local time 13.08.2012 20:23:52 Candle RIU2 time 13.08.2012 20:25:00 volume 525 local time 13.08.2012 20:24:51 Candle RIZ2 time 13.08.2012 20:18:00 volume 3 local time 13.08.2012 20:25:07

и вот так


_CandleManager.Sources.OfType<TimeFrameCandleBuilder>().Single().Timeout.Value=1;

Candle RIU2 time 13.08.2012 20:44:00 volume 484 local time 13.08.2012 20:43:55 Candle RIU2 time 13.08.2012 20:45:00 volume 147 local time 13.08.2012 20:44:51 Candle RIU2 time 13.08.2012 20:46:00 volume 264 local time 13.08.2012 20:45:52 Candle RIU2 time 13.08.2012 20:47:00 volume 242 local time 13.08.2012 20:46:55 Candle RIZ2 time 13.08.2012 20:44:00 volume 1 local time 13.08.2012 20:47:04 Candle RIU2 time 13.08.2012 20:48:00 volume 150 local time 13.08.2012 20:47:58 Candle RIZ2 time 13.08.2012 20:48:00 volume 1 local time 13.08.2012 20:48:09 Candle RIU2 time 13.08.2012 20:49:00 volume 1057 local time 13.08.2012 20:48:51 Candle RIU2 time 13.08.2012 20:50:00 volume 503 local time 13.08.2012 20:49:53 Candle RIZ2 time 13.08.2012 20:49:00 volume 3 local time 13.08.2012 20:50:17 Candle RIU2 time 13.08.2012 20:51:00 volume 2188 local time 13.08.2012 20:50:51 Candle RIZ2 time 13.08.2012 20:51:00 volume 3 local time 13.08.2012 20:51:32 Candle RIU2 time 13.08.2012 20:52:00 volume 1402 local time 13.08.2012 20:51:51 Candle RIU2 time 13.08.2012 20:53:00 volume 1342 local time 13.08.2012 20:52:51 Candle RIU2 time 13.08.2012 20:54:00 volume 1222 local time 13.08.2012 20:53:52 Candle RIU2 time 13.08.2012 20:55:00 volume 460 local time 13.08.2012 20:54:51 Candle RIZ2 time 13.08.2012 20:52:00 volume 2 local time 13.08.2012 20:55:09 Candle RIU2 time 13.08.2012 20:56:00 volume 1886 local time 13.08.2012 20:55:52 Candle RIU2 time 13.08.2012 20:57:00 volume 621 local time 13.08.2012 20:56:52

Пытался сделать вот так:


_CandleManager.Sources.OfType<TimeFrameCandleBuilder>().Single().Timeout = new Unit(1,UnitTypes.Percent);

словил исключение - Проценты нельзя сравнивать с не процентами 1% и 0.

StackTrace at StockSharp.BusinessEntities.Unit.op_GreaterThan(Unit u1, Unit u2) at StockSharp.BusinessEntities.Unit.op_LessThan(Unit u1, Unit u2) at StockSharp.Algo.Candles.Compression.TimeFrameCandleBuilder.set_Timeout(Unit value) at ArbirageStat.Form1.OnStartButton(Object sender, EventArgs e)

Спасибо:

esper

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


  1. Свеча считается сформированной только тогда, когда пришел первый тик следующей свечи.
  2. Таймауты пока еще не работают.
  1. Как это можно обойти не заморачиваясь с собственным формированием свечей? А как вы предлагаете определять, что свеча сформирована полностью?
Спасибо:

Memory

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


Я уже думал об этом. Знал бы однозначно правильный ответ - конечно бы подсказал. Первое что приходит в голову, финалить свечу по изменению времени в трейдере. Но, понятно что информация о сделках могут появится и позже. Для себя я скорее всего так и сделаю. Возможно буду смотреть на время сделки в парной бумаге. Или через таймаут. Я там еще спрашивал на предмет одинаковости алгоритмов для других провайдеров. SmartCom основные свечные интервалы сам формирует. Это как-то учитывается или тоже свеча финалится по приходу первой сделки за пределами таймфрейма?

Спасибо:

esper

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


Алгоритм формирования свечей не зависит от шлюза.

Спасибо: Memory


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

loading
clippy