Perdagangan Sistem

MA Trend 2: EA Canggih untuk MetaTrader 5
MetaTrader5
MA Trend 2: EA Canggih untuk MetaTrader 5

Pembaruan versi pertama dari MA Trend kini dilengkapi dengan parameter pembatas Type trading:Hanya BUY - hanya diperbolehkan membuka posisi BUYHanya SELL - hanya diperbolehkan membuka posisi SELLBUY dan SELL - diperbolehkan membuka posisi BUY dan SELL.Expert Advisor ini bekerja berdasarkan indikator iMA (Moving Average, MA) dengan berbagai pengaturan yang dapat disesuaikan:Hanya satu posisi - hanya satu posisi yang dapat dipegang di pasarReverse - membalikkan sinyal tradingClose opposite - menutup posisi yang berlawanan secara paksa saat sinyal trading diterima.Formasi sinyal trading ketika semua parameter disetel ke default:Harga ASK saat ini lebih tinggi dari nilai indikator pada bar #1 -> sinyal untuk membuka posisi BUYHarga BID saat ini kurang dari nilai indikator pada bar #1 -> sinyal untuk membuka posisi SELL.Berikut adalah contoh kode MQL5-nya:      if(m_symbol.Ask()>ma[1])          m_need_open_buy=true;       else if(m_symbol.Bid()<ma[1])          m_need_open_sell=true;Contoh operasi ketika parameter Hanya satu posisi adalah false dan true:Sebagai contoh, ketika Hanya satu posisi - true, Reverse - false dan Close opposite - true: sebuah posisi BUY dibuka, setelah beberapa waktu sinyal untuk membuka posisi SELL diterima. Karena Close opposite adalah true, maka posisi BUY ditutup terlebih dahulu (karena berlawanan dengan sinyal) dan baru kemudian posisi SELL dibuka.

2025.04.04
Strategi Trading iCHO Trend CCIDualOnMA Filter untuk MetaTrader 5
MetaTrader5
Strategi Trading iCHO Trend CCIDualOnMA Filter untuk MetaTrader 5

Strategi TradingExpert Advisor ini memanfaatkan dua indikator: iCHO (Chaikin Oscillator, CHO) dan CCIDualOnMA yang sudah dimodifikasi. CHO berfungsi sebagai indikator tren dan juga digunakan untuk menutup posisi ketika indikator ini melewati angka nol. Indikator 'CCIDualOnMA' digunakan sebagai filter untuk menambah posisi. Keduanya bekerja pada 'Timeframe Kerja' yang telah ditentukan - timeframe yang sama digunakan untuk menentukan momen lahirnya bar baru (jika diperlukan untuk parameter 'Trailing on ...' dan 'Search signals on ...').Sinyal Trading:Menutup posisi ketika indikator CHO melewati nol :PenyilanganPosisi: BalikMode TradingPenyilangan dari bawah ke atas'false' -> tutup semua posisi SELL('Hanya posisi BUY yang diizinkan' ATAU 'Posisi BUY dan SELL diizinkan') -> buka posisi BUY'true' -> tutup semua posisi BUY('Hanya posisi SELL yang diizinkan' ATAU 'Posisi BUY dan SELL diizinkan') -> buka posisi SELLPenyilangan dari atas ke bawah'false' -> tutup semua posisi BUY('Hanya posisi SELL yang diizinkan' ATAU 'Posisi BUY dan SELL diizinkan') -> buka posisi SELL'true' -> tutup semua posisi SELL('Hanya posisi BUY yang diizinkan' ATAU 'Posisi BUY dan SELL diizinkan') -> buka posisi BUYSinyal Normal (menambah posisi)Indikator CHO berada di atas nol dan CCI cepat melewati CCI lambat dari bawah ke atas serta CCI cepat berada di bawah nol - sinyal untuk membuka posisi BUY.Indikator CHO berada di bawah nol dan CCI cepat melewati CCI lambat dari atas ke bawah serta CCI cepat berada di atas nol - sinyal untuk membuka posisi SELL.Gambar 1. iCHO Trend CCIDualOnMA FilterFitur:Expert Advisor ini dapat dioptimalkan berdasarkan timeframe kerja ('Working time frame')Hanya satu trade 'masuk pasar' per bar (ini adalah parameter internal, tidak termasuk dalam parameter input dan tidak terkait dengan parameter 'Hanya satu posisi').Ketika bekerja dalam mode 'inside bar' (parameter 'Search signals on ...' adalah 'bar#0 (pada setiap tick)') bar saat ini adalah bar #0, sementara dalam mode 'hanya saat bar baru lahir' (parameter 'Search signals on ...' adalah ''bar #1 (pada bar baru)') bar saat ini adalah bar #1.Parameter 'Mode Trading: ' - pembatasan pada sisi mana yang boleh ditradingkan. Nilainya bisa 'Hanya posisi BUY yang diizinkan', 'Hanya posisi SELL yang diizinkan'' dan 'Posisi BUY dan SELL diizinkan'.Parameter 'Gunakan kontrol waktu' - interval waktu untuk mencari sinyal trading dari 'Jam Mulai'::'Menit Mulai' hingga 'Jam Selesai'::'Menit Selesai'. Rentang waktu dapat diatur baik di dalam satu hari maupun dengan transisi antar hari.Sekarang, mari kita pelajari lebih lanjut tentang setiap kelompok parameter:Pengaturan Trading:'Timeframe Kerja' - timeframe yang digunakan dalam trading. Timeframe di mana indikator dibuat dan di mana bar baru dicari.Stop Loss, Take Profit, dan Trailing diatur dalam Poin. Salah satu parameter ('Stop Loss', 'Take Profit', 'Trailing Stop') dapat dinonaktifkan - untuk melakukannya, atur parameter yang dipilih ke '0.0'.Cara trailing bekerja ditunjukkan dalam gambar pada kode TrailingStop.Manajemen Ukuran Posisi (perhitungan lot)Lot dapat bersifat tetap ('Manajemen uang' diatur ke 'Lot tetap' dan ukuran lot diatur dalam 'Nilai untuk

2025.04.04
Mendeteksi Awal Bar Baru di MetaTrader 5 dengan EA
MetaTrader5
Mendeteksi Awal Bar Baru di MetaTrader 5 dengan EA

Dalam dunia trading, salah satu tantangan yang dihadapi trader adalah mendeteksi kapan sebuah bar atau candle baru dimulai. Untuk membantu kita dalam hal ini, kita bisa memanfaatkan Expert Advisor (EA) yang kita buat sendiri di MetaTrader 5. Ketika MetaTrader menerima kutipan baru (disebut "tick"), fungsi penanganan acara OnTick() secara otomatis akan dipanggil. Namun, tidak ada fungsi penanganan acara standar untuk mendeteksi saat bar baru dimulai. Untuk mendeteksi ini, kita perlu memantau waktu pembukaan dari bar terbaru. Ketika waktu ini berubah, itu menandakan bahwa bar baru telah dimulai, dan kita bisa merespons dan menangani situasi tersebut. Berikut adalah contoh kode yang bisa digunakan, kompatibel dengan baik antara MQL4 dan MQL5: // Penanganan acara tick standar    void OnTick()    {       // Cek untuk bar baru (kompatibel dengan MQL4 dan MQL5).          static datetime dtBarraCorrente   = WRONG_VALUE;                 datetime dtBarraPrecedente = dtBarraCorrente;                          dtBarraCorrente   = iTime( _Symbol, _Period, 0 );                 bool     bEventoBarraNova  = ( dtBarraCorrente != dtBarraPrecedente );       // Tanggapi peristiwa bar baru dan tangani situasi tersebut.          if( bEventoBarraNova )          {             // Deteksi apakah ini tick pertama yang diterima dan tangani situasinya.                /* Misalnya, ketika pertama kali diterapkan ke grafik dan bar berada di tengah prosesnya dan sebenarnya bukan awal dari bar baru. */                if( dtBarraPrecedente == WRONG_VALUE )                {                   // Lakukan sesuatu pada tick pertama atau di tengah bar ...                }                else                {                   // Lakukan sesuatu ketika bar normal muncul ...                };             // Lakukan sesuatu yang independen dari kondisi sebelumnya ...          }          else          {             // Lakukan sesuatu yang lain ...          };       // Lakukan hal lain ...    }; Pada kode di atas, variabel static menyimpan waktu pembukaan bar, bahkan ketika kita kembali dari fungsi OnTick(). Berbeda dengan variabel lokal biasa, variabel ini mengingat konten datanya dan tidak dilepaskan saat keluar dari fungsi. Ini adalah kunci untuk mendeteksi perubahan waktu pembukaan bar saat ini. Perlu dicatat juga bahwa ketika EA pertama kali diletakkan di grafik, kode sebelumnya akan bereaksi seolah-olah bar baru saja dibuka. Kondisi ini memerlukan penanganan khusus jika situasinya perlu ditangani secara berbeda. Jangan lupa, kode sumber untuk semua publikasi CodeBase saya sekarang juga tersedia melalui MetaEditor dalam proyek publik dengan nama "FMIC".

2025.04.03
RRS Tangled EA: Solusi Cerdas untuk Trading di MetaTrader 4
MetaTrader4
RRS Tangled EA: Solusi Cerdas untuk Trading di MetaTrader 4

Selamat datang, para trader! Kali ini kita akan membahas RRS Tangled EA, sebuah versi yang lebih bersih dan canggih dari RRS Chaotic EA dan RRS Randomness in Nature EA. EA ini memiliki pendekatan unik karena secara acak memilih simbol mata uang, ukuran lot, serta jenis order untuk trading. Tidak seperti banyak EA lainnya, RRS Tangled tidak bergantung pada indikator teknikal atau analisis fundamental. Sebaliknya, EA ini menggunakan pendekatan Randomness in Nature dalam membuka posisi trading. Dengan pengaturan yang tepat seperti Take Profit, Stop Loss, Trailing, dan Manajemen Risiko, EA ini bisa membantu Anda meraih profit yang signifikan. Yang menarik, RRS Tangled EA ini adalah multi-mata uang atau multi-aset. Artinya, meskipun EA ini terpasang pada grafik pasangan mata uang tertentu, ia tetap mampu melakukan trading pada pasangan mata uang lainnya dan mengelola semua operasi terkait dengan trade yang telah dibuka. Variabel Nilai Deskripsi minLot_Size Double Value Ukuran lot minimum untuk memastikan bahwa ukuran lot tidak acak di bawah nilai ini. maxLot_Size Double Value Ukuran lot maksimum untuk memastikan bahwa ukuran lot tidak acak melebihi nilai ini. StopLoss Int Value Atur nilai stop loss Anda dalam poin/pips (unit pergerakan harga terkecil untuk aset Anda). Atur Stop Loss ke 0 untuk menonaktifkannya. TakeProfit Int Value Atur nilai take profit Anda dalam poin/pips. Atur Take Profit ke 0 untuk menonaktifkannya. Trailing_Start Int Value (Poin/Pips) Tentukan jumlah pips dari harga trade terbuka di mana trailing harus dimulai. Atur Trailing Start ke 0 untuk menonaktifkan operasi trailing. Trailing_Gap Int Value (Poin/Pips) Atur jarak dalam pips antara harga pasar saat ini dan trailing stop loss. Atur Trailing Gap ke 0 untuk menonaktifkan operasi trailing. Risk_In_Money_Type FixedMoney, BalancePercentage FixedMoney: Menutup semua trade terbuka ketika floating negatif mencapai jumlah yang Anda tentukan. BalancePercentage: Menghitung secara otomatis berdasarkan saldo akun Anda dan menutup semua trade ketika batas ini tercapai. Money_In_Risk Int Value Jika Risk_In_Money_Type diatur ke FixedMoney, masukkan jumlah uang yang dapat Anda rugikan. Jika diatur ke BalancePercentage, EA akan secara otomatis menghitung risiko berdasarkan saldo akun Anda dan menutup semua trade saat batas tersebut tercapai. Max_Spread Int Value (Poin/Pips) Menentukan spread maksimum yang dapat diterima. Jika spread saat ini melebihi nilai ini, EA tidak akan membuka trade dan akan menunggu hingga spread kembali dalam batas yang ditentukan. Slippage Int Value (Poin/Pips) Atur slippage maksimum yang diizinkan untuk eksekusi order. MaxOpenTrade Int Value Jumlah maksimum trade terbuka yang diizinkan Sukses selalu, Selamat Trading!

2025.03.23
RRS Chaotic EA: Robot Trading Unggul untuk MetaTrader 4
MetaTrader4
RRS Chaotic EA: Robot Trading Unggul untuk MetaTrader 4

Selamat datang, trader! Kali ini kita akan membahas RRS Chaotic EA, sebuah Expert Advisor yang dirancang khusus untuk platform MetaTrader 4. EA ini merupakan versi yang lebih sederhana dan ringkas dari RRS Randomness in Nature EA. Mungkin ada di antara kalian yang penasaran tentang bagaimana robot ini bekerja. Yuk, kita kupas tuntas! RRS Chaotic EA membuka posisi trading secara acak, dengan pasangan mata uang, ukuran lot, dan jenis order yang bervariasi. Menariknya, EA ini tidak bergantung pada keterampilan teknis seperti indikator, analisis harga, kalender berita, atau pola candlestick. Dengan EA ini, kamu bisa menikmati berbagai strategi trading, rencana manajemen risiko, dan pengaturan lainnya yang dapat disesuaikan sesuai kebutuhanmu. Meskipun berbasis pada prinsip acak, RRS Chaotic EA tetap berhasil meraih keuntungan yang baik dengan pengaturan yang tepat. Lalu, apa saja variabel yang perlu diperhatikan dalam EA ini? Variabel Nilai Deskripsi minLot_Size Nilai Ganda Ukuran lot minimum untuk memastikan bahwa ukuran lot yang diambil tidak kurang dari nilai ini. maxLot_Size Nilai Ganda Ukuran lot maksimum untuk memastikan bahwa ukuran lot yang diambil tidak melebihi nilai ini. StopLoss Nilai Int Atur nilai stop loss dalam poin/pips (unit terkecil pergerakan harga untuk asetmu). Setel Stop Loss ke 0 untuk menonaktifkannya. TakeProfit Nilai Int Atur nilai take profit dalam poin/pips. Setel Take Profit ke 0 untuk menonaktifkannya. Risk_In_Money_Type FixedMoney, BalancePercentage FixedMoney: Menutup semua posisi terbuka ketika kerugian mengambang mencapai jumlah yang ditentukan. BalancePercentage: Menghitung secara otomatis berdasarkan saldo akunmu dan menutup semua posisi ketika batas ini tercapai. Money_In_Risk Nilai Int Jika Risk_In_Money_Type diatur ke FixedMoney, masukkan jumlah uang yang bisa kamu rugikan. Jika diatur ke BalancePercentage, EA akan menghitung risiko secara otomatis berdasarkan saldo akun dan menutup semua posisi ketika batas tersebut tercapai. Max_Spread Nilai Int (Poin/Pips) Menetapkan spread maksimum yang dapat diterima. Jika spread saat ini melebihi nilai ini, EA tidak akan melakukan trading dan akan menunggu hingga spread kembali dalam batas yang ditentukan. Slippage Nilai Int (Poin/Pips) Atur slippage maksimum yang diizinkan untuk eksekusi order.  MaxOpenTrade  Nilai Int Jumlah maksimum posisi terbuka yang diperbolehkan Catatan: Jika kamu mengalami masalah atau kesalahan dalam operasi EA, hilangkan #property strict dari kode EA pada baris 8. Semoga sukses, dan selamat trading!

2025.03.19
RRS Randomness dalam Trading: EA Terbaik untuk MetaTrader 4
MetaTrader4
RRS Randomness dalam Trading: EA Terbaik untuk MetaTrader 4

Halo, trader! Hari ini kita akan membahas tentang EA yang benar-benar unik, yaitu RRS Randomness. EA ini mengambil pendekatan yang berbeda karena semuanya dilakukan secara acak. Mulai dari pemilihan pasangan mata uang, ukuran lot, hingga jenis order, semua dilakukan tanpa bergantung pada analisis teknis seperti indikator, aksi harga, kalender berita, atau pola candlestick. Meskipun sistem ini berbasis pada kebetulan, hasilnya cukup menarik dengan profit yang menjanjikan! Fitur Utama RRS Randomness Strategi Trading: Tersedia dua opsi, yaitu OneSide dan DoubleSide. OneSide: EA akan membuka satu posisi, entah itu Buy atau Sell. DoubleSide: EA akan membuka satu posisi Buy dan satu posisi Sell. Ukuran Lot: minLot_Size: Ukuran lot minimum untuk memastikan bahwa ukuran lot tetap acak dan tidak kurang dari nilai ini. maxLot_Size: Ukuran lot maksimum untuk memastikan bahwa ukuran lot tidak melebihi nilai ini. Manajemen Risiko: StopLoss: Tentukan nilai stop loss dalam poin/pips. Atur Stop Loss ke 0 untuk menonaktifkannya. TakeProfit: Tentukan nilai take profit dalam poin/pips. Atur Take Profit ke 0 untuk menonaktifkannya. Trailing Stop: Trailing_Start: Tentukan jarak dalam pips dari harga order yang dibuka untuk memulai trailing. Atur Trailing Start ke 0 untuk menonaktifkannya. Trailing_Gap: Atur jarak dalam pips antara harga pasar saat ini dan stop loss trailing. Atur Trailing Gap ke 0 untuk menonaktifkan operasi trailing. Pengaturan Risiko: Risk_In_Money_Type: Pilih antara FixedMoney atau BalancePercentage. FixedMoney: Menutup semua posisi terbuka ketika kerugian mengambang mencapai jumlah yang ditentukan. BalancePercentage: Menghitung secara otomatis berdasarkan saldo akun Anda dan menutup semua posisi setelah batas ini tercapai. Money_In_Risk: Tentukan jumlah uang yang bersedia Anda risikokan. Pengaturan Tambahan: Max_Spread: Menentukan spread maksimum yang dapat diterima. Jika spread saat ini melebihi nilai ini, EA tidak akan membuka posisi dan akan menunggu hingga spread kembali dalam batas yang ditentukan. Slippage: Atur slippage maksimum yang diizinkan untuk eksekusi order. Catatan: Jika Anda mengalami masalah atau kesalahan saat menjalankan EA, hapus #property strict dari kode EA pada baris 8. Selamat Trading dan Semoga Sukses!

2025.03.19
RRS Non-Directional EA: Solusi Trading Tanpa Arah untuk MetaTrader 4
MetaTrader4
RRS Non-Directional EA: Solusi Trading Tanpa Arah untuk MetaTrader 4

Halo trader! Kali ini kita akan membahas tentang RRS Non-Directional EA, sebuah alat yang sangat menarik untuk MetaTrader 4. EA ini bukanlah alat trading biasa, karena tidak bergantung pada analisis teknis seperti indikator, aksi harga, kalender berita, atau pola candlestick. Sebaliknya, EA ini menawarkan berbagai strategi trading, rencana manajemen risiko, dan pengaturan yang bisa disesuaikan sesuai kebutuhanmu. Walaupun EA ini bekerja dengan prinsip acak, ia tetap dapat menghasilkan profit jika kamu mengatur manajemen risiko dengan baik. Yuk, kita lihat lebih dalam tentang fitur-fitur yang ditawarkan! Variabel Nilai Deskripsi Strategi Trading Hedge_Style, BuySell_Random, Buy_Sell, Auto_Swap, Buy_Order, Sell_Order Hedge_Style: Membuka posisi Buy dan Sell secara bersamaan. BuySell_Random: Secara acak membuka posisi Buy atau Sell. Buy_Sell: Membuka posisi berdasarkan jenis order yang terakhir ditutup. Jika order terakhir adalah Buy, maka akan membuka Sell. Auto_Swap: Hanya membuka posisi Buy atau Sell berdasarkan arah swap positif, mengabaikan posisi swap negatif. Buy_Order: Hanya membuka posisi Buy. Sell_Order: Hanya membuka posisi Sell. New_Trade True/False True: EA dapat melakukan trading. False: EA tidak akan melakukan trading. Lot_Size Double Value Pilih ukuran lot yang kamu inginkan untuk setiap trading yang dilakukan oleh EA. StopLoss_Type Virtual_SL, Classic_SL Virtual SL: EA akan menutup trading saat level stop loss yang ditentukan tercapai, tetapi level stop loss tidak akan terlihat oleh server broker (hanya tampil di PC lokal). Classic SL: EA akan menempatkan stop loss yang terlihat di server broker. Fitur ini berguna jika broker kamu tidak mendukung EA yang sangat aktif, memiliki batasan kuota modifikasi per hari, atau jika kamu curiga broker melakukan hunt pada stop loss kamu. StopLoss Int Value Tentukan nilai stop loss kamu dalam poin/pips (unit pergerakan harga terkecil untuk aset kamu).Set Stop Loss ke 0 untuk menonaktifkannya. TakeProfit_Type Virtual_TP, Classic_TP Virtual TP: Level take profit tidak terlihat oleh server broker. Classic TP: Level take profit terlihat di server broker. TakeProfit Int Value Tentukan nilai take profit kamu dalam poin/pips. Set Take Profit ke 0 untuk menonaktifkannya. Trailing_Type Virtual_Trailing, Classic_Trailing Virtual Trailing: Modifikasi stop loss disimpan di PC lokal dan tidak terlihat di server broker. Classic Trailing: Modifikasi stop loss diperbarui langsung di server broker. Fitur ini bermanfaat jika broker kamu tidak mendukung EA yang sangat aktif, memiliki batasan kuota modifikasi per hari, atau jika kamu mencurigai broker melakukan hunt pada stop loss kamu. Trailing_Start Int Value (Points/Pips) Tentukan jumlah pips dari harga open trade di mana trailing harus dimulai. Trailing_Gap Int Value (Points/Pips) Tetapkan jarak dalam pips antara harga pasar saat ini dan trailing stop loss.Set Trailing Gap ke 0 untuk menonaktifkan operasi Trailing. Risk_In_Money_Type FixedMoney, BalancePercentage Fixed Money: Menutup semua trading yang terbuka ketika floating negatif mencapai jumlah yang ditentukan. Balance Percentage: Secara otomatis menghitung berdasarkan saldo akun kamu dan menutup semua trading ketika batas ini tercapai. Money_In_Risk  Int Value Jika Risk_In_Money_Type diatur ke FixedMoney, masukkan jumlah uang yang dapat kamu rugikan. Jika diatur ke BalancePercentage, EA akan secara otomatis menghitung risiko berdasarkan saldo akun kamu dan menutup semua trading ketika batas tersebut tercapai. Max_Spread Int Value (Points/Pips) Tetapkan spread maksimum yang dapat diterima. Jika spread saat ini melebihi nilai ini, EA tidak akan melakukan trading dan akan menunggu spread kembali dalam batas yang ditentukan. Slippage Int Value (Points/Pips) Tetapkan slippage maksimum yang diperbolehkan untuk eksekusi order. Catatan: Jika kamu mengalami gangguan atau kesalahan dalam operasi EA, hapus #property strict dari kode EA pada baris 6. Selamat Bertrading, Semoga Sukses!

2025.03.17
MeanReversionTrendEA: Robot Trading Cerdas untuk MetaTrader 5
MetaTrader5
MeanReversionTrendEA: Robot Trading Cerdas untuk MetaTrader 5

1. Gambaran UmumMeanReversionTrendEA adalah robot trading yang menggabungkan strategi mengikuti tren dan mean reversion dengan memanfaatkan Moving Averages serta pengukuran volatilitas berbasis ATR. Dengan sistem validasi perdagangan yang terintegrasi, EA ini menjamin eksekusi yang handal di berbagai kondisi pasar.2. Fitur UtamaDua Strategi: Menggabungkan strategi mengikuti tren (persilangan MA) dan mean reversion (deviasi harga terhadap MA).Sinyal Adaptif: Menggunakan moving averages cepat dan lambat untuk mengidentifikasi arah tren.Integrasi Volatilitas: Memanfaatkan ATR untuk mengukur volatilitas pasar saat melakukan entry mean reversion.Validator Terintegrasi: Sistem validasi perdagangan yang komprehensif memeriksa volume, margin, dan level stop.Mekanisme Keamanan: Fitur perdagangan aman untuk validasi backtest.Manajemen Posisi Defensif: SL/TP tetap atau proporsional dengan validasi yang tepat.Kompabilitas Multi-Aset: Bekerja dengan forex, komoditas, indeks, dan saham dengan ukuran lot yang tepat.3. Cara KerjaMemantau persilangan moving average untuk perubahan arah tren.Menilai deviasi harga dari MA lambat menggunakan pita volatilitas berbasis ATR.Memberikan sinyal beli saat MA cepat melintasi di atas MA lambat atau harga jatuh di bawah pita volatilitas.Memberikan sinyal jual saat MA cepat melintasi di bawah MA lambat atau harga naik di atas pita volatilitas.Memvalidasi dan mengeksekusi perdagangan dengan parameter manajemen risiko yang tepat.4. InputFast_MA_Period (20), Slow_MA_Period (50), ATR_Period (14)ATR_Multiplier (2.0) untuk perhitungan pita mean reversionLotSize (0.1) untuk penentuan ukuran posisiSL_Points (500), TP_Points (1000) untuk manajemen risikoMagic_Number (123456) untuk identifikasi order5. Catatan PenggunaanOptimal untuk semua pasangan mata uang utama dan instrumen likuid.Bekerja di semua timeframe, dengan H1-H4 disarankan untuk kualitas sinyal yang lebih baik.Memerlukan data historis yang cukup untuk perhitungan indikator yang tepat.Terbaik digunakan di pasar yang sedang tren dengan peluang reversion sesekali.Sistem validasi yang kuat memastikan eksekusi yang tepat di berbagai broker.6. Struktur KodeCTradeValidator: Kelas validasi perdagangan yang komprehensif.Fungsi inisialisasi indikator dan pemrosesan data.Generasi sinyal yang menggabungkan logika tren dan reversion.Eksekusi perdagangan dengan validasi dan manajemen risiko yang tepat.Mekanisme keamanan untuk integritas backtesting.7. Penafian Konten ini disediakan sebagaimana adanya untuk tujuan edukasi. Kinerja masa lalu tidak menjamin hasil di masa depan. Uji secara menyeluruh di akun demo sebelum melakukan trading live.

2025.03.14
Pantau Beberapa EA dengan Dashboard Profit dan Loss Live di MQL5 untuk MetaTrader 5
MetaTrader5
Pantau Beberapa EA dengan Dashboard Profit dan Loss Live di MQL5 untuk MetaTrader 5

Wawasan Strategi Individu Ketika satu akun digunakan untuk beberapa strategi, tantangan utama adalah memisahkan kinerja masing-masing strategi. Tanpa menggunakan nomor ajaib, kamu harus mengandalkan detail yang tidak jelas, seperti komentar perdagangan atau rentang tiket. Nomor ajaib memberikan label numerik sistematis yang diterapkan otomatis oleh EA. Pemantauan Kinerja yang Akurat Kamu dapat dengan cepat menentukan sistem mana yang mengalami drawdown atau mana yang berkinerja luar biasa. Pengetahuan ini mendukung pengambilan keputusan yang lebih cepat—misalnya, memutuskan untuk menghentikan robot yang berkinerja buruk atau mengalokasikan lebih banyak modal ke strategi yang berhasil. Analisis & Pencatatan yang Lebih Sederhana Alih-alih menyisir log atau tab riwayat, kamu memiliki satu “panel” ringkas yang mengagregasi total profit tertutup tiap EA, jumlah transaksi, dan kolom komentar yang relevan. Ini membantu dalam pencatatan, optimasi strategi, dan bahkan pelaporan kepada klien jika kamu mengelola akun untuk orang lain.Full Code Terlampir. Tips Penggunaan Lampirkan Skrip/EA ke grafik manapun di MT5. Setelah dikompilasi, akan segera muncul tabel dengan setiap nomor ajaib. Periksa Ukuran Grafik: Jika jendela grafikmu terlalu sempit, sebagian teks mungkin melampaui layar ke kanan. Perlebar grafik atau kurangi ukuran font untuk keterbacaan yang lebih baik. Cocokkan Font: Courier New disarankan untuk penyelarasan kolom, tapi kamu bisa mengubahnya di kode jika ingin tampilan yang berbeda. Sesuaikan Waktu: Secara default, skrip memperbarui setiap 5 detik. Modifikasi EventSetTimer(5) jika kamu ingin pembaruan yang lebih sering atau lebih jarang.

2025.02.25
Download Semua Riwayat Tick Simbol dengan EA untuk MetaTrader 5
MetaTrader5
Download Semua Riwayat Tick Simbol dengan EA untuk MetaTrader 5

Halo, trader! Kali ini kita akan membahas tentang cara mendownload semua riwayat tick dari simbol yang ada di MetaTrader 5 dengan menggunakan Expert Advisor (EA). Dengan EA ini, kamu bisa mengambil semua tick yang tersedia dari broker yang kamu gunakan, atau hingga tanggal tertentu yang kamu inginkan. Ini sangat berguna untuk melakukan backtest atau membuat grafik kustom dari tick yang sudah diambil. Pastikan juga kamu memiliki ruang penyimpanan yang cukup di hard drive, karena terminal akan menyimpan tick di folder data. Sebelum mulai mendownload simbol, kita perlu menyiapkan download manager terlebih dahulu. Struktur CDownloadManager akan berisi semua informasi yang kita butuhkan. struct CDownloadManager  {    bool    m_started,m_finished;    string    m_symbols[],m_current;    int    m_index;  } Status download (mulai/selesai) Daftar simbol yang akan dipindai Simbol saat ini Indeks simbol yang sedang dipindai Kita juga perlu membaca dan menulis ke hard drive. Karena kita bekerja dengan simbol, kita akan membuat dua fungsi cepat untuk menulis dan membaca string dari file biner. Fungsi untuk menyimpan string ke file: void writeStringToFile(int f,string thestring)  {    //menyimpan string simbol    char sysave[];    int charstotal=StringToCharArray(thestring,sysave,0,StringLen(thestring),CP_ACP);    FileWriteInteger(f,charstotal,INT_VALUE);    for(int i=0;i<charstotal;i++)     {      FileWriteInteger(f,sysave[i],CHAR_VALUE);     }  } Fungsi ini menerima: Handle file f, dari file yang dibuka untuk menulis dengan bendera biner FILE_WRITE|FILE_BIN String yang akan ditulis ke file Fungsi ini menulis integer yang menunjukkan berapa banyak karakter yang ada dalam string dan kemudian menyimpan setiap karakter dalam string tersebut. Fungsi untuk memuat string dari file: string readStringFromFile(int f)  {    string result="";    //memuat string simbol    char syload[];    int charstotal=(int)FileReadInteger(f,INT_VALUE);    if(charstotal>0)       {        ArrayResize(syload,charstotal,0);        for(int i=0;i<charstotal;i++)        {          syload[i]=(char)FileReadInteger(f,CHAR_VALUE);        }      result=CharArrayToString(syload,0,charstotal,CP_ACP);     }    return(result);  } Fungsi ini menerima: Handle file f dari file yang dibuka untuk membaca sebagai biner, dengan bendera FILE_READ|FILE_BIN Fungsi ini membaca integer yang menunjukkan berapa banyak karakter yang diharapkan pada titik tersebut dalam file. Kemudian, ia melanjutkan untuk membaca setiap karakter ke dalam array char dan kemudian membuat string dari array char tersebut yang dikembalikan sebagai hasil pemuatan. Kembali ke struktur CDownloadManager. Kita perlu cara untuk menginisialisasi manager dan mengisinya dari market watch:    //+------------------------------------------------------------------+   //| Mengambil simbol dari market watch |   //+------------------------------------------------------------------+   void    grab_symbols()     {      //! hanya dari mw !      int s=SymbolsTotal(true);      ArrayResize(m_symbols,s,0);      for(int i=0;i<ArraySize(m_symbols);i++)        {          m_symbols[i]=SymbolName(i,true);        }     } Cukup sederhana: Meminta berapa banyak simbol yang ada di market watch (aktif) Mengubah ukuran array m_symbols untuk menerima simbol-simbol tersebut Melakukan loop untuk semua simbol dan meminta nama simbolnya Kita juga bertanggung jawab untuk mengelola proses download data simbol, jadi kita memerlukan fungsi yang pada dasarnya adalah manajernya:    //+------------------------------------------------------------------+   //| Mengelola proses download simbol |   //+------------------------------------------------------------------+   void    manage(string folder,string filename)     {      // pada dasarnya ini memulai atau navigasi ke simbol berikutnya      // jika sudah diatur      if(ArraySize(m_symbols)>0)        {        // jika belum dimulai           if(!m_started)           {            m_started=true;            // pergi ke simbol pertama            m_current=m_symbols[0];            m_index=1;            save(folder,filename);            if(_Symbol!=m_current)              {                ChartSetSymbolPeriod(ChartID(),m_current,_Period);              }            else              {                ENUM_TIMEFRAMES new_period=PERIOD_M1;                for(int p=0;p<ArraySize(TFS);p++)                 {                  if(_Period!=TFS[p])                    {                    new_period=TFS[p];                    break;                    }                    }                ChartSetSymbolPeriod(ChartID(),m_current,new_period);              }            return;         }         // jika sudah dimulai        else           {            m_index++;            if(m_index<=ArraySize(m_symbols))              {                m_current=m_symbols[m_index-1];                save(folder,filename);                if(_Symbol!=m_current)                 {                  ChartSetSymbolPeriod(ChartID(),m_current,_Period);                 }                return;              }            else              {                m_finished=true;                FileDelete(folder+"\"+filename);                Print("Selesai");                ExpertRemove();                return;              }         }      else        {         Print("Silakan ambil simbol terlebih dahulu");        }      // jika sudah diatur berakhir di sini     } Bagaimana sistem ini bekerja: Chart terbuka, kita memerlukan 1 chart, dan timer diatur. Timer tersebut dieksekusi, kita batalkan timer Kita memeriksa apakah ini adalah download baru atau download yang berlanjut Jika ini adalah download baru, kita siapkan dengan mengambil semua simbol Jika ini adalah download yang berlanjut, kita download data untuk simbol saat ini Ini adalah bagian dari kode yang melakukan download berdasarkan timer: //+------------------------------------------------------------------+//|Timer |//+------------------------------------------------------------------+void OnTimer()  {    //--- jika disinkronkan    if(SymbolIsSynchronized(_Symbol)&&TerminalInfoInteger(TERMINAL_CONNECTED)==1)       {        EventKillTimer();        //--- memuat sistem di sini        if(MANAGER.load(MANAGER_FOLDER,MANAGER_STATUS_FILE))          {            //--- sistem dimuat jadi kita memindai simbol di sini            Comment("Sistem dimuat dan kita sedang memproses "+MANAGER.m_current);            //--- pemuatan tick            //--- temukan tick tertua yang tersedia di broker terlebih dahulu            int attempts=0;            int ping=-1;            datetime cursor=flatten(TimeTradeServer());            long cursorMSC=((long)cursor)*1000;            long jump=2592000000;//60*60*24*30*1000;            MqlTick receiver[];            long oldest=LONG_MAX;            Comment("Silakan tunggu");            while(attempts<5)            {              ping=CopyTicks(_Symbol,receiver,COPY_TICKS_ALL,cursorMSC,1);              if(ping==1)              {                 if(receiver[0].time_msc==oldest)                  {                    attempts++;                 }                 else                 {                  attempts=0;                 }                 if(receiver[0].time_msc<oldest)                 {                  oldest=receiver[0].time_msc;                 }              cursorMSC-=jump;              if(limitDate&&receiver[0].time<=oldestLimit)                 {                  break;                 }              }            else              {               attempts++;              }            Sleep(44);            Comment("Tick Tertua : "+TimeToString((datetime)(oldest/1000),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+"\nCursor("+TimeToString((datetime)(cursorMSC/1000),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+")\nAttempts("+IntegerToString(attempts)+")\nSilakan tunggu untuk respon...");         }        //--- pada titik ini kita memiliki tick tertua        //--- mulai meminta tick dari yang tertua ke yang terbaru        if(oldest!=LONG_MAX)           {            ArrayFree(receiver);            datetime newest_tick=0;            //--- terima waktu tick terakhir untuk simbol ini yang disimpan dalam symbol_time            datetime most_recent_candle=(datetime)SymbolInfoInteger(_Symbol,SYMBOL_TIME);            while(newest_tick<most_recent_candle)              {               //--- meminta batch baru mulai dari waktu tertua dengan batas tick yang ditentukan               int pulled=CopyTicks(_Symbol,receiver,COPY_TICKS_ALL,oldest,tick_packets);               if(pulled>0)                 {                  //--- jika kita menarik batch baru, perbarui waktu yang diunduh                newest_tick=receiver[pulled-1].time;                oldest=receiver[pulled-1].time_msc;                ArrayFree(receiver);                 }                 //--- batas waktu untuk permintaan server, ubah jika perlu               Sleep(44);               Comment("Ditarik hingga "+TimeToString(newest_tick,TIME_DATE|TIME_MINUTES|TIME_SECONDS)+" sejauh ini");              }      }        else           {            Alert("Silakan tutup terminal pergi ke folder ticks dan hapus folder kosong");            ExpertRemove();           }        //--- perbarui manager dan lanjutkan         MANAGER.manage(MANAGER_FOLDER,MANAGER_STATUS_FILE);      }    else      {        //--- ambil simbol dari market watch untuk mulai download         Comment("Mengambil MW dan memulai");         MANAGER.grab_symbols();         MANAGER.manage(MANAGER_FOLDER,MANAGER_STATUS_FILE);      }  }

2025.02.22
Awal Sebelumnya 1 2 3 4 5 6 7 8 9 Berikutnya Akhir