VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 419
声望: 171

【来自CTP期货期权API接口说明.chm】
CTP交易系统基于安全和性能考虑,在诸多地方有流量控制,其中流量控制又分FTD报文流量控制、报单流量控制、查询流量控制等。而这些流量控制分布在各个不同的地方。此处将会给大家详细介绍。

1.报单流控

报单流控是指用户在本交易系统报单(ReqOrderInsert)、撤单(ReqOrderAction)时每秒内允许的最大笔数。
报单流控限制配置在CTP柜台端【程序化交易频繁报撤单管理】菜单。
如果超过这个限制API会通过OnRspOrderAction提示:“CTP:下单频率限制”。

2.查询流控

查询流控是指用户当前Session在做查询的时候每秒内允许的最大请求笔数。
查询流控配置在交易前置组件上,配置项为【QryFreq】。其中API内置了在途查询流控1笔。
自从穿透式监管版本以后,API在连接交易前置时,会去查询到前置的查询流控设置(该设置配置在front_se组件)。假设前置配置了2笔/秒,那么连接该前置的API每秒只能发# 起2笔查询请求。
但是要注意,不管怎么配置,API都内置了在途流控,在途查询流控为1笔。即,当前这笔查询请求发出后,在未收到响应前,不能发起下一笔查询请求。
在过去,查询流控是内置在API里,1笔每秒,在途1笔。
如果超过交易前置配置的查询流控,则会触发OnRspError,并提示:“CTP:查询未就绪,请稍后重试”
如果超过API内置的在途流控,则查询请求的返回值为-2,表示未处理请求超过许可数。
所有ReqQuery开头查询函数不受流控限制,原因是此类函数都是通过交易核心处理的,不通过查询核心。

3.FTD报文流控

FTD报文流控是指用户当前Session在提交API指令的时候每秒内允许的最大请求笔数。
FTD报文流控配置在交易前置组件上,配置项为【FTDMaxCommFlux】。
FTD报文流控是一种综合性的流控手段,API的所有接口在跟前置交互的时候都是使用FTD协议的报文进行通讯的,因此这就意味着,登录、查询、报单、撤单和报价等等所有请求都在FTD报文流控的限制范围内。
例如如果配置为6,可以简单理解为用户仅能调用6次API请求指令,包括登录、查询、报单撤单等等。
如果超过FTD报文流控,则超过的指令会被缓存到前置,直到下一秒发出。例如用户在一秒内报单10笔,则前6笔会立即发送给核心,而后4笔则会被缓存在前置,到下一秒才发出。因此对于用户程序端的感受就是后4笔报单延迟很大,实则是受到了流控。
注意,FTD报文流控不会有错误信息或错误返回。

4.前置连接数流控

前置连接数流控是指在本交易前置对同一IP每秒允许的最大API连接请求数。
前置连接数流控配置在交易前置组件上,配置项为【ConnectFreq】。
需要注意的是,API连接请求指的是API从init到OnFrontConnected的过程,跟登录无关。可以简单理解为一次init就是一个连接请求。
例如如果配置为20,则一秒内最多有20个session建立跟前置的连接。
如果超过前置连接数流控则会被主动断开连接,触发OnFrontDisconnected。因此用户如果发现自己的程序一连接前置就被断开,则除了版本问题外,有可能是遇到了连接数流控。

5.同一用户最大允许在线会话数

同一用户最大允许在线会话数是指同一个用户(UserID)在本交易系统中同时登录在线的最大允许会话数。
同一用户最大允许在线会话数配置在柜台或交易核心中。
注意,这个会话数针对的是本交易系统,而非单一前置。
如果超过同一用户最大允许在线会话,则会通过OnRspUserLogin返回“CTP:用户在线会话超出上限”的错误。

6.交易所API流控

交易所API流控指通过交易所API发送报单等请求的每秒最大允许数。
交易所API流控的阈值设置在交易所端,由交易所API查询获取,该流控实际控制在交易所API端。
受到交易所流控后会触发OnRtnOrder,报“CTP:交易所每秒发送请求数超过许可数”或者“CTP:交易所未处理请求超过许可数”。

Administrator
avatar
加入于:
帖子: 4500
声望: 320

感谢分享!精华送上

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】