Интеграция Backtrader-Next с торговым терминалом QUIK для реальной торговли
Установка
pip install bn_quik
Внимание: для работы bn_quik необходимо в торговом терминале QUIK установить и запустить Lua коннектор. Подробнее
Как получить Demo доступ к Quik
Демо доступ можно получить на сервере ARQA
Параметры объектов
QuikStore
| Параметр | Значение по умолчанию | Обязательный | Примечание |
|---|---|---|---|
| trade_account_id | Да | Торговый счет | |
| client_code_for_orders | Да(для Finam) | Номер торгового терминала. У брокера Финам требуется для совершения торговых операций | |
| host | "127.0.0.1" | Host с Quik Lua коннектором | |
| port | 34130 | ||
| lots | True | Входящий остаток в лотах (задается брокером) | |
| limit_kind | 1 | Основной режим торгов T1 (Для Demo Quik -1) | |
| currency | "SUR" | Валюта | |
| futures_firm_id | "SPBFUT" | Идентификатор фирмы для фьючерсов | |
| edp | False | Единая денежная позиция | |
| slippage_steps | 10 | Кол-во шагов цены для проскальзывания, для рыночных ордеров | |
| data_dir | "DataQuik" | Каталог для хранения данных, свечные данные тикеров и состояние объекта Broker с ордерами |
QuikData
| Параметр | Значение по умолчанию | Обязательный | Примечание |
|---|---|---|---|
| drop_price_doji | True | False - не пропускать дожи 4-х цен, True - пропускать | |
| live_bars | False | False - только история, True - история и новые бары | |
| count | 2000 | Количество запрашиваемых исторических баров по умолчанию |
Быстрый старт
import logging
import backtrader_next as bt
from bn_quik import QuikStore
class MyStrategy(bt.Strategy):
def __init__(self):
# Инициализация торговой системы
self.isLive = False # Сначала будут приходить исторические данные
def next(self):
# Получаем данные текущего бара и печатаем
close = self.data.close[0]
print(f'{self.data.datetime.datetime(0)} Close: {close:.2f}')
def notify_data(self, data, status, *args, **kwargs):
"""Изменение статсуса приходящих баров"""
data_status = data._getstatusname(status) # Получаем статус (только при LiveBars=True)
print(f'=== Notify Data: {data._name} - Status: {data_status} ===')
self.isLive = data_status == 'LIVE'
# Подключаемся к QUIK
store = QuikStore(trade_account_id='YOUR_ACCOUNT_ID', limit_kind=-1) # limit_kind=-1 для QuikDemo Акции
# store = QuikStore(trade_account_id='SPBFUT0XXXXX') # Срочный рынок
cerebro = bt.Cerebro(quicknotify=True)
data = store.getdata(dataname='QJSIM.SBER', timeframe=bt.TimeFrame.Minutes, compression=1, live_bars=True)
cerebro.adddata(data)
broker = store.getbroker()
cerebro.setbroker(broker)
cerebro.addstrategy(MyStrategy)
cerebro.run()
Примеры использования bn_quik
Все примеры находятся в папке examples
Использование Lua коннектора
Скопировать содержимое папки lua c GIT репозитария в отдельную папку, которая будет доступна приложению QUIK.
ВНИМАНИЕ Для корректной работы с получением свечных данных используйте обновлённые Lua скрипты из QUIK Python или bn_quik Данные Lua скрипты будут также корректно работать и с QUIKSharp клиентами.
В терминале QUIK, через диалоговое окно работы со скриптами Lua, запустить "QuikSharp.lua" из скопированной ранее папки. Подробнее о Lua скриптах.
В случае возникновения проблем с работоспособностью демонстрационных приложений убедитесь, что:
- Терминал QUIK загружен и подключен к серверу.
- Скрипт QuikSharp.lua запущен и не выдает никаких ошибок в соответствующем диалоговом окне.
- Никакие сторонние программы не используют для своих нужд порты 34130 и 34131. Данные порты используются по умолчанию для связи библиотеки с терминалом.
- Проверьте настройки что соединения не блокируются в Windows Firewall.
Metadata
Release files for bn-quik 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| bn_quik-1.1.1.tar.gz | 570.4 kB | Without provenance | Details for bn_quik-1.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| bn_quik-1.1.1-py3-none-any.whl | Python 3 | none | any | Details for bn_quik-1.1.1-py3-none-any.whl |
Total release size: 611.5 kB
Release files / bn_quik-1.1.1.tar.gz
| Download URL | bn_quik-1.1.1.tar.gz |
|---|---|
| Size | 570.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5583eb2769ce33a7d5fecc19e610d26c24ed96082494da69d9bb2c46785af582
|
|
BLAKE2b-256 checksum How to use checksums |
c737f97ced5e5c19b9c4da15802943ae0427556b147278893b5a7ccd346f37e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / bn_quik-1.1.1-py3-none-any.whl
| Download URL | bn_quik-1.1.1-py3-none-any.whl |
|---|---|
| Size | 41.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8c40eb76d82327cd6fbaea1e6ec684f14502f30727a436881a0f1f8ebcaf7e71
|
|
BLAKE2b-256 checksum How to use checksums |
074313e5fcb6a608d920cd9d8bad140dba2bdcb10a1d04f27f4f6bca5a3fce61
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Security for bn-quik 1.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.