Erweiterte Preisvolumen-Trendstrategie

Schriftsteller:ChaoZhang, Datum: 2024-01-18 16:32:28
Tags:

img

Übersicht

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.

Strategieprinzip

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.

Analyse der Vorteile

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.

Risikoanalyse

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.

Optimierungsrichtung

  1. Parameteroptimierung, z. B. Anpassung des Zyklusparameters von EPVT, um die optimale Parameterkombination zu finden.

  2. Hinzufügen von Trendfilterbedingungen, z. B. Beurteilung der Kursrichtung oder des gleitenden Durchschnitts auf der Grundlage des EPVT-Signals.

  3. Optimieren Sie Stop-Loss-Strategien, z. B. Festwert- oder ATR-Stopps.

Zusammenfassung

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 ///////////


Mehr