# 行情基础接口

AlgoPlus.CTP.MdApiBase对CTP行情接口所有功能进行了基础封装,主要实现订阅和接收盘中实时交易数据。只需传递相应的参数,就可以自动登录账户并订阅行情,将接收到的行情数据以字典形式返回。

在此基础上,交易者可以实现自己需要的数据处理功能。例如,AlgoPlus.CTP.MdApi实现了多进程共享数据、合成K线、落地数据功能。

# 初始化参数

  • * broker_id 期货公司标识。
  • * md_server 行情服务器地址。
  • * investor_id 账户。
  • * password 密码。
  • * app_id 终端标识。
  • * auth_code 授权码。
  • * instrument_id_list 需要订阅的合约列表。
  • md_queue_list=None 为交易进程提供数据的队列列表,默认为None。
  • page_dir='' 行情接口相关文件存储路径,默认为当前目录。
  • using_udp=False UDP
  • multicast=False

# 常用属性

  • self.investor_id 账户。
  • self.status 状态。初始状态为-1;账户登录并成功订阅行情后,状态重置为0;通信连接断开后状态重置为-2;自动重连成功后状态重置为0。
  • self.page_dir 行情接口相关文件存储路径。
  • self.md_queue_list 共享队列列表。
  • self.instrument_id_list 已订阅的合约列表。

# 常用方法

# 初始化

  • init_extra(self) 建立通信连接之前的初始化工作,例如创建文件、连接据库等。

# 连接断开通知

  • OnFrontDisconnected(self, nReason) 无需在代码层面做任何工作,只需等待自动重连。

# 订阅行情

  • SubscribeMarketData(self, pInstrumentID) pInstrumentID是list类型,例如:
[b'rb2005', b'ni2003']

# 行情数据通知

  • OnRtnDepthMarketData(self, pDepthMarketData) pDepthMarketData是字典类型,例如
{
    'TradingDay': b'20200113',                   # 交易日
    'InstrumentID': b'rb2005',                   # 合约代码
    'ExchangeID': b'',                           # 交易所代码
    'ExchangeInstID': b'',                       # 合约在交易所的代码
    'LastPrice': 3559.0,                         # 最新价
    'PreSettlementPrice': 3568.0,                # 上次结算价
    'PreClosePrice': 3571.0,                     # 昨收盘
    'PreOpenInterest': 1357418.0,                # 昨持仓量
    'OpenPrice': 3565.0,                         # 今开盘
    'HighestPrice': 3567.0,                      # 最高价
    'LowestPrice': 3544.0,                       # 最低价
    'Volume': 347796,                            # 数量
    'Turnover': 12361542250.0,                   # 成交金额
    'OpenInterest': 1345077.0,                   # 持仓量
    'ClosePrice': 1.7976931348623157e+308,       # 今收盘
    'SettlementPrice': 1.7976931348623157e+308,  # 本次结算价
    'UpperLimitPrice': 3782.0,                   # 涨停板价
    'LowerLimitPrice': 3353.0,                   # 跌停板价
    'PreDelta': 0.0,                             # 昨虚实度
    'CurrDelta': 1.7976931348623157e+308,        # 今虚实度
    'UpdateTime': b'23:00:01',                   # 最后修改时间
    'UpdateMillisec': 0,                         # 最后修改毫秒
    'BidPrice1': 3559.0,                         # 申买价一
    'BidVolume1': 158,                           # 申买量一
    'AskPrice1': 3560.0,                         # 申卖价一
    'AskVolume1': 18,                            # 申卖量一
    'BidPrice2': 1.7976931348623157e+308,        # 申买价二
    'BidVolume2': 0,                             # 申买量二
    'AskPrice2': 1.7976931348623157e+308,        # 申卖价二
    'AskVolume2': 0,                             # 申卖量二
    'BidPrice3': 1.7976931348623157e+308,        # 申买价三
    'BidVolume3': 0,                             # 申买量三
    'AskPrice3': 1.7976931348623157e+308,        # 申卖价三
    'AskVolume3': 0,                             # 申卖量三
    'BidPrice4': 1.7976931348623157e+308,        # 申买价四
    'BidVolume4': 0,                             # 申买量四
    'AskPrice4': 1.7976931348623157e+308,        # 申卖价四
    'AskVolume4': 0,                             # 申卖量四
    'BidPrice5': 1.7976931348623157e+308,        # 申买价五
    'BidVolume5': 0,                             # 申买量五
    'AskPrice5': 1.7976931348623157e+308,        # 申卖价五
    'AskVolume5': 0,                             # 申卖量五
    'AveragePrice': 35542.50839572623,           # 当日均价
    'ActionDay': b'20200110'                     # 业务日期
}

# 异步等待

  • Join() CTP是一个异步系统,代码运行到最后一行时功能可能还未完成,如果没有调用Join方法,进程退出则无法接收后续数据或者执行结果。重载Join方法可以执行任何逻辑。