Strategi Mengikuti Tren Rata-rata Pergerakan Adaptif Kanfman


Tanggal Pembuatan: 2023-12-13 17:25:33 Akhirnya memodifikasi: 2023-12-13 17:25:33
menyalin: 0 Jumlah klik: 728
1
fokus pada
1212
Pengikut

Strategi Mengikuti Tren Rata-rata Pergerakan Adaptif Kanfman

Ringkasan

Strategi ini menggunakan Kanfman Adaptive Moving Average (KAMA) untuk menilai arah tren, untuk menangkap tren garis tengah-panjang. Berlaku lebih banyak ketika KAMA naik, dan kosong ketika KAMA turun. Strategi ini menggabungkan fitur pelacakan tren dari rata-rata bergerak dan fitur penyesuaian dinamis dari Kanfman Adaptive Average untuk meningkatkan kualitas sinyal perdagangan.

Prinsip Strategi

Indikator utama dari strategi ini adalah KAMA (Kampfmann Adaptive Moving Average). KAMA secara dinamis menyesuaikan faktor beratnya sendiri sesuai dengan besarnya fluktuasi pasar, sehingga meningkatkan sensitivitas kurva. Secara khusus, ketika pasar berfluktuasi lebih besar, kurva KAMA menjadi lebih halus; ketika pasar berfluktuasi lebih kecil, kurva KAMA menjadi lebih sensitif.

Strategi pertama menghitung nilai KAMA. Kemudian menilai kondisi KAMA garis kosong: ketika harga close di atas melewati garis KAMA menghasilkan sinyal beli; ketika harga close di bawah melewati garis KAMA menghasilkan sinyal jual. Berdasarkan sinyal perdagangan ini, buka posisi dan buat lebih banyak posisi kosong.

Analisis Keunggulan

Keuntungan terbesar dari strategi ini adalah bahwa indikator KAMA digunakan untuk menilai tren. Indikator KAMA sendiri memiliki kemampuan pelacakan tren yang sangat kuat, yang dapat secara dinamis menyesuaikan parameter untuk menyesuaikan dengan kondisi pasar, sehingga menghasilkan sinyal perdagangan yang lebih andal. Indikator KAMA lebih baik dalam mengidentifikasi tren dan mengurangi sinyal palsu dibandingkan dengan rata-rata bergerak sederhana dan rata-rata bergerak indeks.

Selain itu, strategi ini hanya menggunakan keadaan kosong KAMA untuk menilai arah tren. Tidak ada kondisi penyaringan tambahan yang diatur, yang menyederhanakan logika strategi dan juga membuat parameter lebih sedikit, mengurangi risiko overoptimisasi, yang menguntungkan stabilitas parameter dan adaptasi lintas pasar.

Analisis risiko

Risiko utama dari strategi ini adalah bahwa KAMA itu sendiri merupakan indikator yang tertinggal, dan tren pasar mungkin telah berbalik saat sinyal perdagangan dibuat. Hal ini dapat menyebabkan risiko stop loss. Selain itu, ada juga situasi getaran jangka pendek di dalam kurva KAMA, yang dapat menghasilkan beberapa sinyal kesalahan yang sering terjadi.

Untuk mengurangi risiko, Anda dapat mempertimbangkan untuk mengkonfirmasi sinyal perdagangan dalam kombinasi dengan indikator lain, seperti indikator volatilitas, indikator volume transaksi, dll. Anda juga dapat menyesuaikan parameter dengan tepat, Identification membuat kurva KAMA lebih halus.

Arah optimasi

Strategi ini masih memiliki banyak ruang untuk dioptimalkan, terutama dari beberapa aspek:

  1. Filter sinyal dengan indikator lain, seperti MACD, indikator getaran, dan lain-lain, untuk meningkatkan kualitas sinyal

  2. Meningkatkan strategi stop loss, menggunakan stop loss bergerak atau stop loss saldo untuk mengendalikan kerugian tunggal

  3. Optimalkan parameter agar KAMA lebih efektif menangkap tren

  4. Menambahkan analisis periode waktu yang lebih tinggi untuk menentukan arah tren besar

  5. Mengoptimalkan parameter secara otomatis menggunakan metode pembelajaran mesin untuk menyesuaikan parameter dengan varietas yang berbeda

Meringkaskan

Strategi ini secara keseluruhan memiliki ide yang jelas, menentukan arah tren melalui indikator KAMA, memiliki kemampuan untuk melacak tren yang kuat, logika yang sederhana, parameter yang lebih sedikit, dll. Tetapi ada juga risiko terlambat mengidentifikasi perubahan tren. Strategi ini dapat dioptimalkan dengan berbagai cara, sehingga lebih efektif dan lebih mudah beradaptasi.

Kode Sumber Strategi
/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=3
strategy(title = "Noro's KAMA Strategy", shorttitle="KAMA str", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
length = input(3, minval = 1) 
fast = input(2, minval = 1)
slow = input(30, minval = 1)
src = input(title = "Source",  defval = close)
type = input(defval = "Trend", options = ["Trend", "Crossing"], title = "Type")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//KAMA
volatility = sum(abs(src-src[1]), length)
change = abs(src[1]-src[length])
er = iff(volatility != 0, change/volatility, 0)
fastSC = 2/(fast+1)
slowSC = 2/(slow+1)
sc = pow((er*(fastSC-slowSC))+slowSC, 2)
bid = hl2
kama = 0.0
kama := nz(kama[1])+(sc*(bid-nz(kama[1])))
plot(kama, color = black, title = "KAMA", trackprice = false, style = line, linewidth = 3)

//Signals
up = false
dn = false
up := (type == "Crossing" and kama > kama[1]) or (type == "Trend" and close > kama)
dn := (type == "Crossing" and kama < kama[1]) or (type == "Trend" and close < kama)

//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up
    strategy.entry("L", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if dn
    strategy.entry("S", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))