Асинхронный адаптер lua api для торгового терминала Quik. Основан на пакете quik-lua-rpc и библиотеке для python3 qlua.
Состоит из 2-х подмодулей connector и trade. Для корректной работы требуется python => 3.8
.
Для лучшего понимания смотрите: документация автора quik-lua-rpc.
Модуль для работы с асинхронной работы с библиотекой qlua напрямую. Для лучшего понимания читайте: документация для qlua
Управляет запросами и ответами в Quik, для пользователя в режиме REQ/REP. Запросы кодируются в Protocol Buffers и отправляются с помощью ZeroMQ
отправлять по url, указанному в настройках, а именно в connector/settings.py
Подписывается на события Quik, для пользователя в режиме PUB/SUB. Все возможные события описаны в API lua для Quik. Пример подписки на события:
from connector.events import Dispatcher, EventTypes
def printer(response):
print(response)
Dispatcher().subscribe(EventTypes.ON_QUOTE, callback=printer)
Модуль разбит на 4 основных класса по смыслу, все функции описаны в документации по API lua для Quik
Файл для настроек соединения с quik-lua-rpc. Существует 2 типа соединения REQ и SUB (Подробнее).
Для каждого отдельно можно создать пользователя или не создавать, как в примере.
(Для удобства было принято решение сделать username и password такими же как и в Quik)
Эти настройки должны быть такими же, как и в файле lua/quik-lua-rpc/config.json
.
Модуль добавляет удобные оболочки для работы с модулем connector.
В этом модуле описаны основные базовые классы, такие как Transaction, Order, StopOrder, Bar и др.
В данном модуле описаны класс-оболочки для базовых классов из connector/managers.py
Данное ПО поддерживает логгирование. В корневом каталоге в файле settings.py
лежат
настройки для модуля logger. Все логи лежат в каталоге /logs
, логи запросов и ответов Quik лежат в connector.log
,
все приходящие события лежат в events.log
, ошибки – в error.log
-
Установка quik-lua-rpc. Для работы необходимо скачать quik-lua-rpc, установить его в Quik и запустить. Для установки необходимо распаковать
built/quik_lua_rpc.tar.xz
в каталог установленного терминала Quik (например,D:/QUIK/
). -
Установка quik_python_connector. Скачать текущий репозиторий и настроить виртуальную среду. Также необходимо установить зависимые библиотеки из файла requirements.txt.
python3 -m venv env
pip3 install -r requirements.txt
- Далее необходимо настроить
lua/quik-lua-rpc/config.json
иconnector/settings.py
. Убедитесь, что username и password совпадают. Пример настройкиconfig.json
:
{
"endpoints": [
{
"type": "RPC",
"serde_protocol": "protobuf",
"active": true,
"address": {
"host": "127.0.0.1",
"port": 5560
},
"auth": {
"mechanism": "PLAIN",
"plain": {
"users": [
{"username": "U0177818", "password": "07855"}
]
},
"curve": {
"server": {
"public": "rq:rM>}U?@Lns47E1%kR.o@n%FcmmsL/@{H8]yf7",
"secret": "JTKVSB%%)wK0E.X)V>+}o?pNmC{O&4W4b!Ni{Lh6"
},
"clients": ["Yne@$w-vo<fVvi]a<NY6T1ed:M$fCG*[IaLV{hID"]
}
}
},
{
"type": "PUB",
"serde_protocol": "protobuf",
"active": true,
"address": {
"host": "127.0.0.1",
"port": 5561
},
"auth": {
"mechanism": "PLAIN",
"plain": {
"users": [
{"username": "U0177818", "password": "07855"}
]
},
"curve": {
"server": {
"public": "rq:rM>}U?@Lns47E1%kR.o@n%FcmmsL/@{H8]yf7",
"secret": "JTKVSB%%)wK0E.X)V>+}o?pNmC{O&4W4b!Ni{Lh6"
},
"clients": ["Yne@$w-vo<fVvi]a<NY6T1ed:M$fCG*[IaLV{hID"]
}
}
}
]
}
Для лучшего понимания читайте документацию quik-lua-rpc по запуску приложения.
Пример настройки файла connector/settings.py
:
USERS = {
'REQ': {
'username': 'U0177818',
'password': '07855',
'url': 'tcp://127.0.0.1:5560'
},
'SUB': {
'username': 'U0177818',
'password': '07855',
'url': 'tcp://127.0.0.1:5561'
}
}