一、什么是QMT
此部分為掃盲內(nèi)容,有一定了解者可以跳過。
概念
它是一款量化交易客戶端軟件,由一家叫做迅投公司出品,可以直接登錄你的券商賬號(hào)進(jìn)行股票交易,但與同花順/通信達(dá)不同的是,它暴露了基于python的交易API,可以執(zhí)行程序化交易。
順便查了一下迅投這個(gè)公司的背景,21年沖擊過創(chuàng)業(yè)板,后來放棄了。招股說明書鏈接
界面
以國(guó)金版為例,其登錄界面如下,不同券商登錄界面略有區(qū)別(不一定有極簡(jiǎn)模式)
進(jìn)入軟件以后的界面如下,主要分為行情、交易、模型研究、模型交易幾個(gè)模塊,各個(gè)券商的QMT界面大同小異。
二、為什么使用QMT
以前,自動(dòng)化交易一直是散戶的痛,大部分的自動(dòng)化接口,都只針對(duì)機(jī)構(gòu),散戶可以使用的方法很少,雖然有類似easyTrader的開源庫解決過類似的問題,但是通過模擬按鍵的方式,我也嘗試改造過,但不是很穩(wěn)定。
而QMT,是直接調(diào)用券商接口,這就打通了量化交易最后這一環(huán),暴露python API,可以用程序直接調(diào)用,這就很大程度上提升了自動(dòng)化交易的穩(wěn)定性,可編程性也很高。
三、QMT vs miniQMT(極簡(jiǎn)模式)
miniQMT是QMT的極簡(jiǎn)模式,這個(gè)模式一些券商有,一些券商沒有。如何分辨有沒有,就是看登錄界面上有沒有極簡(jiǎn)模式這個(gè)選項(xiàng),當(dāng)客戶端以極簡(jiǎn)模式啟動(dòng)時(shí),界面如下:
miniQMT與QMT最大的不同就是:
QMT模式需要將程序?qū)懺赒MT客戶端軟件里運(yùn)行;
而miniQMT模式,直接可以使用xtquant這個(gè)python包,在軟件之外,寫python程序與QMT客戶端連接,進(jìn)行程序化下單。聰明的朋友們應(yīng)該看懂了,這樣QMT客戶端就完全變成一個(gè)交易終端了,我們的量化程序,完全可以獨(dú)立于QMT運(yùn)行,只要保證極簡(jiǎn)客戶端運(yùn)行著就好了。這就很大的釋放了變成能力。
三、代碼實(shí)戰(zhàn)
多說無益,上代碼,這里以miniQMT(極簡(jiǎn)模式)進(jìn)行演示
下載xtquant
首先我們需要下載xtquant這個(gè)python包,我推薦從迅投官網(wǎng)下載,下面是下載鏈接
xtquant下載:http://docs.thinktrader.net/vip/pages/633b48/
下載最新版本即可,下載之后,將這個(gè)包放在你自己的python項(xiàng)目里,保證使用import
可以引到。
官網(wǎng)的例子還是相對(duì)復(fù)雜,這里還是從最簡(jiǎn)單的示例開始,抽絲剝繭
創(chuàng)建交易對(duì)象
import random
from xtquant.xttrader import XtQuantTrader
path = r'D:\國(guó)金證券QMT交易端\userdata_mini'
session_id = int(random.randint(100000, 999999))
xt_trader = XtQuantTrader(path, session_id)
創(chuàng)建xt_trader
對(duì)象需要兩個(gè)參數(shù):path
:路徑,就是安裝QMT軟件的文件下下的/userdata_mini
文件夾。session_id
: 回話id,當(dāng)創(chuàng)建多個(gè)xt_trader
對(duì)象時(shí),需要不同,這里我們用6位隨機(jī)數(shù)字生成。
連接QMT客戶端
xt_trader.start()
connect_result = xt_trader.connect()
print(connect_result)
if connect_result == 0:
print('連接成功')
執(zhí)行xt_trader.connect()
,需要保證已登錄QMT極簡(jiǎn)模式并保持客戶端運(yùn)行狀態(tài),即可連接成功。非極簡(jiǎn)模式進(jìn)入客戶端,是連接不成功了,親測(cè)。
訂閱賬戶
from xtquant.xttype import StockAccount
acc = StockAccount('xxxxx')
subscribe_result = xt_trader.subscribe(acc)
print(subscribe_result)
這一步是用來訂閱資金賬戶的,xxxxx
替換成你正在登錄的資金賬戶號(hào),訂閱成功subscribe_result
會(huì)是0,不成功是-1
下單
from xtquant import xtconstant
stock_code = '000429.SZ'
order_id = xt_trader.order_stock(acc, stock_code, xtconstant.STOCK_BUY, 100, xtconstant.FIX_PRICE, 7.5)
print(order_id)
xtconstant.STOCK_BUY
表單下單類型是買入,xtconstant.FIX_PRICE
代表報(bào)價(jià)類型是限價(jià),執(zhí)行成功后,在miniQMT終端里,就直接可以看到委托記錄,這就可以確認(rèn),我們的委托成功了。方法會(huì)返回訂單變化,即下圖中的訂單編號(hào)。
撤單
可直接用訂單編號(hào)撤單,執(zhí)行以下方法,注意訂單編號(hào)是數(shù)字格式
xt_trader.cancel_order_stock(acc, 1082130954)
這樣,剛才下的單就撤掉了
四、如何開通
目前,QMT需要找券商公司開通,具體開通方法及要求,可以參看《QMT開通規(guī)則分享》文章來源:http://www.zghlxwxcb.cn/news/detail-478702.html
五、總結(jié)
本文介紹了QMT的基本概念和使用方法,并用miniQMT模式進(jìn)行了實(shí)戰(zhàn),感覺相當(dāng)好用,程序化交易不再是瓶頸了。后面會(huì)持續(xù)使用分享用法。文章來源地址http://www.zghlxwxcb.cn/news/detail-478702.html
到了這里,關(guān)于【從零開始玩量化17】如何python+QMT完成自動(dòng)化交易?(全網(wǎng)最詳細(xì)入門教程)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!