
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.
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 +).
Cette stratégie présente les avantages suivants:
Cette stratégie comporte aussi des risques:
Les solutions pour gérer les risques sont les suivantes:
Il y a encore de la place pour optimiser cette stratégie:
Utilisez la ligne moyenne pour vérifier plusieurs périodes de temps, en évitant que la courbe soit trop sensible.
la combinaison avec d’autres indicateurs tels que le MACD pour juger des tendances et des écarts.
introduire des paramètres d’optimisation dynamique des algorithmes d’apprentissage automatique
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.
/*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)