SuperTrend Bollinger Bands Stratégie de négociation à moyenne mobile double

Auteur:ChaoZhang est là., Date: le 23 février 2024 13:58:36
Les étiquettes:

img

Résumé

Cette stratégie intègre de multiples indicateurs techniques, notamment Supertrend, Double Moving Average (DEMA) et Bollinger Bands, afin de tirer parti de leurs atouts et de générer des signaux de trading plus précis.

La logique de la stratégie

La stratégie utilise un ATR et une moyenne de prix de 12 périodes pour calculer les bandes supérieures et inférieures de Supertrend et identifie les signaux longs et courts lorsque le prix franchit ces bandes.

Les signaux d'achat sont générés lorsque le prix dépasse la bande supérieure. Les signaux de vente sont générés lorsque le prix dépasse la bande inférieure. Lorsque le prix dépasse la bande supérieure ou inférieure de Supertrend, des marqueurs et le texte Buy ou Sell seront tracés dans les bandes correspondantes. Des alertes mobiles sont également envoyées simultanément.

Le DEMA est représenté en blanc au-dessus ou au-dessous de la courbe des prix pour juger de l'orientation générale de la tendance du marché.

Les bandes de Bollinger sont utilisées pour identifier le meilleur moment pour les entrées et les arrêts de pertes.

Après avoir entré dans une transaction, la stratégie utilise des méthodes de stop loss et take profit pour verrouiller les profits ou réduire les pertes en définissant le prix stop loss et le prix take profit pour une réduction automatique de la position.

Analyse des avantages

L'intégration de plusieurs indicateurs permet à cette stratégie de tirer le meilleur parti de leurs forces individuelles pour générer des signaux de trading plus précis.

Supertrend est capable de filtrer le bruit du marché et d'éviter le sur-trading. Le DEMA peut déterminer la direction générale de la tendance et empêcher le trading contre la tendance.

Les alertes mobiles permettent des alertes de négociation en temps opportun.

Analyse des risques

L'intégration de plusieurs indicateurs augmente la complexité de la stratégie et la probabilité d'erreurs.

En outre, des paramètres de stop loss trop agressifs peuvent amplifier les pertes. La stabilité des alertes mobiles a également une incidence sur l'efficacité de la prise de profit et du stop loss en temps opportun.

Directions d'optimisation

Des combinaisons de paramètres différentes pourraient être testées pour trouver l'ensemble de paramètres optimal. Les paramètres peuvent également être ajustés en fonction des différentes conditions du marché.

La tentative d'utilisation autonome d'indicateurs individuels peut réduire les faux signaux.

Les critères d'arrêt des pertes et de prise de bénéfices sont également soumis à des ajustements tels que l'arrêt des pertes de suivi et l'arrêt partiel des pertes.

Résumé

Cette stratégie combine les forces de plusieurs indicateurs techniques pour la génération de signaux commerciaux et présente une praticité relativement élevée.


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

Plus de