Strategi pelacakan tren berdasarkan rata-rata pergerakan kecepatan Hall dan filter Kalman


Tanggal Pembuatan: 2023-11-01 17:10:49 Akhirnya memodifikasi: 2023-11-01 17:10:49
menyalin: 0 Jumlah klik: 1160
1
fokus pada
1617
Pengikut

Strategi pelacakan tren berdasarkan rata-rata pergerakan kecepatan Hall dan filter Kalman

Ringkasan

Strategi ini menggabungkan Hall Moving Average dan Karman Wave untuk mengidentifikasi dan melacak tren harga, dan merupakan strategi pelacakan tren. Ini menggunakan Hall Moving Average untuk membangun sinyal perdagangan dari dua periode yang berbeda, dan bekerja dengan Karman Wave untuk pemrosesan yang halus, yang bertujuan untuk meningkatkan kualitas sinyal dan stabilitas strategi.

Prinsip Strategi

  • Strategi ini menggunakan HMA 24 periode dan HMA 3 periode untuk membangun sinyal perdagangan.

  • Ketika HMA di atas memakai HMA3, maka akan menghasilkan sinyal beli; dan bila HMA di bawah memakai HMA3, maka akan menghasilkan sinyal jual.

  • Strategi: Matikan filter Kalman secara default, setelah membuka filter Kalman, hma dan hma3 diproses dengan filter Kalman untuk menyaring kebisingan yang berlebihan dan meningkatkan kualitas sinyal.

  • Kalman filter menghilangkan suara acak dari sinyal melalui prediksi dan koreksi langkah. Setiap pengukuran antara perbedaan dengan prediksi terakhir sebagai titik koreksi, untuk lebih akurat memprediksi nilai pengukuran berikutnya. Dengan prediksi dan koreksi berulang, dampak dari suara dapat dikurangi secara bertahap, membuat sinyal menjadi lebih halus.

  • Strategi ini menggunakan gelombang Kalman untuk meningkatkan stabilitas strategi moving average, menghilangkan dampak dari fluktuasi acak, dan melacak tren berkelanjutan.

Keunggulan Strategis

  • Sistem moving average ganda lebih baik dalam mengidentifikasi tren berkelanjutan daripada moving average tunggal.

  • Hall Moving Average dihitung dengan cara berbobot, memberikan bobot yang lebih besar pada harga terkini, sehingga dapat menangkap perubahan harga dengan lebih sensitif.

  • Karman filter dapat secara efektif memfilter suara acak dari sinyal, mengurangi sinyal palsu, dan meningkatkan kualitas sinyal.

  • Parameter strategi dapat disesuaikan, dan panjang siklus dan keuntungan gelombang Kalman dapat disesuaikan dengan pasar, sesuai dengan situasi yang berbeda.

  • Strategi ini menggunakan teknik untuk membangun sinyal lintas-siklus untuk mengidentifikasi tren yang lebih permanen dan menghindari terlalu banyak fluktuasi acak.

  • Antarmuka visual secara intuitif menampilkan sinyal dan status tren, mudah untuk dioperasikan.

Risiko Strategis

  • Strategi Moving Average Ganda mudah menghasilkan sinyal yang salah pada titik-titik pergeseran tren dan tidak dapat menangkap pergeseran tersebut tepat waktu.

  • Rata-rata bergerak memiliki keterbelakangan dan kemungkinan kehilangan kesempatan untuk membalikkan harga dengan cepat.

  • Tidak cocok untuk situasi yang sangat berfluktuasi, dan harus dihindari pada tahap kejatuhan getaran.

  • Pengaturan parameter untuk filter Kalman dapat mempengaruhi kinerja strategi, dan peningkatan yang berlebihan dapat memfilter sinyal yang efektif.

  • Pengaturan siklus panjang tidak responsif, dan pengaturan siklus pendek mudah terpengaruh oleh kebisingan, perlu menyesuaikan parameter sesuai dengan pasar.

  • Banyak posisi kosong tidak tetap, ada fase tanpa posisi, mengurangi efisiensi pemanfaatan dana.

Arah optimasi

  • Anda dapat mencoba menggunakan parameter optimasi dinamis rata-rata bergerak yang beradaptasi, menyesuaikan panjang siklus sesuai dengan tingkat fluktuasi.

  • Menggunakan indikator volatilitas untuk menilai kondisi pasar, menghindari perdagangan di pasar yang bergejolak, dan hanya berdagang saat tren jelas.

  • Anda dapat mengatur strategi stop loss untuk menghindari kerugian yang lebih besar dan meningkatkan kemampuan Anda untuk mengendalikan risiko.

  • Optimalkan parameter filter Kalman, seimbang dengan sensitivitas pelacakan dan tingkat penyaringan kebisingan.

  • Efektivitas sinyal dikonfirmasi dengan kombinasi indikator lain, seperti indikator kuantitatif, Brinks untuk menilai keberlangsungan tren, dll.

  • Parameter pelatihan dapat digunakan dengan cara seperti pembelajaran mesin untuk membuat strategi lebih robust dan adaptif.

Meringkaskan

Strategi ini dapat secara efektif mengidentifikasi tren yang bertahan lama dan meningkatkan kualitas sinyal dengan melacak tren melalui rata-rata bergerak Hall ganda dan Kerman. Namun, perlu diperhatikan pengoptimalan parameter, penyesuaian adaptasi pasar, pengendalian risiko untuk mendapatkan keuntungan yang stabil. Pembelajaran mesin dan analisis kuantitatif dapat meningkatkan kinerja strategi lebih lanjut. Dengan terus mengoptimalkan, strategi perdagangan yang mengikuti tren dapat dibuat secara stabil dan efisien.

Kode 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)