订单执行
交易所请求频率限制(rate limit)是指某个交易所在给定的时间窗口内,对来自同一 IP 地址或同一 API 密钥的 API 请求数量或请求权重所设定的上限;超出该上限会返回错误,若持续超限,还会导致该 IP 或密钥被暂时封禁。
自动化系统发出的请求远多于人工操作:设置杠杆、下达入场单、创建保护性订单、轮询持仓,以及对每个账户上的每一个信号检查成交情况。限制是在使用同一 IP 或密钥的所有操作之间共享的,因此一个行为不当的循环就可能阻塞同一服务器上所有其他账户的下单。在行情快速变化时被封禁是最坏的情况:无法开仓,而只存在于软件中的止损也无法被移动。不同交易所之间、同一交易所不同接口之间的限制也各不相同,因此平台必须提前规划这些额度,而不是靠触碰上限来发现它们。
AlgoVesta 将每笔订单的调用次数保持固定且较少,并从共享的公共行情数据源读取市场数据,而不是对每个账户各自轮询交易所一次。请求额度会按交易所和按密钥分别跟踪;当某个交易场所返回频率限制或封禁响应时,受影响的密钥或服务器会退避,而不是立即重试;该状态会被记录并显示在仪表盘中。共享测试网报告的封禁会与实盘市场的封禁区分开,以确保测试环境不会将实盘执行服务器挤出轮换。止损和目标以挂单形式设置在交易场所,因此临时性的限制不会使仓位失去保护。历史数据和其他高负载读取操作在独立的机器上运行,因此不会占用执行服务器的额度。参见重试逻辑与支持的交易所页面。
在一次行情剧烈波动期间,某信号频道在一分钟内为某个账户触发了八个信号。每一个信号都以其固定的一组调用完成执行,远在交易所每分钟额度之内;仓位随之开出,止损也挂在交易所上。假如交易所在这一过程中途返回了频率限制错误,剩余的信号将被记录为因该原因而被拦截,且该密钥会在下一次尝试前暂停,而不是触发更长时间的封禁。