This strategy is a trend-following trading system based on the crossover between the Price Volume Trend (PVT) indicator and its Exponential Moving Average (EMA). The strategy identifies market trend changes by monitoring the crossover situations between PVT and its EMA, thereby capturing potential trading opportunities. This method combines price movements and volume changes to more accurately reflect true market trends.
The core of the strategy utilizes the PVT indicator, which tracks market trends by combining price movements with trading volume. Specifically, the PVT value is calculated by accumulating the product of daily price change percentage and daily volume. A 20-period EMA of PVT is then calculated as a reference line. Buy signals are generated when PVT crosses above its EMA, while sell signals are generated when PVT crosses below its EMA. These crossover signals are used to determine market trend turning points.
The PVT-EMA Trend Crossover Strategy is a complete trading system that combines price, volume, and trend analysis. While it has certain lag and false signal risks, the strategy can become a reliable trading tool through appropriate optimization and risk management. Traders are advised to conduct thorough backtesting before live implementation and adjust parameters according to specific market characteristics.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © PakunFX //@version=5 strategy(title="PVT Crossover Strategy", shorttitle="PVT Strategy", overlay=false, calc_on_every_tick=true) // PVTの計算 var cumVol = 0. cumVol += nz(volume) if barstate.islast and cumVol == 0 runtime.error("No volume is provided by the data vendor.") src = close pvt = ta.cum(ta.change(src) / src[1] * volume) // EMAの計算(PVTをソースに使用) emaLength = input.int(20, minval=1, title="EMA Length") emaPVT = ta.ema(pvt, emaLength) // プロットをオフにする plot(emaPVT, title="EMA of PVT", color=#f37f20, display=display.none) // クロスオーバー戦略 longCondition = ta.crossover(pvt, emaPVT) shortCondition = ta.crossunder(pvt, emaPVT) // シグナル表示もオフにする plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", display=display.none) plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", display=display.none) // 戦略エントリー if (longCondition) strategy.entry("Buy", strategy.long) if (shortCondition) strategy.entry("Sell", strategy.short)