CTP期货量化交易API报单、撤单响应规则

本文详细解释了CTP期货交易接口中的响应函数,如OnRspOrderInsert和OnRtnOrder,以及报单和撤单请求的校验流程。还涉及了订单状态更新、流控规则(包括报单和交易所API流控)等内容。
摘要由CSDN通过智能技术生成

一、响应函数

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)可能涉及到的响应函数。

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


二、报单响应规则

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

  • 如果校验失败,柜台会给发起请求的会话连接一个附带错误信息的OnRspOrderInsert响应,并给该账户所有在线的会话连接一个附带错误信息的OnErrRtnOrderInsert响应。

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

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

  • 如果交易所系统校验失败,账户所有在线的会话连接都会收到一个OnRtnOrder响应,其中OrderSubmitStatus值为THOST_FTDC_OSS_InsertRejected,且OrderStatus值为THOST_FTDC_OST_CanceledOrderStatusMsg中是交易所系统返回的错误信息。

  • 如果交易所系统校验通过,订单进入交易所的排队系统后,被按照价格优先、时间优先的原则撮合成交。

  • 如果订单进入排队系统时未被撮合成交,账户所有在线的会话连接收到第二个OnRtnOrder响应,其中OrderStatus值为THOST_FTDC_OST_NoTradeQueueing,表示订单在排队中,是交易者见到的未成交单。响应信息中还会附带订单在交易所系统内的唯一编号OrderSysID。此后,每次订单状态的变化,账户所有在线的会话连接都可以收到OnRtnOrder响应,OrderStatus反映了最新的订单状态。如果有成交发生,会伴随OnRtnTrade响应。

  • 如果订单进入排队系统时被撮合成交,将省略状态值为THOST_FTDC_OST_NoTradeQueueing的响应,第二个OnRtnOrder响应中的OrderStatus值为THOST_FTDC_OST_AllTraded或者THOST_FTDC_OST_PartTradedQueueing


三、撤单响应规则

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

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

  • 如果校验通过,柜台将撤单请求转发给交易所系统。

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

  • 如果交易所系统校验通过,则撤单成功,该账户的所有在线的会话连接可以收到一个OnRtnOrder响应,其中OrderSubmitStatus值为THOST_FTDC_OSS_AcceptedOrderStatusTHOST_FTDC_OST_Canceled,表示订单被正常撤销。

  • 如果交易所系统校验失败,该账户所有在线的会话连接都可以收到一个附带错误信息的OnErrRtnOrderAction响应。


四、流控

1. 报单流控

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

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

2. 交易所API流控

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

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

在Linux环境下使用C语言来完成ctp期货量化交易系统,首先需要安装相应的开发工具和环境,例如gcc编译器和相关的开发库。然后,可以通过ctp官方提供的API来进行开发。 接下来,需要编写C语言程序来连接ctp交易接口,包括登录行情服务器、连接交易服务器、订阅行情数据、下单交易等相关功能。在编写程序时,需要充分了解ctp交易接口的相关文档和示例代码,以便正确地调用接口函数。 在交易系统的开发过程中,需要考虑到错误处理、数据处理、交易策略的实现等方面。对于错误处理,可以通过编写日志来记录程序的运行情况,以便排查错误。对于数据处理,可以通过编写算法来对行情数据进行分析和处理,以支持量化交易策略的实现。 在编写交易策略时,需要根据具体的量化交易策略来实现相应的买卖逻辑,可以通过编写条件判断语句和相关算法来实现交易决策。 最后,在完成ctp期货量化交易系统的开发后,还需要进行充分的测试和优化。通过模拟交易和回测来验证交易系统的稳定性和盈利性,通过优化代码和算法来提高系统的性能和效率。 总之,在Linux环境下使用C语言完成ctp期货量化交易系统的开发,需要充分的了解ctp接口和API,编写对应的功能程序,实现量化交易策略,并进行测试和优化,以确保系统的稳定性和盈利性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值