[Barley und Xiaomi lernen Quantifizierung] Verwenden Sie Tianqin TqSdk, um den quantitativen Futures-Handel zu realisieren (erste Schritte)

Die Geschichte von Sojasauce-Latte

Eines Tages fragte Xiaomi Damai: „Ich habe gehört, dass Futures sehr beängstigend sind. Viele Menschen verlieren Geld und verlieren ihre Hosen.“
Damai: „Das liegt daran, dass sie keine Stop-Losses für schwere Positionen festlegen. Futures können leicht Stop-Profite und Stops setzen.“ Verluste. Wird es?“ Nur wer in der Lage ist, Verluste zu stoppen, wird nicht vom Spieltisch geworfen.“ „
Futures sind Glücksspiel? Dann werde ich nicht spielen!“ Xiaomi wedelte mit den Händen und schüttelte den Kopf, als ob er es wäre Angst davor, böse zu sein.
„Glücksspiel und Investieren sind nur eine Frage des Nachdenkens. Der Schlüssel liegt in Ihrem Verständnis der aktuellen Situation!“, murmelte Damai nachdenklich vor sich hin.
Dann fügte Damai hinzu: „In Futures zu investieren bedeutet, mit Risiken zu handeln! Leverage vergrößert die Risiken, also sollten Sie Ihr Geld auf der Bank lassen!“ Xiaomi
erwiderte sofort: „Sie schauen auf Menschen herab, ich kann Quantifizierung verwenden, um Risiken zu vermeiden!
“ Oh, also kennst du die Tianqin-Quantifizierung?“
„Was zum Teufel, ich möchte es lernen, kannst du es mir beibringen?“ „
Es ist nicht schwer, gib mir einfach jeden Tag eine Tasse Sojasauce-Latte!“


Näher an der Heimat begann der quantitative Handel tatsächlich mit Gold und Devisen (MT4/MT5). Später gab es in China verschiedene quantitative Handelssoftware für Futures, darunter Wenhua Finance, Pyramid, MC Quantitative usw. Heute werden wir besprechen, wie man mit Python Tianqin TqSdk aufruft, um den quantitativen Futures-Handel zu implementieren.

提示:以下是本篇文章正文内容,下面案例仅供参考

1. Was ist TqSdk?

TqSdk ist eine von Xinyi Technology initiierte Open-Source-Python-Bibliothek, die den Hauptcode beigesteuert hat. TqSdk stützt sich auf Kuaiqis ausgereiftes Handels- und Marktserversystem, das über viele Jahre hinweg aufgebaut wurde, und unterstützt Benutzer beim Erstellen verschiedener Arten quantitativer Handelsstrategieprogramme mit einer kleinen Menge Code. und Bereitstellung einer Komplettlösung einschließlich historischer Daten – Echtzeitdaten – Entwicklung und Debugging – Strategie-Backtesting – simulierter Handel – realer Handel – Betriebsüberwachung – Risikomanagement.

Die Python-Bibliothek von Tianqin ist die einfachste und am leichtesten verständliche quantitative Bibliothek des Autors und eignet sich für den Einstieg von Anfängern.

2. Vorbereitungsarbeiten

1. Installieren Sie die tqsdk-Bibliothek (die Python-Umgebung wird im Voraus vorbereitet).

Der Kern von Tianqin Quantification ist das TqSdk-Entwicklungskit. Vor der Installation von Tianqin Quantification (TqSdk) müssen Sie die entsprechende Umgebung und die Python-Paketverwaltungstools vorbereiten, einschließlich: Python >=3.6.4, 3.7, 3.8, 3.9 Versionen, ich
dort Die Installation in Version 3.10 ist kein Problem.

Die Installation von Windows 7 oder höher, Mac OS oder Linux, Win10 oder Win11 ist kein Problem.

Es wird empfohlen, den Befehl pip zum Installieren/Aktualisieren von TqSdk zu verwenden. Die Befehlszeile lautet wie folgt (vorausgesetzt, Sie haben die Python-Umgebung bereits installiert). Es wird empfohlen, Anaconda zu installieren, das mit einer Python-Betriebsumgebung und verschiedenen unterstützenden Bibliotheken geliefert wird. spart viel Ärger):

pip install tqsdk -U -i https://pypi.tuna.tsinghua.edu.cn/simple

2. Registrieren Sie sich für ein Express-Konto

Die Futures-Software von Tianqin heißt Kuaiqi und verfügt auch über eine APP. Zur Quantifizierung müssen wir Tianqin verwenden und uns zunächst für ein Schnelleinzahlungskonto registrieren. Rufen Sie die Homepage von Tianqin Quantification auf und registrieren Sie sich direkt mit Ihrer Mobiltelefonnummer, was sehr praktisch ist.
https://www.shinnytech.com/tianqin/

3. Unterstützte Futures-Unternehmen (Updates unterliegen der offiziellen Ankündigung)

https://www.shinnytech.com/blog/tq-support-broker/Kann
direkt nach der Bewerbung verwendet werden. Unterstützte ETF-Optionen
A Anliang Futures F Founder Mid-Term W Minmetals Economics_ETF
B Beite Futures H Hongye Futures N Nanhua Futures_ETF
B Baocheng Futures Y Galaxy Futures G Guotai Junan_ETF
B Bohai Futures G Guolian Futures G Everbright Futures_ETF
C Chuangyuan Futures D Orient Securities Futures G Guoyuan Futures_ETF
C Great Wall Futures G Everbright Futures H Hongyuan Futures_ETF
C Yangtze River Futures S Shenwan Futures
D Donghua Futures H Huatai Futures
D Orient Huijin D China Eastern Futures D
Donghai Futures C Changan Futures D Dadi
Futures Z Zhongjin Lingnan Futures
D Dayou Futures G Guotai Junan
D Dayue Futures X Cinda Futures
D Mainland Futures Z Zijin Tianfeng
F Funeng Futures D Dongwu Futures D Dongwu Futures_Suzhou
D First Venture Z CICC Fortune
G Guantong Futures Y Yongan Futures
G Guosen Futures
G Guoyuan Futures
G Guofu Futures
G Guangzhou Futures
G SDIC AnxinG
Guoxin Guozheng FuturesG
Guohai LiangshiG Guosheng
FuturesG Guomao FuturesG Guojin FuturesG Internationale FuturesG Guangfa Futures




G Guangjin Futures
G Green Dahua
G Hong Kong Xin Futures H Huachuang Futures H Hua'an
Futures H Huajin Futures H Huaxin Futures H Huawen Futures H Hualong Futures H Hehe Futures H Herong Futures H Hongyuan Futures H Huishang Futures H Hengli Futures H Hengtai Futures H Haihang Futures H Haizheng Futures H Haitong Futures H Chaos Tiancheng H Hongta Futures J Jianxin Futures J Jianghai Huixin J Jinxin Futures J Jinyuan Futures J Jinrui Futures J Jinshi Futures J Jintai Futures L Luzheng Futures (Zhongtai Futures) M Minsheng Futures M Melya Futures Hinweis: Melya ist der zweite Sitz von CTP. Sie müssen zum entsprechenden Sitz wechseln, um M Maike Futures N Nanhua Futures P Ping An Futures Q Qianhai Futures Q Qisheng Futures R Rich Futures R Ruida Futures S Shanghai East Asia S Shanghai Oriental S Shanghai Mid zu verwenden -Begriff S Shanxi Sanli





































S Shanjin Futures
S Shengda Futures S Shenhua
Futures T Tong Hui
Futures T Tongguan Jinyuan
W
Minmetals Futures _ _ _ _ _ _ _ _ _ _ _ _ _ _ Merchants Futures Z Zheshang Futures



























3. Versuchen Sie sich zum ersten Mal am Messer

Der folgende Code kann die 10-Sekunden-Zeile des DCE.jm2401-Vertrags abrufen und die Daten aktualisieren.

1. Beispielcode:

# 引入TqSdk模块
from tqsdk import TqApi, TqAuth
# 创建api实例,设置web_gui=True生成图形化界面
api = TqApi(web_gui=True, auth=TqAuth("快期账户", "账户密码")) # 使用手机号码即可注册,注册过程也很简单。
# 订阅 DCE.jm2401 合约的10秒线
klines = api.get_kline_serial("DCE.jm2401", 10)
while True:
    # 通过wait_update刷新数据
    api.wait_update()

Die Betriebslogik des Tianqin SDK ist sehr einfach, wie unten gezeigt. Ist das nicht sehr einfach? Es ist nicht wie bei den ereignisgesteuerten, die über eine Reihe von On-Funktionen und ein paar Callback-Funktionen verfügen, was Anfänger verwirren kann.
Fügen Sie hier eine Bildbeschreibung ein

2. Die Eingabeaufforderung nach dem Ausführen lautet wie folgt:

在使用天勤量化之前,默认您已经知晓并同意以下免责条款,如果不同意请立即停止使用:https://www.shinnytech.com/blog/disclaimer/
2023-09-06 23:43:31 -     INFO - 您可以访问 http://127.0.0.1:51960 查看策略绘制出的 K 线图形。
2023-09-06 23:43:37 -     INFO - 通知 : 与 wss://free-api.shinnytech.com/t/nfmd/front/mobile 的网络连接已建立

3. Verwenden Sie den Browser, um darauf zuzugreifen

Besuchen Sie mit einem Browser http://127.0.0.1:51960, um die von der Strategie gezeichneten K-Line-Grafiken wie folgt anzuzeigen:
Fügen Sie hier eine Bildbeschreibung ein
Es ist sehr einfach, eine grafische Schnittstelle in TqSdk zu implementieren. Übergeben Sie einfach den Parameter web_gui = True TqApi. Eine Reihe von Lösungen, um die tatsächlichen Angebots-/Backtest-Anforderungen zu erfüllen.
Der Port hier ist zufällig. Wenn Sie eine feste web_gui-URL benötigen, können Sie die lokale IP + Port übergeben, z. B. web_gui = "http://192.168.1.5:5888" (die lokale IP + Port muss ausgefüllt werden). ), um auf die feste URL zuzugreifen.

4. Simulierter Handel und realer Handel

Nachdem wir so lange gekämpft haben, geht es allen am meisten darum, wie man handelt. Tianqin ist sehr großzügig, sogar kostenlose Benutzer können ein echtes Futures-Konto verknüpfen. Das ist so praktisch! Finden Sie einfach ein von Tianqin unterstütztes Futures-Unternehmen und eröffnen Sie ein Konto.

1. Verwenden Sie ein schnelles Konto, um den Handel zu simulieren

Die [Mobiltelefonnummer]/[E-Mail-Adresse]/[Benutzername] und das [Passwort] des registrierten Quick Issue-Kontos können als Quick Issue-Simulationskonto verwendet werden, und die eingehenden Authentifizierungsparameter werden über TqKq protokolliert. Dieses Quick Issue Das Simulationskonto befindet sich in der Quick Issue APP, QQ Professional Edition und Tianqin Quantitative sind interoperabel:

from tqsdk import TqApi, TqAuth, TqKq
api = TqApi(TqKq(), auth=TqAuth("快期账户", "账户密码"))

Guthaben auf dem Demokonto: 1.000.000,00, genug, damit Sie tun und lassen können, was Sie wollen.

2. Nutzen Sie ein Schnellkonto für echtes Trading

Bei der kostenlosen Version von TqSdk kann jedes kurzfristige Konto an bis zu ein reales Konto gebunden werden, während die Tianqin Quantitative Professional Edition die Bindung eines kurzfristigen Kontos an eine beliebige Anzahl realer Konten unterstützt.
Fügen Sie hier eine Bildbeschreibung ein

Das kurzfristige Konto wird automatisch gebunden, wenn der Benutzer ein Real-Deal-Konto verwendet, bis das kurzfristige Konto kein Kontingent mehr hat, um ein Real-Deal-Konto zu binden (für die automatische Bindungsfunktion ist eine TqSdk-Version > 1.8.3 erforderlich):

from tqsdk import TqApi, TqAccount, TqAuth, TqKq
api = TqApi(TqAccount("H海通期货", "320102", "123456"), auth=TqAuth("快期账户", "账户密码"))

Wenn Sie ein Express-Konto registrieren oder das an Ihr Express-Konto gebundene echte Konto ändern müssen, wenden Sie sich bitte an das Login-Benutzerverwaltungscenter.

注意:实盘之前请务必先模拟测试,否则学费可不是小数目。还是那句话,投资有风险,入市需谨慎!量化不是神,它只是提高了操作效率,但错误的方向,效率越高,亏损越快!

5. Quantitativer Strategiehandel (Strategie mit einem einzigen gleitenden Durchschnitt)

Nachdem Sie die oben genannten Kontobeziehungen gebunden haben, können Sie quantitative Strategien verwenden, um quantitative Transaktionen durchzuführen.

#  -*- coding: utf-8 -*-
from tqsdk import TqApi, TqAuth
'''
如果当前价格大于10秒K线的MA15则开多仓 (使用 insert_order() 函数)
如果小于则平仓
'''
# 模拟使用这个api
api = TqApi(auth=TqAuth("快期账户", "账户密码"))
# 实盘使用下面这个api,模拟、实盘二选一
# api = TqApi(TqAccount("H海通期货", "320102", "123456"), auth=TqAuth("快期账户", "账户密码"))

# 获取 DCE.jm2401 10秒K线的引用
klines = api.get_kline_serial("DCE.jm2401", 10)

# 判断开仓条件
while True:
    api.wait_update()
    if api.is_changing(klines):
        ma = sum(klines.close.iloc[-15:]) / 15
        print("最新价", klines.close.iloc[-1], "MA", ma)
        if klines.close.iloc[-1] > ma:
            print("最新价大于MA: 市价开仓")
            api.insert_order(symbol="DCE.jm2401", direction="BUY", offset="OPEN", volume=5)
            break
# 判断平仓条件
while True:
    api.wait_update()
    if api.is_changing(klines):
        ma = sum(klines.close.iloc[-15:]) / 15
        print("最新价", klines.close.iloc[-1], "MA", ma)
        if klines.close.iloc[-1] < ma:
            print("最新价小于MA: 市价平仓")
            api.insert_order(symbol="DCE.jm2401", direction="SELL", offset="CLOSE", volume=5)
            break
# 关闭api,释放相应资源
api.close()

Zusammenfassen

Das tqSDK von Tianqin ist in der Tat sehr gut und hat in der Branche viel Lob erhalten. Am Anfang ist alles schwierig, deshalb hier eine gute Einführung. Tatsächlich sind die offiziellen Online-Anleitungen so rücksichtsvoll. Sie haben alles dokumentiert, was Ihnen einfällt! Darüber hinaus beschäftigen wir uns derzeit hauptsächlich mit Futures und warten auf das offizielle Update, um weitere Dinge zu sehen.

Ein weiterer Vorteil: Das Modul tqsdk.ta enthält eine große Anzahl technischer Indikatoren. Jeder technische Indikator ist eine Funktion, der Funktionsname besteht aus Großbuchstaben, der erste Parameter ist immer die K-Linien-Sequenz und die Berechnungsergebnisse werden in Pandas zurückgegeben .DataFrame-Format. Das ist so praktisch. Sie können direkt auf die offizielle Dokumentation verweisen, um es aufzurufen. Für weitere spannende Inhalte ist jeder herzlich eingeladen, ihn zu entdecken und zu teilen.

Anhang

Tianqin SDK-Installationsdatensatz:

(base) C:\Users\Administrator>pip install tqsdk -U -i https://pypi.tuna.tsinghua.edu.cn/simple
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting tqsdk
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/58/9a/f8d3d7cf5d82de0559f7228b7460acfaf066d6a6c9a729c5ea75b00cbbd9/tqsdk-3.4.7-py3-none-any.whl (1.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.7/1.7 MB 18.7 MB/s eta 0:00:00
Requirement already satisfied: simplejson in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (3.19.1)
Requirement already satisfied: aiohttp in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (3.8.4)
Requirement already satisfied: websockets>=8.1 in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (10.4)
Collecting sgqlc
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/3c/82/18f202b0891bc41e556e48e72e3ec9e83362f28cfbb4744dd9bd77a3d192/sgqlc-16.3-py3-none-any.whl (81 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 81.6/81.6 kB ? eta 0:00:00
Requirement already satisfied: scipy in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (1.10.0)
Requirement already satisfied: pyjwt in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (2.4.0)
Requirement already satisfied: requests in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (2.28.2)
Requirement already satisfied: filelock in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (3.12.0)
Collecting tqsdk-sm
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/b5/af/4b92033cccb53d42cfbabfc82e41cbd372fdf0f56a3b550c00dc7064e59c/tqsdk_sm-1.0.5-py3-none-win_amd64.whl (23.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 23.0/23.0 MB 29.7 MB/s eta 0:00:00
Requirement already satisfied: pandas>=1.1.0 in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (2.0.1)
Collecting tqsdk-ctpse
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e8/8c/6d6154174e4d5d97d2ce63c92c08ed0dcfd8ae553cf6e5a6361f7ca3db80/tqsdk_ctpse-1.0.2-py3-none-win_amd64.whl (897 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 897.3/897.3 kB 28.6 MB/s eta 0:00:00
Requirement already satisfied: numpy in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (1.23.5)
Collecting shinny-structlog
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/61/7e/e9289e6b2c677318b44e48eb8cd5bb7dc9fe786df640e78947cda7a325ae/shinny_structlog-0.0.4-py3-none-any.whl (8.8 kB)
Requirement already satisfied: certifi in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (2022.12.7)
Requirement already satisfied: psutil in d:\programdata\anaconda3\lib\site-packages (from tqsdk) (5.9.0)
Requirement already satisfied: pytz>=2020.1 in d:\programdata\anaconda3\lib\site-packages (from pandas>=1.1.0->tqsdk) (2022.7)
Requirement already satisfied: python-dateutil>=2.8.2 in d:\programdata\anaconda3\lib\site-packages (from pandas>=1.1.0->tqsdk) (2.8.2)
Requirement already satisfied: tzdata>=2022.1 in d:\programdata\anaconda3\lib\site-packages (from pandas>=1.1.0->tqsdk) (2023.3)
Requirement already satisfied: frozenlist>=1.1.1 in d:\programdata\anaconda3\lib\site-packages (from aiohttp->tqsdk) (1.3.3)
Requirement already satisfied: charset-normalizer<4.0,>=2.0 in d:\programdata\anaconda3\lib\site-packages (from aiohttp->tqsdk) (2.0.4)
Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in d:\programdata\anaconda3\lib\site-packages (from aiohttp->tqsdk) (4.0.2)
Requirement already satisfied: yarl<2.0,>=1.0 in d:\programdata\anaconda3\lib\site-packages (from aiohttp->tqsdk) (1.8.2)
Requirement already satisfied: aiosignal>=1.1.2 in d:\programdata\anaconda3\lib\site-packages (from aiohttp->tqsdk) (1.3.1)
Requirement already satisfied: multidict<7.0,>=4.5 in d:\programdata\anaconda3\lib\site-packages (from aiohttp->tqsdk) (6.0.4)
Requirement already satisfied: attrs>=17.3.0 in d:\programdata\anaconda3\lib\site-packages (from aiohttp->tqsdk) (22.1.0)
Requirement already satisfied: idna<4,>=2.5 in d:\programdata\anaconda3\lib\site-packages (from requests->tqsdk) (3.4)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in d:\programdata\anaconda3\lib\site-packages (from requests->tqsdk) (1.26.14)
Collecting graphql-core<4.0.0,>=3.1.7
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/f8/39/e5143e7ec70939d2076c1165ae9d4a3815597019c4d797b7f959cf778600/graphql_core-3.2.3-py3-none-any.whl (202 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 202.9/202.9 kB 12.0 MB/s eta 0:00:00
Requirement already satisfied: six>=1.5 in d:\programdata\anaconda3\lib\site-packages (from python-dateutil>=2.8.2->pandas>=1.1.0->tqsdk) (1.16.0)
Installing collected packages: tqsdk-sm, tqsdk-ctpse, shinny-structlog, graphql-core, sgqlc, tqsdk
Successfully installed graphql-core-3.2.3 sgqlc-16.3 shinny-structlog-0.0.4 tqsdk-3.4.7 tqsdk-ctpse-1.0.2 tqsdk-sm-1.0.5

(base) C:\Users\Administrator>

Supongo que te gusta

Origin blog.csdn.net/popboy29/article/details/132725878
Recomendado
Clasificación