Strategi perdagangan kuantitatif berdasarkan analisis regresi linear


Tarikh penciptaan: 2024-01-26 15:48:35 Akhirnya diubah suai: 2024-01-26 15:48:35
Salin: 0 Bilangan klik: 680
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif berdasarkan analisis regresi linear

Gambaran keseluruhan

Strategi saluran regresi linear adaptif adalah strategi perdagangan kuantitatif berdasarkan analisis regresi linear. Strategi ini membentuk saluran naik turun dengan mengira persamaan regresi linear harga sekuriti dalam jangka masa tertentu, dan menggunakan saluran naik turun sebagai isyarat perdagangan, untuk perdagangan berselang-seling atau trend pemantauan.

Prinsip Strategi

Inti strategi saluran regresi linear yang beradaptasi adalah untuk mengira persamaan regresi linear harga penutupan untuk sejumlah K-root K-garis, membentuk garisan tengah yang mewakili digit harga, garisan atas yang mewakili had harga dan garisan bawah yang mewakili had harga. Proses pengiraan khusus adalah seperti berikut:

  1. Kumpul parameter input panjang yang ditentukan oleh K akar K baris variabel bebas x dan variabel bergantung y. Di sini x adalah bilangan bulat 1 hingga panjang, y adalah harga penutupan K baris yang sesuai.

  2. Hitung faktor pengembalian:

    • b = (∑y)/n - m(∑x)/n
    • m = [(n∑xy) - (∑x)(∑y)]/[(n∑x2) - (∑x)2]
  3. Hitung nilai regresi linear bagi setiap baris K dengan y’, STDDEV

  4. Garis tengah adalah persamaan kemerosotan y’ = mx + b, dan setiap laluan naik dan turun di atas dan di bawah garis tengah adalah satu selang kali ganda standard.

Dengan ketibaan K baru, perhitungan di atas akan dikemas kini, membentuk saluran penyesuaian atas dan bawah. Mengikut saluran, lebih banyak ruang kosong dilakukan di bawah persimpangan atas dan bawah, berhenti di sekitar garis tengah.

Analisis kelebihan

Strategi saluran regresi linear adaptif mempunyai kelebihan berikut berbanding strategi linear rata-rata tradisional:

  1. Model analisis regresi yang lebih saintifik dan logik mempunyai kepentingan statistik yang lebih tinggi daripada garis purata

  2. Fleksibiliti yang lebih baik, ruang laluan akan disesuaikan secara automatik dengan perubahan harga

  3. Hasil pengesanan yang lebih baik, jelas lebih baik daripada strategi garis rata pada beberapa jenis

  4. Hasil pengujian dalam talian adalah baik, prestasi yang memuaskan dalam talian

Analisis risiko

Strategi ini mempunyai risiko utama:

  1. Harga yang terlalu tinggi menyebabkan kerugian yang besar. Penyelesaian adalah dengan menetapkan parameter stop loss dan pengoptimuman.

  2. Kesalahan laluan membawa kepada kesan pengesanan yang tidak baik. Penyelesaian adalah dengan menyesuaikan parameter, digabungkan dengan petunjuk teknikal lain.

  3. Hasil pengesanan kelihatan baik, tetapi kesan cakera keras kurang baik. Penyelesaian adalah dengan menyesuaikan parameter dan mengesahkan sepenuhnya.

Arah pengoptimuman

Strategi ini boleh terus dioptimumkan dari segi berikut:

  1. Uji lebih banyak kombinasi parameter untuk mencari parameter yang optimum

  2. Kesalahan isyarat semasa pergerakan yang teruk digabungkan dengan petunjuk teknikal lain

  3. Meningkatkan strategi penangguhan kerugian, mengawal risiko kerugian, dan melindungi dana

  4. Menambah modul pengurusan kedudukan untuk menyesuaikan saiz kedudukan mengikut keadaan pasaran

ringkaskan

Strategi saluran regresi linear yang beradaptasi sendiri adalah strategi kuantitatif yang baik secara keseluruhan. Ia mempunyai asas teori yang kukuh, prestasi praktikal yang baik, layak untuk penyelidikan dan pengoptimuman lanjut, dan boleh menjadi komponen yang berkesan dalam sistem perdagangan kuantitatif. Tetapi juga perlu menyedari batasan, pencegahan risiko, dan amalan berhati-hati.

Kod sumber strategi
/*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)