券商网关统一层:多柜台接入与人工交易台
策略再好,最终都要落到某个券商柜台。而柜台是碎片化的:CTP、XTP、东财 EMT,各有各的 API、字段和状态机。
如果每接一个柜台就改一遍执行逻辑,风控、账本、状态同步都要重写一遍,接入越多越乱。
结论先行:EasyQuant 用统一网关层收口所有柜台——BrokerGatewayRouter 按账户路由到具体网关,纸面与实盘走同一套接口;同时补上人工交易台,为纯策略驱动之外的干预、对冲、测试留一条手工通道。
一、柜台碎片化的代价
- 每个柜台字段、精度、报撤单状态机都不同
- 状态回报(部成、已撤、废单)异步且各家语义不一
- 实盘还要叠加资金、权限、安全闸
把这些差异散在业务里,结果就是“接一个柜台,动全身”。统一网关的意义是把差异关在网关内部,业务只面对一个稳定接口。
二、统一网关:一个接口,多种柜台
| 组件 | 职责 |
|---|---|
BrokerGatewayRouter |
按账户/配置把订单路由到对应网关 |
PaperBrokerGateway |
纸面撮合,与实盘同接口,便于灰度与对拍 |
CtpBrokerGateway |
CTP/OPENCTP 期货柜台(含报价字段规整) |
XtpBrokerGateway |
XTP 证券柜台 |
| 东财 EMT | 通过统一网关接入的股票柜台 |
LiveOrderStatusSyncJob |
拉取/对齐柜台订单状态,收敛异步回报 |
纸面与实盘共用接口是关键:策略在 paper 上验证过的执行链路,切实盘时换的是网关实现,不是业务逻辑。OPENCTP 让多柜台在一套网关语义下统一,Windows 侧的 agent 解决了部分柜台只在 Windows 可用的部署问题。
三、实盘不是“把 paper 的开关打开”
实盘多一层安全约束:
LiveExecutionService:实盘下单主链路LiveTradingSafetyGate:实盘安全闸,在下单前做额外校验(账户、权限、异常状态),把“误开实盘”挡在门外
这与组合级风控(见 33 组合级风控与账户熔断)叠加,构成实盘的多道防线。
四、人工交易台:策略之外的兜底通道
纯策略驱动覆盖不了所有场景——临时对冲、手工干预、上线前打样测试,都需要人来下一单。TradingDeskController 提供的交易台正是这条通道:
- 定位是干预兜底,不是要克隆一个通用交易终端
- 下单票内嵌盘口点价与冲击预估(
TradingDeskContextResponse提供上下文) - 手工单同样过风控、走统一网关与账本——手工不等于绕过风控
它让“系统之外还得能手动来一下”这件事有了正规入口,而不是靠人去数据库里改。
结语
接柜台的工程量不在“接第一个”,而在“接第五个时前四个不用改”。
统一网关把柜台差异关进网关内部,纸面实盘同接口、实盘加安全闸、再补一条人工交易台,EasyQuant 把执行落地从“对接某一家”升级为可扩展的多柜台底座。