Regresi linear dan strategi jangka pendek purata bergerak berganda


Tarikh penciptaan: 2024-01-26 12:33:14 Akhirnya diubah suai: 2024-01-26 12:33:14
Salin: 0 Bilangan klik: 689
1
fokus pada
1617
Pengikut

Regresi linear dan strategi jangka pendek purata bergerak berganda

Gambaran keseluruhan

Strategi ini menggabungkan indikator pengembalian linear dengan purata bergerak indeks dua, untuk melaksanakan operasi pengesanan garis pendek. Strategi ini didasarkan pada kedudukan kosong apabila harga meletup ke bawah, dan posisi kosong apabila harga meletupkan semula.

Prinsip Strategi

Strategi ini menilai penembusan harga terutamanya melalui penunjuk regresi linear. Penunjuk regresi linear adalah kenaikan dan penurunan harga berdasarkan harga tertinggi dan terendah dalam tempoh tertentu, menggunakan kaedah regresi linear. Apabila harga melintasi dari bawah atau dari bawah, kami menganggapnya sebagai isyarat perdagangan.

Selain itu, strategi ini juga memperkenalkan BAM untuk menilai trend tengah. BAM dapat bertindak balas lebih cepat terhadap perubahan harga. Apabila harga bergerak dari atas ke bawah, jika BAM pada masa ini sudah berada di atas harga, yang menunjukkan bahawa ia kini berada dalam trend menurun, maka kita membuat kedudukan kosong. Apabila harga kembali menembusi atas atau menembusi BAM, kita melonggarkan kedudukan kosong.

Secara khusus, strategi ini merangkumi beberapa perkara:

  1. Pengiraan Regresen Linear di atas dan di bawah landasan
  2. Hitung purata bergerak dua indeks
  3. Menubuhkan kedudukan kosong apabila harga bergerak di atas rata-rata pergerakan indeks dua kali lebih tinggi daripada harga
  4. Apabila harga kembali menembusi atau lebih tinggi daripada purata bergerak dua indeks, kosongkan kedudukan kosong

Analisis kelebihan

Strategi ini mempunyai beberapa kelebihan berbanding dengan purata bergerak tradisional dan lain-lain:

  1. Indeks Regresi Linear dapat menangkap perubahan harga lebih cepat dan lebih berkesan sebagai isyarat untuk membina simpanan
  2. Rata-rata bergerak dua mata lebih sensitif terhadap trend dan mengelakkan pecah palsu
  3. Gabungan kedua-dua penunjuk dan syarat boleh menapis beberapa bunyi bising dan menjadikan perdagangan lebih stabil

Analisis risiko

Strategi ini juga mempunyai risiko yang perlu diperhatikan:

  1. Indikator Regresen Linear sensitif kepada parameter, dan kitaran yang berbeza mungkin menghasilkan hasil yang berbeza
  2. Rata-rata Bergerak Dua Indeks Mungkin Berpaling, Kesilapan Pertimbangan
  3. Strategi penembusan boleh meningkatkan risiko tergelincir
  4. Keadaan yang tidak menentu boleh menyebabkan penarikan saham yang kerap berlaku.

Untuk risiko di atas, kita boleh menangani dengan kaedah seperti pengoptimuman parameter, hentian ketat, dan pelepasan lebur yang sesuai.

Arah pengoptimuman

Strategi ini juga boleh dioptimumkan dalam beberapa aspek:

  1. Mengoptimumkan kitaran regresi linear dan kitaran purata bergerak dua indeks untuk mencari kombinasi parameter terbaik
  2. Menambah penghakiman kelembapan harga untuk mengelakkan penembusan harga yang kecil menyebabkan isyarat yang salah
  3. Syarat-syarat tambahan seperti peningkatan jumlah transaksi untuk memastikan keberkesanan penembusan
  4. Tetapkan tahap stop loss untuk mengurangkan kerugian tunggal
  5. Parameter penyesuaian untuk varieti tertentu

ringkaskan

Strategi ini menggunakan indikator regresi linear dan purata bergerak indeks dua, yang mempunyai kelebihan dalam teori dan amalan. Dengan terus mengoptimumkan penyesuaian, anda dapat meningkatkan kestabilan dan keberkesanan strategi.

Kod sumber strategi
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy('LR&SSL_Short', overlay=true)
startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end   = timestamp(9999,1,1,0,0)
_testPeriod() => true

len = input(title="Period", defval=89)
smaHigh = linreg(high, len, 0)
smaLow = linreg(low, len, -1)
Hlv = 0.0
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh

plot(sslDown, linewidth=2, color=color.red)
plot(sslUp, linewidth=2, color=color.lime)



length = input(200, title="DEMA") 
d1 = ema(close, length)                                               
d2 = 2 * d1 - ema(d1, length)                                         
trendColour = d2 > d1 ? #AAFFAA : #FFAAAA 
dema=sma(d2,length) 

turnGreen = d2 > d1 and d2[1] <= d1[1]  
turnRed   = d2 <= d1 and d2[1] > d1[1]  

up =turnGreen 
down=turnRed 
  
plotshape(down, title="down", style=shape.triangledown,location=location.abovebar, color=color.red, transp=0, size=size.small) 
plotshape(up,  title="up", style=shape.triangleup,location=location.belowbar, color=color.green, transp=0, size=size.small) 
plot(dema, color = trendColour,linewidth=3 ,transp = 0)
bgcolor(close > dema ? color.green : color.red)

strategy.entry("short", strategy.short, when= crossunder(sslUp, sslDown) and dema > close and _testPeriod())
strategy.close("short", when = crossover(sslUp, sslDown) or crossover(close, dema))