Получить текущие биды и аски по всем инструментам из потока

Страницы: 1
RSS
Получить текущие биды и аски по всем инструментам из потока, Как получить текущие котировки по всем инструментам, на которые подписан терминал, не дожидаясь OnQuote?
 
Я хочу в OnInit() вызвать getQuoteLevel2 на все инструменты, на которые у меня оформлена подписка (т. е., на которые реагирует OnQuote()). Как это сделать? Не могу найти, как из lua получить список всех "подписанных" инструментов
 
Цитата
Филипп написал:
Я хочу в OnInit() вызвать getQuoteLevel2 на все инструменты, на которые у меня оформлена подписка (т. е., на которые реагирует OnQuote()). Как это сделать? Не могу найти, как из lua получить список всех "подписанных" инструментов
Добрый день.

Заказать стаканы по всем инструментам можно, но если нужны только bid и offer, то лучше заказывать только эти параметры из ТТТ (таблицы текущих торгов)
Последовательность действий для заказа стаканов:
1) getClassesList() - получить все доступные классы
2) getClassSecurities(class_code) - получить для каждого класса список инструментов
3) Subscribe_Level_II_Quotes(class_code, sec_code) - подписаться для нужных инструментов на стакан
4) в OnQuote(class_code, sec_code) отлавливать изменения и получать из через getQuoteLevel2(class_code, sec_code)
- IsSubscribed_Level_II_Quotes() - позволяет проверить есть ли подписка на стакан по инструменту
- Unsubscribe_Level_II_Quotes() - позволяет отписаться от стакана
Максимальное кол-во стаканов у нас по умолчанию 200.

Последовательность действий при заказе только bid и offer:
1) getClassesList() - получить все доступные классы
2) getClassSecurities(class_code) - получить для каждого класса список инструментов
3) для нужных инструментов делаем подписку
ParamRequest(class_code,sec_code, 'BID')
ParamRequest(class_code,sec_code, 'BIDDEPTH')
ParamRequest(class_code,sec_code, 'OFFER')
ParamRequest(class_code,sec_code, 'OFFERDEPTH')
4) в OnParam(class_code, sec_code) отлавливать изменения и получать их через getParamEx() значения
getParamEx(class_code,sec_code, 'BID')
getParamEx(class_code,sec_code, 'BIDDEPTH')
getParamEx(class_code,sec_code, 'OFFER')
getParamEx(class_code,sec_code, 'OFFERDEPTH')

В этом случает придется при каждом вызове OnParam() проверять все интересующие параметры, т.к. у нас нет возможности понять какой из параметров изменился.
Для возможности управлять подписками на параметры должен быть включен "Умный заказ" в настройках терминала.
 
Спасибо. Натолкнулся на следующую проблему - даже после подписки Subscribe_Level_II_Quotes(class, sec) функция обратного вызова OnParam не срабатывает. В терминале отписался от всех потоков данных, чтобы вручную подписываться на них через скрипт. В чем может быть проблема.
 
Цитата
kauyon1306 написал:
Спасибо. Натолкнулся на следующую проблему - даже после подписки Subscribe_Level_II_Quotes(class, sec) функция обратного вызова OnParam не срабатывает. В терминале отписался от всех потоков данных, чтобы вручную подписываться на них через скрипт. В чем может быть проблема.
Так Subscribe_Level_II_Quotes это подписка на стакан, а OnParam колбек на изменения ТТТ.
Как бы совершенно разные вещи.

OnInit() не стоит нагружать сильно, он же в основном потоке выполняется, подвесите quik такими издевательствами, лучше засунуть все в main()
Из квика вы не выдерните список инструментов с оформленной подпиской.
Определять его через OnQuote() весьма не надежно, если например инструмент малоликвидный, то можете и не дождаться колбека.
Правильнее в скрипте задать список нужных инструментов и из скрипта подписаться на них, вам Egor Zaytsev и подсказал целых 2 варианта

1) Стакан
Подписка на стакан  через Subscribe_Level_II_Quotes, ловить изменения стакана через OnQuote и получать значения getQuoteLevel2
2) Таблица текущих торгов
Подписка на параметры ТТТ через ParamRequest, ловить изменения ТТТ через OnParam и получать значения getParamEx

Только не надо мешать все в кучу, выберите один из этих вариантов и реализуйте.

PS: Через ТТТ будет и проще и надежней
Страницы: 1
Читают тему
Наверх