MetaTrader4
Sistem Perdagangan Automatik 'Combo' - EA untuk MetaTrader 4
Mari kita bincangkan tentang sistem perdagangan automatik (ATS) yang menarik ini. Kita mulakan dengan sistem perdagangan asas – BTS. Tujuan utama kita di sini adalah untuk mencipta dan melatih rangkaian neural bagi mengembangkan kebolehan yang tidak dapat dilakukan oleh BTS sahaja. Hasilnya, kita akan memiliki sistem perdagangan yang terdiri daripada dua sistem yang saling melengkapi: BTS dan NN (rangkaian neural).
Seperti pepatah Melayu, "Tak perlu lagi menjelajah benua, semuanya telah ditemukan." Jadi, kenapa kita perlu mengajarkan orang untuk berlari pantas jika kita sudah ada kereta, atau untuk terbang jika kita sudah ada kapal terbang?
Apabila kita mempunyai ATS yang mengikuti trend, kita perlu melatih rangkaian neural untuk strategi melawan trend. Ini penting kerana sistem yang direka untuk perdagangan berdasarkan trend tidak dapat berfungsi dalam keadaan pasaran yang mendatar atau mengenal pasti pembetulan atau pembalikan pasaran. Anda boleh, sudah tentu, menggunakan dua ATS – satu untuk mengikuti trend dan satu lagi untuk melawan trend – dan menghubungkannya pada carta yang sama. Namun, lebih baik jika kita melatih rangkaian neural untuk melengkapkan sistem perdagangan yang ada.
Bagi tujuan ini, kami telah mereka bentuk rangkaian neural dua lapisan yang terdiri daripada dua perceptron di lapisan bawah dan satu perceptron di lapisan atas.
Keluaran rangkaian neural ini boleh berada dalam salah satu daripada tiga keadaan berikut:
Masuk ke pasaran dengan posisi panjang
Masuk ke pasaran dengan posisi pendek
Keadaan tidak pasti
Keadaan ketiga adalah di mana kawalan diserahkan kepada BTS, sementara dua keadaan pertama adalah ketika isyarat perdagangan diberikan oleh rangkaian neural.
Proses pengajaran rangkaian neural dibahagikan kepada tiga peringkat, setiap peringkat untuk melatih satu perceptron. Pada setiap peringkat, BTS yang dioptimumkan mesti ada agar perceptron tahu apa yang boleh dilakukannya.
Pengajaran yang berasingan bagi perceptron menggunakan algoritma genetik ditentukan oleh kekurangan algoritma ini; iaitu, jumlah input yang dicari dengan bantuan algoritma tersebut adalah terhad. Namun, setiap peringkat pengajaran adalah bersambung dan rangkaian neural ini tidak terlalu besar, jadi keseluruhan proses pengoptimuman tidak mengambil banyak masa.
Peringkat pertama, sebelum pengajaran NN, adalah pengoptimuman BTS.
Untuk tidak tersesat, kita akan merekodkan nombor peringkat dalam input ATS yang ditandakan sebagai "pass". Pengenal input yang sepadan dengan nombor peringkat akan berakhir dengan nombor yang sama seperti nombor peringkat tersebut.
Mari kita mulakan persiapan untuk pengoptimuman dan pengajaran NN. Kita tetapkan deposit awal sebanyak RM 1,000,000 (untuk mengelakkan margin call semasa pengoptimuman) dan input yang akan dioptimumkan adalah "Balance" dalam sifat Expert Advisor pada tab "Ujian" di Strategy Tester, dan mulakan algoritma genetik.
Ayo kita pergi ke tab "Inputs" dalam sifat EA dan tentukan volum posisi yang akan dibuka dengan memberikan nilai 1 kepada pengenalan "lots".
Pengoptimuman akan dilakukan mengikut model: "Hanya harga terbuka (kaedah terpantas untuk menganalisis bar yang baru selesai, hanya untuk EA yang secara eksplisit mengawal pembukaan bar)", kerana kaedah ini tersedia dalam algoritma ATS.
Peringkat 1 pengoptimuman. Pengoptimuman BTS:
Tetapkan nilai 1 untuk input "pass".
Kita hanya akan mengoptimumkan input yang sepadan dengan peringkat pertama, iaitu, yang berakhir dengan 1. Jadi, kita semak hanya input ini untuk pengoptimuman, dan nyahsemak semua yang lain.
tp1 - TakeProfit bagi BTS. Ia dioptimumkan dengan nilai dalam julat 10 hingga 100, langkah 1
sl1 - StopLoss bagi BTS. Ia dioptimumkan dengan nilai dalam julat 10 hingga 100, langkah 1
p1 - tempoh CCI yang digunakan dalam BTS. Ia dioptimumkan dengan nilai dalam julat 3 hingga 100, langkah 1.
Peringkat 2. Mengajar perceptron yang bertanggungjawab untuk posisi pendek:
Tetapkan nilai 2 (mengikut nombor peringkat) untuk input "pass".
Nyahsemak input yang disemak untuk pengoptimuman pada peringkat sebelumnya. Sebagai langkah berjaga-jaga, simpan dalam fail input yang diperolehi pada peringkat sebelumnya.
Semak input untuk pengoptimuman mengikut peraturan kita: pengenal mereka mesti berakhir dengan 2:
x12, x22, x32, x42 - nombor berat bagi perceptron yang mengenali posisi pendek. Ia dioptimumkan dengan nilai dalam julat 0 hingga 200, langkah 1
tp2 - TakeProfit bagi posisi yang dibuka oleh perceptron. Ia dioptimumkan dengan nilai dalam julat 10 hingga 100, langkah 1
sl2 - StopLoss bagi posisi yang dibuka oleh perceptron. Ia dioptimumkan dengan nilai dalam julat 10 hingga 100, langkah 1
p2 - tempoh nilai perbezaan harga yang akan dianalisis oleh perceptron. Ia dioptimumkan dengan nilai dalam julat 3 hingga 100, langkah 1.
Mulakan pengajaran menggunakan pengoptimuman dengan algoritma genetik.
Peringkat 3. Mengajar perceptron yang bertanggungjawab untuk posisi panjang:
Tetapkan nilai 3 (mengikut nombor peringkat) untuk input "pass".
Nyahsemak input yang disemak untuk pengoptimuman pada peringkat sebelumnya. Sebagai langkah berjaga-jaga, simpan dalam fail input yang diperolehi pada peringkat sebelumnya.
Semak input untuk pengoptimuman mengikut peraturan kita: pengenal mereka mesti berakhir dengan 3:
x13, x23, x33, x43 - nombor berat bagi perceptron yang mengenali posisi panjang. Ia dioptimumkan dengan nilai dalam julat 0 hingga 200, langkah 1.
tp3 - TakeProfit bagi posisi yang dibuka oleh perceptron. Ia dioptimumkan dengan nilai dalam julat 10 hingga 100, langkah 1
sl3 - StopLoss bagi posisi yang dibuka oleh perceptron. Ia dioptimumkan dengan nilai dalam julat 10 hingga 100, langkah 1
p3 - tempoh nilai perbezaan harga yang akan dianalisis oleh perceptron. Ia dioptimumkan dengan nilai dalam julat 3 hingga 100, langkah 1.
Mulakan pengajaran menggunakan pengoptimuman dengan algoritma genetik.
Peringkat 4 (akhir). Mengajar lapisan pertama, iaitu, mengajar perceptron yang berada di lapisan atas:
Tetapkan nilai 4 (mengikut nombor peringkat) untuk input "pass".
Nyahsemak input yang disemak untuk pengoptimuman pada peringkat sebelumnya. Sebagai langkah berjaga-jaga, simpan dalam fail input yang diperolehi pada peringkat sebelumnya.
Semak input untuk pengoptimuman mengikut peraturan kita: pengenal mereka mesti berakhir dengan 4:
x14, x24, x34, x44 - nombor berat bagi perceptron lapisan pertama. Ia dioptimumkan dengan nilai dalam julat 0 hingga 200, langkah 1.
p4 - tempoh nilai perbezaan harga yang akan dianalisis oleh perceptron. Ia dioptimumkan dengan nilai dalam julat 3 hingga 100, langkah 1.
Mulakan pengajaran menggunakan pengoptimuman dengan algoritma genetik.
Itulah sahaja, rangkaian neural telah diajar.
ATS ini mempunyai satu lagi input yang tidak boleh dioptimumkan, mn - Magic Number. Ia adalah pengenal bagi posisi agar sistem perdagangan tidak bercampur aduk dengan pesanan yang dibuka secara manual atau oleh ATS lain. Nilai nombor ajaib mesti unik dan tidak sama dengan nombor ajaib bagi posisi yang tidak dibuka oleh Expert Advisor ini.
P.S.
Saiz deposit awal adalah dua kali ganda daripada drawdown mutlak, iaitu, kita mempertimbangkan beberapa sumber keselamatan untuknya.
EA yang diberikan dalam kod sumber tidak dioptimumkan.
Jika anda perlu menggantikan BTS yang terbina dalam dengan algoritma sistem perdagangan lain, anda mesti mengubah kandungan fungsi basicTradingSystem().
Untuk tidak memasukkan nilai awal dan akhir serta nilai langkah untuk pengoptimuman, anda boleh mengambil fail siap sedia combo.set, letakkan dalam folder \tester MT4, dan muat naik ke sifat EA dalam Tester.
Pengoptimaan semula EA perlu dilakukan pada hujung minggu, iaitu, pada hari Sabtu atau Ahad, tetapi hanya jika keputusan minggu sebelumnya tidak menguntungkan. Kehadiran kerugian menunjukkan bahawa pasaran telah berubah, dan pengoptimuman semula adalah perlu. Kehadiran keuntungan bermakna ATS tidak memerlukan pengoptimuman semula dan mengenali corak pasaran dengan baik.
2008.03.06