Для изменения размера нажмите или перетащите
Экспорт стакана

Для стратегий, которым необходима информация о стакане по инструменту, в S# предусмотрен метод ConnectorGetMarketDepth(Security). Данный метод возвращает MarketDepth, который позволяет получить группированно по типу котировки (биды и оффера), а так же удобную работу с лучшими котировками и спредом.

Предварительные условия

Шаги настройки экспорта стакана

  1. Для того, чтобы метод ConnectorGetMarketDepth(Security) работал и в классе QuikTrader, необходимо в начале настроить экспорт стакана в Quik-е, как показано на рисунке:

    Примечание Примечание
    Если стакан для необходимого инструмента еще ни разу не окрывался в Quik-е, то QuikTrader самостоятельно создаст окно в терминале и настроит его при вызове метода RegisterMarketDepth из кода программы. Или можно принудительно закрыть стакан в Quik-е и он будет переоткрыт с уже корректными для S# настройками.
    Внимание Внимание
    Если в таблице "Инструменты" включена сортировка по одному из столбцов, то при автоматическом открытии стакана методом RegisterMarketDepth, любая сортировка будет отменена.

    Стакан.

    Заголовок окна должен содержать через @ код и класс инструмента, по которому в QuikTrader будет происходить сопоставление объекта Security и стакана. Например, для Лукойла заголовок будет LKOH@QJSIM на демо счете, и LKOH@EQBR на реальном. Для инструментов РТС класс инструмента будет равен RTS. Стакан для июньского фьючерса на индекс РТС, к примеру, будет иметь заголовок RIM5@FORTS. Подробнее, в разделе Идентификатор инструмента.

    Внимание Внимание
    Если код инструмента содержит символ @, то рекомендуется поменять разделитель на другой символ через свойство SecurityIdGeneratorDelimiter у ConnectorSecurityIdGenerator.
  2. После настройки стакана, он будет доступен для экспорта. Для того, чтобы начать получать данные по DDE из стакана в программу необходимо вызвать метод RegisterMarketDepth:

    C#
    trader.RegisterMarketDepth(lkoh);
  3. Пример работы со стаканом:

    C#
    foreach (var qoute in trader.GetMarketDepth(lkoh))
      {
          Console.WriteLine("Направление {0} Объем {1} Цена {2}", qoute.OrderDirection, qoute.Volume, qoute.Price);
      }
  4. Остановка экспорта стакана по DDE:

    C#
    trader.UnRegisterQuotes(lkoh);
  5. Для увеличения скорости передачи данных по DDE для стакана рекомендуется прописать в файл info.ini следующие параметры:

    C#
    [excel] price-timeout=10
См. также