MTC Combo: Optimalisasi EA untuk MetaTrader 5

Mike 2017.01.20 01:56 21 0 0
Lampiran

Di bawah ini adalah deskripsi penulis yang telah disunting sedikit, karena saat ini sudah banyak pasangan mata uang yang menggunakan lima digit.

Tujuan dari EA ini adalah sebagai berikut:

Misalkan kita memiliki sistem trading dasar (BTS). Kita perlu merancang dan melatih suatu jaringan saraf (NN) agar dapat melengkapi BTS dengan melakukan tindakan yang tidak dapat dilakukan oleh BTS. Dengan demikian, kita akan mendapatkan sistem trading yang terdiri dari BTS dan NN yang saling melengkapi.

Tidak perlu menciptakan kembali roda yang sudah ada. Apa gunanya mengajarkan seseorang untuk berlari cepat, jika ada mobil, atau terbang, jika ada helikopter?

Jika kita memiliki sistem trading tren, kita perlu mengajarkan jaringan saraf strategi kontra-tren saja. Sistem yang ditujukan untuk tren tidak dapat trading saat pasar flat, serta tidak dapat mendefinisikan roll-back dan pembalikan dengan baik. Tentu saja, kita dapat menggunakan dua strategi trading (tren dan kontra-tren) dan menjalankannya dalam satu grafik. Di sisi lain, kita juga dapat melatih jaringan saraf agar dapat melengkapi sistem trading.

Untuk tujuan ini, kami telah mengembangkan jaringan saraf dua lapis yang terdiri dari dua perceptron lapisan bawah dan satu perceptron lapisan atas.

Jaringan saraf dapat berada dalam salah satu dari tiga keadaan:

  1. Masuk posisi buy
  2. Masuk posisi sell
  3. Tidak terdefinisi

Status ketiga berarti kendali diserahkan kepada BTS, sementara sinyal trading dihasilkan oleh jaringan dalam dua keadaan pertama.

Pelatihan jaringan saraf dibagi menjadi tiga tahap. Satu perceptron dilatih di setiap tahap tersebut. BTS yang teroptimasi hadir di setiap tahap untuk memberi tahu perceptron apa yang dapat dilakukannya.

Pelatihan terpisah dari perceptron menggunakan algoritma genetik disebabkan oleh kekurangan algoritma, yakni jumlah parameter yang dapat dipilih dengan bantuannya terbatas. Bagaimanapun, setiap tahap pelatihan secara logis konsisten dan jaringan saraf tidak terlalu besar, sehingga seluruh proses optimasi berlangsung dalam waktu yang wajar.

Namun, tahap pertama yang mendahului pelatihan NN adalah untuk optimasi BTS.

Untuk menghindari kebingungan, nomor tahap ditentukan di input EA dengan ID "pass". ID input yang sesuai dengan nomor tahap diakhiri dengan nomor tersebut.

Mari kita lakukan persiapan awal untuk optimasi dan pelatihan NN.

Setel deposit awal di penguji menjadi Rp 1.500.000 (agar tidak menciptakan margin call yang artifisial selama optimasi), parameter "Balance + max Sharpe Ratio" yang dioptimasi, dan jenis optimasi "Fast genetic algorithm".

Sekarang, pergi ke tab Inputs dari properti EA. Setel ukuran lot dari posisi yang dibuka dengan menetapkan nilai 0,01 pada ID "lots".

Optimasi akan dilakukan menurut model "Hanya harga buka". Metode ini dipilih karena kecepatan tinggi. Selain itu, algoritma EA memiliki manajemen bar baru.

Tahap optimasi pertama. Optimasi BTS:

Setel pass ke 1. Optimalkan hanya input yang sesuai dengan tahap pertama dengan semua ID yang diakhiri satu. Oleh karena itu, beri tanda optimasi pada mereka saja dan hapus tanda dari parameter lainnya.

tp1 - take profit BTS. Dioptimalkan dengan nilai dari 100 hingga 1000 dengan langkah 10.
sl1 - stop loss BTS. Dioptimalkan dengan nilai dari 100 hingga 1000 dengan langkah 10.
p1 - periode osilator CCI yang diterapkan dalam BTS. Dioptimalkan dengan nilai dari 3 hingga 100 dengan langkah 1.

Mulai pelatihan melalui optimasi algoritma genetik.

Tahap kedua. Pelatihan perceptron yang bertanggung jawab untuk posisi sell:

Setel input 'pass' ke 2 (agar sesuai dengan nomor tahap). Hapus tanda optimasi yang ditetapkan pada tahap sebelumnya. Simpan input yang diperoleh selama tahap sebelumnya ke file sebagai cadangan.

Setel tanda optimasi untuk parameter tahap kedua (ID yang diakhiri dua):

x12, x22, x32, x42 - rasio bobot dari perceptron yang mengenali posisi sell. Dioptimalkan dengan nilai dari 0 hingga 200 dengan langkah 1.
tp2 - take profit dari posisi yang dibuka oleh perceptron. Dioptimalkan dengan nilai dari 100 hingga 1000 dengan langkah 10.
sl2 - stop loss dari posisi yang dibuka oleh perceptron. Dioptimalkan dengan nilai dari 100 hingga 1000 dengan langkah 10.
p2 - periode nilai perbedaan harga yang dianalisis oleh perceptron. Dioptimalkan dengan nilai dari 3 hingga 100 dengan langkah 1.

Mulai pelatihan melalui optimasi algoritma genetik.

Tahap ketiga. Pelatihan perceptron yang bertanggung jawab untuk posisi buy:

Setel input 'pass' ke 3 (agar sesuai dengan nomor tahap). Hapus tanda optimasi yang ditetapkan pada tahap sebelumnya. Simpan input yang diperoleh selama tahap sebelumnya ke file sebagai cadangan.

Setel tanda optimasi untuk parameter tahap ketiga (ID yang diakhiri tiga):

x13, x23, x33, x43 - rasio bobot dari perceptron yang mengenali posisi buy. Dioptimalkan dengan nilai dari 0 hingga 200 dengan langkah 1.
tp3 - take profit dari posisi yang dibuka oleh perceptron. Dioptimalkan dengan nilai dari 100 hingga 1000 dengan langkah 10.
sl3 - stop loss dari posisi yang dibuka oleh perceptron. Dioptimalkan dengan nilai dari 100 hingga 1000 dengan langkah 10.
p3 - periode nilai perbedaan harga yang dianalisis oleh perceptron. Dioptimalkan dengan nilai dari 3 hingga 100 dengan langkah 1.

Mulai pelatihan melalui optimasi algoritma genetik.

Tahap akhir keempat.

Pelatihan lapisan pertama (perceptron lapisan atas):

Setel input 'pass' ke 4 (agar sesuai dengan nomor tahap). Hapus tanda optimasi yang ditetapkan pada tahap sebelumnya. Simpan input yang diperoleh selama tahap sebelumnya ke file sebagai cadangan.

Setel tanda optimasi untuk parameter tahap keempat (ID yang diakhiri empat):

x14, x24, x34, x44 - rasio bobot dari perceptron lapisan pertama. Dioptimalkan dengan nilai dari 0 hingga 200 dengan langkah 1.
p4 - periode nilai perbedaan harga yang dianalisis oleh perceptron. Dioptimalkan dengan nilai dari 3 hingga 100 dengan langkah 1.

Mulai pelatihan melalui optimasi algoritma genetik.

Sekian. Jaringan saraf telah dilatih.

EA juga memiliki input 'mn' yang tidak dapat dioptimalkan - nomor magic yang memungkinkan sistem membedakan pesanan sendiri dari yang dibuka secara manual atau oleh EA lainnya. Nomor magic harus unik.

P.S.

  • Ukuran deposit awal ditentukan sebagai drawdown absolut dikalikan dua (margin keamanan).
  • Kode sumber EA belum dioptimalkan.
  • Ubah isi fungsi basicTradingSystem() jika Anda ingin mengganti BTS bawaan dengan algoritma sistem trading lain.
  • Re-optimasi EA selama akhir pekan jika hasil minggu sebelumnya tidak menguntungkan. Kerugian menandakan perubahan pasar dan perlunya re-optimasi. Jika EA menguntungkan, tidak perlu re-optimasi karena robot dapat mengenali pola pasar dengan baik.


Daftar
Komentar 0