枢轴点挂单随价格变化而撤销或修改时,旧订单可能尚未取消,新订单却已提交,形成重复仓位或短暂无保护状态。这类撤改单竞态在快速行情中尤其危险。原6月23日页面没有订单证据,本页说明系统控制。

每次改单都先确认当前状态

订单可能处于待提交、已接受、部分成交、待取消、已取消或已成交。程序不能把“发送取消请求”当作“已经取消”,必须等待平台回执或重新查询净仓位。

同一意图使用唯一版本号

为每个信号和订单版本分配ID,新请求引用被替换的旧版本。重试时使用相同幂等键,避免网络超时后生成第二张等价订单;过期回执则不得覆盖新状态。

部分成交后按剩余数量处理

旧挂单在取消前成交一部分,新订单数量必须扣除已成交份额,并立即补齐相应保护单。只按原计划数量重挂,会让总仓位超限;全部撤掉则可能留下裸仓。

限速和失败回退要提前设计

平台可能限制改单频率。连续拒绝、状态不一致或连接中断时,应停止新订单、告警并进入人工可核验状态,而不是高频重试。恢复后先对账再继续。

测试应模拟延迟回执、乱序消息、部分成交、取消失败、重连和程序重启。日志按时间保存请求、响应、订单版本与净仓位,最终风险判断以账户实际持仓为准,而不是本地缓存。

人工操作也可能与EA同时修改同一订单。系统应标记订单所有者,并在发现外部变更时停止自动追改、重新同步状态;否则人工减仓可能被程序误认为缺单并立即补回。

监控指标除错误次数外,还应包括待确认订单持续时间、版本冲突和账户对账差异。竞态不一定报错,仓位异常往往才是最终信号。

OCO联动见父子订单与部分成交,信号延迟见时间戳审计,EA控制见幂等与紧急停止。