Doppelte Standardabweichung – dynamische VWAP-Schock-Durchbruch-Handelsstrategie basierend auf quantitativer Statistik

VWAP SD VOL HL2
Erstellungsdatum: 2025-01-06 16:31:36 zuletzt geändert: 2025-01-06 16:31:36
Kopie: 2 Klicks: 438
1
konzentrieren Sie sich auf
1617
Anhänger

Doppelte Standardabweichung – dynamische VWAP-Schock-Durchbruch-Handelsstrategie basierend auf quantitativer Statistik

Überblick

Bei der Strategie handelt es sich um eine Trendausbruchsstrategie, die auf VWAP (Volume Weighted Average Price) und Standardabweichungskanälen basiert. Es erstellt einen dynamischen Preisschwankungsbereich, indem es VWAP sowie obere und untere Standardabweichungskanäle berechnet, um Handelschancen zu nutzen, wenn die Preise nach oben ausbrechen. Die Strategie basiert beim Handel hauptsächlich auf den Durchbruchssignalen des Standardabweichungsbandes und legt Gewinnziele und Auftragsintervalle fest, um die Risiken zu kontrollieren.

Strategieprinzip

  1. Berechnung des Kernindikators:
  • Berechnen Sie den VWAP anhand des Intraday-HL2-Preises und -Volumens
  • Berechnen Sie die Standardabweichung basierend auf Preisschwankungen
  • Stellen Sie den oberen und unteren Kanal auf das 1,28-fache der Standardabweichung ein
  1. Transaktionslogik:
  • Einstiegsbedingungen: Der Preis kreuzt die untere Linie und steigt dann zur oberen Linie
  • Ausstiegsbedingungen: Erreichen des vorgegebenen Gewinnziels
  • Legen Sie ein Mindestbestellintervall fest, um häufiges Handeln zu vermeiden

Strategische Vorteile

  1. Grundlegende Statistiken
  • Preis-Pivot-Referenz basierend auf VWAP
  • Verwendung der Standardabweichung zur Messung der Volatilität
  • Handelsspanne dynamisch anpassen
  1. Risikokontrolle
  • Setzen Sie feste Gewinnziele
  • Steuerung der Transaktionshäufigkeit
  • Long-Only-Strategien reduzieren das Risiko

Strategisches Risiko

  1. Marktrisiko
  • Wilde Volatilität kann zu falschen Ausbrüchen führen
  • Es ist schwierig, den Wendepunkt des Trends genau zu erfassen
  • Einseitiger Rückgang führt zu größeren Verlusten
  1. Parameterrisiko
  • Standardabweichung Mehrfacheinstellungsempfindlichkeit
  • Die Festlegung von Gewinnzielen muss optimiert werden
  • Handelsintervall beeinflusst Gewinnentwicklung

Optimierungsrichtung

  1. Signaloptimierung
  • Trendbeurteilungsfilter hinzufügen
  • Bestätigt durch Änderungen im Handelsvolumen
  • Fügen Sie zur Überprüfung weitere technische Indikatoren hinzu
  1. Optimierung des Risikomanagements
  • Dynamisch festgelegte Stop-Loss-Position
  • Passen Sie Positionen basierend auf der Volatilität an
  • Verbesserung des Auftragsverwaltungsmechanismus

Zusammenfassen

Dies ist eine quantitative Handelsstrategie, die statistische Prinzipien und technische Analyse kombiniert. Durch die Koordination von VWAP und Standardabweichungsband wird ein relativ zuverlässiges Handelssystem aufgebaut. Der Hauptvorteil der Strategie liegt in ihrer wissenschaftlichen statistischen Grundlage und ihrem perfekten Risikokontrollmechanismus, in der praktischen Anwendung müssen jedoch weiterhin Parameter und Handelslogik kontinuierlich optimiert werden.

Strategiequellcode
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5 
strategy("VWAP Stdev Bands Strategy (Long Only)", overlay=true)

// Standard Deviation Inputs
devUp1 = input.float(1.28, title="Stdev above (1)")
devDn1 = input.float(1.28, title="Stdev below (1)")

// Show Options
showPrevVWAP = input(false, title="Show previous VWAP close?")
profitTarget = input.float(2, title="Profit Target ($)", minval=0) // Profit target for closing orders
gapMinutes = input.int(15, title="Gap before new order (minutes)", minval=0) // Gap for placing new orders

// VWAP Calculation
var float vwapsum = na
var float volumesum = na
var float v2sum = na
var float prevwap = na // Track the previous VWAP
var float lastEntryPrice = na // Track the last entry price
var int lastEntryTime = na // Track the time of the last entry

start = request.security(syminfo.tickerid, "D", time)
newSession = ta.change(start)

vwapsum := newSession ? hl2 * volume : vwapsum[1] + hl2 * volume
volumesum := newSession ? volume : volumesum[1] + volume
v2sum := newSession ? volume * hl2 * hl2 : v2sum[1] + volume * hl2 * hl2

myvwap = vwapsum / volumesum
dev = math.sqrt(math.max(v2sum / volumesum - myvwap * myvwap, 0))

// Calculate Upper and Lower Bands
lowerBand1 = myvwap - devDn1 * dev
upperBand1 = myvwap + devUp1 * dev

// Plot VWAP and Bands with specified colors
plot(myvwap, style=plot.style_line, title="VWAP", color=color.green, linewidth=1)
plot(upperBand1, style=plot.style_line, title="VWAP Upper (1)", color=color.blue, linewidth=1)
plot(lowerBand1, style=plot.style_line, title="VWAP Lower (1)", color=color.red, linewidth=1)

// Trading Logic (Long Only)
longCondition = close < lowerBand1 and close[1] >= lowerBand1 // Price crosses below the lower band

// Get the current time in minutes
currentTime = timestamp("GMT-0", year(timenow), month(timenow), dayofmonth(timenow), hour(timenow), minute(timenow))

// Check if it's time to place a new order based on gap
canPlaceNewOrder = na(lastEntryTime) or (currentTime - lastEntryTime) >= gapMinutes * 60 * 1000

// Close condition based on profit target
if (strategy.position_size > 0)
    if (close - lastEntryPrice >= profitTarget)
        strategy.close("B")
        lastEntryTime := na // Reset last entry time after closing

// Execute Long Entry
if (longCondition and canPlaceNewOrder)
    strategy.entry("B", strategy.long)
    lastEntryPrice := close // Store the entry price
    lastEntryTime := currentTime // Update the last entry time

    // Add label for the entry
    label.new(bar_index, close, "B", style=label.style_label_down, color=color.green, textcolor=color.white, size=size.small)

// Optional: Plot previous VWAP for reference
prevwap := newSession ? myvwap[1] : prevwap[1]
plot(showPrevVWAP ? prevwap : na, style=plot.style_circles, color=close > prevwap ? color.green : color.red)