Cette stratégie combine l'indicateur SuperTrend et l'indicateur DEMA pour mettre en œuvre une tendance suivant la stratégie de trading. Elle génère des signaux d'achat lorsque le prix franchit la bande supérieure et des signaux de vente lorsque le prix franchit la bande inférieure. L'indicateur DEMA est utilisé pour filtrer les faux signaux. Cette stratégie fonctionne bien pour les marchés en tendance et peut suivre efficacement les tendances et filtrer les consolidations.
Le noyau de cette stratégie repose sur l'indicateur SuperTrend pour déterminer la direction de tendance des prix. L'indicateur SuperTrend intègre l'indicateur ATR et peut identifier efficacement les tendances des prix. Lorsque les prix augmentent, une bande supérieure se formera, et lorsque les prix baissent, une bande inférieure se formera. Une rupture de la bande inférieure signale un renversement de tendance et génère un signal d'achat. Une rupture de la bande supérieure signale un renversement de tendance et génère un signal de vente.
Pour filtrer les faux signaux, cette stratégie intègre également l'indicateur DEMA. Les signaux d'achat ne sont générés que lorsque les prix franchissent la bande supérieure et sont au-dessus de la ligne DEMA. Les signaux de vente ne sont générés que lorsque les prix franchissent la bande inférieure et sont en dessous de la ligne DEMA. Cela filtre efficacement les faux signaux sur les marchés en évolution.
Plus précisément, la logique des signaux de négociation est la suivante:
Grâce à cette conception logique, la stratégie peut suivre les tendances des marchés en évolution et éviter d'ouvrir fréquemment des positions sur des marchés variables.
Gestion des risques:
La stratégie peut être améliorée par les aspects suivants:
Optimisation des paramètres de SuperTrend: tester différentes combinaisons de périodes ATR pour trouver les paramètres optimaux.
Optimisation des paramètres DEMA. Testez différentes valeurs pour déterminer les paramètres optimaux.
Ajoutez un mécanisme de stop-loss, réglez le stop-loss en fonction des valeurs ATR pour éviter les arrêts surdimensionnés.
Ajoutez des filtres de signaux. Augmentez la confirmation d'autres indicateurs à des points clés pour éviter de faux signaux. Par exemple, ajoutez la confirmation du volume à des points d'inversion de tendance.
Améliorer la taille des positions, en ajustant dynamiquement les tailles en fonction de la volatilité et des risques du marché.
Cette stratégie combine les atouts des indicateurs SuperTrend et DEMA pour mettre en œuvre une stratégie de trading quantitative basée sur le suivi des tendances et le filtrage des signaux.
/*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)