Files
QuikPy/Examples/04 - Stream.py
2021-02-15 11:06:30 +05:00

52 lines
3.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import time # Подписка на события по времени
from QuikPy import QuikPy # Работа с Quik из Python через LUA скрипты QuikSharp
def PrintCallback(data):
"""Пользовательский обработчик событий:
- Изменение стакана котировок
- Получение обезличенной сделки
- Получение новой свечки
"""
print(data['data']) # Печатаем полученные данные
if __name__ == '__main__': # Точка входа при запуске этого скрипта
# qpProvider = QuikPy() # Вызываем конструктор QuikPy с подключением к локальному компьютеру с QUIK
qpProvider = QuikPy(Host='192.168.1.7') # Вызываем конструктор QuikPy с подключением к удаленному компьютеру с QUIK
firmId = 'MC0063100000' # Фирма
classCode = 'TQBR' # Класс тикера
secCode = 'GAZP' # Тикер
# firmId = 'SPBFUT' # Фирма
# classCode = 'SPBFUT' # Класс тикера
# secCode = 'SiH1' # Для фьючерсов: <Код тикера><Месяц экспирации: 3-H, 6-M, 9-U, 12-Z><Последняя цифра года>
# Стакан
print(f'Текущий стакан {classCode}.{secCode}: {qpProvider.GetQuoteLevel2(classCode, secCode)}')
qpProvider.OnQuote = PrintCallback # Обработчик изменения стакана котировок
print(f'Подписка на стакан {classCode}.{secCode}: {qpProvider.SubscribeLevel2Quotes(classCode, secCode)["data"]}')
sleepSec = 1 # Кол-во секунд получения котировок
print(f'{sleepSec} секунд котировок')
time.sleep(sleepSec) # Ждем кол-во секунд получения котировок
print(f'Отмена подписки на стакан: {qpProvider.UnsubscribeLevel2Quotes(classCode, secCode)["data"]}')
print(f'Статус подписки: {qpProvider.IsSubscribedLevel2Quotes(classCode, secCode)["data"]}')
qpProvider.OnQuote = qpProvider.DefaultHandler # Возвращаем обработчик по умолчанию
# Обезличенные сделки. Чтобы получать, в QUIK открыть Таблицу обезличенных сделок, указать тикер
qpProvider.OnAllTrade = PrintCallback # Обработчик получения обезличенной сделки
sleepSec = 3 # Кол-во секунд получения обезличенных сделок
print(f'{sleepSec} секунд обезличенных сделок')
time.sleep(sleepSec) # Ждем кол-во секунд получения обезличенных сделок
qpProvider.OnAllTrade = qpProvider.DefaultHandler # Возвращаем обработчик по умолчанию
# Подписка на новые свечки
qpProvider.OnNewCandle = PrintCallback # Обработчик получения новой свечки - В первый раз получим все свечки с начала прошлой сессии
print(f'Подписка на минутные свечки {qpProvider.SubscribeToCandles(classCode, secCode, 1)["data"]}')
input('Enter - отмена')
print(f'Отмена подписки на минутные свечки {qpProvider.UnsubscribeFromCandles(classCode, secCode, 1)["data"]}')
qpProvider.OnNewCandle = qpProvider.DefaultHandler # Возвращаем обработчик по умолчанию
# Выход
qpProvider.CloseConnectionAndThread() # Перед выходом закрываем соединение и поток QuikPy из любого экземпляра