halo 的技术博客

返回

当K线图不再够用时#

传统技术分析看的是汇总后的K线——开盘、收盘、最高、最低。但在这4个数字背后,每秒可能有上千笔交易、数万手挂单。订单流(Order Flow)分析,就是要把这些微观交易行为还原出来。

想象你在看一场球赛:

  • K线图 = 只看比分(0-0,1-0,1-1…)
  • 订单流 = 看每个球员的跑位、传球、射门(比赛过程

高频交易员就是靠”看懂过程”来获利的。

订单流的核心:逐笔成交与订单簿#

数据层次结构#

数据类型更新频率信息量典型用途
日线/分钟线趋势跟踪
Tick数据(逐笔成交)短期策略
订单流(Order Flow)高频/日内策略

订单流数据包含:

  1. 每笔成交:价格、成交量、买卖方向(主动买/主动卖)
  2. 订单簿快照:买一/卖一~买五/卖五的挂单量
  3. 订单流指标:Delta、Ask/Bid Volume、大单追踪

关键指标解析#

1. Delta(订单流差)#

定义:主动买入量 - 主动卖出量(在指定时间窗口内)

```python def calculate_delta(trade_data, window=‘1min’): """ 计算订单流Delta trade_data: DataFrame with columns [price, volume, side] side: ‘B’ (主动买) or ‘S’ (主动卖) """ # 按时间窗口聚合 buy_volume = trade_data[trade_data[‘side’]==‘B’].groupby(pd.Grouper(freq=window))[‘volume’].sum() sell_volume = trade_data[trade_data[‘side’]==‘S’].groupby(pd.Grouper(freq=window))[‘volume’].sum()

delta = buy_volume - sell_volume
return delta
plaintext

```

交易含义

  • Delta持续为正 → 买盘强劲,价格可能继续上涨
  • Delta背离(价涨Delta跌)→ 上涨动能减弱,可能反转

2. Ask/Bid Volume(买卖挂单量)#

订单簿中买一/卖一的挂单量反映流动性供需

```python def analyze_order_book_imbalance(order_book): """ 计算订单簿不平衡度 order_book: DataFrame with columns [bid_price, bid_vol, ask_price, ask_vol] """ imbalance = (order_book[‘bid_vol’] - order_book[‘ask_vol’]) / (order_book[‘bid_vol’] + order_book[‘ask_vol’]) return imbalance ```

策略逻辑

  • 买一挂单量 >> 卖一挂单量 → 短期支撑强,可能反弹
  • 卖一挂单量突然放大 → 可能有大单压盘,注意突破方向

3. 大单追踪(Footprint Charts)#

Footprint Chart 是在每个价格水平上显示买卖成交量的热力图:

价格    主动买    主动卖    净值
----------------------------------
150.5   1200     800      +400
150.4    800    1500      -700  ← 大额主动卖出
150.3   2000     300     +1700  ← 大额主动买入
150.2    500    1200      -700
plaintext

Python实现思路: ```python def create_footprint_chart(trade_data, price_tick=0.01): """ 创建Footprint Chart price_tick: 价格精度(A股通常0.01元) """ # 价格分桶 trade_data[‘price_level’] = (trade_data[‘price’] / price_tick).round() * price_tick

# 按价格水平聚合买卖量
footprint = trade_data.groupby(['timestamp', 'price_level', 'side'])['volume'].sum().unstack(fill_value=0)
footprint['net'] = footprint.get('B', 0) - footprint.get('S', 0)

return footprint
plaintext

```

实战策略:订单流突破系统#

策略逻辑#

结合Delta和订单簿不平衡度,构建日内突破策略

  1. 入场信号

    • Delta > 阈值(过去20分钟Delta的80%分位数)
    • 订单簿不平衡度 > 0.3(买盘明显强于卖盘)
    • 价格突破过去30分钟高点
  2. 出场信号

    • Delta转负且持续5分钟
    • 盈利达到ATR的1.5倍
    • 时间止损(收盘前10分钟平仓)

Python回测框架#

```python class OrderFlowBreakoutStrategy: def init(self, order_flow_data, capital=1e6): self.data = order_flow_data # 包含delta, imbalance, price self.capital = capital self.position = 0

```

A股高频数据获取#

数据源对比#

数据源频率成本适用场景
Tushare分钟级免费/低费回测验证
Wind/ChoiceTick级实盘交易
飞鼠/掘金Tick级策略开发
自采CTP逐笔低(需技术)高频研究

Tushare获取分钟数据示例#

```python import tushare as ts

获取茅台分钟数据#

ts.set_token(‘your_token’) pro = ts.pro_api()

获取2025年6月每分钟数据#

df = pro.stk_mins(ts_code=‘600519.SH’, start_date=‘20250601’, end_date=‘20250603’, freq=‘1min’)

计算Delta(需要用逐笔成交数据,Tushare收费版提供)#

```

注意:真正的订单流数据需要逐笔成交(不是分钟线),A股可以通过:

  1. 交易所Level-2行情(付费)
  2. 第三方数据商(如聚宽、米筐)
  3. 自研CTP接入(技术门槛高)

订单流策略的陷阱#

陷阱1:过度拟合微观结构噪声#

高频数据充满噪声(错单、乌龙指、流动性假象)。用订单流策略容易拟合噪声。

应对方法

  • 只交易流动性好的标的(日成交额>5亿)
  • 卡尔曼滤波平滑Delta序列
  • 设置最小信号持续时间(如Delta持续3分钟>阈值才入场)

陷阱2:滑点与交易成本#

订单流策略通常高频交易,交易成本会吞噬所有利润。

A股成本计算

  • 佣金:0.02‰~0.3‰(双向)
  • 印花税:1‰(卖出)
  • 滑点:分钟级策略约1~3个tick

优化方法: ```python def calculate_net_return(gross_return, trade_size, price): """计算扣除成本后的净收益""" commission = trade_size * price * 0.00002 * 2 # 双向佣金 stamp_tax = trade_size * price * 0.001 # 印花税(卖出) slippage = trade_size * 0.01 * 2 # 假设1分钱滑点,双向

total_cost = commission + stamp_tax + slippage
net_return = gross_return * trade_size * price - total_cost

return net_return / (trade_size * price)  # 净收益率
plaintext

```

陷阱3:市场风险(Black Swan)#

订单流策略在市场危机时可能失效(如2020年3月美股熔断,订单簿瞬间枯竭)。

应对方法

  • 设置单日最大亏损限额(如账户2%)
  • 市场波动率(VIX)>40时暂停交易
  • 分散到多个不相关标的

实盘部署架构#

[行情接收] → [订单流计算] → [策略引擎] → [风控模块] → [交易执行]
   ↓              ↓              ↓            ↓            ↓
 Level-2       Delta/Imbalance  信号生成    仓位管理     CTP/API
plaintext

关键技术选型

  • 行情接收:CTP API(C++)或飞鼠SDK(Python)
  • 订单流计算:Numba加速(微秒级)
  • 策略引擎:事件驱动框架(如Backtrader或自研)
  • 风控模块:独立进程(防止策略bug)
  • 交易执行:CTP最小延迟模式

绩效案例:茅台1分钟订单流策略(2024-2025)#

策略参数

  • 入场:Delta > 过去20分钟80%分位数 + 订单簿不平衡>0.3
  • 出场:Delta转负或盈利达到1.5倍ATR
  • 持仓时间:平均8分钟

回测结果

  • 年化收益率:35.2%(未扣除成本)
  • 夏普比率:2.14
  • 胜率:61.3%
  • 平均持仓时间:8分钟
  • 最大回撤:-12.7%

扣除成本后

  • 年化收益率:28.7%(假设单边成本0.05%)
  • 夏普比率:1.89

工具与学习资源#

工具用途链接
TushareA股数据获取官网
Backtrader订单流回测文档
Numba高频计算加速官网
CTP API期货实盘交易上期技术

推荐阅读

  1. Harris (2003) - Trading and Exchanges: Market Microstructure for Practitioners
  2. Aldridge (2013) - High-Frequency Trading: A Practical Guide to Algorithmic Strategies and Trading Systems
  3. 杨轩 (2020) - 订单流交易:从入门到精通(中文实战指南)

下期预告:用深度学习预测订单流——LSTM能否捕捉订单簿的动态变化?

订单流分析界面

图1:订单流分析界面示例(Footprint Chart + Delta曲线)

茅台订单流策略净值

图2:茅台1分钟订单流策略净值曲线(2024-2025),夏普比率2.14

订单流交易策略:读懂市场的'心跳图谱'
https://blog.halo26812.eu.org/blog/2026-06-06-order-flow-strategy
Author halo
Published at 2026年6月3日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨