在自建私有量化交易平台中,执行模块(Execution Engine)是策略与真实市场之间的“唯一通道”。
它不负责判断对错,只负责忠实、稳定、可控地执行策略意图。
一句话定位:
执行模块是量化系统中最“脏”、但也最关键的一层。
一、执行模块的核心职责
执行模块的职责可以总结为三类:
1. 下单执行
买入 / 卖出
市价单 / 限价单
撤单、改单
分批下单(如拆单执行)
执行模块接收的不是“交易想法”,而是标准化交易指令,例如:
买入 600000
数量:10,000 股
价格:限价 10.25
有效期:当日有效
策略不关心:
用的是哪家券商
接口是 HTTP、TCP 还是本地 SDK
是否需要重试
👉 这些都属于执行模块的职责范围。
2. 订单管理与状态跟踪
真实交易环境中,订单不是“一下就成”的。
执行模块必须完整管理订单生命周期:
已提交 → 已受理 → 部分成交 → 全部成交
↘ 已撤单 / 已拒绝 / 异常
核心能力包括:
本地订单 ID 与交易所订单 ID 映射
成交回报处理
实时更新持仓与资金冻结状态
支持部分成交的连续处理
一个不能正确处理“部分成交”的执行模块,永远不具备实盘资格。
3. 异常与容错处理
执行模块面对的是不可靠世界:
网络抖动
接口超时
券商系统短暂不可用
行情与交易不同步
必须具备:
自动重试机制(可配置)
失败降级(暂停下单、切换状态)
明确的错误码与异常分类
可追溯日志(否则排错地狱)
执行模块的底线目标不是“每单都成交”,而是:
在任何异常情况下,不做错误交易。
二、执行模块的设计原则
1. 与策略逻辑强解耦(非常关键)
策略 ≠ 执行
策略只做三件事:
生成信号
计算目标仓位
发出“交易意图”
执行模块只做一件事:
把交易意图变成现实(或失败)
推荐的接口形式:
策略 → 标准化订单指令 → 执行模块 → 交易接口
策略层绝对不能:
直接调用券商 API
感知网络状态
处理成交回报
否则你将得到一个:
无法回测
无法仿真
无法迁移
无法私有化的系统
2. 执行接口统一抽象
执行模块内部,应对不同交易通道进行抽象封装:
ExecutionInterface
├─ BacktestExecutor
├─ SimulatedExecutor
├─ RealTradeExecutor
这样可以做到:
同一份策略代码
回测 / 仿真 / 实盘无感切换
这正是自建私有量化平台的核心价值之一。
3. 严格的状态机设计
执行模块本质是一个状态机系统。
典型状态包括:
系统状态(运行 / 暂停 / 降级)
账户状态(可交易 / 风控冻结)
订单状态(生命周期)
没有状态机,执行模块迟早会:
重复下单
丢成交回报
仓位错乱
工程上应明确:
状态转换条件
非法状态直接拒绝执行
三、执行模块的关键设计点
1. 下单策略与拆单机制
执行模块不一定“照单全收”。
常见增强能力:
大单拆分(减少冲击成本)
成交进度跟踪
超时未成交自动调整价格
策略只关心“我想要多少仓位”,
执行模块负责“怎么下得更合理”。
2. 风控前置校验
即使策略层已有风控,执行模块仍应做最后一道防线:
最大下单金额
单日最大交易次数
禁止交易标的
账户可用资金校验
原则是:
执行模块宁可拒单,也不能执行明显异常的交易。
3. 时间与交易日感知
执行模块必须明确:
当前是否交易时段
是否集合竞价
是否临近收盘
是否节假日或停牌
策略层可以“天真”,
执行模块必须“现实”。
四、执行模块在私有化系统中的意义
你强调的**“私有化、避免策略泄漏”**,执行模块正是关键环节之一。
自建执行模块的好处:
不依赖第三方托管策略
不暴露交易逻辑
不上传核心参数
可完全本地运行
策略 → 本地执行 → 本地账户
全链路可控
这是公有量化平台永远无法给你的能力。
五、执行模块的成熟标志
一个执行模块,具备以下特征,才算“可实盘”:
策略与执行彻底解耦
完整订单状态管理
异常可恢复、可追溯
支持回测 / 仿真 / 实盘统一接口
出问题时“停得下来”
一句很现实的话:
量化系统亏钱,往往不是策略错,而是执行模块出问题。
总结
在自建私有量化交易平台中:
执行模块是策略落地的唯一入口
它不追求聪明,只追求稳定与可控
解耦设计决定系统寿命
私有化执行链路,是策略安全的最后防线
评论区