
La stratégie est basée sur une ligne de régression linéaire et des moyennes mobiles. La stratégie est conçue pour un système de suivi de la tendance simple.
Stratégie de trading de régression suivant la tendance
La stratégie comprend les éléments clés suivants:
Une ligne de régression linéaire est une bonne adaptation de la direction de la tendance au cours d’une période récente. Elle peut être utilisée pour aider à déterminer la direction de la tendance globale. Lorsque le prix franchit la ligne SMA, nous devons déterminer plus en détail si la direction de la ligne de régression linéaire correspond à cette rupture.
En outre, la stratégie a également un mécanisme de stop-loss. Lorsque le prix touche la ligne de stop-loss, la position de placement est arrêtée. Il y a également un stop-loss, qui bloque une partie des bénéfices.
Cette stratégie présente les avantages suivants:
Cette stratégie comporte aussi des risques:
Nous pouvons optimiser ces risques de plusieurs façons:
Cette stratégie peut être optimisée principalement dans les domaines suivants:
La stratégie intègre la fonction de suivi de tendance des moyennes mobiles et la fonction de jugement de tendance de la régression linéaire, formant un système de trading de suivi de tendance relativement simple et facile à utiliser. Dans les marchés où la tendance est évidente, la stratégie peut obtenir de meilleurs résultats.
/*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))