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 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
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.
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.
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.
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.
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)