Diese Strategie kombiniert den SuperTrend-Indikator und den DEMA-Indikator, um einen Trend nach der Handelsstrategie umzusetzen. Es erzeugt Kaufsignale, wenn der Preis durch das obere Band bricht, und Verkaufssignale, wenn der Preis durch das untere Band bricht. Der DEMA-Indikator wird verwendet, um falsche Signale auszufiltern. Diese Strategie funktioniert gut für Trending-Märkte und kann Trends effektiv verfolgen und Konsolidierungen ausfiltern.
Der Kern dieser Strategie beruht auf dem SuperTrend-Indikator, um die Trendrichtung der Preise zu bestimmen. Der SuperTrend-Indikator enthält den ATR-Indikator und kann Preistrends effektiv identifizieren. Wenn die Preise steigen, bildet sich ein oberes Band und wenn die Preise fallen, bildet sich ein unteres Band. Ein Ausbruch aus dem unteren Band signalisiert eine Trendwende und erzeugt ein Kaufsignal. Ein Ausbruch aus dem oberen Band signalisiert eine Trendwende und erzeugt ein Verkaufssignal.
Um falsche Signale auszufiltern, beinhaltet diese Strategie auch den DEMA-Indikator. Kaufsignale werden nur generiert, wenn die Preise durch das obere Band durchbrechen und über der DEMA-Linie liegen. Verkaufssignale werden nur generiert, wenn die Preise durch das untere Band durchbrechen und unter der DEMA-Linie liegen. Dies filtert effektiv falsche Signale in verschiedenen Märkten aus.
Insbesondere ist die Handelssignallogik wie folgt:
Durch diese logische Gestaltung kann die Strategie den Trends in den Trendmärkten folgen und vermeiden, häufig Positionen in unterschiedlichen Märkten zu eröffnen.
Risikomanagement:
Die Strategie kann in folgenden Aspekten verbessert werden:
Test verschiedene ATR-Periodenkombinationen, um optimale Parameter zu finden.
Test verschiedene Werte, um optimale Einstellungen zu ermitteln.
Setzen Sie Stop-Loss basierend auf ATR-Werten, um übergroße Stopps zu verhindern.
Hinzufügen von Signalfiltern. Erhöhen Sie die Bestätigung von anderen Indikatoren an wichtigen Punkten, um falsche Signale zu verhindern. Zum Beispiel fügen Sie die Bestätigung von Volumen an Trendumkehrpunkten hinzu.
Verbesserung der Positionsgröße und dynamische Anpassung der Positionsgrößen anhand von Marktvolatilität und -risiken.
Diese Strategie kombiniert die Stärken der SuperTrend- und DEMA-Indikatoren, um eine quantitative Handelsstrategie zu implementieren, die auf Trendverfolgung und Signalfilterung basiert. Es gibt viel Raum für Optimierung durch Parameter-Tuning, Stop-Losses und Signalfilter, um die Stabilität und Rentabilität weiter zu verbessern. Die Strategielogik ist einfach und einfach zu implementieren mit kontrollierbaren Risiken.
/*backtest start: 2023-11-07 00:00:00 end: 2023-12-07 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('Krish\'s Supertrend Strategy', overlay=true) // Supertrend Settings Periods = input(title='ATR Period', defval=10) src = input(hl2, title='Source') Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=3.0) changeATR = input(title='Change ATR Calculation Method ?', defval=true) showsignals = input(title='Show Buy/Sell Signals ?', defval=true) highlighting = input(title='Highlighter On/Off ?', defval=true) atr2 = ta.sma(ta.tr, Periods) atr = changeATR ? ta.atr(Periods) : atr2 up = src - Multiplier * atr up1 = nz(up[1], up) up := close[1] > up1 ? math.max(up, up1) : up dn = src + Multiplier * atr dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? math.min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend upPlot = plot(trend == 1 ? up : na, title='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0)) buySignal = trend == 1 and trend[1] == -1 plotshape(buySignal ? up : na, title='UpTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0)) plotshape(buySignal and showsignals ? up : na, title='Buy', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0)) dnPlot = plot(trend == 1 ? na : dn, title='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0)) sellSignal = trend == -1 and trend[1] == 1 plotshape(sellSignal ? dn : na, title='DownTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0)) plotshape(sellSignal and showsignals ? dn : na, title='Sell', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0)) // DEMA Settings dema_length = 200 dema = ta.ema(close, dema_length) // Long and Short Conditions longCondition = buySignal and close > dema shortCondition = sellSignal and close < dema // Strategy Entry and Exit strategy.entry('Long', strategy.long, when=longCondition) strategy.entry('Short', strategy.short, when=shortCondition) strategy.close('Long', when=ta.change(trend) or close < dema) strategy.close('Short', when=ta.change(trend) or close > dema) // Plotting mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0) longFillColor = highlighting ? trend == 1 ? color.green : color.white : color.white shortFillColor = highlighting ? trend == -1 ? color.red : color.white : color.white fill(mPlot, upPlot, title='UpTrend Highlighter', color=longFillColor, transp=90) fill(mPlot, dnPlot, title='DownTrend Highlighter', color=shortFillColor, transp=90) // Alerts (using plotshape for alerts in strategies) plotshape(buySignal, title='SuperTrend Buy', color=color.new(color.green, 0), style=shape.triangleup, size=size.small) plotshape(sellSignal, title='SuperTrend Sell', color=color.new(color.red, 0), style=shape.triangledown, size=size.small) changeCond = trend != trend[1] plotshape(changeCond, title='SuperTrend Direction Change', color=color.new(color.yellow, 0), style=shape.triangleup, size=size.small)