MTC Combo: Sistem Trading untuk MetaTrader 5

Mike 2017.01.20 01:56 41 0 0
Lampiran

Hari ini kita akan membincangkan tentang MTC Combo, satu sistem trading yang direka khusus untuk pengguna MetaTrader 5. Saya telah membuat beberapa suntingan kecil pada penerangan asal penulis untuk memastikan ia lebih mudah difahami.

Tujuan utama EA ini adalah untuk:

Bayangkan kita mempunyai sistem trading asas (BTS). Kita perlu mereka dan melatih rangkaian neural (NN) supaya ia dapat melengkapi BTS dengan melakukan tindakan yang tidak dapat dilakukan oleh BTS. Dengan itu, kita akan mendapatkan satu sistem trading yang terdiri daripada gabungan BTS dan NN yang saling melengkapi.

Kita tidak perlu mencipta semula roda apabila ia sudah pun ada. Apa gunanya kita ajar orang untuk berlari cepat, jika ada kereta, atau terbang, jika kita mempunyai helikopter?

Sekiranya kita mempunyai sistem trading trend, kita perlu melatih rangkaian neural dengan strategi lawan trend sahaja. Sistem yang direka untuk tren tidak boleh berdagang semasa pasaran mendatar, serta tidak dapat mengenal pasti penarikan balik dan pembalikan dengan tepat. Sudah tentu, kita boleh menggunakan dua strategi trading (trend dan lawan trend) dan melancarkannya pada satu carta. Sebaliknya, kita juga boleh melatih rangkaian neural supaya ia melengkapi sistem trading.

Untuk tujuan ini, kami telah membangunkan rangkaian neural dua lapisan yang terdiri daripada dua perceptron lapisan bawah dan satu perceptron lapisan atas.

Rangkaian neural boleh berada dalam salah satu daripada tiga keadaan:

  1. Masuk posisi panjang
  2. Masuk posisi pendek
  3. Tidak ditentukan

Keadaan ketiga bermaksud kawalan diberikan kepada BTS, manakala isyarat trading dijana oleh rangkaian dalam dua keadaan pertama.

Latihan rangkaian neural dibahagikan kepada tiga peringkat. Satu perceptron dilatih pada setiap peringkat. BTS yang telah dioptimumkan hadir pada setiap peringkat untuk membolehkan perceptron tahu apa yang boleh dilakukannya.

Latihan berasingan bagi perceptron menggunakan algoritma genetik adalah disebabkan oleh kekurangan algoritma, iaitu bilangan parameter yang terhad yang boleh dipilih dengan bantuannya. Walau bagaimanapun, setiap peringkat latihan adalah konsisten secara logik dan rangkaian neural tidak terlalu besar, jadi keseluruhan proses pengoptimuman berlaku dalam tempoh yang munasabah.

Tetapi peringkat pertama yang mendahului latihan NN adalah untuk pengoptimuman BTS.

Untuk mengelakkan kekeliruan, nombor peringkat ditentukan dalam input EA dengan ID pass. ID input yang sepadan dengan nombor peringkat berakhir dengan nombor tersebut.

Jom buat persiapan awal untuk pengoptimuman dan latihan NN.

Tetapkan deposit awal dalam penguji kepada RM100 (agar tidak mencipta margin call yang tidak realistik semasa pengoptimuman), parameter yang dioptimumkan Balance + max Sharpe Ratio, jenis pengoptimuman Fast genetic algorithm.

Sekarang, pergi ke tab Inputs dalam sifat EA.
Tetapkan saiz lot untuk posisi yang dibuka dengan menetapkan nilai 0.01 kepada ID lots.

Pengoptimuman perlu dilakukan mengikut model Open prices only. Kaedah ini dipilih kerana kelajuannya yang tinggi. Selain itu, algoritma EA ini mempunyai pengurusan bar baru.

Peringkat pengoptimuman pertama. Pengoptimuman BTS:

Tetapkan pass kepada 1.
Hanya optimakan input yang sepadan dengan peringkat pertama dengan semua ID mereka berakhir dengan satu. Oleh itu, tetapkan tanda pengoptimuman pada mereka sahaja dan buang tanda dari parameter lain.

tp1 - ambil untung BTS. Dioptimumkan dengan nilai dari 100 hingga 1000 dengan langkah 10
sl1 - henti rugi BTS. Dioptimumkan dengan nilai dari 100 hingga 1000 dengan langkah 10
p1 - tempoh osilator CCI yang digunakan dalam BTS. Dioptimumkan dengan nilai dari 3 hingga 100 dengan langkah 1.

Mulakan latihan melalui pengoptimuman algoritma genetik.

Peringkat kedua. Melatih perceptron yang bertanggungjawab untuk posisi pendek:

Tetapkan input 'pass' kepada 2 (supaya ia sepadan dengan nombor peringkat).
Buang tanda pengoptimuman yang ditetapkan pada peringkat sebelumnya. Simpan input yang diperoleh semasa peringkat sebelumnya ke dalam fail sebagai langkah berjaga-jaga.

Tetapkan tanda pengoptimuman untuk parameter peringkat kedua (ID berakhir dengan dua):

x12, x22, x32, x42 - nisbah berat perceptron yang mengenali posisi pendek. Dioptimumkan dengan nilai dari 0 hingga 200 dengan langkah 1.
tp2 - ambil untung posisi yang dibuka oleh perceptron. Dioptimumkan dengan nilai dari 100 hingga 1000 dengan langkah 10
sl2 - henti rugi posisi yang dibuka oleh perceptron. Dioptimumkan dengan nilai dari 100 hingga 1000 dengan langkah 10
p2 - tempoh nilai perbezaan harga yang dianalisis oleh perceptron. Dioptimumkan dengan nilai dari 3 hingga 100 dengan langkah 1.

Mulakan latihan melalui pengoptimuman algoritma genetik.

Peringkat ketiga. Melatih perceptron yang bertanggungjawab untuk posisi panjang:

Tetapkan input 'pass' kepada 3 (supaya ia sepadan dengan nombor peringkat).
Buang tanda pengoptimuman yang ditetapkan pada peringkat sebelumnya.
Simpan input yang diperoleh semasa peringkat sebelumnya ke dalam fail sebagai langkah berjaga-jaga.

Tetapkan tanda pengoptimuman untuk parameter peringkat ketiga (ID berakhir dengan tiga):

x13, x23, x33, x43 - nisbah berat perceptron yang mengenali posisi panjang. Dioptimumkan dengan nilai dari 0 hingga 200 dengan langkah 1.
tp3 - ambil untung posisi yang dibuka oleh perceptron. Dioptimumkan dengan nilai dari 100 hingga 1000 dengan langkah 10
sl3 - henti rugi posisi yang dibuka oleh perceptron. Dioptimumkan dengan nilai dari 100 hingga 1000 dengan langkah 10
p3 - tempoh nilai perbezaan harga yang dianalisis oleh perceptron. Dioptimumkan dengan nilai dari 3 hingga 100 dengan langkah 1.

Mulakan latihan melalui pengoptimuman algoritma genetik.

Peringkat akhir keempat.

Melatih lapisan pertama (perceptron lapisan atas):

Tetapkan input 'pass' kepada 4 (supaya ia sepadan dengan nombor peringkat).
Buang tanda pengoptimuman yang ditetapkan pada peringkat sebelumnya.
Simpan input yang diperoleh semasa peringkat sebelumnya ke dalam fail sebagai langkah berjaga-jaga.

Tetapkan tanda pengoptimuman untuk parameter peringkat keempat (ID berakhir dengan empat):

x14, x24, x34, x44 - nisbah berat perceptron lapisan pertama. Dioptimumkan dengan nilai dari 0 hingga 200 dengan langkah 1.
p4 - tempoh nilai perbezaan harga yang dianalisis oleh perceptron. Dioptimumkan dengan nilai dari 3 hingga 100 dengan langkah 1.

Mulakan latihan melalui pengoptimuman algoritma genetik.

Itulah semua. Rangkaian neural sudah dilatih.

EA ini juga mempunyai input 'mn' yang tidak boleh dioptimumkan - nombor ajaib yang membolehkan sistem membezakan pesanan sendiri daripada pesanan yang dibuka secara manual atau oleh EA lain. Nombor ajaib ini perlu unik.

P.S.

  • Saiz deposit awal ditentukan sebagai drawdown mutlak yang didarabkan dengan dua (margin keselamatan).
  • Sumber kod EA tidak dioptimumkan.
  • Tukar kandungan fungsi basicTradingSystem() jika anda ingin menggantikan BTS terbina dalam dengan algoritma sistem trading lain.
  • Pengoptimuman semula EA perlu dilakukan semasa hujung minggu jika hasil minggu sebelumnya tidak menguntungkan. Kerugian menandakan perubahan pasaran dan keperluan untuk pengoptimuman semula. Jika EA menguntungkan, tidak perlu pengoptimuman semula kerana robot dapat mengenali corak pasaran dengan baik.


Senarai
Komen 0