Косметические изменения
This commit is contained in:
@@ -11,6 +11,12 @@ def PrintCallback(data):
|
|||||||
"""
|
"""
|
||||||
print(f'{datetime.now().strftime("%d.%m.%Y %H:%M:%S")} - {data["data"]}') # Печатаем полученные данные
|
print(f'{datetime.now().strftime("%d.%m.%Y %H:%M:%S")} - {data["data"]}') # Печатаем полученные данные
|
||||||
|
|
||||||
|
def ChangedConnection(data):
|
||||||
|
"""Пользовательский обработчик событий:
|
||||||
|
- Соединение установлено
|
||||||
|
- Соединение разорвано
|
||||||
|
"""
|
||||||
|
print(f'{datetime.now().strftime("%d.%m.%Y %H:%M:%S")} - {data}') # Печатаем полученные данные
|
||||||
|
|
||||||
if __name__ == '__main__': # Точка входа при запуске этого скрипта
|
if __name__ == '__main__': # Точка входа при запуске этого скрипта
|
||||||
qpProvider = QuikPy() # Вызываем конструктор QuikPy с подключением к локальному компьютеру с QUIK
|
qpProvider = QuikPy() # Вызываем конструктор QuikPy с подключением к локальному компьютеру с QUIK
|
||||||
@@ -26,34 +32,42 @@ if __name__ == '__main__': # Точка входа при запуске это
|
|||||||
# print(f'Текущий стакан {classCode}.{secCode}:', qpProvider.GetQuoteLevel2(classCode, secCode)['data'])
|
# print(f'Текущий стакан {classCode}.{secCode}:', qpProvider.GetQuoteLevel2(classCode, secCode)['data'])
|
||||||
|
|
||||||
# Стакан. Чтобы отмена подписки работала корректно, в QUIK должна быть ЗАКРЫТА таблица Котировки тикера
|
# Стакан. Чтобы отмена подписки работала корректно, в QUIK должна быть ЗАКРЫТА таблица Котировки тикера
|
||||||
qpProvider.OnQuote = PrintCallback # Обработчик изменения стакана котировок
|
# qpProvider.OnQuote = PrintCallback # Обработчик изменения стакана котировок
|
||||||
print(f'Подписка на изменения стакана {classCode}.{secCode}:', qpProvider.SubscribeLevel2Quotes(classCode, secCode)['data'])
|
# print(f'Подписка на изменения стакана {classCode}.{secCode}:', qpProvider.SubscribeLevel2Quotes(classCode, secCode)['data'])
|
||||||
print('Статус подписки:', qpProvider.IsSubscribedLevel2Quotes(classCode, secCode)['data'])
|
# print('Статус подписки:', qpProvider.IsSubscribedLevel2Quotes(classCode, secCode)['data'])
|
||||||
sleepSec = 3 # Кол-во секунд получения котировок
|
# sleepSec = 3 # Кол-во секунд получения котировок
|
||||||
print('Секунд котировок:', sleepSec)
|
# print('Секунд котировок:', sleepSec)
|
||||||
time.sleep(sleepSec) # Ждем кол-во секунд получения котировок
|
# time.sleep(sleepSec) # Ждем кол-во секунд получения котировок
|
||||||
print(f'Отмена подписки на изменения стакана:', qpProvider.UnsubscribeLevel2Quotes(classCode, secCode)['data'])
|
# print(f'Отмена подписки на изменения стакана:', qpProvider.UnsubscribeLevel2Quotes(classCode, secCode)['data'])
|
||||||
print('Статус подписки:', qpProvider.IsSubscribedLevel2Quotes(classCode, secCode)['data'])
|
# print('Статус подписки:', qpProvider.IsSubscribedLevel2Quotes(classCode, secCode)['data'])
|
||||||
qpProvider.OnQuote = qpProvider.DefaultHandler # Возвращаем обработчик по умолчанию
|
# qpProvider.OnQuote = qpProvider.DefaultHandler # Возвращаем обработчик по умолчанию
|
||||||
|
|
||||||
# Обезличенные сделки. Чтобы получать, в QUIK открыть Таблицу обезличенных сделок, указать тикер
|
# Обезличенные сделки. Чтобы получать, в QUIK открыть Таблицу обезличенных сделок, указать тикер
|
||||||
qpProvider.OnAllTrade = PrintCallback # Обработчик получения обезличенной сделки
|
# qpProvider.OnAllTrade = PrintCallback # Обработчик получения обезличенной сделки
|
||||||
sleepSec = 1 # Кол-во секунд получения обезличенных сделок
|
# sleepSec = 1 # Кол-во секунд получения обезличенных сделок
|
||||||
print('Секунд обезличенных сделок:', sleepSec)
|
# print('Секунд обезличенных сделок:', sleepSec)
|
||||||
time.sleep(sleepSec) # Ждем кол-во секунд получения обезличенных сделок
|
# time.sleep(sleepSec) # Ждем кол-во секунд получения обезличенных сделок
|
||||||
qpProvider.OnAllTrade = qpProvider.DefaultHandler # Возвращаем обработчик по умолчанию
|
# qpProvider.OnAllTrade = qpProvider.DefaultHandler # Возвращаем обработчик по умолчанию
|
||||||
|
|
||||||
|
# Просмотр изменений состояния соединения терминала QUIK с сервером брокера
|
||||||
|
qpProvider.OnConnected = ChangedConnection # Нажимаем кнопку "Установить соединение" в QUIK
|
||||||
|
qpProvider.OnDisconnected = ChangedConnection # Нажимаем кнопку "Разорвать соединение" в QUIK
|
||||||
|
|
||||||
# Подписка на новые свечки. При первой подписке получим все свечки с начала прошлой сессии
|
# Подписка на новые свечки. При первой подписке получим все свечки с начала прошлой сессии
|
||||||
# TODO В QUIK 9.2.13.15 перестала работать повторная подписка
|
# TODO В QUIK 9.2.13.15 перестала работать повторная подписка на минутные бары. Остальные работают
|
||||||
# Перед повторной подпиской нужно перезапустить скрипт QuikSharp.lua Подписка станет первой, все заработает
|
# Перед повторной подпиской нужно перезапустить скрипт QuikSharp.lua Подписка станет первой, все заработает
|
||||||
qpProvider.OnNewCandle = PrintCallback # Обработчик получения новой свечки
|
qpProvider.OnNewCandle = PrintCallback # Обработчик получения новой свечки
|
||||||
print(f'Статус подписки:', qpProvider.IsSubscribed(classCode, secCode, 1)['data'])
|
for interval in (60,): # (1, 60, 1440) = Минутки, часовки, дневки
|
||||||
print(f'Подписка на минутные свечки', qpProvider.SubscribeToCandles(classCode, secCode, 1)['data'])
|
print(f'Подписка на интервал {interval}:', qpProvider.SubscribeToCandles(classCode, secCode, interval)['data'])
|
||||||
print(f'Статус подписки:', qpProvider.IsSubscribed(classCode, secCode, 1)['data'])
|
print(f'Статус подписки на интервал {interval}:', qpProvider.IsSubscribed(classCode, secCode, interval)['data'])
|
||||||
input('Enter - отмена\n')
|
input('Enter - отмена\n')
|
||||||
print(f'Отмена подписки на минутные свечки', qpProvider.UnsubscribeFromCandles(classCode, secCode, 1)['data'])
|
for interval in (60,): # (1, 60, 1440) = Минутки, часовки, дневки
|
||||||
print(f'Статус подписки:', qpProvider.IsSubscribed(classCode, secCode, 1)['data'])
|
print(f'Отмена подписки на интервал {interval}', qpProvider.UnsubscribeFromCandles(classCode, secCode, interval)['data'])
|
||||||
|
print(f'Статус подписки на интервал {interval}:', qpProvider.IsSubscribed(classCode, secCode, interval)['data'])
|
||||||
qpProvider.OnNewCandle = qpProvider.DefaultHandler # Возвращаем обработчик по умолчанию
|
qpProvider.OnNewCandle = qpProvider.DefaultHandler # Возвращаем обработчик по умолчанию
|
||||||
|
|
||||||
|
qpProvider.OnConnected = qpProvider.DefaultHandler # Возвращаем обработчик по умолчанию
|
||||||
|
qpProvider.OnDisconnected = qpProvider.DefaultHandler # Возвращаем обработчик по умолчанию
|
||||||
|
|
||||||
# Выход
|
# Выход
|
||||||
qpProvider.CloseConnectionAndThread() # Перед выходом закрываем соединение и поток QuikPy из любого экземпляра
|
qpProvider.CloseConnectionAndThread() # Перед выходом закрываем соединение и поток QuikPy из любого экземпляра
|
||||||
|
|||||||
Reference in New Issue
Block a user