Stratégie renforcée de la SuperTendance de l'EMA

Auteur:ChaoZhang est là., Date: 2023-10-07 10h07 et 15 min
Les étiquettes:

Résumé

Cette stratégie évalue la direction de la tendance des prix en comparant l'ATR et le prix, combinée à un jugement assistant de moyenne mobile.

Principe de stratégie

Les principales étapes de cette stratégie pour déterminer l'évolution des prix sont les suivantes:

  1. Calculer l'ATR des N derniers jours, en utilisant la méthode de calcul de l'ATR de Wilder, qui peut mieux refléter la volatilité actuelle du marché.

  2. Calculez les bandes supérieures et inférieures en fonction de l'ATR et du coefficient ATK.

  3. Comparez le prix avec les bandes supérieures et inférieures pour déterminer la direction de la tendance.

  4. Prenez long ou court lorsque le signal de trading se produit.

  5. Ajouter une stratégie de stop loss pour contrôler les risques.

  6. Utilisez la marque couleur pour l'état de la stratégie pour faciliter le jugement.

Cette stratégie exploite pleinement les avantages de l'ATR pour capter rapidement les changements de tendance des prix et réaliser des opérations à faible tirage.

Les avantages

Les avantages de cette stratégie sont les suivants:

  1. ATR peut répondre rapidement aux dernières tendances du marché et aider à détecter les changements de tendance en temps opportun.

  2. La zone tampon entre les bandes supérieures et inférieures peut réduire la probabilité d'une rupture de stop loss et de baisses de tirage.

  3. Les ruptures de gamme sont des signaux de haute qualité pour les directions longues et courtes.

  4. La période et le multiplicateur ATR sont réglables pour s'adapter aux différents environnements du marché.

  5. Des outils graphiques affichent l'état de la stratégie de manière intuitive.

  6. Facile à optimiser. Des modules tels que le stop loss mobile, le filtre peuvent être ajoutés pour une optimisation supplémentaire.

En général, cette stratégie présente des avantages remarquables comme un faible tirage, ce qui la rend très adaptée aux stratégies de suivi des tendances.

Les risques

Il y a aussi des risques:

  1. Risque d'erreur de détermination de tendance: des signaux erronés peuvent se produire lors de la consolidation des prix.

  2. Risque de sélection du point de sortie: le point de stop-loss doit être réglé de manière raisonnable pour éviter une sortie prématurée.

  3. Risque d'optimisation des paramètres. La période ATR et le multiplicateur nécessitent des tests et une optimisation répétitifs, des réglages incorrects affecteront les performances.

  4. Risque de fréquence de négociation élevée: la fréquence de négociation peut être trop élevée en cas de volatilité extrême du marché.

  5. Risque de performance médiocre: les performances peuvent être insatisfaisantes sur certains marchés sans tendance évidente.

  6. Ajustement pour le risque de négociation en temps réel. Ajustements doivent être effectués pour le glissement, la commission dans le commerce en temps réel.

  7. Risque systémique: la maîtrise globale du risque systémique devrait être envisagée, au lieu de se fier uniquement à cette stratégie.

Les risques peuvent être contrôlés par:

  1. Optimisation des paramètres ATR pour améliorer la précision.

  2. Utilisation d'analyses sur plusieurs périodes pour déterminer les tendances.

  3. Adoption d'un stop loss mobile pour sécuriser les bénéfices et réduire les retraits.

  4. Ajout de filtres pour contrôler la fréquence des transactions.

  5. Adaptation des paramètres pour les différents marchés.

  6. Tester différents produits pour trouver le meilleur scénario d'application.

  7. Compte tenu de tous les risques commerciaux dans le commerce en direct.

Directions d'optimisation

La stratégie peut être optimisée dans les aspects suivants:

  1. L'ajout de filtres comme les moyennes mobiles pour réduire les signaux incorrects.

  2. Optimiser les paramètres ATR en testant différentes périodes pour trouver des valeurs optimales.

  3. Optimisation du paramètre de multiplicateur pour déterminer la sensibilité de la génération de signal.

  4. L'ajout de stratégies de stop loss dynamiques basées sur l'ATR ou la volatilité.

  5. Utilisation d'indicateurs à plus long terme pour l'analyse afin de filtrer les faux signaux sporadiques.

  6. Adoption de modèles d'apprentissage automatique comme le RNN pour améliorer le jugement du signal.

  7. Ajustement des paramètres en fonction des caractéristiques du produit, par exemple en utilisant une période ATR plus courte pour les stocks volatils.

  8. Optimiser les points d'entrée en utilisant des approches de retrait pour trouver de meilleures entrées.

  9. Combinaison d'indicateurs de volume pour évaluer la force du signal.

  10. Ajouter des stratégies de profit basées sur des indicateurs de dynamique de tendance.

Conclusion

En général, cette stratégie de supertrend est très pratique avec des avantages tels qu'une réponse rapide et un faible retrait. C'est un système typique de suivi de tendance. Mais les risques tels que les erreurs de jugement et l'optimisation des paramètres doivent être surveillés dans le trading en direct, et une gestion complète des risques doit être mise en œuvre. Une optimisation supplémentaire peut rendre la stratégie plus robuste et rentable sur plus de marchés.


/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KivancOzbilgic


//@version=4
strategy("SuperTrend STRATEGY", overlay=true)
Periods = input(title="ATR Period", type=input.integer, defval=10)
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)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
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
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
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.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
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.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
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 Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 999)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 999)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
window()  => true
longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long, when = window())
shortCondition = sellSignal
if (shortCondition)
    strategy.entry("SELL", strategy.short, when = window())
buy1= barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)

//@version=3
//study(title="3 Moving Average Exponential", shorttitle="3 EMA", overlay=true)
//len1 = input(17, minval=1, title="Fast")
//len2 = input(72, minval=1, title="Medium")
len3 = input(305, minval=1, title="Slow")
//src1 = input(close, title="Source Fast")
//src2 = input(close, title="Source Medium")
src3 = input(close, title="Source Slow")
//out1 = ema(src1, len1)
//out2 = ema(src2, len2)
out3 = ema(src3, len3)
//plot(out1, title="EMA1", color=fuchsia)
//plot(out2, title="EMA2", color=orange)
plot(out3, title="EMA3", color=color.blue)

Plus de