""" . 编写md的基础测试用例 . 按Trader模式来封装md . 要增加MdRequestMessage和MdResponseMessage . callback 列表中要加入md的函数名称,可以通过union trader.methodDict 和 md.methodDict(ok) . 解决转换器参数大小写不一致的问题 """ #%% 目标调用方式 from pyctp import Trader,Md,struct,callback def OnRspQryTradingAccount(**kwargs): pass trader = Trader(...) trader.bind(callback.OnRspQryTradingAccount,OnRspQryTradingAccount) data = struct.CThostFtdcTradingAccountField() ... ... trader.ReqQryTradingAccount(data) #%% import os from datetime import datetime os.chdir(u'/home/duhan/github/pyctp') from CTPStruct import * from CTPTrader import Trader frontAddress = os.environ.get('CTP_FRONT_ADDRESS') assert frontAddress brokerID = os.environ.get('CTP_BROKER_ID') assert brokerID
## Md 行情接口封装 ## struct 所有CTP结构体定义 ## callback 所有CTP的回调函数名称 from pyctp import Trader, Md, struct, callback from time import sleep ## 创建交易员接口对象 trader = Trader(frontAddress, brokerID, userID, password) ## 定义回调函数 result = [] def OnRspQryInvestor(**kwargs): # 注意:方法名称可以自由定义 result.append(kwargs) ## 绑定回调函数到交易员接口 trader.bind(callback.OnRspQryInvestor, OnRspQryInvestor) ## 准备请求数据表单 requestData = struct.CThostFtdcQryInvestorField() requestData.BrokerID = brokerID requestData.InvestorID = userID ## 调用请求API trader.ReqQryInvestor(requestData) ## 等待回调被调用 while len(result) == 0: sleep(0.01) ## 查看返回数据结果 for k, v in result[0]["Data"].iteritems(): print k, ":", v
## Trader 交易员接口封装 ## Md 行情接口封装 ## struct 所有CTP结构体定义 ## callback 所有CTP的回调函数名称 from pyctp import Trader, Md, struct, callback from time import sleep ## 创建交易员接口对象 trader = Trader(frontAddress, brokerID, userID, password) ## 定义回调函数 result = [] def OnRspQryInvestor(**kwargs): # 注意:方法名称可以自由定义 result.append(kwargs) ## 绑定回调函数到交易员接口 trader.bind(callback.OnRspQryInvestor, OnRspQryInvestor) ## 准备请求数据表单 requestData = struct.CThostFtdcQryInvestorField() requestData.BrokerID = brokerID requestData.InvestorID = userID ## 调用请求API trader.ReqQryInvestor(requestData) ## 等待回调被调用 while len(result) == 0: sleep(.01) ## 查看返回数据结果 for k, v in result[0]['Data'].iteritems(): print k, ':', v