Cette stratégie conçoit une tendance simple suivant un système de trading basé sur la ligne de régression linéaire et la ligne moyenne mobile. Elle va longue lorsque la ligne de régression linéaire traverse au-dessus de la moyenne mobile et va courte lorsque la ligne de régression linéaire traverse en dessous. Pendant ce temps, elle utilise la pente de la ligne de régression pour filtrer certains signaux de trading et n'entre que lorsque la direction de la tendance correspond.
Tendance à la suite de la stratégie de négociation de régression
Les éléments clés de cette stratégie sont les suivants:
La ligne de régression linéaire peut bien s'adapter à la direction de la tendance dans les périodes récentes. Elle peut aider à juger de la direction générale de la tendance. Lorsque le prix traverse la ligne SMA, nous devons déterminer si la direction de la ligne de régression linéaire est compatible avec cette rupture. Seulement lorsque les deux directions sont cohérentes, un signal de trading est généré. Cela peut filtrer certaines fausses ruptures.
En outre, la stratégie définit également un mécanisme de stop loss. Lorsque le prix atteint la ligne de stop loss, fermez les positions pour arrêter la perte.
La stratégie présente les avantages suivants:
La stratégie comporte également certains risques:
En ce qui concerne ces risques, nous pouvons optimiser à partir des aspects suivants:
Les principaux aspects pour optimiser davantage la stratégie sont les suivants:
Cette stratégie intègre la fonction de suivi de tendance des moyennes mobiles et la capacité de jugement de tendance de la régression linéaire, formant un système de trading de suivi de tendance relativement simple. Elle peut obtenir de bons résultats sur des marchés à forte tendance. Nous avons encore besoin d'un backtesting et d'une optimisation approfondis des paramètres et des règles, et d'un contrôle approprié des risques.
/*backtest start: 2023-11-17 00:00:00 end: 2023-12-05 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Regression Trading Strategy", shorttitle="RTS", overlay=true) // Input parameters n = input(14, title="SMA Period") stop_loss_percentage = input(2, title="Stop Loss Percentage") take_profit_percentage = input(2, title="Take Profit Percentage") // Calculate the SMA sma = sma(close, n) // Linear regression function linear_regression(src, length) => sumX = 0.0 sumY = 0.0 sumXY = 0.0 sumX2 = 0.0 for i = 0 to length - 1 sumX := sumX + i sumY := sumY + src[i] sumXY := sumXY + i * src[i] sumX2 := sumX2 + i * i slope = (length * sumXY - sumX * sumY) / (length * sumX2 - sumX * sumX) intercept = (sumY - slope * sumX) / length line = slope * length + intercept line // Calculate the linear regression regression_line = linear_regression(close, n) // Plot the SMA and regression line plot(sma, title="SMA", color=color.blue) plot(regression_line, title="Regression Line", color=color.red) // Trading strategy conditions long_condition = crossover(close, sma) and close > regression_line short_condition = crossunder(close, sma) and close < regression_line // Exit conditions stop_loss_price = close * (1 - stop_loss_percentage / 100) take_profit_price = close * (1 + take_profit_percentage / 100) // Plot entry and exit points on the chart plotshape(series=long_condition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(series=short_condition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) plotshape(series=crossunder(close, stop_loss_price), title="Stop Loss", location=location.abovebar, color=color.red, style=shape.labeldown, text="SL") plotshape(series=crossover(close, take_profit_price), title="Take Profit", location=location.belowbar, color=color.green, style=shape.labelup, text="TP") // Strategy orders strategy.entry("Long", strategy.long, when = long_condition) strategy.entry("Short", strategy.short, when = short_condition) strategy.exit("Exit", from_entry = "Long", when = crossover(close, stop_loss_price) or crossover(close, take_profit_price)) strategy.exit("Exit", from_entry = "Short", when = crossunder(close, stop_loss_price) or crossunder(close, take_profit_price))