Dalam dunia trading, sering kali kita berhadapan dengan keputusan yang sulit, terutama dalam menentukan kapan harus masuk atau keluar dari pasar. Salah satu pendekatan yang bisa digunakan adalah dengan menerapkan K-Nearest Neighbors (KNN). Metode ini menggunakan data historis untuk membantu kita dalam membuat keputusan trading yang lebih terinformasi.
KNN adalah algoritma yang berbasis pada pengelompokan data. Dengan menggunakan fungsi Euclidean_Metric, kita bisa menentukan apakah suatu vektor input termasuk ke dalam kelompok tertentu berdasarkan situasi pasar atau hasil trading sebelumnya. Misalnya, jika sebuah trade ditutup dengan hasil positif, maka itu akan masuk ke dalam kelas 1. Sebaliknya, jika hasilnya negatif, masuk ke kelas 0.
Proses pencarian tetangga terdekat dilakukan dengan menghitung jarak Euclidean antar vektor. Setelah itu, kita menghitung berapa banyak dari k vektor tersebut yang termasuk kelas 1. Kemudian, nilai ini dibagi dengan total jumlah tetangga, yang memberikan kita probabilitas bahwa vektor tersebut termasuk dalam kelas 1. Namun, perlu diingat bahwa akurasi klasifikasi ini bisa dipengaruhi oleh pemilihan koordinat vektor yang kurang tepat.
Saya ingin membagikan beberapa tantangan yang saya temui dalam menggunakan metode ini:
- 1. Mencari data statis yang menggambarkan situasi pasar dengan akurasi yang dibutuhkan.
- 2. Volume operasi matematis yang besar, sehingga proses komputasi memakan waktu cukup lama.
Meskipun ada tantangan, keuntungan dari menggunakan KNN adalah kemampuannya untuk memformalkan kondisi yang mungkin tidak terlihat oleh trader, tetapi dapat dirasakan secara intuitif. Dengan kata lain, KNN bisa membantu mengenali pola-pola yang berpotensi menguntungkan.
Sekarang, mari kita bahas implementasinya lebih lanjut. Ada beberapa parameter yang perlu diperhatikan:
- Base - true jika ingin menulis file dengan basis vektor, false jika ingin melakukan trading dengan klasifikasi.
- buy_threshold = 0.6, threshold untuk semua posisi Buy.
- sell_threshold = 0.6, threshold untuk posisi Sell.
- inverse_position_open = true; jika probabilitas trade menguntungkan sangat kecil, kita bisa masuk pasar dengan posisi terbalik.
- invers_buy_threshold = 0.3; threshold saat probabilitas posisi Buy menguntungkan lebih kecil, maka buka posisi Sell.
- fast = 12; parameter untuk MACD.
- slow = 34;
- tp = 40; Take Profit.
- sl = 30; Stop Loss.
- close_orders = false; hanya tutup order dengan sinyal berlawanan jika order tersebut menguntungkan.
Penggunaan: Pertama, set Base ke true, atur sl = tp dan jalankan pada data historis (hanya satu kali!). File vektor akan ditulis. Selanjutnya, set Base ke false dan disarankan untuk mengoptimalkan threshold berdasarkan laporan pertama (tanpa klasifikasi).
Berikut adalah contoh visualisasi sebelum dan setelah optimasi threshold:

Setelah optimasi threshold.


