本篇文章主要介绍如何通过openctp dll的方式,使用 python 快速接入新浪/腾讯 行情
环境信息
Win64 / CTPAPI 6.6.7 / Python 3.9.10
准备文件
准备需要的文件:
_thostmduserapi.pyd
thostmduserapi.py
thostmduserapi_se.dll
md_demo.py
文件来源:
https://github.com/krenx1983/openctp/blob/master/ctpapi-python/6.6.7_20220613/win64/thostmduserapi.py
https://github.com/krenx1983/openctp/blob/master/ctpapi-python/6.6.7_20220613/win64/py39/_thostmduserapi.pyd
新浪使用
https://github.com/krenx1983/openctp/blob/master/ctp2Sina%E8%A1%8C%E6%83%85/6.6.7_20220304/win64/thostmduserapi_se.dll
腾讯使用
https://github.com/krenx1983/openctp/blob/master/ctp2QQ%E8%A1%8C%E6%83%85/6.6.7_20220304/win64/thostmduserapi_se.dll
md_demo.py 如下
# date: 2023/03/13
# author: Jedore
# github: https://github.com/Jedore
import thostmduserapi as mdapi
class CFtdcMdSpi(mdapi.CThostFtdcMdSpi):
def __init__(self, tapi):
mdapi.CThostFtdcMdSpi.__init__(self)
self.tapi = tapi
def OnRtnDepthMarketData(self, pDepthMarketData: mdapi.CThostFtdcDepthMarketDataField):
print(pDepthMarketData.TradingDay,
pDepthMarketData.reserve1,
pDepthMarketData.ExchangeID,
pDepthMarketData.reserve2,
pDepthMarketData.LastPrice,
pDepthMarketData.InstrumentID,
pDepthMarketData.AveragePrice)
def main():
mduserapi = mdapi.CThostFtdcMdApi.CreateFtdcMdApi()
mduserspi = CFtdcMdSpi(mduserapi)
mduserapi.RegisterSpi(mduserspi)
mduserapi.Init()
instruments = ["600000", "000001", "00700", "AAPL"]
mduserapi.SubscribeMarketData([i.encode('utf8') for i in instruments], len(instruments))
input()
if __name__ == '__main__':
main()
执行
python md_demo.py
20230313 SZSE 13.05 000001 0.0
20230313 HKEX 344.8 00700 0.0
20230313 SSE 7.06 600000 0.0
20230313 NASD 148.5 AAPL 0.0
20230313 SZSE 13.05 000001 0.0
20230313 HKEX 344.8 00700 0.0
20230313 SSE 7.06 600000 0.0
20230313 NASD 148.5 AAPL 0.0
20230313 SZSE 13.05 000001 0.0
20230313 HKEX 344.8 00700 0.0
20230313 SSE 7.06 600000 0.0
20230313 NASD 148.5 AAPL 0.0
注意一定使用正确的Python版本及CTPAPI Python动态库