Stratégie de suivi des tendances basée sur la moyenne mobile de la coque et le filtre Kalman

Auteur:ChaoZhang est là., Date: 2023-11-01 17:10:49 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie combine la moyenne mobile de Hull et le filtre Kalman pour identifier et suivre les tendances des prix, appartenant aux stratégies de suivi des tendances.

La logique de la stratégie

  • La stratégie utilise une moyenne mobile Hull (hma) de 24 périodes et une moyenne mobile Triple Hull (hma3) de 24 périodes pour construire des signaux de trading.

  • Lorsqu'HMA dépasse HMA3, un signal d'achat est généré. Lorsque HMA dépasse HMA3, un signal de vente est généré.

  • Le filtre Kalman est désactivé par défaut. Lorsqu'il est activé, il lissé hma et hma3 pour filtrer le bruit excessif et améliorer la qualité du signal.

  • Le filtre Kalman élimine le bruit aléatoire des signaux par des étapes de prédiction et de correction. La différence entre chaque mesure et la dernière prédiction est traitée comme l'élément de correction pour prédire la prochaine mesure plus précisément.

  • Cette stratégie tire parti du filtre Kalman pour améliorer la stabilité des stratégies de moyennes mobiles en filtrant les fluctuations aléatoires et en suivant les tendances persistantes.

Les avantages

  • Le système de doubles moyennes mobiles permet de mieux identifier les tendances durables par rapport à la moyenne mobile unique.

  • La moyenne mobile de Hull accorde plus de poids aux prix récents grâce à un calcul pondéré, ce qui la rend plus sensible pour enregistrer les variations de prix.

  • Le filtre Kalman peut filtrer efficacement le bruit aléatoire des signaux, réduisant les faux signaux et améliorant la qualité du signal.

  • Les paramètres réglables tels que la période et le gain du filtre Kalman permettent à la stratégie de s'adapter aux différentes conditions du marché.

  • L'adoption de techniques de période transversale génère des signaux plus persistants, évitant ainsi d'être induits en erreur par des fluctuations aléatoires excessives.

  • L'interface visuelle affiche intuitivement les signaux et l'état de la tendance pour faciliter l'utilisation.

Les risques

  • Les moyennes mobiles doubles sont sujettes à générer des signaux erronés autour des points tournants de la tendance, incapables de capturer les renversements en temps opportun.

  • Le retard des moyennes mobiles peut faire perdre des opportunités d'inversions rapides des prix.

  • Ne convient pas pour les marchés aux fluctuations violentes, il faut éviter de l'utiliser pendant les phases de turbulence.

  • Les paramètres du filtre Kalman pourraient avoir un impact sur les performances de la stratégie.

  • Les périodes plus longues ont une réponse lente tandis que les périodes plus courtes sont vulnérables au bruit.

  • Les périodes de détention longues/courtes non fixes entraînent un temps d'inactivité sans positions, ce qui réduit l'efficacité de l'utilisation du capital.

Amélioration

  • Essayez les moyennes mobiles adaptatives qui optimisent dynamiquement les paramètres basés sur la volatilité.

  • Incorporer des indicateurs de volatilité pour éviter de négocier pendant les marchés agités et ne négocier que sur des tendances évidentes.

  • Mettre en place un stop loss pour limiter les pertes et améliorer le contrôle des risques.

  • Optimiser les paramètres du filtre Kalman pour équilibrer la sensibilité de suivi et le niveau de filtrage du bruit.

  • Confirmez la validité du signal avec d'autres indicateurs tels que le volume, les bandes de Bollinger pour la persistance de la tendance.

  • Utiliser l'apprentissage automatique pour former des paramètres et améliorer la robustesse et l'adaptabilité de la stratégie.

Conclusion

Cette stratégie permet d'identifier efficacement les tendances durables et d'améliorer la qualité du signal grâce à deux Hull MAs et à un filtre Kalman.


/*backtest
start: 2022-10-25 00:00:00
end: 2023-10-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Hull Trend with Kahlman Strategy Backtest", shorttitle="HMA-Kahlman Trend Strat", overlay=true)

src       = input(hl2,   "Price Data")
length    = input(24,    "Lookback")
showcross = input(true,  "Show cross over/under")
gain      = input(10000, "Gain")
k         = input(true,  "Use Kahlman")

hma(_src, _length) =>
    wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
    
hma3(_src, _length) =>
    p = length/2
    wma(wma(close,p/3)*3 - wma(close,p/2) - wma(close,p),p)

kahlman(x, g) =>
    kf = 0.0
    dk = x - nz(kf[1], x)
    smooth = nz(kf[1],x)+dk*sqrt((g/10000)*2)
    velo = 0.0
    velo := nz(velo[1],0) + ((g/10000)*dk)
    kf := smooth+velo
  
a = k ? kahlman(hma(src, length), gain) : hma(src, length)
b = k ? kahlman(hma3(src, length), gain) : hma3(src, length)
c = b > a ? color.lime : color.red
crossdn = a > b and a[1] < b[1]
crossup = b > a and b[1] < a[1]

p1 = plot(a,color=c,linewidth=1,transp=75)
p2 = plot(b,color=c,linewidth=1,transp=75)
fill(p1,p2,color=c,transp=55)
plotshape(showcross and crossdn ? a : na, location=location.absolute, style=shape.labeldown, color=color.red, size=size.tiny, text="S", textcolor=color.white, transp=0, offset=-1)
plotshape(showcross and crossup ? a : na, location=location.absolute, style=shape.labelup, color=color.green, size=size.tiny, text="B", textcolor=color.white, transp=0, offset=-1)

longCondition = crossup
if (longCondition)
    strategy.entry("LE", strategy.long)

shortCondition = crossdn
if (shortCondition)
    strategy.entry("SE", strategy.short)
    


Plus de