Strategi pelacakan tren berdasarkan filter Kalman


Tanggal Pembuatan: 2024-01-25 14:12:26 Akhirnya memodifikasi: 2024-01-25 14:12:26
menyalin: 0 Jumlah klik: 1091
1
fokus pada
1617
Pengikut

Strategi pelacakan tren berdasarkan filter Kalman

Ringkasan

Inti dari strategi ini adalah menggunakan teknik Kerman Wave untuk memperlancar garis rata-rata harga, dengan menghitung sudut pemotongan garis rata-rata setelah perlancaran, menghasilkan sinyal perdagangan ketika sudut pemotongan melampaui batas tertentu dalam periode yang ditentukan. Strategi ini bertujuan untuk melacak tren garis tengah dan panjang, mengurangi dampak kebisingan melalui teknik Kerman Wave, sehingga mendapatkan sinyal tren yang lebih jelas dan lebih andal.

Prinsip Strategi

Logika inti dari strategi ini terdiri dari beberapa langkah:

  1. Menghitung rata-rata bergerak sederhana (SMA) dari harga 1 menit sebagai rata-rata awal;

  2. Karman filter pada garis rata asli, output garis rata rata setelah halus;

  3. Menghitung sudut pemotong garis rata-rata setelah diluruskan;

  4. Definisi periode parameter, jumlah sudut garis potong dalam periode statistik;

  5. Sinyal beli dihasilkan ketika jumlah sudut garis geser dalam siklus lebih besar dari 360 derajat; Sinyal jual dihasilkan ketika kurang dari 360 derajat.

Dengan desain seperti itu, ketika harga muncul tren ke atas atau ke bawah, sudut-sudut garis rata akan berakumulasi secara bertahap, dan menghasilkan sinyal perdagangan ketika terakumulasi sampai batas tertentu, sehingga dapat secara efektif melacak tren garis tengah-panjang.

Di antaranya, filter Kallmann adalah kunci dari strategi ini. filter Kallmann adalah algoritma berulang yang, selain memprediksi keadaan saat ini, juga memprediksi proses kebisingan dan mengukur nilai kebisingan, dan menggunakan nilai kebisingan ini untuk menyaring prediksi keadaan sebelumnya, sehingga mendapatkan estimasi keadaan yang lebih akurat dan dapat diandalkan.

Dalam strategi ini, harga SMA dapat dilihat sebagai ukuran dari status, yang dipengaruhi oleh kebisingan pasar, filter Kalman akan secara berurutan memperkirakan tren harga yang sebenarnya, mengurangi dampak kebisingan secara signifikan, membuat operasi rata-rata berikutnya lebih dapat diandalkan, sehingga menghasilkan sinyal perdagangan yang lebih stabil dan akurat.

Keunggulan Strategis

Keuntungan terbesar dari strategi ini dibandingkan dengan strategi indikator seperti Simple Moving Average adalah mengurangi efek kebisingan dengan menggunakan filter Karman, sehingga sinyal perdagangan lebih jelas dan lebih dapat diandalkan. Keuntungan spesifiknya terutama tercermin dalam beberapa aspek berikut:

  1. Mengurangi sinyal palsu. Dengan mengevaluasi dan menghilangkan kebisingan secara adaptif, filter Karman efektif menyaring sejumlah besar sinyal palsu yang disebabkan oleh fluktuasi acak, sehingga sinyal perdagangan yang dihasilkan lebih dapat diandalkan.

  2. Efek pelacakan yang lebih baik. Bentuk garis rata yang lebih halus dapat lebih mencerminkan tren garis tengah dan panjang harga, sehingga menghasilkan efek pelacakan tren yang lebih baik.

  3. Pengaturan parameter yang dapat disesuaikan Fleksibel. Parameter yang dapat disesuaikan termasuk panjang garis rata-rata, parameter Gelombang Kalman dan periode statistik, dapat beradaptasi secara fleksibel dengan lingkungan pasar yang berbeda.

  4. Risiko terkontrol. Strategi ini lebih berfokus pada tren garis tengah panjang daripada fluktuasi jangka pendek, dan menghasilkan keseimbangan risiko-pengembalian yang lebih baik.

  5. Implementasi sederhana, mudah diperluas. Algoritma inti dari strategi ini relatif ringkas, mudah diimplementasikan dan diuji, juga memberikan ruang untuk diperluas, seperti parameter optimasi otomatis algoritma pembelajaran mesin yang dapat diperkenalkan.

Risiko Strategis

Strategi ini juga memiliki risiko utama sebagai berikut:

  1. Risiko reversal trend. Strategi ini berfokus pada pelacakan tren, yang menghasilkan kerugian besar jika terjadi reversal tren yang drastis.

  2. Risiko pengoptimalan parameter. Pengaturan parameter yang tidak tepat dapat menyebabkan frekuensi transaksi atau sinyal yang terlambat, yang memerlukan pengoptimalan tes yang cukup. Pengoptimalan otomatis dapat dikombinasikan dengan algoritma pembelajaran mesin.

  3. Risiko over-optimisasi. Over-optimisasi pada data historis juga dapat menyebabkan parameter gagal, perlu untuk mengontrol validitas di luar sampel.

  4. Implementasi meningkatkan kompleksitas risiko. Pengenalan Kalman Wave dan algoritma sudut potong akan meningkatkan kompleksitas kode dan perlu memastikan implementasi yang benar.

Arah optimasi strategi

Dengan mempertimbangkan faktor-faktor risiko di atas, strategi ini dapat dioptimalkan untuk:

  1. Memperkenalkan Stop Loss dan Manajemen Posisi. Dengan Stop Loss yang tepat, risiko kerugian tunggal dapat dikendalikan secara efektif. Manajemen Posisi Dinamis juga dapat menyesuaikan risiko perlindungan posisi sesuai dengan kondisi pasar.

  2. Optimasi parameter otomatis. Optimasi parameter otomatis dapat dicapai melalui algoritma optimasi pembelajaran mesin, menghindari risiko overoptimasi.

  3. Terintegrasi indikator lain. Anda dapat mengintegrasikan beberapa indikator lain ke dalam strategi, membentuk portofolio indikator, untuk meningkatkan stabilitas strategi.

  4. Peningkatan penilaian efisiensi. Memperkenalkan lebih banyak indikator penyesuaian risiko untuk menilai efektivitas dan stabilitas strategi, sehingga menghasilkan kesimpulan yang lebih komprehensif dan akurat.

  5. Perluasan beberapa varietas. Jika hasilnya bagus, pertimbangkan untuk memperluas ke lebih banyak varietas, mengumpulkan lebih banyak sampel dalam jangka menengah dan panjang, dan mengoptimalkan parameter lintas varietas.

Meringkaskan

Strategi ini secara keseluruhan merupakan strategi pelacakan tren yang lebih sederhana dan praktis. Dibandingkan dengan strategi moving average tradisional, pengenalan algoritma Kalman Wave adalah inovasi terbesarnya, dan juga memungkinkan strategi untuk menghasilkan sinyal perdagangan yang lebih jelas dan lebih andal. Dengan pengoptimalan lebih lanjut, strategi ini diharapkan untuk mencapai efek yang lebih baik.

Kode Sumber Strategi
/*backtest
start: 2024-01-17 00:00:00
end: 2024-01-24 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//@library=math
strategy("策略360°(测试)", overlay=true)

// 定义1分钟均线
ma1 = request.security(syminfo.tickerid, "1", ta.sma(close, 1)) // 在这里使用了 math.sma() 函数
//plot(ma1, color=color.yellow, title="原始均线")

// 定义卡尔曼滤波函数,参考了[1](https://www.tradingview.com/pine-script-docs/en/v5/language/Methods.html)和[2](https://www.tradingview.com/pine-script-docs/en/v5/language/Operators.html)的代码
kalman(x, g) => 
    kf = 0.0 
    dk = x - nz(kf[1], x) // 在这里使用了 nz() 函数
    smooth = nz(kf[1], x) + dk * math.sqrt(g * 2) // 在这里使用了 math.sqrt() 函数
    velo = 0.0 
    velo := nz(velo[1], 0) + g * dk // 在这里使用了 nz() 函数
    kf := smooth + velo 
    kf 

// 定义卡尔曼滤波后的均线
ma2 = kalman(ma1, 0.01) 
plot(ma2, color=color.blue, title="卡尔曼滤波后的均线")

// 定义切线角
angle = math.todegrees(math.atan(ma2 - ma2[1])) // 在这里使用了 math.degrees() 和 math.atan() 函数

// 定义累加的切线角
cum_angle = 0.0
cum_angle := nz(cum_angle[1], 0) + angle // 在这里使用了 nz() 函数

// 定义30分钟周期
period = 30 // 您可以根据您的需要修改这个参数

// 定义周期内的切线角总和
sum_angle = 0.0
sum_angle := math.sum(angle, period) // 在这里使用了 math.sum() 函数,把周期内的切线角总和改成简单地把 5 个切线角相加

// 定义买入和卖出条件
buy = sum_angle > 360// 在这里使用了 math.radians() 函数
sell = sum_angle < -360

// 执行买入和卖出操作
strategy.entry("Long", strategy.long, when=buy)
strategy.close("Short", when=buy)
strategy.entry("Short", strategy.short, when=sell)
strategy.close("Long", when=sell)

// 绘制曲线图
plot(sum_angle, color=color.green, title="周期内的切线角总和")
plot(angle, color=color.red, title="切线角") // 这是我为您添加的代码,用于显示实时计算的切线角