东莞网站优化关键词公司,wordpress大学主题教程,网站联盟,响应式网站视频CTP-API开发系列之九#xff1a;行情登录及订阅代码 前情回顾全局配置参数行情初始化代码行情登录行情订阅行情接收注意事项 前情回顾
CTP-API开发系列之一#xff1a;各版本更新说明#xff08;持续更新#xff09; CTP-API开发系列之二#xff1a;问题汇总#xff08;… CTP-API开发系列之九行情登录及订阅代码 前情回顾全局配置参数行情初始化代码行情登录行情订阅行情接收注意事项 前情回顾
CTP-API开发系列之一各版本更新说明持续更新 CTP-API开发系列之二问题汇总持续更新 CTP-API开发系列之三柜台系统简介 CTP-API开发系列之四接口对接准备 CTP-API开发系列之五SimNow环境介绍 CTP-API开发系列之六交易登录及查询流程 CTP-API开发系列之七报撤单及回报顺序 CTP-API开发系列之八报撤单代码实现
在前面交易相关常用的功能基本已经实现完成了相比交易API的功能行情API的功能就要简单的多了今天分享一下行情登录、行情订阅的代码以及相关的注意事项。
全局配置参数 行情初始化代码
def start_mdapi():mduserapi mdapi.CThostFtdcMdApi_CreateFtdcMdApi(logs//md_con//)log.info(1.CreateFtdcMdApi: mduserapi.GetApiVersion())mduserspi CFtdcMdSpi(mduserapi)log.info(2.RegisterFront: MdFrontAddr)mduserapi.RegisterFront(MdFrontAddr)log.info(3.RegisterSpi)mduserapi.RegisterSpi(mduserspi)log.info(4.Init)mduserapi.Init()log.info(5.Join)mduserapi.Join()行情登录
def OnFrontConnected(self) - void:log.info(OnFrontConnected mdfront)loginfield mdapi.CThostFtdcReqUserLoginField()loginfield.BrokerID BROKERIDloginfield.UserID USERIDloginfield.Password PASSWORDloginfield.UserProductInfo ctp_quantself.tapi.ReqUserLogin(loginfield, 0)log.info(send ReqUserLogin: api_struct_serialize(loginfield))行情订阅
def OnRspUserLogin(self, pRspUserLogin: CThostFtdcRspUserLoginField, pRspInfo: CThostFtdcRspInfoField, nRequestID: int, bIsLast: bool) - void:log.info(fOnRspUserLogin, SessionID{pRspUserLogin.SessionID},ErrorID{pRspInfo.ErrorID},ErrorMsg{pRspInfo.ErrorMsg})if not pRspInfo.ErrorID:# 登录成功订阅行情# subID存储所有需要订阅行情的合约IDret self.tapi.SubscribeMarketData([id.encode(utf-8) for id in subID], len(subID))log.info(send SubscribeMarketData, size: str(len(subID)))else:log.error(login failed! api_struct_serialize(pRspInfo))行情接收
def OnRtnDepthMarketData(self, pDepthMarketData: CThostFtdcDepthMarketDataField) - void:log.info(api_struct_serialize(pDepthMarketData))######## TODO STH ############def OnRspSubMarketData(self, pSpecificInstrument: CThostFtdcSpecificInstrumentField, pRspInfo: CThostFtdcRspInfoField, nRequestID: int, bIsLast: bool) - void:log.info(OnRspSubMarketData: api_struct_serialize(pSpecificInstrument))if pRspInfo.ErrorID ! 0:log.error(OnRspSubMarketData: api_struct_serialize(pRspInfo))注意事项
1.行情服务不会对登录账号密码进行验证不知道后续上期技术是否会验证 2.进行测试时交易地址可以使用simnow环境行情可以订阅期货公司的正式行情simnow行情存在一定延迟 3.期货公司行情地址获取方式选择一家期货公司从官方下载快期交易终端在登陆页面点测速就可以看到行情地址
4.所有合约的ID是通过交易API获取的也可以落地存储从文件或者DB拉取合约ID
## 交易API请求查询合约响应
def OnRspQryInstrument(self, pInstrument: CThostFtdcInstrumentField, pRspInfo: CThostFtdcRspInfoField, nRequestID: int, bIsLast: bool) - void:global subIDsubID.append(pInstrument.InstrumentID)5.在OnRtnDepthMarketData函数中接收到最新的行情数据后不能在该函数内进行处理单线程的需要将数据扔给其他线程进行处理比如k线数据合成、指标计算、数据转储等