第三十章:订单流交易系统构建
说实话,走到这一步挺不容易的。
前面二十九章,我们聊了Delta、累积Delta、失衡、POC、吸收、堆叠、足迹图……每一个单独拿出来都能写一篇论文。但问题来了——这些策略怎么组合到一起?怎么让它们协同工作,而不是互相打架?
今天我们就来干这件事。把前面学的所有东西,整合成一个完整的、可执行的订单流交易系统。
系统架构:三层结构
我个人习惯把交易系统分成三层:数据层、策略层、执行层。每一层各司其职,互不干扰。
核心思想:订单流交易系统 = 数据驱动 + 规则过滤 + 风险约束
先看整体架构图,后面我们逐层拆解。
数据层:地基要稳
我在项目中遇到过最坑的事——数据源延迟了3秒,结果策略在假突破上开了仓。所以数据层的第一原则:数据质量 > 数据速度。
一个完整的数据层应该包含:
- Tick级数据接入:至少支持Level 2行情,能拿到逐笔成交和订单簿快照
- 数据清洗:去掉异常Tick(比如价格跳空、成交量异常放大)
- 周期切片:按时间窗口(1分钟、5分钟、30分钟)重建订单流数据
- 本地缓存:用SQLite或Parquet存一份,方便复盘回测
小技巧:我习惯在数据层加一个「数据健康度」指标。如果连续5秒没有新Tick进来,自动暂停策略。这个机制救过我两次。
策略层:多因子评分模型
这是整个系统的核心。说白了,就是把前面学的各种信号,变成一个统一的评分体系。
我设计了一个简单的评分表,每个信号按权重打分:
| 信号类型 | 权重 | 评分条件 | 示例 |
|---|---|---|---|
| Delta背离 | 30% | 价格新高但Delta新低 → +1分 | BTC 68000新高,Delta却比67000低 |
| 累积Delta突破 | 25% | 累积Delta突破前高/前低 → +1分 | 累积Delta突破日内高点 |
| 失衡/吸收 | 20% | 出现3倍以上失衡 → +1分 | 卖单失衡持续3根K线 |
| POC偏移 | 15% | POC从支撑位移动到阻力位 → +1分 | POC从低点逐步上移 |
| 堆叠确认 | 10% | 连续3根K线堆叠 → +1分 | 买单堆叠在支撑位 |
总分 = 各信号得分 × 权重之和。当总分超过0.7时,触发交易信号。
你想想看,这样做的好处是什么?单一信号可能骗人,但多个信号共振,胜率就上来了。
执行层:把信号变成订单
信号有了,怎么执行?这里有个坑——信号出现的位置和实际入场点往往有偏差。
我曾经吃过一次大亏:信号在68000出现,我直接市价单进场,结果滑了20个点。后来我改成了限价单+冰山订单的组合。
注意:订单流策略对滑点极其敏感。Delta信号往往在价格快速变动时出现,这时候流动性可能不足。建议用限价单挂单,而不是市价单追涨杀跌。
执行层的核心逻辑:
def execute_signal(signal, current_price, position):
# 1. 检查仓位限制
if position >= max_position:
return # 不再加仓
# 2. 计算入场价格(限价单)
if signal.direction == 'buy':
entry_price = current_price - spread_buffer
else:
entry_price = current_price + spread_buffer
# 3. 设置止损(基于POC或前低/前高)
stop_loss = calculate_stop_loss(signal)
# 4. 设置止盈(基于目标Delta或阻力位)
take_profit = calculate_take_profit(signal)
# 5. 下单
order = create_limit_order(entry_price, signal.quantity)
return order
系统整合:让三层协同工作
三层架构不是各自为战,而是通过事件驱动的方式串联起来。
我画了一个简单的流程图:
嗯,这里要注意:反馈回路很重要。执行层把成交结果、持仓盈亏反馈给策略层,策略层根据这些信息调整评分阈值。比如连续亏损3笔,自动降低评分阈值,减少交易频率。
实战案例:ETH 15分钟级别
拿一个真实案例来说。ETH在15分钟图上,价格从3200跌到3150,但累积Delta却开始走平。
系统检测到:
- Delta背离:价格新低,Delta未新低 → +0.3分
- 累积Delta突破:累积Delta突破前低 → +0.25分
- POC偏移:POC从3150上移到3170 → +0.15分
- 总分 = 0.3 + 0.25 + 0.15 = 0.7 → 触发买入信号
执行层在3155挂限价单,止损设在3140(前低下方),止盈设在3200(阻力位)。
结果呢?价格在3155震荡了10分钟,然后一根大阳线拉到3190。这笔交易赚了35个点。
复盘思考:这笔交易能成,关键是Delta背离和累积Delta突破同时出现。单一信号可能只是震荡,但两个信号共振,就是趋势启动的前兆。
避坑指南
系统搭建过程中,有几个坑我踩过,分享给你:
- 过度优化:我曾经把评分模型调了20个参数,回测曲线漂亮得不行,实盘一跑就崩。记住:简单模型 + 严格风控 > 复杂模型 + 松散风控
- 忽略交易成本:订单流策略通常交易频率较高,手续费和滑点会吃掉利润。我建议在回测时把滑点设为2-3个Tick
- 数据延迟:实盘时数据延迟是常态。我习惯在策略层加一个「数据新鲜度」检查,超过500ms的数据直接丢弃
总结
订单流交易系统,说白了就是三件事:拿对数据、算对信号、下对单子。
数据层保证输入质量,策略层做信号融合,执行层控制风险。三层各司其职,系统才能稳定运行。
我个人建议,刚开始不要追求完美。先搭一个最小可行系统,跑起来,然后根据实盘反馈慢慢迭代。交易系统不是写出来的,是改出来的。
无相订单流研究社 微信Lucian808555