Esta estratégia é um sistema de negociação baseado no cruzamento entre o indicador de tendência de volume de preços (PVT) e sua média móvel exponencial (EMA). A estratégia identifica as mudanças de tendência do mercado monitorando as situações de cruzamento entre PVT e sua EMA, capturando assim potenciais oportunidades de negociação.
O núcleo da estratégia utiliza o indicador PVT, que rastreia as tendências do mercado combinando os movimentos de preços com o volume de negociação. Especificamente, o valor PVT é calculado acumulando o produto da porcentagem de mudança de preço diária e volume diário. Uma EMA de 20 períodos de PVT é então calculada como uma linha de referência. Os sinais de compra são gerados quando o PVT cruza acima de sua EMA, enquanto os sinais de venda são gerados quando o PVT cruza abaixo de sua EMA. Esses sinais de cruzamento são usados para determinar pontos de virada da tendência do mercado.
A estratégia de cruzamento de tendências PVT-EMA é um sistema de negociação completo que combina análise de preço, volume e tendência. Embora tenha certo atraso e riscos de sinal falso, a estratégia pode se tornar uma ferramenta de negociação confiável por meio de otimização e gerenciamento de risco apropriados.
/*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)