Memiliki robot trading yang dapat mengoptimalkan dirinya sendiri adalah impian saya. Dengan begitu, saya tahu bahwa robot tersebut selalu bekerja dengan nilai terbaik. Inilah usaha kecil saya untuk mewujudkan impian tersebut. Expert advisor yang saya lampirkan di sini mengoptimalkan level jenuh beli dan jenuh jual yang digunakannya untuk melakukan transaksi. Saya berharap, konsep ini dapat dikembangkan oleh orang lain menjadi sesuatu yang lebih hebat. Jika Anda melakukannya, jangan ragu untuk memberi tahu saya. Dan jangan lupa untuk memberikan penilaian pada robot saya menggunakan bintang di atas. Strategi ini dapat diterapkan pada pasangan mata uang mana pun dengan kerangka waktu apa pun, tentunya dengan pengaturan yang tepat.
Ada beberapa input yang terdaftar untuk robot ini. Saya juga menyertakan beberapa fitur tambahan yang saya suka coba, semoga Anda menikmati.
Input
- magic = 4376 - Nomor unik untuk EA ini.
- optomizingPeriods = 144 - Periode optimasi (bar). Ini adalah jumlah bar yang ingin Anda gunakan untuk optimasi. Misalnya, jika Anda menggunakan grafik per jam dan memilih 144, robot akan melihat kembali 144 jam yang setara dengan enam hari.
- inAggressive = false - Membuat expert lebih agresif? Berisiko. Mode agresif akan membuat advisor mengambil transaksi dengan cara yang lebih agresif. Alih-alih menunggu persilangan level jenuh beli atau jenuh jual, robot akan mengambil transaksi beli jika transaksi beli lebih menguntungkan daripada jual baru-baru ini, dan sebaliknya.
- inTradeReverse = false - Trading terbalik. Trading terbalik akan membalikkan arah transaksi Anda.
- inOneOrderAtATime = true - Hanya satu order terbuka pada satu waktu?. Jika true, robot hanya akan memiliki satu order pada satu waktu. Jika false, robot akan membuka jumlah order tanpa batas sesuai dengan kondisi masuk.
- Lot_sizing_dynamic_invalidates_static - Sekadar pemisah untuk memisahkan mekanika ukuran lot dari input lainnya.
- Lots = 0.01 - Ukuran Lot statis untuk order. Tentukan ukuran lot untuk order Anda menggunakan angka statis.
- inUseDynamicLotSize = true - Gunakan ukuran lot dinamis. Mengaktifkan ukuran lot dinamis yang akan digunakan sebagai pengganti ukuran lot statis. Namun, jika ukuran lot dinamis terbukti tidak valid, robot akan kembali ke ukuran lot statis.
- inPercentageOfRisk = 2 - Persentase saldo untuk risiko pada setiap transaksi (2 = 2%). Saat menggunakan ukuran lot dinamis, Anda menentukan ukuran lot Anda sebagai persentase dari saldo Anda. 2 sama dengan 2 persen. Tidak perlu memasukkan 0.02; jika Anda melakukannya dengan cara itu, persentase yang digunakan akan sangat kecil. Persentase maksimum yang dapat digunakan adalah 10 persen.
- Index_Indicator_Values - Sekadar pemisah untuk memisahkan parameter indikator indeks dari input lainnya.
- indicator index = _RSI_ - Pilih indikator indeks yang akan digunakan. Memungkinkan Anda memilih indikator yang ingin Anda gunakan; pilihan saat ini adalah Indeks Kekuatan Relatif (RSI) atau Indeks Aliran Uang (MFI).
- IndicatorTopValue = 100 - Nilai tertinggi yang akan Anda perdagangkan. Ini adalah nilai tertinggi yang akan Anda tempatkan untuk perdagangan menggunakan indikator Anda. Biarkan di 100 untuk mempertimbangkan semua nilai indikator indeks.
- IndicatorBottomValue = 0 - Nilai terendah yang akan Anda perdagangkan. Ini adalah nilai terendah yang akan Anda tempatkan untuk perdagangan menggunakan indikator Anda. Biarkan di 0 untuk mempertimbangkan semua nilai indikator indeks.
- IndyTimeframe = PERIOD_CURRENT - Kerangka waktu untuk indeks. Pilih kerangka waktu yang ingin Anda gunakan untuk indikator selama optimasi dan trading. PERIOD_CURRENT berarti akan menggunakan kerangka waktu grafik yang Anda lampirkan pada expert advisor.
- inIndyPeriods = 14 - Periode rata-rata untuk indeks dan perhitungan ATR. Rata-rata Rentang Nyata (ATR) digunakan dalam pengaturan stop-loss dinamis atau take-profit di opsi input di bawah.
- IndyAppPrice = PRICE_CLOSE - Harga yang diterapkan untuk indeks jika diperlukan.
- SL_TP_Dynamic_invalidates_static_values - Sekadar pemisah untuk memisahkan parameter stop loss dan take profit dari input lainnya.
- iStoploss = 1000 - Nilai Stoploss statis dalam poin. Nilai stop loss berada dalam poin, yaitu unit terkecil pergerakan di terminal Anda.
- iTakeprofit = 2000 - Nilai Takeprofit statis dalam poin. Nilai take profit juga dalam poin.
- input inDynamic = true - Gunakan stop loss & take profit dinamis berdasarkan ATR? Jika Anda mengaktifkan stop loss dan take profit dinamis, mereka akan digunakan sebagai pengganti stop loss atau take profit statis. Pengaturan dinamis bisa menarik karena dapat menyesuaikan dengan perilaku pasar.
- inStoplossMultiple = 2 - SL dinamis = X * ATR (Periode Rata-rata). Stop loss akan menjadi nilai yang Anda tempatkan di sini dikalikan dengan Rata-rata Rentang Nyata (ATR) menggunakan periode yang ditentukan dalam pengaturan inIndyPeriods.
- inTakeProfitMultiple = 7 - TP dinamis = X * ATR (Periode Rata-rata). Take profit akan menjadi nilai yang Anda tempatkan di sini dikalikan dengan Rata-rata Rentang Nyata (ATR).
- Break_Even_Settings - Padding harus lebih rendah dari Trigger. Pemisah untuk pengaturan Break Even. Cara kerjanya adalah saat poin dalam profit melewati jumlah trigger, stop loss dipindahkan ke break even.
- bUseBreakEven = true - Gunakan Break Even (BE). Aktifkan penggunaan break even atau matikan.
- inTrigger = 200 - Jika BE = [true] set Poin dalam profit untuk trigger. Jika perdagangan mencapai banyak poin ini dalam profit, stop loss akan dipindahkan ke break even.
- inPadding = 100 - Poin padding untuk ditambahkan ke BE harus lebih rendah dari trigger. Ini adalah jumlah poin profit yang ingin Anda kunci saat pindah ke break even.
Bagaimana robot ini dapat mengoptimalkan dirinya sendiri? Inilah rahasianya: robot menguji setiap variabel dalam indikator indeks dua kali. Jadi, jika sebuah indikator memiliki seratus nilai yang mungkin, robot akan mengambil setiap nilai dan mencoba melakukan perdagangan pada nilai tersebut dengan melihat kembali sejumlah bar tertentu (optomizingPeriods). Kemudian robot menilai nilai tersebut berdasarkan seberapa banyak uang yang bisa didapat atau hilang dengan trading pada nilai tersebut. Ini sedikit lebih kompleks dari itu, tetapi Anda membaca ini untuk mendapatkan lebih banyak detail, jadi berikut adalah penjelasannya.
Ketentuan yang ada adalah ketika sebuah indikator melintasi nilai jenuh beli dari atas, maka order jual dikeluarkan, dan order beli dikeluarkan ketika indikator melintasi dari bawah nilai jenuh jual ke atas. Misalnya, jika jenuh beli diatur pada 80 dan nilai indikator Anda adalah 85 pada bar sebelum terakhir dan nilai indikator pada bar terakhir adalah 79, maka order jual akan dikeluarkan. 85 → 79 melintasi 80 ke bawah, order jual dikeluarkan. Jika jenuh jual = 23, maka 19 → 27 ke atas akan menciptakan order beli.
Robot ini mengambil setiap nilai untuk indikator dari IndicatorTopValue - dan IndicatorBottomValue - dan menjalankan tes, dua tes lebih tepatnya. Robot menjalankan tes beli dan jual pada setiap nilai. Sebagai contoh, jika nilai atas adalah 100, robot akan mengambil nilai atas tersebut dan melakukan backtest pada optomizingPeriods, katakanlah 144 periode. Jadi, robot akan melihat apakah membeli di 100 dan menjual di 100 akan menguntungkan dalam 144 periode terakhir. Jika menguntungkan, maka robot akan menyimpan nilai uang tersebut.
Dengan mempertimbangkan banyaknya periode yang Anda backtest, robot mungkin memiliki kesempatan untuk membeli beberapa kali selama backtest. Jika mencapai take profit sebelum mencapai stop loss, maka hasilnya akan menguntungkan. Namun, jika mencapai stop loss sebelum mencapai take profit, maka hasilnya negatif. Setelah menguji semua periode dalam optomizingPeriods - robot menambahkan semua hasil yang menguntungkan dengan semua kerugian untuk mendapatkan nilai moneter. Kemudian robot beralih ke nilai indikator yang lebih rendah dan menguji profitabilitasnya.
Setelah menguji semua nilai, robot memilih nilai dengan jumlah monetari tertinggi dan memilihnya sebagai nilai beli optimal. Selanjutnya, robot melakukan pemeriksaan serupa untuk nilai jual. Setelah ini selesai, robot membandingkan nilai beli terbaik dengan nilai jual terbaik dan mencari perdagangan yang merupakan yang terbaik dari yang terbaik. Misalnya, setelah menjalankan optimasi ini, robot menentukan bahwa nilai beli terbaik adalah 65 karena membeli di 65 menghasilkan keuntungan tertinggi, misalnya $329 dalam backtesting. Robot kemudian memeriksa nilai untuk jual terbaik, dan jika sell terbaik adalah 32 dengan profit $530, maka robot akan mencari perdagangan jual dengan indikator melintasi level 32, karena menjual lebih baik daripada membeli berdasarkan profit yang dihasilkan dalam backtest.
Ide Pengembangan Masa Depan
- Perdagangan beberapa pasangan mata uang sekaligus, mungkin disaring berdasarkan ukuran spread.
- Pembelajaran mandiri, di mana ia belajar dari perdagangan sendiri tentang apa yang terbaik.
- Backtesting juga dapat mencakup komponen pengujian ke depan.
- Lebih banyak indikator untuk dipilih.
Silakan tinggalkan saran dan komentar Anda, dan jangan lupa untuk memberikan penilaian!
Sekarang tersedia di marketplace MetaTrader: https://www.mql5.com/en/market/product/26332
Update dengan tanda kurung yang hilang pada baris 137-142 untuk menyelesaikan kesalahan yang diidentifikasi dalam komentar.
Postingan terkait
- MQL5 Wizard: Mengoptimalkan Sinyal Perdagangan dengan Morning/Evening Stars dan MFI
- MQL5 Wizard: Menggunakan Sinyal Trading Bullish/Bearish Meeting Lines dengan MFI
- Panduan Lengkap Membuat EA dengan MQL5 Wizard: Sinyal Trading Bullish dan Bearish Engulfing + MFI
- MQL5 Wizard: Membuat EA dengan Sinyal Trading Hammer/Hanging Man dan MFI
- MQL5 Wizard: Membuat Expert Advisor dengan Sinyal Trading 3 Black Crows/3 White Soldiers dan MFI