SuperTrend Bollinger Bands Doppel gleitender Durchschnittshandel

Schriftsteller:ChaoZhang, Datum: 2024-02-23 13:58:36
Tags:

img

Übersicht

Diese Strategie integriert mehrere technische Indikatoren, darunter Supertrend, Dual Moving Average (DEMA) und Bollinger Bands, um ihre Stärken zu nutzen und genauere Handelssignale zu erzeugen.

Strategie Logik

Die Strategie verwendet einen 12-Perioden-ATR und einen Preisdurchschnitt, um die oberen und unteren Bands des Supertrends zu berechnen und lange und kurze Signale zu identifizieren, wenn der Preis diese Bands durchbricht.

Kaufsignale werden erzeugt, wenn der Preis über das obere Band bricht. Verkaufsignale werden erzeugt, wenn der Preis unter das untere Band bricht. Wenn der Preis durch das obere oder untere Band des Supertrends bricht, werden Marker und der Text Buy oder Sell in den entsprechenden Banden dargestellt. Mobilfunkwarnungen werden auch gleichzeitig gesendet.

Der DEMA wird über oder unter der Kurskurve in weiß dargestellt, um die allgemeine Marktentwicklung zu beurteilen.

Die Bollinger-Bänder werden verwendet, um den besten Zeitpunkt für Eintritte und Stop-Losses zu identifizieren.

Nach dem Eintritt in einen Handel nutzt die Strategie Stop-Loss- und Take-Profit-Methoden, um Gewinne zu erzielen oder Verluste zu reduzieren, indem sie den Stop-Loss-Preis und den Take-Profit-Preis für die automatische Positionsreduktion festlegt.

Analyse der Vorteile

Die Integration mehrerer Indikatoren ermöglicht es dieser Strategie, ihre individuellen Stärken optimal zu nutzen, um genauere Handelssignale zu generieren.

Supertrend ist in der Lage, Marktlärm auszufiltern und Überhandelungen zu vermeiden.

Mobile Warnungen ermöglichen zeitnahe Handelsempfehlungen, automatische Stop-Loss- und Take-Profit-Verfahren ermöglichen das Sperren von Gewinnen und das Schneiden von Verlusten.

Risikoanalyse

Die Integration mehrerer Indikatoren erhöht die Komplexität der Strategie und die Wahrscheinlichkeit von Fehlern.

Darüber hinaus können übermäßig aggressive Stop-Loss-Einstellungen die Verluste verstärken.

Optimierungsrichtlinien

Es können verschiedene Parameterkombinationen getestet werden, um den optimalen Parametersatz zu finden.

Der Versuch, einzelne Indikatoren einzeln zu verwenden, kann die falschen Signale reduzieren.

Die Kriterien für den Stop-Loss und den Take-Profit unterliegen ebenfalls Anpassungen, wie zum Beispiel dem Trailing-Stop-Loss und dem partiellen Stop-Loss.

Zusammenfassung

Diese Strategie kombiniert die Stärken mehrerer technischer Indikatoren für die Handelssignalgenerierung und ist relativ praktisch, aber sie birgt auch gewisse Risiken und erfordert kontinuierliche Tests und Optimierungen, um effektiv und rentabel eingesetzt zu werden.


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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © zhuenrong

//@version=4
strategy("Supertrend + DEMA + Bollinger Bands", overlay=true)

// Input parameters for Supertrend
atrLength = input(title="ATR Period", type=input.integer, defval=12)
src = input(hl2, title="Source")
multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method?", type=input.bool, defval=true)
showSupertrend = input(title="Show Supertrend Indicator?", type=input.bool, defval=true)

// Input parameters for DEMA
demaLength = input(200, title="DEMA Period")
showDEMA = input(title="Show DEMA Indicator?", type=input.bool, defval=true)

// Calculate ATR for Supertrend
atr2 = sma(tr, atrLength)
atr = changeATR ? atr(atrLength) : atr2

// Calculate Supertrend
up = src - (multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up

dn = src + (multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? 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

// Plot Supertrend
upPlot = plot(showSupertrend ? (trend == 1 ? up : na) : 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 ? 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(showSupertrend ? (trend == 1 ? na : dn) : na, 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 ? 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))

mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)

longFillColor = (trend == 1 ? color.new(color.green, 80) : color.new(color.white, 0))
shortFillColor = (trend == -1 ? color.new(color.red, 80) : color.new(color.white, 0))

fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)

// Alert conditions
alertcondition(buySignal, title="Custom Supertrend Buy", message="Custom Supertrend Buy!")
alertcondition(sellSignal, title="Custom Supertrend Sell", message="Custom Supertrend Sell!")

// Calculate DEMA
ema1 = ema(close, demaLength)
dema = 2 * ema1 - ema(ema1, demaLength)

// Plot DEMA with white color
plot(showDEMA ? dema : na, color=color.new(color.white, 0), title="DEMA", linewidth=2)
// Add push notification on mobile if buy and sell occurred
if (buySignal)
    strategy.entry("Buy", strategy.long)
    //strategy.exit("Sell")
    //alert("Buy Signal - Supertrend")

if (sellSignal)
    strategy.entry("Sell", strategy.short)
    //strategy.exit("Cover")
    //alert("Sell Signal - Supertrend")


// === Stop LOSS ===

if strategy.position_size>0
    strategy.exit("Stop Loss/Profit Long","Buy", stop=strategy.position_avg_price*100, limit=strategy.position_avg_price*1.1)
if strategy.position_size<0
    strategy.exit("Stop Loss/Profit Short","Sell", stop=strategy.position_avg_price*100, limit=strategy.position_avg_price*1.1)

Mehr