Indice de déviation de tendance avec stratégie de moyenne mobile

Auteur:ChaoZhang est là., Date: 2023-11-06 14:46:40 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie calcule l'indice de déviation de tendance (TSI) du prix, traite TSI avec la moyenne mobile et forme la ligne moyenne mobile de TSI. Combinée à la direction du chandelier de prix, elle détermine si le prix actuel est en tendance haussière ou baissière, et génère ainsi des signaux d'achat et de vente.

Principaux

Les principales étapes de cette stratégie sont les suivantes:

  1. Calculer le pourcentage de variation des prix
  2. Double pct lisse avec HMA pour obtenir double_smoothed_pc
  3. Calculer la double HMA de pct absolu pour obtenir double_smoothed_abs_pc
  4. Calcul de la valeur de la STI: (100 * (double_smoothed_pc / double_smoothed_abs_pc))
  5. Valeur de la STI du procédé avec HMA pour obtenir la ligne de la moyenne mobile de la STI tsihmaline
  6. Comparer la valeur de la STI et la ligne de la moyenne mobile de la STI, au-dessus de la moyenne mobile est la tendance haussière, au-dessous est la tendance baissière
  7. Dans la tendance haussière, si le prix augmente également, générer un signal d'achat
  8. Dans la tendance à la baisse, si le prix est également en baisse, générer un signal de vente

Grâce aux étapes ci-dessus, il détermine la direction générale de la tendance, combinée avec le mouvement réel des prix, pour générer des signaux de trading.

Les avantages

  1. Le double lissage HMA filtre le bruit à court terme et les blocages dans la tendance majeure
  2. La STI et sa ligne de moyenne mobile déterminent la direction générale de la tendance
  3. Combiné avec le chandelier de prix évite une fausse rupture, améliore la fiabilité du signal
  4. Les paramètres personnalisables s'adaptent aux différents marchés cycliques
  5. Visualisation graphique, vert pour tendance haussière, rouge pour tendance baissière

Les risques

  1. Peut générer de multiples faux signaux lors d'un marché à fourchette
  2. Décalage des lignes moyennes mobiles aux points de virage, éventuellement manquant le meilleur point d'entrée
  3. Des ajustements fréquents des paramètres nécessaires pour s'adapter à l'évolution du marché
  4. Basé sur un indicateur unique de la STI, peut être optimisé avec d'autres indicateurs

Amélioration

  1. Ajouter des filtres pour éviter les faux signaux lors de la consolidation
  2. Ajouter d'autres indicateurs pour confirmer les points d'inversion de tendance
  3. Optimiser automatiquement les paramètres via l'apprentissage automatique, etc.
  4. Introduction d'un stop loss pour contrôler les pertes sur une seule transaction

Conclusion

Cette stratégie utilise TSI pour déterminer la direction de la tendance combinée avec des bougies de prix pour générer des signaux de trading, qui peuvent capturer efficacement la tendance, en achetant en tendance haussière et en vendant en tendance baissière.


/*backtest
start: 2023-10-29 00:00:00
end: 2023-11-05 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="TSIHULLBOT", shorttitle="TSICCIHULL", default_qty_type=strategy.percent_of_equity, default_qty_value=100)
long = input(title="Long Length", type=input.integer, defval=50)
short = input(title="Short Length", type=input.integer, defval=50)
signal = input(title="Signal Length", type=input.integer, defval=7)
price = input(title="Source",type=input.source,defval=open)
lineupper = input(title="Upper Line", type=input.integer, defval=250)
linelower = input(title="Lower Line", type=input.integer, defval=-250)
double_smooth(price, long, short) =>
    fist_smooth = hma(price, long)
    hma(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = (100 * (double_smoothed_pc / double_smoothed_abs_pc))*5
tsihmaline=(hma(tsi_value,signal))*5
clr = tsihmaline < tsi_value ? color.red : color.lime
clr2 = tsi_value < tsi_value[1] ? color.red : color.lime
i1=plot(lineupper+3, color=color.black, linewidth=3)
i2=plot(linelower+3, color=color.black, linewidth=3)
i3=plot(lineupper, color=clr)
i4=plot(linelower, color=clr)
trendv=tsihmaline/5.6
plot(trendv, linewidth=7,  color=color.black)
plot(trendv, linewidth=4,  color=color.yellow)
j1=plot(tsi_value, linewidth=5, color=color.black)
j2=plot(tsi_value[1], linewidth=5, color=color.black)
j3=plot(tsi_value, color=clr2)
j4=plot(tsi_value[1], color=clr2)
fill(i3,i4,color=clr,transp=90)
fill(j3,j4,color=clr2,transp=15)
longCondition = tsihmaline>tsihmaline[1] and price>price[1]
if (longCondition)
    strategy.entry("Buy ⤴️", strategy.long)
shortCondition = tsihmaline<tsihmaline[1] and price<price[1]
if (shortCondition)
    strategy.entry("Sell ⤵️", strategy.short)

Plus de