From d8f8adbefe6a20cce20f5070e332c0c61f2a05ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B3=D0=BE=D1=80=D1=8C=20=D0=A7=D0=B5=D1=87=D0=B5?= =?UTF-8?q?=D1=82?= Date: Fri, 19 Nov 2021 14:46:50 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=20=D1=83=D0=BC=D0=BE=D0=BB=D1=87?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8E=20=D0=BF=D0=BE=D0=B4=D0=BA=D0=BB=D1=8E?= =?UTF-8?q?=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=20=D0=BB=D0=BE=D0=BA?= =?UTF-8?q?=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE=D0=BC=D1=83=20=D0=BA=D0=BE=D0=BC?= =?UTF-8?q?=D0=BF=D1=8C=D1=8E=D1=82=D0=B5=D1=80=D1=83=20=D1=81=20=D0=9A?= =?UTF-8?q?=D0=B2=D0=B8=D0=BA=D0=BE=D0=BC.=20=D0=9E=D1=84=D0=BE=D1=80?= =?UTF-8?q?=D0=BC=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=D1=81=D0=BA=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Examples/01 - Connect.py | 12 ++++++------ Examples/02 - Accounts.py | 6 +++--- Examples/03 - Ticker.py | 8 ++++---- Examples/04 - Bars.py | 6 +++--- Examples/05 - Stream.py | 8 ++++---- Examples/06 - Transactions.py | 8 ++++---- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Examples/01 - Connect.py b/Examples/01 - Connect.py index f65f0e8..425df0a 100644 --- a/Examples/01 - Connect.py +++ b/Examples/01 - Connect.py @@ -1,4 +1,4 @@ -from QuikPy import QuikPy # Работа с Quik из Python через LUA скрипты QuikSharp +from QuikPy import QuikPy # Работа с QUIK из Python через LUA скрипты QuikSharp def PrintCallback(data): @@ -6,24 +6,24 @@ def PrintCallback(data): print(data) # Печатаем полученные данные if __name__ == '__main__': # Точка входа при запуске этого скрипта - # qpProvider = QuikPy() # Вызываем конструктор QuikPy с подключением к локальному компьютеру с QUIK - qpProvider = QuikPy(Host='192.168.1.7') # Вызываем конструктор QuikPy с подключением к удаленному компьютеру с QUIK + qpProvider = QuikPy() # Вызываем конструктор QuikPy с подключением к локальному компьютеру с QUIK + # qpProvider = QuikPy(Host='<Ваш IP адрес>') # Вызываем конструктор QuikPy с подключением к удаленному компьютеру с QUIK print(f'Подключено к терминалу QUIK по адресу: {qpProvider.Host}:{qpProvider.RequestsPort},{qpProvider.CallbacksPort}') # QuikPy - Singleton класс. Будет создан 1 экземпляр класса, на него будут все ссылки # qpProvider2 = QuikPy() - qpProvider2 = QuikPy(Host='192.168.1.7') # QuikPy - это Singleton класс. При попытке создания нового экземпляра получим ссылку на уже имеющийся экземпляр + qpProvider2 = QuikPy() # QuikPy - это Singleton класс. При попытке создания нового экземпляра получим ссылку на уже имеющийся экземпляр print(f'Экземпляры класса совпадают: {qpProvider2 == qpProvider}') # Проверка соединения print(f'Терминал QUIK подключен к серверу: {qpProvider.IsConnected()["data"] == 1}') - print(f'Отклик QUIK на команду Ping: {qpProvider.Ping()["data"]}') + print(f'Отклик QUIK на команду Ping: {qpProvider.Ping()["data"]}') # Проверка работы скрипта QuikSharp. Должен вернуть Pong # Сервисные функции print(f'Дата на сервере: {qpProvider.GetInfoParam("TRADEDATE")["data"]}') print(f'Время на сервере: {qpProvider.GetInfoParam("SERVERTIME")["data"]}') msg = 'Hello from Python!' - print(f'Отправка сообщения в QUIK: {msg}{qpProvider.MessageInfo(msg)["data"]}') + print(f'Отправка сообщения в QUIK: {msg}{qpProvider.MessageInfo(msg)["data"]}') # Проверка работы QUIK. Сообщение должно показаться как информационное в QUIK # Просмотр изменений параметров qpProvider.OnParam = PrintCallback # Текущие параметры изменяются постоянно. Будем их смотреть, пока не нажмем Enter в консоли diff --git a/Examples/02 - Accounts.py b/Examples/02 - Accounts.py index 9f16cfc..b13e1a3 100644 --- a/Examples/02 - Accounts.py +++ b/Examples/02 - Accounts.py @@ -1,9 +1,9 @@ -from QuikPy import QuikPy # Работа с Quik из Python через LUA скрипты QuikSharp +from QuikPy import QuikPy # Работа с QUIK из Python через LUA скрипты QuikSharp def GetAllAccounts(): """Получение всех торговых счетов""" - futuresFirmId = 'SPBFUT' # Фирма для фьючерсов. Измените, если требуется на фирму, которую для фьючерсов поставил ваш брокер + futuresFirmId = 'SPBFUT' # Фирма для фьючерсов. Измените, если требуется, на фирму, которую для фьючерсов поставил ваш брокер classCodes = qpProvider.GetClassesList()['data'] # Список классов classCodesList = classCodes[:-1].split(',') # Удаляем последнюю запятую, разбиваем значения по запятой @@ -118,7 +118,7 @@ def GetAccount(ClientCode='', FirmId='SPBFUT', TradeAccountId='SPBFUT00PST', Lim if __name__ == '__main__': # Точка входа при запуске этого скрипта qpProvider = QuikPy() # Вызываем конструктор QuikPy с подключением к локальному компьютеру с QUIK - # qpProvider = QuikPy(Host='192.168.1.7') # Вызываем конструктор QuikPy с подключением к удаленному компьютеру с QUIK + # qpProvider = QuikPy(Host='<Ваш IP адрес>') # Вызываем конструктор QuikPy с подключением к удаленному компьютеру с QUIK GetAllAccounts() # Получаем все счета. По ним можно будет сформировать список счетов для торговли print() diff --git a/Examples/03 - Ticker.py b/Examples/03 - Ticker.py index b7c75a5..3307681 100644 --- a/Examples/03 - Ticker.py +++ b/Examples/03 - Ticker.py @@ -1,9 +1,9 @@ -from QuikPy import QuikPy # Работа с Quik из Python через LUA скрипты QuikSharp +from QuikPy import QuikPy # Работа с QUIK из Python через LUA скрипты QuikSharp if __name__ == '__main__': # Точка входа при запуске этого скрипта - # qpProvider = QuikPy() # Вызываем конструктор QuikPy с подключением к локальному компьютеру с QUIK - qpProvider = QuikPy(Host='192.168.1.7') # Вызываем конструктор QuikPy с подключением к удаленному компьютеру с QUIK + qpProvider = QuikPy() # Вызываем конструктор QuikPy с подключением к локальному компьютеру с QUIK + # qpProvider = QuikPy(Host='<Ваш IP адрес>') # Вызываем конструктор QuikPy с подключением к удаленному компьютеру с QUIK firmId = 'MC0063100000' # Фирма classCode = 'TQBR' # Класс тикера @@ -11,7 +11,7 @@ if __name__ == '__main__': # Точка входа при запуске это # firmId = 'SPBFUT' # Фирма # classCode = 'SPBFUT' # Класс тикера - # secCode = 'SiH1' # Для фьючерсов: <Код тикера><Месяц экспирации: 3-H, 6-M, 9-U, 12-Z><Последняя цифра года> + # secCode = 'SiH2' # Для фьючерсов: <Код тикера><Месяц экспирации: 3-H, 6-M, 9-U, 12-Z><Последняя цифра года> # Данные тикера и его торговый счет securityInfo = qpProvider.GetSecurityInfo(classCode, secCode)["data"] diff --git a/Examples/04 - Bars.py b/Examples/04 - Bars.py index 6e8740a..92bdf89 100644 --- a/Examples/04 - Bars.py +++ b/Examples/04 - Bars.py @@ -1,7 +1,7 @@ from time import time import os.path import pandas as pd -from QuikPy import QuikPy # Работа с Quik из Python через LUA скрипты QuikSharp +from QuikPy import QuikPy # Работа с QUIK из Python через LUA скрипты QuikSharp def SaveCandlesToFile(classCode='TQBR', secCodes=('SBER',), timeFrame='D', compression=1): @@ -48,7 +48,7 @@ def SaveCandlesToFile(classCode='TQBR', secCodes=('SBER',), timeFrame='D', compr if __name__ == '__main__': # Точка входа при запуске этого скрипта startTime = time() # Время начала запуска скрипта qpProvider = QuikPy() # Вызываем конструктор QuikPy с подключением к локальному компьютеру с QUIK - # qpProvider = QuikPy(Host='192.168.1.7') # Вызываем конструктор QuikPy с подключением к удаленному компьютеру с QUIK + # qpProvider = QuikPy(Host='<Ваш IP адрес>') # Вызываем конструктор QuikPy с подключением к удаленному компьютеру с QUIK timeFrame = 'M' # Временной интервал: 'M'-Минуты, 'D'-дни, 'W'-недели, 'MN'-месяцы compression1 = 5 # Кол-во минут для минутного графика. Для остальных = 1 @@ -64,7 +64,7 @@ if __name__ == '__main__': # Точка входа при запуске это SaveCandlesToFile(classCode, secCodes, timeFrame, compression2) # Получаем 15-и минутные бары classCode = 'SPBFUT' # Фьючерсы РТС - secCodes = ('SiZ1', 'RIZ1') # Формат фьючерса: <Тикер><Месяц экспирации><Последняя цифра года> Месяц экспирации: 3-H, 6-M, 9-U, 12-Z + secCodes = ('SiH2', 'RIH2') # Формат фьючерса: <Тикер><Месяц экспирации><Последняя цифра года> Месяц экспирации: 3-H, 6-M, 9-U, 12-Z SaveCandlesToFile(classCode, secCodes) # По умолчанию получаем дневные бары SaveCandlesToFile(classCode, secCodes, timeFrame, compression1) # Получаем 5-и минутные бары SaveCandlesToFile(classCode, secCodes, timeFrame, compression2) # Получаем 15-и минутные бары diff --git a/Examples/05 - Stream.py b/Examples/05 - Stream.py index 1f93b44..c94c407 100644 --- a/Examples/05 - Stream.py +++ b/Examples/05 - Stream.py @@ -1,5 +1,5 @@ import time # Подписка на события по времени -from QuikPy import QuikPy # Работа с Quik из Python через LUA скрипты QuikSharp +from QuikPy import QuikPy # Работа с QUIKиз Python через LUA скрипты QuikSharp def PrintCallback(data): @@ -11,8 +11,8 @@ def PrintCallback(data): print(data['data']) # Печатаем полученные данные if __name__ == '__main__': # Точка входа при запуске этого скрипта - # qpProvider = QuikPy() # Вызываем конструктор QuikPy с подключением к локальному компьютеру с QUIK - qpProvider = QuikPy(Host='192.168.1.7') # Вызываем конструктор QuikPy с подключением к удаленному компьютеру с QUIK + qpProvider = QuikPy() # Вызываем конструктор QuikPy с подключением к локальному компьютеру с QUIK + # qpProvider = QuikPy(Host='<Ваш IP адрес>') # Вызываем конструктор QuikPy с подключением к удаленному компьютеру с QUIK firmId = 'MC0063100000' # Фирма classCode = 'TQBR' # Класс тикера @@ -20,7 +20,7 @@ if __name__ == '__main__': # Точка входа при запуске это # firmId = 'SPBFUT' # Фирма # classCode = 'SPBFUT' # Класс тикера - # secCode = 'SiH1' # Для фьючерсов: <Код тикера><Месяц экспирации: 3-H, 6-M, 9-U, 12-Z><Последняя цифра года> + # secCode = 'SiH2' # Для фьючерсов: <Код тикера><Месяц экспирации: 3-H, 6-M, 9-U, 12-Z><Последняя цифра года> # Стакан print(f'Текущий стакан {classCode}.{secCode}: {qpProvider.GetQuoteLevel2(classCode, secCode)}') diff --git a/Examples/06 - Transactions.py b/Examples/06 - Transactions.py index 51b6e00..95fa8c3 100644 --- a/Examples/06 - Transactions.py +++ b/Examples/06 - Transactions.py @@ -1,4 +1,4 @@ -from QuikPy import QuikPy # Работа с Quik из Python через LUA скрипты QuikSharp +from QuikPy import QuikPy # Работа с QUIK из Python через LUA скрипты QuikSharp def OnTransReply(data): @@ -34,8 +34,8 @@ def OnDepoLimitDelete(data): print(data['data']) # Печатаем полученные данные if __name__ == '__main__': # Точка входа при запуске этого скрипта - # qpProvider = QuikPy() # Вызываем конструктор QuikPy с подключением к локальному компьютеру с QUIK - qpProvider = QuikPy(Host='192.168.1.7') # Вызываем конструктор QuikPy с подключением к удаленному компьютеру с QUIK + qpProvider = QuikPy() # Вызываем конструктор QuikPy с подключением к локальному компьютеру с QUIK + # qpProvider = QuikPy(Host='<Ваш IP адрес>') # Вызываем конструктор QuikPy с подключением к удаленному компьютеру с QUIK qpProvider.OnTransReply = OnTransReply # Ответ на транзакцию пользователя. Если транзакция выполняется из QUIK, то не вызывается qpProvider.OnOrder = OnOrder # Получение новой / изменение существующей заявки qpProvider.OnTrade = OnTrade # Получение новой / изменение существующей сделки @@ -44,7 +44,7 @@ if __name__ == '__main__': # Точка входа при запуске это qpProvider.OnDepoLimitDelete = OnDepoLimitDelete # Удаление позиции по инструментам classCode = 'SPBFUT' # Код площадки - secCode = 'SiM1' # Код тикера + secCode = 'SiH2' # Код тикера TransId = 12345 # Номер транзакции price = 77000 # Цена входа/выхода quantity = 1 # Кол-во в лотах