ctp期货申请 (ctp期货交易系统)

一、响应函数

class CThostFtdcTraderSpi
{
    ///报单录入请求响应
    void OnRspOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

    ///报单操作请求响应
    void OnRspOrderAction(CThostFtdcInputOrderActionField *pInputOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};

    ///报单录入错误回报
    void OnErrRtnOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo) {};

    ///报单操作错误回报
    void OnErrRtnOrderAction(CThostFtdcOrderActionField *pOrderAction, CThostFtdcRspInfoField *pRspInfo) {};

    ///报单通知
    void OnRtnOrder(CThostFtdcOrderField *pOrder) {};

    ///成交通知
    void OnRtnTrade(CThostFtdcTradeField *pTrade) {};

    ///错误应答
    void OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
};

以上是 报单请求 ReqOrderInsert )与 撤单请求 ReqOrderAction )可能涉及到的响应函数。

OnRsp OnRtn 的区别在于, OnRsp 响应只有发起请求的会话连接能收到,同一账户的所有在线的会话连接都能收到 OnRtn 响应。

二、报单响应规则

cta期货量化策略,期货ctp的操作

1.报单请求到达期货公司柜台,首先被柜台校验:

  • 如果校验失败,柜台会给发起请求的会话连接一个附带错误信息的 OnRspOrderInsert 响应,并给该账户所有在线的会话连接一个附带错误信息的 OnErrRtnOrderInsert 响应。
  • 如果校验通过,将请求转发给交易所系统的同时,柜台会给该账户所有在线的会话连接一个 OnRtnOrder 响应。此时订单在发往交易所系统的途中,所以响应信息中的订单状态为 THOST_FTDC_OST_Unknown ,且订单在交易所系统内唯一编号 OrderSystemID 尚未生成,值为空。

2.订单到达交易所系统后,再次被校验:

  • 如果交易所系统校验失败,账户所有在线的会话连接都会收到一个 OnRtnOrder 响应,其中 OrderSubmitStatus 值为 THOST_FTDC_OSS_InsertRejected ,且 OrderStatus 值为 THOST_FTDC_OST_Canceled OrderStatusMsg 中是交易所系统返回的错误信息。
  • 如果交易所系统校验通过,订单进入交易所的排队系统后,被按照价格优先、时间优先的原则撮合成交。
  • 如果订单进入排队系统时未被撮合成交,账户所有在线的会话连接收到第二个 OnRtnOrder 响应,其中 OrderStatus 值为 THOST_FTDC_OST_NoTradeQueueing ,表示订单在排队中,是交易者见到的未成交单。响应信息中还会附带订单在交易所系统内的唯一编号 OrderSysID 。此后,每次订单状态的变化,账户所有在线的会话连接都可以收到 OnRtnOrder 响应, OrderStatus 反映了最新的订单状态。如果有成交发生,会伴随 OnRtnTrade 响应。
  • 如果订单进入排队系统时被撮合成交,将省略状态值为 THOST_FTDC_OST_NoTradeQueueing 的响应,第二个 OnRtnOrder 响应中的 OrderStatus 值为 THOST_FTDC_OST_AllTraded 或者 THOST_FTDC_OST_PartTradedQueueing

三、撤单响应规则

cta期货量化策略,期货ctp的操作

1. 与报单情况类似。撤单请求首先在期货公司柜台被校验:

  • 如果校验失败,柜台会给发起请求的会话连接一个附带错误信息的 OnRspOrderAction 响应,并给账户所有在线的会话连接一个 OnErrRtnOrderAction 响应。
  • 如果校验通过,柜台将撤单请求转发给交易所系统。

2.撤单请求到达交易所系统后,再次被校验:

  • 如果交易所系统校验通过,则撤单成功,该账户的所有在线的会话连接可以收到一个 OnRtnOrder 响应,其中 OrderSubmitStatus 值为 THOST_FTDC_OSS_Accepted OrderStatus THOST_FTDC_OST_Canceled ,表示订单被正常撤销。
  • 如果交易所系统校验失败,该账户所有在线的会话连接都可以收到一个附带错误信息的 OnErrRtnOrderAction 响应。

四、流控

1.报单流控

报单流控是指 用户在CTP系统报单( ReqOrderInsert )、撤单( ReqOrderAction )时每秒内允许的最大笔数 。由期货公司通过在系统中配置相关参数实现限制的。

如果超过这个限制,API会通过 OnRspOrderAction 提示:“ CTP:下单频率限制 ”。

2.交易所API流控

交易所API流控指CTP系统向交易所发送报单等请求的每秒最大允许数。该流控实际控制在交易所API端。

受到交易所流控后会触发 OnRtnOrder ,报“ CTP:交易所每秒发送请求数超过许可数 ”或者“ CTP:交易所未处理请求超过许可数 ”。