Jaringan saraf dan perdagangan. Implementasi praktis

Mode perdagangan mengalami pasang surut bersama dengan nilai tukar Bitcoin. Sekarang topik ini berada pada titik rendah setelah pertumbuhan luar biasa pada tahun 2018. Banyak selama waktu ini berhasil berkenalan dengan pertukaran crypto - mereka menggali topik, belajar, berdagang, kehilangan uang, dan bahkan kadang-kadang menghasilkan. Akibatnya, mode berlalu, tetapi pengalaman tetap, meskipun negatif. Kata-kata "panjang", "pendek", "menyebar", "penyelam" dapat didengar dari mereka yang tentu saja tidak Anda harapkan. Tapi tidak hanya perdagangan "tangan" yang menarik perhatian, ada juga bot perdagangan. Apa yang kita miliki di bidang ini, apa pengalaman 2-3 tahun terakhir bicarakan?

Sayangnya, tidak ada yang baik di area ini juga. Ada banyak alat untuk menulis bot perdagangan, tetapi tidak ada strategi yang menguntungkan secara stabil. Dalam kasus terbaik, solusi kerja perlu terus-menerus dilayani oleh sepasang pedagang-programmer yang mengubah pengaturan untuk pasar saat ini. Hasil standar setelah menghubungkan bot sepenuhnya otonom ke deposit adalah untuk menguras deposit.

Harapan terakhir tetap ada - jaringan saraf. Ini tentunya harus terjadi, karena jaringan saraf belajar sebagai pribadi dan menyesuaikan diri dengan pasar. Bagaimana kabarmu di area ini? Yah ... Anda sudah menebaknya. Semuanya buruk, ada banyak pembicaraan, tetapi tidak ada solusi yang berfungsi. Semuanya sangat buruk! Contoh nyata dari ini adalah toko aplikasi komunitas MQL5. Di belakang merek MQL5 adalah platform perdagangan profesional - MetaTrader5 plus komunitas besar pedagang dan pemrogram. Jadi di toko ini ada bagian untuk solusi berdasarkan jaringan saraf, ada banyak bot, tetapi tidak ada yang nyata. Menambahkan bot menggunakan jaringan saraf dilarang oleh aturan. Sulit dipercaya, tapi itu benar. Larangan menghubungkan API eksternal mengecualikan kemungkinan menggunakan jaringan saraf, dan alat yang dibangun ke dalam MQL5 tidak berfungsi dalam praktiknya. Saya membahas masalah ini dengan dukungan teknis MQL5,Saya tidak menerima jawaban yang jelas. Akibatnya, tidak ada yang benar-benar berhasil di pasaran, solusi dari seri “teach yourself” yang diletakkan di github tidak diperhitungkan.

Oke, saya selesai dengan kata pengantar, saya mulai berbisnis. Saya berhasil melatih jaringan saraf, ada hasil yang layak di pasar nyata. Lebih jauh tanpa merinci, saya akan menjelaskan bagaimana ini dilakukan.

Kesalahan pertama dan utama dari semua orang yang mencoba mengajarkan jaringan saraf untuk berdagang adalah pemikiran perdagangan tentang pasar. Biasanya, seorang trader mencoba menerapkan solusi berdasarkan jaringan saraf bersama dengan seorang programmer yang sebelumnya menulis bot. Algoritma bot perdagangan memecahkan masalah menemukan titik masuk yang benar ke posisi dan menentukan "ambil" dan "berhenti". Jika Anda memiliki tugas ini dalam pikiran ketika merancang jaringan saraf, maka tidak ada yang berhasil. Anda dapat tanpa henti memilah opsi yang cerdik untuk memasukkan data, menerapkan atau tidak memberikan indikator, mencoba berbagai jenis jaringan saraf, mengganti kruk sebagai pelatihan hanya di area tertentu, atau melatih hanya menunjukkan pola yang diketahui. Tidak akan bekerja.

Dengan jaringan saraf, Anda harus terlihat seperti anak kecil, melihat dunia melalui matanya dan mulai dengan tugas-tugas sederhana. Pertanyaan paling sederhana yang dapat ditanyakan adalah "di mana harga akan melewati X candle, naik atau turun?". Tidak peduli berapa banyak perubahan harga dan tidak masalah bahwa jawabannya tidak dapat diubah menjadi strategi perdagangan. Kami lupa tentang perdagangan, sekarang tugas utama adalah untuk mendidik jaringan setidaknya sesuatu, dapatkan jawaban yang tepat.

Saya memiliki tugas awal ini diselesaikan setelah 100.500 pilihan input. Digunakan TensoFlow plus Keras, jaringan Sequental Dense. Dataset input untuk 200-300 ribu contoh, input vektor fitur 250-350. Bentuk jawaban mengikuti dari jaringan pertanyaan yang diajukan - klasifikasi biner "atas" atau "turun". Input disiapkan oleh bot di MQL5. Bot berjalan melalui cerita membentuk file csv biasa, setiap baris adalah vektor. Di akhir setiap vektor, jawaban yang benar adalah 1: 0 jika naik, 0: 1 jika turun.

Berikut adalah beberapa saran untuk mereka yang mencoba:

  1. Dia belajar dengan baik dalam perkiraan dari 15 menit hingga 60 menit. Pada periode yang lebih pendek, kekacauan pergerakan harga tumbuh, pada periode yang lebih besar pengaruh eksternal meningkat - berita dan sebagainya, 15-60 menit merupakan zona paling “teknis”.
  2. BTCUSD, EURUSD. — .
  3. « ? ?». , .
  4. , 50% . , .

Anda perlu memahami materi apa yang sedang kami tangani. Pasar kacau 95%. Ketika kami mengirimkan data pelatihan ke jaringan dan menunjukkan jawaban yang benar, kami benar-benar mengacaukannya. Ini seperti mencoba melatih jaringan saraf untuk membedakan kucing dari seekor anjing, dan pada pelatihan untuk menunjukkannya kupu-kupu, bintang-bintang dan tanda-tanda zodiak, tidak akan ada hasil. Jadi ada di sini, tetapi, untungnya, pasar memberikan sekitar 5% dari pola yang benar-benar bekerja yang dapat ditangkap jaringan dan ini akan tercermin dalam jawabannya. Karena itu, perhatikan analisis hasil tes.

Dengan menggunakan pendekatan ini, saya mendapat hasil sebagai berikut:
di sekitar 2% dari jawaban, jaringan menebak pergerakan lebih lanjut dalam rasio 2 jawaban benar ke 1 salah. Ketika menguji di pasar nyata, inilah yang terjadi, tetapi masalah lain muncul. Bagaimanapun, kami hanya memiliki 2% dari pertanyaan yang dijawab, abaikan sisanya. Itu kami meluncurkan neuro di pasar nyata dalam jangka waktu 5 menit dan menunggu ... dengan 2% - hanya setiap 50 lilin akan dijawab, satu jawaban dalam 4 jam! Dan apa hubungannya dengan itu? Nah, jika jawabannya adalah "beli / jual", maka 6 transaksi sehari adalah normal, dan di sini abstrak "naik / turun" dan kemudian tidak akurat, kekecewaan total.

Akibatnya, saya memecahkan masalah ini dengan relatif mudah - hanya setiap 5 menit Anda perlu mewawancarai tidak satu model, tetapi 20-30 model, sebagai akibat dari jawaban akan cukup. Model dilatih tentang input data yang berbeda dan, karenanya, dilatih pada pola yang berbeda. Dalam praktiknya, ternyata model membunyikan klakson pada lilin yang berbeda, mengaktifkan bersama hanya di tempat yang jelas dan dapat diprediksi dan tidak saling tumpang tindih.

Sebagai rangkuman, sekarang ada sesuatu yang dapat diluncurkan di pasar nyata dan memiliki sinyal naik / turun dengan penambangan rata-rata. Sudah lebih menyenangkan, tetapi pengertian praktisnya masih nol.

Beberapa kata tentang implementasinya. Ini bekerja untuk saya pada sekelompok MQL5 plus Keras. Bot diluncurkan di MetaTrader5 pada setiap kandil menyiapkan data untuk jaringan saraf dan melewati soket ke skrip python, yang pada gilirannya menyurvei semua model dan, ketika melewati ambang batas yang dapat diterima, mengirim sinyal ke saluran Telegram.

Jadi, rangkaian berfungsi, tetapi tidak dapat diterapkan. Tidak mungkin menambahkan sinyal ke beberapa strategi. Kelemahan utama adalah diskritnya jawaban. Jawabannya adalah peristiwa yang perlu Anda lakukan untuk bereaksi - lihat situasi pasar, pikirkan apakah jaringannya benar atau tidak, dll. Pada satu lilin, satu model bisa memberi sinyal naik, dan satu lagi turun, dan yang mana untuk dipercaya? Akibatnya, ide itu lahir untuk meninggalkan ambang untuk melewati jawaban, dan mulai menghormati setiap jawaban jaringan, meskipun dengan tingkat kepercayaan yang rendah. Jika Anda mulai menyamakan semua jawaban menjadi satu pendapat umum dan menganggap ini sebagai jawaban jaringan, maka jawabannya menjadi kualitas yang sama sekali berbeda. Dalam hal ini, pengetahuan semua model mulai terbentuk, dan ini merupakan pelatihan bersama yang sangat besar.

Berapa lama, secara singkat, tetapi setelah semua perubahan, saya mulai menerima jawaban tunggal dari jaringan saraf untuk setiap lilin, dinyatakan sebagai persentase dari waktu kerja yang diharapkan dari -100% hingga + 100%. Tanda mencerminkan arah naik / turun yang diharapkan. Menjadi jelas bahwa sekarang ada perasaan dalam setiap jawaban. Berhasil! Saya sendiri memiliki pengalaman perdagangan dan melihat bagaimana perilaku jaringan di depan mata saya menjadi bermakna. Terkadang logikanya dapat dimengerti, terkadang tidak, tetapi jawabannya selalu merasakan visi pasarnya sendiri, seringkali paradoksal. Selain itu, ternyata semakin tinggi kepercayaan jaringan, semakin dekat perkembangan yang diharapkan ke waktu yang tepat dan sebaliknya. Kepercayaan diri yang rendah sepertinya mengatakan "apa yang akan terjadi dalam 15 menit saya tidak tahu, tetapi tren umum sudah naik."

Dari tempat ini, saya menyadari bahwa mencoba memformalkan semua ini menjadi sinyal beli / jual adalah seperti memalu paku dengan mikroskop. Apa yang dibutuhkan adalah semacam alat untuk memvisualisasikan sinyal-sinyal jaringan saraf - tampilan grafis tingkat "kepercayaan" pada setiap lilin. Berbagai alat MQL5 memungkinkan untuk menempatkan semua ini ke dalam Expert for MetaTrader5. "Pakar" melalui API menerima tanggapan dari jaringan saraf dan hanya terlibat dalam rendering. Berikut adalah contoh karyanya di BTCUSD M1: Area

gambar

berwarna di bagian atas adalah perkiraan "turun", area di bawah ini adalah perkiraan "naik", ketebalannya adalah tingkat kepercayaan.

Pada tahap ini, kualitas ramalan tidak masalah, penting bahwa jaringan saraf menunjukkan pendapat yang cukup memadai tentang situasi pasar. Anda selalu dapat memutakhirkan jaringan lebih banyak lagi, yang terpenting adalah ia berfungsi!

Akibatnya, hari ini ada Ahli untuk MetaTrader5 dengan dua jenis perkiraan - jangka pendek dan jangka panjang. Statistik berakumulasi secara bertahap, ada umpan balik dari pedagang. Hasil yang diperoleh menginspirasi pekerjaan lebih lanjut, sekarang kita harus sampai ke tim "beli / jual" yang dihargai. Ini dapat dilakukan dengan meningkatkan kualitas perkiraan secara signifikan. Lalu saya melihat jalur pengembangan ini:

  1. Perlu menyiapkan selusin ramalan dalam interval antara 15 dan 60 menit. Itu mulailah memprediksi "atas / bawah" selama 20, 25, 30, 35 menit dan seterusnya hingga 60. Setiap ramalan, saya ingat, dibangun dari jawaban sekitar 20 model.
  2. Memiliki volume informasi yang demikian pada setiap menit lilin, adalah mungkin dan perlu untuk menganalisanya dengan jaringan saraf lain. Koneksi antara ramalan pada interval waktu yang berbeda dapat sepenuhnya nontrivial, oleh karena itu, jaringan saraf di sini akan sesuai.
  3. Dataset untuk jaringan saraf ini tidak akan sama berisiknya dengan kawan-kawan mudanya, oleh karena itu, ia harus dilatih bukan dalam hal dangkal "naik / turun", tetapi dalam memprediksi kekuatan pergerakan aset, dan ini merupakan jalan keluar langsung ke "beli / jual".

Itu saja yang ingin saya sampaikan kepada Anda hari ini. Pekerjaan terus berlanjut, saya pikir akan ada lebih banyak artikel.

Ngomong-ngomong, Pakar untuk MetaTrader5 ini didistribusikan secara gratis, jika Anda ingin melihat karya jaringan saraf di pasar nyata, silakan hubungi.

All Articles