Stratégie de suivi de tendance basée sur la percée de la régression de la moyenne mobile


Date de création: 2024-02-23 14:46:37 Dernière modification: 2024-02-23 14:46:37
Copier: 0 Nombre de clics: 651
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance basée sur la percée de la régression de la moyenne mobile

Aperçu

La stratégie de rupture de la régression de la moyenne est une stratégie de négociation quantifiée typique du suivi de la tendance. Cette stratégie utilise les moyennes mobiles et leur canal d’écart standard pour juger de l’évolution du marché et générer un signal de négociation lorsque le prix franchit le canal d’écart standard.

Principe de stratégie

La stratégie commence par calculer une moyenne mobile simple (SMA) de N jours (de 50 jours par défaut), puis calculer le décalage standard StdDev du prix de ce cycle sur la base du SMA. Le SMA est le centre de l’axe, les hauts et les bas construisent le canal de décalage standard de la courbe en utilisant 2 fois le StdDev pour la courbe ascendante et descendante.

Après l’entrée sur le marché, la stratégie définit un stop-loss. Plus précisément, après avoir fait plus, la ligne de stop-loss correspond au prix de clôture au moment de l’entrée (pourcentage de stop-loss = 100); après la clôture, la ligne de stop-loss correspond au prix de clôture au moment de l’entrée (pourcentage de stop-loss = 100 +).

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Il est capable de suivre les tendances. Il est capable de suivre les fluctuations du marché de manière dynamique en utilisant le canal de la différence standard.
  2. La capacité de contrôle des retraits est forte. Le contrôle des pertes individuelles est efficace grâce à l’utilisation d’un stop mobile.
  3. L’implémentation est simple. Il n’y a pas eu beaucoup d’optimisation de paramètres et c’est très facile.

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Risque de renversement de tendance. Les stratégies de suivi de tendance sont sujettes à des sorties de pertes et à des renversements.
  2. Risques sensibles aux paramètres. Le choix des paramètres de la période des moyennes mobiles et des multiples de l’écart standard a une influence majeure sur la performance de la stratégie.
  3. Le stop-loss est trop radical et peut entraîner des pertes supplémentaires. Une mauvaise configuration du stop-loss peut entraîner des pertes supplémentaires.

Les solutions pour gérer les risques sont les suivantes:

  1. La combinaison de l’indicateur de volatilité et de l’indicateur de volatilité permettent d’éviter les fausses ruptures.
  2. Optimiser les paramètres pour trouver la combinaison optimale de paramètres.
  3. Le gouvernement a décidé d’adapter les mécanismes d’arrêt des dommages afin de prévenir la radicalisation.

Direction d’optimisation

Il y a encore de la place pour optimiser cette stratégie:

  1. Utilisez la ligne moyenne pour vérifier plusieurs périodes de temps, en évitant que la courbe soit trop sensible.

  2. la combinaison avec d’autres indicateurs tels que le MACD pour juger des tendances et des écarts.

  3. introduire des paramètres d’optimisation dynamique des algorithmes d’apprentissage automatique

Résumer

La stratégie de rupture de la régression linéaire est une stratégie de trading quantitatif très pratique dans son ensemble. Elle a l’avantage de suivre la tendance, de contrôler le retrait, de réaliser des transactions simples et adaptées à la nécessité de quantifier. Il faut également faire attention à certains paramètres de sélection et de paramétrage de stop loss, en combinaison avec une analyse multi-axes et une optimisation des paramètres, pour obtenir une meilleure performance de la stratégie.

Code source de la stratégie
/*backtest
start: 2023-02-16 00:00:00
end: 2024-02-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Standard Deviation Bands with Buy/Sell Signals", overlay=true)

// Input for the number of standard deviations
deviationMultiplier = input.float(2.0, title="Standard Deviation Multiplier")

// Input for the length of the moving average
maLength = input.int(50, title="Moving Average Length")

// Input for the stop loss percentage
stopLossPercentage = input.float(12, title="Stop Loss Percentage")

// Calculate the moving average
sma = ta.sma(close, maLength)

// Calculate the standard deviation of the price
priceDeviation = ta.stdev(close, maLength)

// Calculate the upper and lower bands
upperBand = sma + (priceDeviation * deviationMultiplier)
lowerBand = sma - (priceDeviation * deviationMultiplier)

// Plot the bands
plot(upperBand, color=color.green, title="Upper Band")
plot(lowerBand, color=color.red, title="Lower Band")

// Plot the moving average
plot(sma, color=color.blue, title="SMA", linewidth=2)

// Buy Signal
buyCondition = ta.crossover(close, lowerBand)
sellCondition = ta.crossunder(close, upperBand)

// Calculate stop loss level
stopLossLevelBuy = close * (1 - stopLossPercentage / 100)
stopLossLevelSell = close * (1 + stopLossPercentage / 100)

// Create Buy and Sell Alerts
alertcondition(buyCondition, title="Buy Signal", message="Buy Signal - Price Crossed Below Lower Band")
alertcondition(sellCondition, title="Sell Signal", message="Sell Signal - Price Crossed Above Upper Band")

// Plot Buy and Sell Arrows on the chart
plotshape(buyCondition, style=shape.triangleup, location=location.belowbar, color=color.green, title="Buy Signal Arrow")
plotshape(sellCondition, style=shape.triangledown, location=location.abovebar, color=color.red, title="Sell Signal Arrow")

// Exit Long and Short Positions
var float stopLossBuy = na
var float stopLossSell = na

if ta.crossover(close, sma)
    stopLossBuy := stopLossLevelBuy
if ta.crossunder(close, sma)
    stopLossSell := stopLossLevelSell

strategy.entry("Buy", strategy.long, when = buyCondition)
strategy.exit("Stop Loss/Take Profit Buy", from_entry = "Buy", stop = stopLossBuy)
strategy.entry("Sell", strategy.short, when = sellCondition)
strategy.exit("Stop Loss/Take Profit Sell", from_entry = "Sell", stop = stopLossSell)