Tendance suivant une stratégie basée sur une moyenne mobile dynamique

Auteur:ChaoZhang est là., Date: 2024-01-02 10:44:53 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie est basée sur l'indicateur de moyenne mobile dynamique pour suivre l'évolution des prix en temps réel et générer des signaux de trading lorsque la moyenne mobile est franchie.

La logique de la stratégie

Cette stratégie utilise des indicateurs de moyenne mobile dynamique, y compris ALMA, EMA, SMA et plus encore. Le principe est d'aller long lorsque le prix dépasse la moyenne mobile et d'aller court lorsqu'il dépasse la moyenne mobile. C'est-à-dire que la moyenne mobile sert de baromètre pour la tendance des prix et que des signaux peuvent être générés lorsqu'un renversement de tendance se produit.

Plus précisément, la stratégie utilise des moyennes mobiles formées par des prix élevés et bas. Le prix bas MA sert de ligne de signal pour les signaux longs, tandis que le prix élevé MA sert de ligne pour les courts. Lorsque le prix de clôture dépasse le prix bas MA, allez long. Lorsque la fermeture tombe en dessous du prix élevé MA, allez court.

En jugeant l'évolution des prix avec MA et en combinant avec le principe de rupture pour générer des signaux, une stratégie de suivi de tendance simple et pratique est formée.

Les avantages

  • Réglage des paramètres simple avec indicateur MA, facile à utiliser
  • Règles claires en matière de signalisation sans faux signaux
  • Types d'AM flexibles pour s'adapter aux évolutions du marché
  • Périodes d'AM réglables adaptées aux différents cycles de tendance
  • La validation du signal à plusieurs délais améliore la fiabilité

Risques et solutions

  • Le retard de l'AEM pourrait vous faire rater certaines opportunités.
    • Réduction de la durée de l'EM ou utilisation de l'EMA
  • Risques d'échange importants à court terme
    • Élargir la marge de manœuvre pour la flexibilité
  • Risques de détention à long terme, incapables de fixer les bénéfices à temps
    • Combinez d'autres indicateurs, évitez de courir après les hauts et de tuer les bas

Directions d'optimisation

  • Ajuster le type et les paramètres de l'autorisation de mise sur le marché en fonction des caractéristiques du symbole
  • Ajouter des indicateurs auxiliaires pour améliorer la stratégie
  • Ajouter des mécanismes de stop loss et de prise de profit
  • Évaluer la fiabilité du signal à travers les délais
  • Utiliser l'apprentissage automatique pour trouver de meilleurs paramètres

Conclusion

Cette stratégie évalue la direction de la tendance avec MA et génère des signaux basés sur les principes de rupture. Elle est simple à utiliser et adaptée à la détention à moyen et long terme. Les paramètres peuvent également être ajustés pour s'adapter aux changements du marché. Les risques liés aux fluctuations à court terme et à la détention à long terme doivent être gérés avec stop loss / profit taking. Il y a de la place pour l'amélioration en incorporant plus d'indicateurs et en trouvant des paramètres optimaux grâce à l'apprentissage automatique.


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

//@version=4
strategy(title="Baseline Strategy - evo", shorttitle="Baseline", overlay=true)

//INPUTS
mat =               input("ALMA", "MA Type", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "ALMA"])
baseline =          input(55, title="MA Length")
src =               input(ohlc4, title="Closing Source")

offset =            input(0.85, step=0.05, title="Offset (alma only)")
sigma =             input(10, title="Sigma (alma only)")

useCurrentRes =     input(true, title="Use Current Resolution")
resCustom =         input("1440", title="Timeframe")

showsignals =       input(false, title="Show Signals ?")

//BASELINE
baselinehigh = 

 mat=="SMA" ? sma(high,baseline) : 
 mat=="EMA" ? ema(high,baseline) : 
 mat=="WMA" ? wma(high,baseline) : 
 mat=="HMA" ? wma(2*wma(high, baseline/2)-wma(high, baseline), round(sqrt(baseline))) : 
 mat=="VWMA" ? vwma(high,baseline) : 
 mat=="RMA" ? rma(high,baseline) :
 mat=="ALMA" ? alma(high, baseline, offset, sigma) : na

baselinelow = 

 mat=="SMA" ? sma(low,baseline) : 
 mat=="EMA" ? ema(low,baseline) : 
 mat=="WMA" ? wma(low,baseline) : 
 mat=="HMA" ? wma(2*wma(low, baseline/2)-wma(low, baseline), round(sqrt(baseline))) : 
 mat=="VWMA" ? vwma(low,baseline) : 
 mat=="RMA" ? rma(low,baseline) : 
 mat=="ALMA" ? alma(low, baseline, offset, sigma) : na

//RESOLUTION
res =               useCurrentRes ? timeframe.period : resCustom

mtfhigh =           security(syminfo.tickerid, res, baselinehigh)
mtflow =            security(syminfo.tickerid, res, baselinelow)

//PLOTS
plot(mtfhigh, color=color.navy, linewidth=2, transp=0, title="Baseline High")
plot(mtflow, color=color.navy, linewidth=2, transp=0, title="Baseline Low")

long =              src > mtfhigh
short =             src < mtflow

barcolor(long ? #ffe0b2 : short ? #2a2e39 : not long and not short ? #b09e82 : na, title="BaseLine BarColor")

signal = 0
signal := long ? 1 : short ? 2 : nz(signal[1])

plotshape(showsignals ? (signal != signal[1] and long ? mtflow : na) : na, title="Long", location=location.absolute, size=size.small, style=shape.labelup, text="Long", textcolor=color.black, transp=40, color=#00ff00)
plotshape(showsignals ? (signal != signal[1] and short ? mtfhigh : na) : na, title="Short", location=location.absolute, size=size.small, style=shape.labeldown, text="Short", textcolor=color.white, transp=40, color=#ff0000)

alertcondition(signal != signal[1], title="Trend Change !", message="Trend Change !")

if (long)
    strategy.entry("Long", strategy.long)
if (short)
    strategy.entry("Short", strategy.short)

Plus de