Die Ressourcen sind geladen. Beförderung...

Nadaraya-Watson-Envelope-Dynamische Stop-Loss-Strategie mit mehreren Bestätigungen

Schriftsteller:ChaoZhang, Datum: 2024-05-24 17: 58:47
Tags:ADXDIRSIM.E.

img

Übersicht

Diese Strategie verwendet den Nadaraya-Watson-Umschlag, um die Preisdaten zu glätten und die oberen und unteren Bands auf der Grundlage des glätteten Preises zu berechnen. Anschließend werden die ADX- und DI-Indikatoren verwendet, um die Trendstärke und -richtung zu bestimmen, und der RSI-Indikator, um die Trenddynamik zu bestätigen. Potenzielle Ausbrüche werden identifiziert, wenn der Preis über oder unter die Umschlagbänder geht. Schließlich werden Trades basierend auf den kombinierten Signalen von Trend, Ausbruch und Dynamik ausgeführt, während dynamischer Stop-Loss zum Risikomanagement verwendet wird.

Strategieprinzipien

  1. Um die Preisdaten zu glätten und die oberen und unteren Bands zu berechnen, wird der Nadaraya-Watson-Umschlag angewendet.
  2. Die ADX- und DI-Indikatoren werden verwendet, um die Stärke und Richtung des Trends zu bestimmen.
  3. Identifizieren Sie potenzielle Ausbrüche, wenn der Preis über das obere Band oder unter das untere Band geht.
  4. Bestätigen Sie die Trenddynamik mit dem RSI-Indikator. Ein RSI über 70 zeigt eine bullische Dynamik an, während ein RSI unter 30 eine bärische Dynamik anzeigt.
  5. Ausführen von Trades basierend auf den kombinierten Signalen von Trend, Breakout und Momentum:
    • Eintritt man in eine Long-Position, wenn ein starker Aufwärtstrend, ein Aufbruch und eine bullische Dynamik herrschen.
    • Eintritt man in eine Short-Position, wenn ein starker Abwärtstrend, ein Abwärtstrend und eine bärische Dynamik herrschen.
  6. Einführung dynamischer Stop-Loss-Verfahren zur Risikomanagement.
  7. Zeigen Sie die Strategiesignale visuell an, indem Sie Trendlinien, Ausbruchspunkte und Momentumsignale auf dem Chart darstellen.

Strategische Vorteile

  1. Der Nadaraya-Watson-Umschlag gleicht die Preisdaten effektiv aus und verringert die Lärminterferenz.
  2. Der Multi-Bestätigungsmechanismus verbessert die Signalzuverlässigkeit. Trend-, Breakout- und Momentumsignale ergänzen sich gegenseitig, um Handelschancen zu validieren.
  3. Das dynamische Stop-Loss-Management passt sich besser an die Marktschwankungen an und reduziert das Risiko. Der Stop-Loss-Preis wird anhand des höchsten/niedrigsten Preises und des Schlusskurses berechnet, so dass er sich an den Markt anpassen kann.
  4. Die visuelle Darstellung von Trendlinien, Ausbruchspunkten und Impulssignalen auf dem Chart erleichtert die Beobachtung und Interpretation der Strategiesignale durch den Benutzer.

Strategische Risiken

  1. In unruhigen Märkten oder bei Trendumkehrungen können häufige Breakout-Signale zu Überhandelungen und Verlusten führen.
  2. Dynamische Stop-Loss-Positionen können bei Trendumkehrungen möglicherweise nicht umgehend beendet werden, was zu erhöhten Drawdowns führt.
  3. Strategieparameter wie die Bandbreite des Nadaraya-Watson-Envelopps und die ADX-Schwelle müssen für verschiedene Märkte und Instrumente optimiert werden.

Strategieoptimierungsrichtlinien

  1. Hinzufügen zusätzlicher wirksamer Trendbestimmungsindikatoren wie MACD, gleitende Durchschnittssysteme usw., um die Genauigkeit und Stabilität der Trendbestimmung zu verbessern.
  2. Optimierung der dynamischen Stop-Loss-Berechnungsmethode durch Berücksichtigung volatilitätsbezogener Indikatoren wie ATR und SAR, um die Stop-Loss-Methode flexibler und effektiver zu gestalten.
  3. Entwicklung verschiedener Parameterkombinationen für verschiedene Marktmerkmale, wie z. B. Trend- oder Bereichsgrenzmärkte, um die Anpassungsfähigkeit der Strategie zu verbessern.
  4. Einführung eines Positionsgrößenmoduls zur dynamischen Anpassung der Positionsgrößen anhand von Faktoren wie Marktentwicklung und Volatilität und damit zur Risikokontrolle.

Zusammenfassung

Diese Strategie kombiniert den Nadaraya-Watson-Umschlag für die Preisschleifung mit Trendindikatoren wie ADX und DI, dem RSI-Impulsindikator und Preis-Breakout-Punkten, um ein umfassendes Handelssystem zu schaffen.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-18 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Nadaraya-Watson Envelope with Multi-Confirmation and Dynamic Stop-Loss", overlay=true)

// Input parameters
h = input.float(7.2, "Bandwidth", minval=0)
mult = input.float(2.1, minval=0)
src = input(close, "Source")

// ADX and DI Input Parameters
adxLength = input.int(14, "ADX Length")
adxThreshold = input.float(25, "ADX Threshold")
adxSmoothing = input.int(14, "ADX Smoothing")

// Calculate ADX and DI
[dmiPlus, dmiMinus, adx] = ta.dmi(adxLength, adxSmoothing)
strongTrendUp = dmiPlus > dmiMinus and adx > adxThreshold
strongTrendDown = dmiMinus > dmiPlus and adx > adxThreshold

// Nadaraya-Watson Envelope Calculation
gauss(x, h) =>
    math.exp(-(math.pow(x, 2) / (h * h * 2)))

coefs = array.new_float(0)
den = 0.0

for i = 0 to 100
    w = gauss(i, h)
    array.push(coefs, w)

den := array.sum(coefs)

out = 0.0
for i = 0 to 100
    out += src[i] * array.get(coefs, i)
out /= den
mae = ta.sma(math.abs(src - out), 100) * mult

upper = ta.sma(out + mae, 10)
lower = ta.sma(out - mae, 10)

// Confirmations
breakoutUp = ta.crossover(src, upper)
breakoutDown = ta.crossunder(src, lower)

// Original RSI period and thresholds
rsiPeriod = input.int(14, "RSI Period")
rsi = ta.rsi(src, rsiPeriod)
momentumUp = rsi > 70 and adx > adxThreshold
momentumDown = rsi < 30 and adx > adxThreshold

// // Plot ADX-based Trend Confirmation Lines
// if (strongTrendUp)
//     line.new(bar_index, low, bar_index + 1, low, color=color.new(color.blue, 50), width=2, style=line.style_dashed)

// if (strongTrendDown)
//     line.new(bar_index, high, bar_index + 1, high, color=color.new(color.red, 50), width=2, style=line.style_dashed)

// Plot Breakout Confirmation Dots
plotshape(series=breakoutUp, style=shape.circle, location=location.abovebar, color=color.blue, size=size.tiny, title="Breakout Up")
plotshape(series=breakoutDown, style=shape.circle, location=location.belowbar, color=color.orange, size=size.tiny, title="Breakout Down")

// Plot Momentum Confirmation Arrows
plotshape(series=momentumUp, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny, title="Momentum Up")
plotshape(series=momentumDown, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, title="Momentum Down")

// Strategy Entry and Exit
var float stopLossLevel = na
var float highestPrice = na

potentialBuy = strongTrendUp and breakoutUp
potentialSell = strongTrendDown and breakoutDown
momentumConfirmUp = potentialBuy and momentumUp
momentumConfirmDown = potentialSell and momentumDown

if (momentumConfirmUp)
    strategy.entry("Buy", strategy.long)
    stopLossLevel := close * 0.90
    highestPrice := close

if (momentumConfirmDown)
    strategy.entry("Sell", strategy.short)
    stopLossLevel := close * 1.10
    highestPrice := close

if (strategy.position_size > 0)
    highestPrice := math.max(highestPrice, close)
    stopLossLevel := math.max(highestPrice * 0.85, close * 0.90)

if (strategy.position_size < 0)
    highestPrice := math.min(highestPrice, close)
    stopLossLevel := math.min(highestPrice * 1.15, close * 1.10)

// Close position if stop loss is hit
if (strategy.position_size > 0 and close < stopLossLevel)
    strategy.close("Buy")

if (strategy.position_size < 0 and close > stopLossLevel)
    strategy.close("Sell")


Verwandt

Mehr