Tendance à la suite d'une stratégie basée sur le croisement des moyennes mobiles

Auteur:ChaoZhang est là., Date: 2024-01-31 15:17:31 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie génère des signaux de trading en calculant différents types de moyennes mobiles ( moyennes mobiles simples SMA, moyennes mobiles exponentielles EMA, moyennes mobiles Hull HMA et moyennes mobiles pondérées VWMA) et en détectant des points de croisement entre eux, pour déterminer la tendance du marché et la suivre.

La logique de la stratégie

L'idée de base de cette stratégie est de juger de la tendance du marché en comparant deux moyennes mobiles. Plus précisément, elle permet de configurer deux MA avec des types et des longueurs différents à travers des paramètres d'entrée. La première MA a une période plus longue pour représenter la tendance principale, tandis que la deuxième MA a une période plus courte pour la tendance à court terme actuelle.

Lorsque le MA à court terme traverse le MA à long terme depuis le bas, cela indique que la tendance à court terme se renforce et que le marché entre dans une tendance à la hausse. Ainsi, un signal d'achat est généré à ce point de croisement. Inversement, lorsque le MA à court terme traverse le MA à long terme, cela suggère que la tendance à court terme s'affaiblit et que le marché est en train de s'inverser. En conséquence, un signal de vente est généré.

En détectant de tels croisements d'AM, cette stratégie suit la tendance du marché vers les échanges.

Les avantages

  • Utilise la méthode de croisement classique et pratique de l'AM pour déterminer les principales tendances
  • Prend en charge les combinaisons de différents types d'autorisation, ce qui offre une certaine souplesse
  • La logique est simple et claire, facile à comprendre et à automatiser
  • Les paramètres configurables s'adaptent aux différentes conditions du marché

Analyse des risques

  • Les MAs ont un effet de retard, les signaux peuvent arriver à des points de basculement ou à proximité de ces points lorsque l'action des prix a déjà eu lieu
  • Les jugements de tendance peuvent être inexacts, entraînant des pertes inutiles
  • Les résultats varient considérablement selon les paramètres de l'AM

Les solutions:

  • Utilisez des périodes d'AM plus courtes pour une meilleure sensibilité
  • Ajouter d'autres filtres pour la vérification croisée pour éviter les erreurs
  • Méthodes d'optimisation des paramètres, par exemple force brute, apprentissage automatique, algorithmes génétiques
  • Contrôler correctement la dimension de la position et le stop loss

Directions d'amélioration

  • Ajouter d'autres indicateurs comme filtres pour améliorer la précision
  • Paramètres d'AM à adapter automatiquement en fonction de l'évolution des conditions du marché
  • Utiliser l'apprentissage automatique pour l'optimisation automatisée des paramètres
  • Améliorer la stratégie de stop-loss

Conclusion

Cette stratégie s'appuie sur l'idée classique d'utiliser des croisements MA pour la détection de tendances majeures. Avec des combinaisons MA flexibles, elle est simple à mettre en œuvre et adaptée à l'automatisation algorithmique du trading.


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

//@version=3
//study(title="MA Crossover Strategy", overlay = true)
strategy("MA Crossover Strategy", overlay=true)
src = input(close, title="Source")

price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(25, title="1st MA Length")
type1 = input("HMA", "1st MA Type", options=["SMA", "EMA", "HMA", "VWMA"])

ma2 = input(7, title="2nd MA Length")
type2 = input("HMA", "2nd MA Type", options=["SMA", "EMA", "HMA", "VWMA"])

f_hma(_src, _length)=>
    _return = wma((2*wma(_src, _length/2))-wma(_src, _length), round(sqrt(_length)))

price1 = if (type1 == "SMA")
    sma(price, ma1)
else
    if (type1 == "EMA")
        ema(price, ma1)
    else
        if (type1 == "VWMA")
            vwma(price, ma1)
        else
            f_hma(price, ma1)
    
price2 = if (type2 == "SMA")
    sma(price, ma2)
else
    if (type2 == "EMA")
        ema(price, ma2)
    else
        if (type2 == "VWMA")
            vwma(price, ma2)
        else
            f_hma(price, ma2)


//plot(series=price, style=line,  title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line,  title="1st MA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0)


longCondition = crossover(price1, price2)
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = crossunder(price1, price2)
if (shortCondition)
    strategy.entry("Short", strategy.short)


Plus de