
Strategi ini menggunakan garis regresi linear dan rata-rata bergerak untuk merancang sistem perdagangan yang mudah untuk mengesan trend. Apabila garis regresi linear melintasi rata-rata bergerak, anda melakukan lebih banyak, dan apabila garis regresi linear melintasi rata-rata bergerak, anda membuat kosong.
Trend Following Regression Trading Strategy
Strategi ini merangkumi beberapa bahagian utama:
Garis regresi linear sangat sesuai dengan arah trend dalam tempoh yang baru-baru ini. Ini boleh digunakan untuk membantu menentukan arah trend keseluruhan. Apabila harga menembusi garis SMA, kita perlu menilai lebih lanjut sama ada arah garis regresi linear sesuai dengan penembusan tersebut.
Di samping itu, strategi ini juga menetapkan mekanisme hentikan kerugian. Apabila harga menyentuh garis hentikan kerugian, hentikan kedudukan kosong. Juga menetapkan garis hentikan, mengunci sebahagian keuntungan.
Strategi ini mempunyai kelebihan berikut:
Strategi ini mempunyai beberapa risiko:
Untuk mengatasi risiko ini, kita boleh mengoptimumkan beberapa aspek:
Strategi ini boleh dioptimumkan dengan cara:
Strategi ini mengintegrasikan fungsi pengesanan trend rata-rata bergerak dengan fungsi penghakiman trend regresi linear, membentuk sistem perdagangan trend yang agak mudah dan mudah dilaksanakan. Dalam pasaran yang jelas trend, strategi ini dapat memperoleh kesan yang lebih baik.
/*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))