
Strategi ini didasarkan pada garis regresi linier dan rata-rata bergerak yang dirancang sebagai sistem perdagangan pelacakan tren sederhana. Di atas garis regresi linier, Anda melakukan lebih banyak ketika Anda melewati rata-rata bergerak, dan di bawah garis regresi linier, Anda melakukan lebih sedikit ketika Anda melewati rata-rata bergerak.
Trend Following Regression Trading Strategy (Strategi Perdagangan Regresi Mengikuti Tren)
Strategi ini mencakup beberapa bagian penting:
Garis regresi linier sangat cocok dengan arah tren dalam beberapa waktu terakhir. Ini dapat digunakan untuk membantu menentukan arah tren keseluruhan. Ketika harga menembus garis SMA, kita perlu menilai lebih lanjut apakah arah garis regresi linier sesuai dengan penembusan tersebut.
Selain itu, strategi ini juga mengatur mekanisme stop loss. Ketika harga menyentuh garis stop loss, posisi kosong berhenti. Juga mengatur garis stop loss, mengunci sebagian keuntungan.
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki beberapa risiko:
Untuk mengatasi risiko ini, kita dapat mengoptimalkan beberapa hal berikut:
Strategi ini dapat dioptimalkan dengan cara:
Strategi ini mengintegrasikan fungsi trend tracking dari moving averages dengan fungsi trend judgement dari linear regression, membentuk sebuah sistem trading trend tracking yang relatif sederhana dan mudah dilakukan. Dalam pasar yang jelas trend, strategi ini dapat memperoleh efek 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))