Die Extended Price Volume Trend (EPVT) Strategie ist eine Kombinationsstrategie für technische Indikatoren. Sie kombiniert den Momentumbeschleunigungsindikator mit anderen Hilfsindikatoren, um potenzielle Trendumkehrpunkte und Verschiebungen in der Dynamik zu identifizieren.
Der Kernindikator dieser Strategie ist der Extended Price Volume Trend (EPVT). Seine Berechnungsmethode ist: kumulatives Handelsvolumen * prozentuale Preisänderung. Dann berechnen Sie die maximalen und minimalen Werte von EPVT über einen bestimmten Zeitraum, um den Benchmark-Bereich zu erhalten. Die EPVT-Indikatorkurve ist die Unterschiedskurve zwischen EPVT und diesem Benchmark-Bereich.
Wenn die Kurve des EPVT-Indikators über die Null-Achse kreuzt, zeigt dies, dass der Kaufdruck zunimmt und ein langes Signal angezeigt wird.
Zur Verbesserung der Signalqualität verwendet die Strategie auch einen einfachen gleitenden Durchschnitt zur Bestätigung der Zuverlässigkeit von Trendänderungen.
Diese Strategie kombiniert Indikatoren aus drei Dimensionen: Trend, Dynamik und Handelsvolumen, die die Stimmung und Intensität des Marktes umfassender beurteilen können.
Wenn Sie drei Gewinnsätze für den Ausstieg festlegen, können Sie nach Ihren eigenen Risikopräferenzen verschiedene Gewinnquoten wählen.
Diese Strategie stützt sich relativ stark auf die Morphologie der Indikatorkurven und wird falsche Signale ausgeben, wenn der Trend atypisch ist.
Eine Stop-Loss-Strategie kann auch einzelne Verluste reduzieren.
Parameteroptimierung, z. B. Anpassung des Zyklusparameters von EPVT, um die optimale Parameterkombination zu finden.
Hinzufügen von Trendfilterbedingungen, z. B. Beurteilung der Kursrichtung oder des gleitenden Durchschnitts auf der Grundlage des EPVT-Signals.
Optimieren Sie Stop-Loss-Strategien, z. B. Festwert- oder ATR-Stopps.
Die Dynamikbeschleunigung erweiterte Preisvolumen-Trendstrategie erfasst Veränderungen in der Marktstimmung durch den EPVT-Indikator und nutzt potenzielle Trendwendepunkte.
/*backtest start: 2023-01-11 00:00:00 end: 2024-01-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="Extended Price Volume Trend", overlay=true )//@version=5 var cumVol = 0. cumVol += nz(volume) if barstate.islast and cumVol == 0 runtime.error("No volume is provided by the data vendor.") src = close lenght = input(200,"Trend Lenght") vt = ta.cum(ta.change(src)/src[1]*volume) upx = ta.highest(vt,lenght) downx = ta.lowest(vt,lenght) basex = (upx +downx)/2 VTX = vt - basex VTY = ta.valuewhen(ta.cross(VTX,0),close,0) plot(VTY, color=color.black, title="Extended-PVT") /////////////////////// STRATEGY //////////////// /////////////////////// TAKE PROFIT SECTION //////////////// longConditionx = ta.crossover(close,VTY) ShortConditionx = ta.crossunder(close,VTY) tp1 = input.int(10, minval=1,title = "TP-1") tp2 = input.int(20, minval=1,title = "TP-2") tp3 = input.int(30, minval=1,title = "TP-3") ematp = ta.ema(close,2) TPTAKA1S = VTY*(1-tp1/100) plot(TPTAKA1S, "SELL-TP1", color=color.red,linewidth = 1) TPTAKA2S = VTY*(1-tp2/100) plot(TPTAKA2S, "SELL-TP2", color=color.red,linewidth = 1) TPTAKA3S = VTY*(1-tp3/100) plot(TPTAKA3S, "SELL-TP3", color=color.red,linewidth = 1) TPTAKA1B = VTY*(1+tp1/100) plot(TPTAKA1B, "BUY-TP1", color=color.red,linewidth = 1) TPTAKA2B = VTY*(1+tp2/100) plot(TPTAKA2B, "BUY-TP2", color=color.red,linewidth = 1) TPTAKA3B = VTY*(1+tp3/100) plot(TPTAKA3B, "BUY-TP3", color=color.red,linewidth = 1) BUYTP = ta.crossunder(close,VTY) or ta.crossunder(ematp,TPTAKA1B) or ta.crossunder(ematp,TPTAKA2B) or ta.crossunder(ematp,TPTAKA3B) SELLTP = ta.crossover(close,VTY) or ta.crossover(ematp,TPTAKA1S) or ta.crossover(ematp,TPTAKA2S) or ta.crossover(ematp,TPTAKA3S) /////////////////////// STRATEGY //////////////// // Check for Long Entry longCondition = longConditionx==true if longCondition strategy.entry('Long', strategy.long, comment = "ENTER-LONG") buyclose = ShortConditionx==true or BUYTP==true // Exit condition strategy.close('Long', when=buyclose or BUYTP==true, comment = "EXIT-LONG") // Check for Short Entry ShortCondition = ShortConditionx==true if ShortCondition strategy.entry('Short', strategy.short, comment = "ENTER-SHORT") sellclose = longConditionx==true or SELLTP ==true // Exit condition strategy.close('Short', when=sellclose or SELLTP==true, comment = "EXIT-SHORT") ///// END OF STRATEGY ///////////