La stratégie de suivi de tendance utilise une combinaison de moyenne mobile simple (SMA) et de SMA rapide pour déterminer la direction de la tendance du marché et générer des signaux de trading. Elle va long lorsque le prix traverse au-dessus de la SMA et de la FSMA et sort longue lorsque le prix traverse en dessous. Elle va court lorsque le prix traverse au-dessous de la SMA et de la FSMA et sort court lorsque le prix traverse au-dessus.
La stratégie utilise la fonction sma pour calculer la SMA à 50 périodes et la SMA rapide fsma. fsma est calculée sur la base de la SMA plus 6 fois l'écart type du prix sur n périodes.
Deux variables booléennes longues et courtes sont utilisées pour enregistrer les positions longues et courtes. long est défini sur 1 lorsque le prix dépasse sma et fsma pour l'entrée longue, et -1 lorsque le prix dépasse en dessous pour la sortie. court suit la même logique pour la position courte.
La variable de tendance est utilisée pour la détermination de la tendance. Elle est définie sur 1 lorsque le prix est supérieur à fsma et sma pour la tendance haussière, et -1 lorsque le prix est inférieur à fsma et sma pour la tendance baissière.
Les signaux de trading longs et courts sont générés en fonction de la direction de la tendance en temps réel. Lorsque la tendance change de bas en haut, si le prix est supérieur à fsma, allez long. Lorsque la tendance change de haut en bas, si le prix est inférieur à sma, allez court.
La stratégie combine à la fois les méthodes de suivi de tendance et de rupture pour saisir les opportunités lorsque la tendance change.
Utiliser la double confirmation de deux MAs filtre les fausses fuites.
La combinaison du suivi de tendance et de la rupture marque un tournant.
Aucune correction de courbe ou optimisation pour les signaux de trading dynamiques.
Une logique simple et claire, facile à comprendre et à modifier.
Paramètres personnalisables pour la longueur, multiplicateur pour différents marchés.
Les doubles croisements de MA peuvent entraîner des transactions et des renversements excessifs.
Le décalage de l'AM peut manquer l'inversion précoce de la tendance.
Aucun mécanisme d'arrêt des pertes pour contrôler les pertes d'une seule transaction.
Un réglage incorrect des paramètres conduit à un suréchange ou à un retard.
Pour les risques 1 et 2, allonger les périodes de MA, ajouter le stop loss de retrait.
Pour le risque 3, ajouter le pourcentage ou l'ordre de stop loss.
Pour le risque 4, ajuster les paramètres dynamiquement pour différents marchés.
Ajouter un filtre de tendance en utilisant MACD, DMI pour confirmer la tendance.
Utiliser KD, RSI pour négocier une inversion moyenne suracheté/survendu.
L'indicateur d'indice de risque est utilisé pour déterminer la valeur de l'indice de risque.
Ajouter un module de dimensionnement de la position pour un réglage dynamique.
Optimiser les paramètres pour s'adapter à des délais différents.
Introduire l'apprentissage automatique pour le réglage automatique des paramètres.
Construisez une stratégie composite avec des filtres supplémentaires.
Utilisez l'apprentissage en profondeur pour détecter des tendances complexes.
La stratégie de suivi de tendance SMA est un système de trading de tendance simple. Elle utilise des MAs rapides et lents pour aider à la direction de la tendance et à capter l'inversion de tendance. Cependant, des risques tels que le fouet et le retard existent. Les améliorations futures incluent l'ajout de filtres, d'arrêts, de paramètres dynamiques, etc. Dans l'ensemble, elle sert de bonne stratégie de suivi de tendance de départ, mais des optimisations sont nécessaires pour les applications du monde réel afin de maximiser sa performance.
/*backtest start: 2022-10-26 00:00:00 end: 2023-11-01 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("SMA STRATEGY", shorttitle="SMA TREND", overlay=true, calc_on_order_fills=true) length = input(title="Length", type=input.integer, defval=50) src_=input(close, title="Source", type=input.source) mult=input(6.0, title="Mult") barc=input(true, title="Use barcolor?") plots=input(false, title="Show plots?") tri=input(false, title="Use triangles?") r(src, n)=> s = 0.0 for i = 0 to n-1 s := s + ((n-(i*2+1))/2)*src[i] x=s/(n*(n+1)) x l=sma(low, length) h=sma(high, length) lr= l+mult*r(low, length) hr= h+mult*r(high, length) trend=0 trend:=src_ > lr and src_ > hr ? 1 : src_ < lr and src_ < hr ? -1 : trend[1] strategy.close("Long", when=trend==-1) strategy.close("Short", when=trend==1) strategy.entry("Long", strategy.long, when=trend==1 and src_>h) strategy.entry("Short", strategy.short, when=trend==-1 and src_<l) long=0 short=0 long:= trend==1 and src_>h ? 1 : trend==-1 ? -1 : long[1] short:= trend==-1 and src_<l ? 1 : trend==1 ? -1 : short[1] barcolor(barc? (long>0? color.green : short>0? color.red : trend>0? color.orange: trend<0 ? color.white : color.blue) : na) plotshape(tri? close : na, style= shape.diamond, color= long>0? color.green : short>0? color.red : trend>0? color.orange: trend<0 ? color.white : color.blue, location=location.top) //shortenter= a1=plot(plots? l : na, color=color.blue, linewidth=1) //longenter= a2=plot(plots? h : na, color=color.blue, linewidth=1) fill(a1, a2, color=color.blue) //stopshort= b1=plot(plots? hr : na, color=color.navy, linewidth=1) //stoplong= b2=plot(plots? lr : na, color=color.navy, linewidth=1) fill(b1, b2, color=color.navy)