
Adaptive Linear Regression Channel Strategi adalah strategi perdagangan kuantitatif yang didasarkan pada analisis regresi linier. Strategi ini membentuk saluran naik turun dengan menghitung persamaan regresi linier harga sekuritas dalam jangka waktu tertentu, dan menggunakan saluran naik turun sebagai sinyal perdagangan untuk melakukan perdagangan interval atau pelacakan tren.
Inti dari strategi saluran regresi linier adaptif adalah menghitung persamaan regresi linier harga penutupan dari sejumlah garis K-root K, membentuk garis tengah yang mewakili digit harga tengah, garis atas yang mewakili batas atas harga dan garis bawah yang mewakili batas bawah harga. Proses perhitungan spesifiknya adalah sebagai berikut:
Mengumpulkan input parameter length untuk variabel independen x dan variabel dependen y dari garis K dengan akar K. Di sini, x adalah bilangan bulat dari 1 ke panjang, dan y adalah nilai penutupan dari garis K yang sesuai.
Perhitungan koefisien regresi:
Hitung nilai regresi linear untuk setiap garis K dengan y’, standar deviasi STDDEV
Garis tengah adalah persamaan regresi y’ = mx + b, yang masing-masing melayang di atas dan di bawah garis tengah dengan interval satu kali lipat standar.
Dengan datangnya garis K baru, perhitungan di atas bergulir dan diperbarui, membentuk saluran adaptasi atas dan bawah. Berdasarkan saluran atas dan bawah, lakukan lebih banyak ruang kosong, berhenti di dekat garis tengah.
Adaptive Linear Regression Channel Strategy memiliki beberapa keunggulan dibandingkan dengan strategi linear rata-rata tradisional:
Lebih ilmiah, lebih masuk akal, dan memiliki arti statistik yang lebih tinggi daripada rata-rata
Adaptasi yang lebih fleksibel, ruang lingkup saluran akan disesuaikan secara otomatis dengan perubahan harga
Hasil pengamatan yang lebih baik, jelas lebih baik dari strategi garis rata pada beberapa varietas
Hasil pengujian pada komputer, kinerja yang memuaskan di komputer
Strategi ini memiliki risiko utama sebagai berikut:
Pertumbuhan harga yang terlalu besar menyebabkan kerugian yang sangat besar. Solusinya adalah dengan mengatur stop loss dan mengoptimalkan parameter.
Kesalahan saluran menyebabkan kurangnya efektivitas pelacakan. Solusinya adalah menyesuaikan parameter, yang dikombinasikan dengan indikator teknis lainnya.
Hasil pengamatan terlihat bagus, tetapi hasil disk tidak bagus. Solusinya adalah menyesuaikan parameter dan memverifikasi sepenuhnya.
Strategi ini dapat terus dioptimalkan dari beberapa dimensi:
Uji lebih banyak kombinasi parameter untuk mencari parameter optimal
Kombinasi dengan indikator teknis lainnya untuk menghindari sinyal yang salah saat tren terjadi.
Meningkatkan strategi stop loss, mengendalikan risiko kerugian, dan melindungi dana
Menambahkan modul manajemen posisi, menyesuaikan ukuran posisi sesuai dengan kondisi pasar
Adaptive Linear Regression Channel Strategy secara keseluruhan merupakan strategi kuantitatif yang cukup efektif. Dasar teoritisnya kuat, kinerja praktisnya baik, layak untuk diteliti dan dioptimalkan lebih lanjut, dan dapat menjadi komponen yang efektif dalam sistem perdagangan kuantitatif. Tetapi juga perlu untuk mengenali keterbatasan, pencegahan risiko, dan praktik yang berhati-hati.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Stealthy 7 Linear Regression Channel Strategy", overlay=true)
source = open
length = input(100, minval=1)
mult1 = input(1, minval=0.001, maxval=50)
mult2 = input(1, minval=0.001, maxval=50)
DayTrader = input(title="Range Mode", type=bool, defval=false)
//Making the first least squares line
sum_x = length * (length + 1) / 2
sum_y = 0
sum_xy = 0
xyproductsum = 0
sum_xx = 0
for i = 1 to length
sum_y := sum_y + close[i]
sum_xy := i * close[i] + sum_xy
sum_xx := i * i + sum_xx
m = (length*sum_xy - (sum_x * sum_y)) / (length * sum_xx - (sum_x * sum_x))
b = sum_y / length - (m * sum_x / length)
//Finding the first standard deviation from the line
difference = 0
for i = 1 to length
y = i * m + b
difference := pow(abs(close[i] - y),2) + difference
STDDEV = sqrt(difference / length)
//Creating trading zones
dev = mult1 * STDDEV
dev2 = mult2 * STDDEV
upper = b + dev
lower = b - dev2
middle = b
if DayTrader == false
if crossover(source, upper)
strategy.entry("RGLONG", strategy.long, oca_name="RegChannel", comment="RegLong")
else
strategy.cancel(id="RGLONG")
if crossunder(source, lower)
strategy.entry("RGSHORT", strategy.short, oca_name="RegChannel", comment="RegShort")
else
strategy.cancel(id="RGSHORT")
if crossover(source, middle) and strategy.position_size < 0
strategy.close_all()
if crossunder(source,middle) and strategy.position_size > 0
strategy.close_all()
if DayTrader == true
if crossover(source, lower)
strategy.entry("RGLONG", strategy.long, oca_name="RegChannel", comment="RegLong")
else
strategy.cancel(id="RGLONG")
if crossunder(source, upper)
strategy.entry("RGSHORT", strategy.short, oca_name="RegChannel", comment="RegShort")
else
strategy.cancel(id="RGSHORT")
plot(upper, title="UpperBand", color=purple, linewidth=1, style=line)
plot(lower, title="LowerBand", color=purple, linewidth=1, style=line)
plot(middle, title="MiddleBand", color=black, linewidth=1, style=line)