概述:
交易量百分比振荡指标(PVO)是一种用于交易量的动量震荡指标。PVO 通过计算两个不同周期的交易量指数移动平均线之间的差异百分比,来衡量交易量趋势的变化。该策略运用PVO指标来发现交易量的趋势,以确认或否定价格行情。通常,当PVO为正或上升时,突破或支持位破裂更有效。
策略原理:
该策略通过双EMA组合形成PVO指标,再结合信号线,发现交易量变化趋势,指导价格交易方向。与普通双EMA不同的是,PVO更着眼于交易量差异百分比,能更清晰判断交易量增减。
优势分析:
该策略充分利用了交易量变化对价格行情的提示作用。相比单一指标,PVO结构更稳定,可定制参数组合判断交易量趋势变化,从而提前探测价格可能的变动方向。直观的K线颜色区分强化趋势判断,可根据需要选择反向交易,是一种通用实用的交易量策略。
风险分析:
交易量变化往往滞后价格行情,当价格进入趋势末期时,PVO可能发出错误信号。参数设置不当也会影响判断效果。反向交易时务必审慎,因为趋势可能延续。交易量难以判断具体的入场时机,需辅助其他指标精确操作。交易量指标无法百分百预测价格,仍需要谨慎跟单。
策略优化方向:
可以测试优化EMA参数组合,寻找最佳周期判断买卖趋势。可设置交易量波动幅度条件,过滤无效信号。可引入MACD,KD等指标进一步确认具体入场点位。也可以设置止损线,控制单笔亏损。这将大大提高策略的实用性。
总结:
交易量百分比振荡指标策略通过计算交易量指数移动平均线的差异百分比,来判断交易量的变化趋势,以发现价格可能的未来走势。该策略运用简单有效的双EMA结构测量交易量波动,借助直观的K线颜色增强视觉效果。可根据需要选择反向交易,参数设置灵活,既适合中长线也适合短线,是一个非常实用的基于交易量的策略工具。但交易量指标对价格信号具有一定滞后性,无法明确入场时机,因此需要优化参数设置,并辅助其他指标来提高策略效果。
/*backtest
start: 2023-10-06 00:00:00
end: 2023-10-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 27/09/2017
// The Percentage Volume Oscillator (PVO) is a momentum oscillator for volume.
// PVO measures the difference between two volume-based moving averages as a
// percentage of the larger moving average. As with MACD and the Percentage Price
// Oscillator (PPO), it is shown with a signal line, a histogram and a centerline.
// PVO is positive when the shorter volume EMA is above the longer volume EMA and
// negative when the shorter volume EMA is below. This indicator can be used to define
// the ups and downs for volume, which can then be use to confirm or refute other signals.
// Typically, a breakout or support break is validated when PVO is rising or positive.
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Percentage Volume Oscillator (PVO)", shorttitle="PVO")
LengthShortEMA = input(12, minval=1)
LengthLongEMA = input(26, minval=1)
LengthSignalEMA = input(9, minval=1)
reverse = input(false, title="Trade reverse")
hline(0, color=gray, linestyle=line)
xShortEMA = ema(volume , LengthShortEMA)
xLongEMA = ema(volume , LengthLongEMA)
xPVO = ((xShortEMA - xLongEMA) / xLongEMA) * 100
xSignalEMA = ema(xPVO , LengthSignalEMA)
xPVOHisto = xPVO - xSignalEMA
pos = iff(xSignalEMA < xPVO, -1,
iff(xSignalEMA > xPVO, 1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos))
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xPVO, color=blue, title="PVO")
plot(xSignalEMA, color=red, title="Signal")
plot(xPVOHisto, color=gray, title="PVO Histo", style=histogram)