Strategi penjejakan arah aliran berdasarkan purata pergerakan halaju Hall dan penapis Kalman


Tarikh penciptaan: 2023-11-01 17:10:49 Akhirnya diubah suai: 2023-11-01 17:10:49
Salin: 0 Bilangan klik: 1160
1
fokus pada
1617
Pengikut

Strategi penjejakan arah aliran berdasarkan purata pergerakan halaju Hall dan penapis Kalman

Gambaran keseluruhan

Strategi ini menggabungkan purata bergerak Hall dan gelombang Kalman untuk mengenal pasti dan mengesan trend harga, dan merupakan strategi trend-following. Ia menggunakan purata bergerak Hall dari dua tempoh yang berbeza untuk membina isyarat perdagangan, dan bekerja dengan gelombang Kalman untuk pemprosesan yang lancar, yang bertujuan untuk meningkatkan kualiti isyarat dan kestabilan strategi.

Prinsip Strategi

  • Strategi menggunakan 24 kitaran purata bergerak Hall HMA dan 24 kitaran purata bergerak triple Hall HMA3 untuk membina isyarat dagangan.

  • Apabila HMA di atas memakai HMA3, ia menghasilkan isyarat beli; apabila HMA di bawah memakai HMA3, ia menghasilkan isyarat jual.

  • Kaedah ini secara lalai mematikan penapis Kalman dan menghidupkan penapis Kalman, kemudian memproses penapis Kalman untuk hma dan hma3 untuk menapis bunyi yang berlebihan dan meningkatkan kualiti isyarat.

  • Kalman filter menghilangkan bunyi acak dari isyarat melalui langkah-langkah ramalan dan pembetulan. Setiap pengukuran menggunakan perbezaan antara ia dan ramalan sebelumnya sebagai titik pembetulan untuk meramalkan nilai pengukuran seterusnya dengan lebih tepat. Dengan mengulangi ramalan dan pembetulan, kesan bunyi boleh dikurangkan secara beransur-ansur, menjadikan isyarat menjadi lebih halus.

  • Strategi ini menggunakan gelombang Kalman untuk meningkatkan kestabilan strategi purata bergerak, menghapuskan kesan turun naik rawak, dan mengesan trend berterusan.

Kelebihan Strategik

  • Sistem purata bergerak berganda lebih baik untuk mengenal pasti trend berterusan berbanding purata bergerak tunggal.

  • Purata Bergerak Hall dikira dengan cara yang lebih berat, memberikan lebih banyak berat kepada harga terkini dan menangkap perubahan harga dengan lebih sensitif.

  • Penapis Kalman berkesan menapis bunyi rawak dalam isyarat, mengurangkan isyarat palsu, dan meningkatkan kualiti isyarat.

  • Parameter strategi boleh diselaraskan, dan panjang kitaran dan kenaikan gelombang Kalman boleh diselaraskan mengikut pasaran, menyesuaikan diri dengan keadaan yang berbeza.

  • Strategi ini menggunakan teknik binaan sinyal yang merentasi kitaran untuk mengenal pasti trend yang lebih tahan lama dan mengelakkan diri daripada tertipu oleh terlalu banyak turun naik rawak.

  • Antara muka visual menunjukkan isyarat dan keadaan trend secara intuitif untuk memudahkan operasi.

Risiko Strategik

  • Strategi purata bergerak berganda mudah menghasilkan isyarat yang salah pada titik perubahan trend dan tidak dapat menangkap perubahan dalam masa yang tepat.

  • Rata-rata bergerak mempunyai keterlambatan dan mungkin kehilangan peluang untuk menukar harga dengan cepat.

  • Tidak sesuai untuk keadaan yang bergelombang, dan harus dielakkan digunakan pada tahap kejatuhan gegaran.

  • Pengaturan parameter untuk filter Kalman mempengaruhi prestasi strategi, dan peningkatan yang berlebihan boleh menyaring isyarat yang berkesan.

  • Tetapan kitaran panjang tidak responsif, dan tetapan kitaran pendek mudah terjejas oleh bunyi bising, perlu menyesuaikan parameter mengikut pasaran.

  • Tempoh pegangan kosong tidak tetap, terdapat tahap tanpa pegangan, mengurangkan kecekapan penggunaan dana.

Arah pengoptimuman

  • Anda boleh cuba menggunakan parameter pengoptimuman dinamik purata bergerak yang menyesuaikan panjang kitaran mengikut kadar turun naik.

  • Menggunakan indikator turun naik untuk menilai keadaan pasaran, mengelakkan perdagangan di pasaran yang bergolak, dan hanya berdagang apabila trend jelas.

  • Anda boleh menetapkan strategi hentikan kerugian untuk mengelakkan kerosakan dan meningkatkan kawalan risiko.

  • Mengoptimumkan parameter penapisan Kalman, keseimbangan sensitiviti pengesanan dan tahap penapisan bunyi.

  • Kesan isyarat digabungkan dengan penunjuk lain, seperti penunjuk kuantitatif, jangkauan trend dalam pita Brin, dan sebagainya.

  • Parameter latihan boleh digunakan dengan cara pembelajaran mesin dan lain-lain untuk menjadikan strategi lebih kasar dan beradaptasi.

ringkaskan

Strategi ini dapat mengesan trend yang bertahan dan meningkatkan kualiti isyarat dengan menggunakan purata bergerak Hall ganda dan gelombang Kalman. Tetapi perlu berhati-hati dengan pengoptimuman parameter, penyesuaian kesesuaian, dan kawalan risiko untuk mendapatkan keuntungan yang stabil. Pembelajaran mesin dan analisis kuantitatif dapat meningkatkan lagi prestasi strategi. Dengan pengoptimuman berterusan, anda boleh membuat strategi perdagangan yang mengikuti trend yang stabil dan cekap.

Kod sumber strategi
/*backtest
start: 2022-10-25 00:00:00
end: 2023-10-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Hull Trend with Kahlman Strategy Backtest", shorttitle="HMA-Kahlman Trend Strat", overlay=true)

src       = input(hl2,   "Price Data")
length    = input(24,    "Lookback")
showcross = input(true,  "Show cross over/under")
gain      = input(10000, "Gain")
k         = input(true,  "Use Kahlman")

hma(_src, _length) =>
    wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
    
hma3(_src, _length) =>
    p = length/2
    wma(wma(close,p/3)*3 - wma(close,p/2) - wma(close,p),p)

kahlman(x, g) =>
    kf = 0.0
    dk = x - nz(kf[1], x)
    smooth = nz(kf[1],x)+dk*sqrt((g/10000)*2)
    velo = 0.0
    velo := nz(velo[1],0) + ((g/10000)*dk)
    kf := smooth+velo
  
a = k ? kahlman(hma(src, length), gain) : hma(src, length)
b = k ? kahlman(hma3(src, length), gain) : hma3(src, length)
c = b > a ? color.lime : color.red
crossdn = a > b and a[1] < b[1]
crossup = b > a and b[1] < a[1]

p1 = plot(a,color=c,linewidth=1,transp=75)
p2 = plot(b,color=c,linewidth=1,transp=75)
fill(p1,p2,color=c,transp=55)
plotshape(showcross and crossdn ? a : na, location=location.absolute, style=shape.labeldown, color=color.red, size=size.tiny, text="S", textcolor=color.white, transp=0, offset=-1)
plotshape(showcross and crossup ? a : na, location=location.absolute, style=shape.labelup, color=color.green, size=size.tiny, text="B", textcolor=color.white, transp=0, offset=-1)

longCondition = crossup
if (longCondition)
    strategy.entry("LE", strategy.long)

shortCondition = crossdn
if (shortCondition)
    strategy.entry("SE", strategy.short)