CTP期货程序化量交易开发讲解C++版 2025 之 问答二
12月12恰早餐
2025年01月11日 16:19

CTP期货程序化交易开发讲解C++版 2025

之 流控、报单、撤单、源码解析(一)

1、交易查询流控:

  我们在调试程序的过程中有时会发现明明提交了相关的查询,但是没有得到想要的回报数据,检查返回的错误信息发现:“CTP:查询未就绪,请稍后重试” 等相关信息,这时候就要考虑查询次数过于频繁了,查询请求被流控了。

2、报单撤单流控:

  每秒内允许的最大报单撤单笔数,如果触发此流控,系统也会返回错误信息,如:“CTP:下单频率限制”,并且该流控是投资者InvestorID(账户)级别的,多开session也没用,如果实在需要,就得用多账户进行处理了。

3、连接数流控:

  这是指在CTP程序中每秒允许的最大API连接请求数,超过指定的数量会被强制断开。如果发现程序一连接就又断开了,有可能是这个原因。

4、关于报单、撤单中的一些字段:

BrokerID //经纪公司代码  必填

InvestorID //投资者代码   必填

UserID //用户代码          非必填

这个UserID是操作员账号,不填写会收不到OnErrRtnOrderAction回报,一般情况下和InvestorID填写一样就可以。这个字段是容易被开发人员忽略掉的,这里需要说明一下。

5、处理方法解析:

  在处理流控管理时,我们的程序代码在提交查询或报单时,要注意提交间隔,不要一个个紧挨着提交,最好是之间有一个间隔时间。

即在一个spi回调函数里面只放一个查询,嵌套运行。当然这是个最简单的方法,也可以运用事件队列或者自己另开线程去顺序查询等方案。我们在代码中进行了两种方式进行处理,即嵌套运行 + 间隔运行。具体的处理方法在下一章节中用源码进行解析。

程序运行效果如图,经过适当处理后几乎没有被流控的错误信息。

需要查看原文件源代码的读者,欢迎前往 :https://ipacel.cc/ctp