3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在日内高频交易中,**订单流失衡(Order Book Imbalance, OBI)**是一个非常经典的微观结构指标。它通过量化买卖盘口委托量的非对称性,来预测价格在极短时间内的未来走势。QMT平台支持订阅和获取Level 2高频行情快照指标(l2quoteaux),这为我们构建OBI高频策略提供了底层数据支持。
最基础的订单流失衡指标(OBI)计算公式如下:
$$
OBI_t = \frac{V^{Bid}_t - V^{Ask}_t}{V^{Bid}_t + V^{Ask}_t}
$$
其中:
totalBidQuantity)totalOffQuantity)策略逻辑:
在QMT中,我们可以通过 ContextInfo.get_market_data_ex 或 ContextInfo.subscribe_quote 接口,将 period 参数设置为 'l2quoteaux' 来获取Level 2行情快照。该指标包含以下核心字段:
totalBidQuantity: 委买总量totalOffQuantity: 委卖总量avgBidPrice: 委买均价avgOffPrice: 委卖均价以下是在QMT中实现基于 OBI 指标的高频日内交易策略模板:
#encoding:gbk
import pandas as pd
import numpy as np
def init(ContextInfo):
# 设定股票池与交易账号
ContextInfo.stock = '600000.SH'
ContextInfo.set_universe([ContextInfo.stock])
ContextInfo.accid = '6000000248' # 请替换为您的实际资金账号
ContextInfo.set_account(ContextInfo.accid)
# 策略参数设置
ContextInfo.threshold = 0.5 # OBI 阈值
ContextInfo.trade_volume = 100 # 每次下单股数
# 订阅Level 2行情快照数据
ContextInfo.subscribe_quote(ContextInfo.stock, period='l2quoteaux', callback=on_l2_quote)
print("Level 2 OBI 策略初始化完成")
def handlebar(ContextInfo):
pass
def on_l2_quote(datas):
"""
Level 2 数据推送回调函数
"""
for code, df in datas.items():
if df.empty:
continue
# 获取最新的一条Level 2快照数据
latest_data = df.iloc[-1]
total_bid = latest_data.get('totalBidQuantity', 0)
total_ask = latest_data.get('totalOffQuantity', 0)
if (total_bid + total_ask) == 0:
continue
# 计算 OBI 指标
obi = (total_bid - total_ask) / (total_bid + total_ask)
# 获取当前持仓状态
# 实际实盘中建议通过 get_trade_detail_data 查询真实持仓
# 交易信号判定
if obi > 0.5:
# 买盘极度失衡,看涨,买入
print(f"[信号] OBI={obi:.2f} > 0.5,触发买入 {code}")
passorder(23, 1101, '6000000248', code, 5, -1, 100, 'OBI_Strategy', 1, 'Buy_Signal', 'VWAP')
elif obi < -0.5:
# 卖盘极度失衡,看跌,卖出
print(f"[信号] OBI={obi:.2f} < -0.5,触发卖出 {code}")
passorder(24, 1101, '6000000248', code, 5, -1, 100, 'OBI_Strategy', 1, 'Sell_Signal', 'VWAP')
withdrawBidQuantity(买入撤单总量)和 withdrawOffQuantity(卖出撤单总量)。高频交易中,虚假申报频繁,结合撤单流可以有效识别“假买盘”或“假卖盘”,提高 OBI 的预测准确度。smart_algo_passorder 的 TWAP/VWAP 算法)**进行拆单申报,以降低冲击成本。passorder 时,将 quickTrade 参数设置为 1,可以实现信号触发时立即下单,避免等待当前K线走完,确保高频策略的执行速度。