成交量指标是算法交易的“听诊器”,能把冷冰冰的价格信号转化成有血有肉的市场情绪。本文聚焦两大主力指标——OBV(能量潮)与 VWAP(成交量加权均价),结合 MQL4 源码,给出可直接落地的趋势跟踪策略,并顺带穿插优化 tips 与高频问答,助你少走弯路。
OBV:用成交量衡量多空能量
计算逻辑
OBV 是一种累积型指标。一句话概括:
- 若今日收盘价>昨日收盘价,今日成交量累加;
- 收盘价<昨日,则减去今日成交量;
- 收盘价相等,OBV 保持不变。
计算公式不依赖额外参数,天然适配不同周期。
实战用法
- 趋势确认:价格上升且 OBV 同步抬升 => 多头动能真实。
- 背离捕捉:价格创新高但 OBV 徘徊不前 => 警惕回调。
- 入场过滤器:与 MA、布林带等传统趋势工具叠加,可减少假突破。
VWAP:日内交易的导航仪
VWAP 把全天成交价格按成交量加权平均,产生的曲线像电梯轨道:
- 价格高于 VWAP,市场被定义为“溢价”状态;
- 价格低于 VWAP,倾向“折价”状态。
由于是当日指标,每天收盘后重置,对量化高频或日内机器人尤为友好。
应用技巧:
- 作为动态支撑/阻力:回撤至 VWAP 的箭头往往是反应点。
- 评估滑点:机构大买单若全部成交在 VWAP 之上,可视为“买入溢价”,需后续拉升才能盈利。
👉 想知道如何对 VWAP 参数微调,把胜率提升 8%?看这里
OBV + 价格的 MQL4 趋势跟踪示例
完整代码拆解如下,省去冗余注释,核心只有三步:判定 OBV 趋势、价格方向、开平仓。变量和函数名保持简洁,方便二次改造。
//--- 输入参数
input double Lots = 0.1; // 手数
bool buyDone, sellDone; // 交易状态
//--- 主循环
void OnTick()
{
double obv0 = iOBV(NULL,0,PRICE_CLOSE,0);
double obv1 = iOBV(NULL,0,PRICE_CLOSE,1);
double close0 = iClose(NULL,0,0);
double close1 = iClose(NULL,0,1);
// 多头信号:OBV 与价格同涨
if (obv0 > obv1 && close0 > close1 && !buyDone)
{
if (sellDone) CloseOrders(OP_SELL);
int ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"OBV",0,0,clrGreen);
if (ticket > 0) { buyDone = true; sellDone = false; }
}
// 空头信号:OBV 与价格同跌
else if (obv0 < obv1 && close0 < close1 && !sellDone)
{
if (buyDone) CloseOrders(OP_BUY);
int ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"OBV",0,0,clrRed);
if (ticket > 0) { sellDone = true; buyDone = false; }
}
}
//--- 一键平仓
void CloseOrders(int type)
{
for (int i=OrdersTotal()-1; i>=0; i--)
if (OrderSelect(i,SELECT_BY_POS) && OrderType()==type)
OrderClose(OrderTicket(),OrderLots(),type==OP_BUY?Bid:Ask,3,clrNONE);
}源码优势
- 长度 60 行左右,新手易读易改;
- 动态追踪成交,
Lots、滑点可暴露成输入参数,便于策略优化。
优化思路
- 在多头信号出现前,要求价格站稳 20EMA 之上,降低震荡损耗;
- 使用ATR 动态止盈替代固定止盈,让利润奔跑。
3 个加分技巧:让成交量策略再进化
- 双周期共振:用 5 分钟 OBV 抓进场,日线 OBV 过滤大方向。
- VWAP 波段:当价格突破当天 VWAP 且当日 OBV 创新高,联动加仓。
- 资金曲线调节:日内亏损超过 2% 即停止交易,用 OBV 信号做次日重启开关。
高频问答
Q1:OBV 需要设置周期吗?
A:OBV 本身是累积指标,无需额外周期。若想在图表里画平滑线,可在外层加一条低周期 MA(如 5MA)做过滤。
Q2:VWAP 只能在日内用吗?
A:默认 VWAP 为日级别。若将成交量按 30 分钟加权平均,可构造“60VWAP”或“周 VWAP”,但流动性低的标的需警惕锯齿失真。
Q3:OBV 出现背离就立即反向开单?
A:背离仅提示“强度衰竭”,并非入场信号。通常配合 K 线形态或震荡指标(RSI、Stoch)二次确认,成功率更高。
Q4:为何 MQL4 源码频繁开平?
A:示例直接绑定最新 OBV 差值。实盘应加入最小价差 (minDiff) 或时间冷却 (coolDownBars),避免刷单。
Q5:大型行情跳空时 VWAP 会失效吗?
A:跳空缺口会破坏成交量分布,导致 VWAP 均值瞬时漂移,可用 “成交量补洞” 把缺口时段做插值处理,维持曲线连续性。
Q6:如果想回测超过 5 年,OBV 数据够用吗?
A:MT4 默认只提供开仓以来的分时,可用 CopyTicks() 或三方插件加载历史成交数据,确保回测深度与时间跨度一致。
小结
成交量指标把“市场语言”翻译成更清晰的买卖动机,OBV 专注趋势强弱,VWAP 聚焦日内公平价;二者结合,辅以严谨的开平仓逻辑,可显著提升算法策略鲁棒性。下一篇将深入 多指标融合与信号优化,教你用机器学习方法给成交量“打上标签”,敬请期待。