avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada Pesan pribadi
4
fokus pada
1271
Pengikut

Sistem perdagangan rata-rata pergerakan adaptif mata uang digital dan analisis algoritma KAMA - berdasarkan perangkat lunak perdagangan kuantitatif penemu

Dibuat di: 2019-07-06 16:21:15, diperbarui pada: 2023-10-24 21:42:44
comments   1
hits   5792

[TOC]

Sistem perdagangan rata-rata pergerakan adaptif mata uang digital dan analisis algoritma KAMA - berdasarkan perangkat lunak perdagangan kuantitatif penemu

Pengantar Adaptive Moving Average KAMA

Seperti namanya, rata-rata bergerak adaptif (KAMA) termasuk dalam kategori rata-rata bergerak, tetapi tidak seperti rata-rata bergerak tradisional, ia sangat “pintar”. Kita tahu bahwa moving average biasa memiliki banyak kekurangan. Misalnya, moving average jangka pendek mendekati tren harga dan sangat sensitif, tetapi mudah menghasilkan sinyal palsu; moving average jangka panjang sangat akurat dalam menilai tren, tetapi sering kali butuh waktu beberapa saat bagi pasar untuk bereaksi.

“Kecerdasan” KAMA terletak pada kemampuannya untuk secara otomatis menyesuaikan sensitivitasnya berdasarkan kondisi pasar saat ini, yaitu volatilitas. Manifestasinya adalah: di pasar yang fluktuatif, perubahan KAMA melambat secara signifikan; ketika tren datang, ia bereaksi dengan cepat. Dalam perdagangan sesungguhnya, keuntungannya adalah dapat mengurangi biaya transaksi yang disebabkan oleh “kekacauan harian” dan memungkinkan Anda untuk ikut serta tepat waktu ketika pasar mulai bergerak.

KAMA dalam grafik

Sistem perdagangan rata-rata pergerakan adaptif mata uang digital dan analisis algoritma KAMA - berdasarkan perangkat lunak perdagangan kuantitatif penemu

Metode perhitungan KAMA

  • Arah (DIR) = Harga penutupan - Harga penutupan n hari lalu
  • Volatilitas (VIR) = jumlah(abs(harga penutupan - harga penutupan hari perdagangan sebelumnya), n)
  • Efisiensi (ER) = Arah / Volatilitas
  • Cepat = 2 / (n1 + 1)
  • Lambat = 2 / (n2 + 1)
  • Kelancaran (CS) = Efisiensi * (Cepat - Lambat) + Lambat
  • Koefisien (CQ) = Smoothing * Smoothing
  • KAMA = Exponentially Weighted Average (Rata-rata Pergerakan Dinamis (harga penutupan, koefisien), 2)

Di antaranya, n, n1, dan n2 semuanya adalah parameter periode. Secara default, n adalah 10 periode, n1 adalah 2 periode jangka pendek, dan n2 adalah 30 periode jangka panjang. Ini juga merupakan seperangkat parameter yang diakui oleh Perry Kaufman, penulis KAMA. n digunakan untuk efisiensi perhitungan arah dan volatilitas. n1 dan n2 adalah periode rata-rata bergerak cepat dan rata-rata bergerak lambat. Secara teori, semakin besar parameter n1, semakin halus KAMA.

Metode perhitungan KAMA adalah: pertama menghitung arah (DIR) dan volatilitas (VIR), lalu menghitung efisiensi berdasarkan rasio keduanya. Efisiensi (ER) adalah ukuran tingkat perubahan harga dan dihitung secara sederhana: Arah / Volatilitas. Hasil perhitungannya berada di antara 0 dan 1. Bila nilai ER mendekati 0, berarti pasar dalam kondisi volatil. Bila nilai ER mendekati 1, berarti pasar dalam kondisi tren.

Setelah efisiensi (ER) dihitung, rata-rata pergerakan cepat dan rata-rata pergerakan lambat dapat digabungkan untuk mendapatkan konstanta penghalusan (CS): efisiensi * (cepat - lambat) + lambat. CS merupakan representasi kecepatan pergerakan tren. Berdasarkan rumus perhitungan CS, kita dapat menemukan bahwa perubahan CS selalu proporsional terhadap perubahan ER.

Koefisien (CQ) kemudian dihitung berdasarkan daya penghalusan, dengan tujuan membuat parameter siklus lambat memainkan peran lebih penting dalam perhitungan, yang juga merupakan pendekatan yang lebih konservatif. Kelancaran akhir KAMA ditentukan oleh koefisien (CQ). Dalam perhitungan KAMA, koefisien (CQ) menentukan parameter periode dari dua pemulusan rata-rata pergerakan terakhir, yaitu: rata-rata tertimbang eksponensial (rata-rata pergerakan dinamis (harga penutupan, koefisien), 2).

Cara menggunakan KAMA

Meskipun metode perhitungan KAMA sangat rumit, penggunaannya mirip dengan moving average biasa. Dalam aplikasi praktis, KAMA tidak hanya dapat menentukan tren pasar, tetapi juga dapat digunakan untuk menentukan titik beli dan jual yang tepat. Karena sangat “cerdas”, ia dapat digunakan dalam banyak strategi perdagangan dan bahkan patut dicoba dalam mata uang digital.

  • Ketika harga lebih besar dari KAMA dan KAMA mengarah ke atas, buka posisi panjang.
  • Ketika harga kurang dari KAMA, dan KAMA bergerak ke bawah, posisi short dibuka.
  • Ketika harga kurang dari KAMA, atau KAMA bergerak turun, posisi panjang ditutup.
  • Ketika harga lebih besar dari KAMA, atau KAMA bergerak ke atas, posisi short ditutup.

Membangun strategi perdagangan berdasarkan KAMA

Langkah 1: Hitung KAMA Melihat! Di sudut kiri atas, pilih bahasa pemrograman:My语言. Sudah ada KAMA yang siap pakai di pustaka talib, tetapi hanya memiliki satu parameter eksternal (n) periode, dan n1 dan n2 secara default bernilai 2 dan 30. Strategi dalam artikel ini hanya sebagai referensi. Teman-teman yang memiliki keterampilan praktis juga dapat menuliskan strategi mereka sendiri. Kemudian bahasa saya juga dapat langsung dicampur dengan bahasa JavaScript. Perhatikan kode berikut:

%%  // My语言内JavaScript的标准格式
scope.KAMA = function() {
    var r = _C(exchange.GetRecords);  // 获取K线数组
    if (r.length > 140) {  // 过滤K线长度
        var kama = talib.KAMA(r, 140);  // 调用talib库计算KAMA
        return kama[kama.length - 2];  // 返回KAMA的具体数值
    }
    return;
}
%%  // My语言内JavaScript的标准格式

Langkah 2: Hitung kondisi perdagangan dan tempatkan pesanan

%%
scope.KAMA = function() {
    var r = _C(exchange.GetRecords);
    if (r.length > 140) {
        var kama = talib.KAMA(r, 140);
        return kama[kama.length - 2];
    }
    return;
}
%%

K^^KAMA;  // 把KAMA打印到图表上
A:CLOSE;  // 把收盘价打印到图表上

K > REF(K, 1) && CLOSE > K,BK;  // 开多
K < REF(K, 1) && CLOSE < K,SK;  // 开空
K < REF(K, 1) || CLOSE < K,SP;  // 平多
K > REF(K, 1) || CLOSE > K,BP;  // 平空

Langkah 3: Tetapkan metode penyaringan sinyal strategi

%%
scope.KAMA = function() {
    var r = _C(exchange.GetRecords);
    if (r.length > 140) {
        var kama = talib.KAMA(r, 140);
        return kama[kama.length - 2];
    }
    return;
}
%%

K^^KAMA;
A:CLOSE;

K > REF(K, 1) && CLOSE > K,BK;
K < REF(K, 1) && CLOSE < K,SK;
K < REF(K, 1) || CLOSE < K,SP;
K > REF(K, 1) || CLOSE > K,BP;

AUTOFILTER;  // 启用一开一平信号过滤机制

Pengujian Ulang Strategi

Agar lebih mendekati lingkungan perdagangan yang sebenarnya, kami menggunakan slippage 2 lompatan untuk membuka dan menutup posisi guna melakukan stress testing selama backtesting. Lingkungan pengujiannya adalah sebagai berikut:

  • Pertukaran: BitMEX
  • Jenis pasar: XBTUSD
  • Instrumen perdagangan: XBTUSD
  • Waktu: 1 Juli 2017 ~ 1 Juli 2019
  • Siklus K-line: setiap hari
  • Slippage: 2 lompatan untuk membuka dan menutup posisi

Lingkungan pengujian Sistem perdagangan rata-rata pergerakan adaptif mata uang digital dan analisis algoritma KAMA - berdasarkan perangkat lunak perdagangan kuantitatif penemu Rincian Pendapatan Sistem perdagangan rata-rata pergerakan adaptif mata uang digital dan analisis algoritma KAMA - berdasarkan perangkat lunak perdagangan kuantitatif penemu Kurva pendanaan Sistem perdagangan rata-rata pergerakan adaptif mata uang digital dan analisis algoritma KAMA - berdasarkan perangkat lunak perdagangan kuantitatif penemu

Dilihat dari hasil backtest di atas, strategi KAMA yang sederhana ini benar-benar sesuai dengan harapan. Bahkan di pasar mata uang digital yang sangat bearish pada tahun 2018, kurva modal tidak menunjukkan retracement yang besar, dan pasar berada dalam periode volatilitas jangka panjang. Membuka dan menutup posisi bolak-balik akan menyebabkan kerugian yang tidak perlu. Pada saat yang sama, kinerjanya juga baik pada pasar bullish tahun 2019.

Kode sumber strategi

Klik untuk menyalin kode sumber strategi lengkap, berdasarkan Bahasa saya, cocok untuk komoditas berjangka dan mata uang digital

Meringkaskan

Strategi yang sangat baik yang dapat dipraktikkan harus disempurnakan dan diasah berulang kali. Strategi dalam artikel ini masih memiliki banyak ruang untuk pengoptimalan dan peningkatan, seperti menambahkan kondisi penyaringan tertentu, pengambilan untung aktif, dan penghentian kondisi kehilangan, dll. Sebagai jenis rata-rata bergerak, KAMA mewarisi kelebihan dan kekurangan rata-rata bergerak biasa dan sekaligus menyempurnakannya. Di pasar yang tidak dapat diprediksi, bahkan jika “parameter terbaik” sudah ditetapkan, sulit untuk beradaptasi dengan kondisi pasar di masa mendatang. Oleh karena itu, metode mengikuti tren dan berubah mengikuti kondisi pasar ini mungkin merupakan pilihan yang lebih baik.