Dalam artikel ini
Setelah membaca artikel ini…
- Menentukan nilai bar terakhir selesai dalam array CopyBuffer biasa yang dinyatakan.
- Memisahkan keberhasilan penyalinan dari pemilihan indeks serta kesiapan nilai.
- Merekonsiliasi deal terkonfirmasi tanpa menyamakan penghapusan order dengan eksposur nol.
Pelajari istilah tanpa meninggalkan artikel
Backtesting (uji data historis) Rencana trading Akun demo Drawdown Stop loss Requote (kuotasi ulang)Expert Advisor MQL5 adalah program berbasis event dalam MetaTrader 5. Program dapat mengevaluasi aturan serta mengirim permintaan transaksi jika izin yang diperlukan aktif. Pemrosesan event, izin dan respons server berbeda dari eksekusi berhasil. Menempelkan program ke grafik belum membuktikan hasil trading apa pun.
Apa sebenarnya Expert Advisor dalam MQL5?
MetaEditor mengompilasi sumber MQ5 menjadi berkas EX5 yang dapat dijalankan. Berkas hasil kompilasi dapat dibagikan tanpa sumbernya; mempelajari MQL5 tidak membuka algoritme tersembunyi dalam EX5 yang dibeli. EA dapat mengirim permintaan transaksi yang diizinkan. Indikator dapat menghitung atau memberi notifikasi, tetapi mempunyai event berbeda dan larangan fungsi transaksi; menyebut indikator hanya menggambar juga terlalu sempit.
EA MQL5 memakai lingkungan MT5. Istilah Expert Advisor juga dipakai di MT4 dengan bahasa dan antarmuka sendiri. Sistem otomasi lain dapat memakai antarmuka order berbeda. Bandingkan EA MT4 dan MT5 serta langkah pertama trading algoritmik.
Indeks nol belum tentu bar terakhir yang selesai
Asumsikan CopyBuffer berhasil dengan start_pos=1 dan count=3 ke array biasa tanpa AS_SERIES. Tiga nilai bar selesai dipilih; yang tertua berada di awal memori fisik. Dalam konfigurasi ini, nilai terakhir yang selesai berada pada indeks 2.
Geser mendatar untuk melihat diagram lengkap →
Nilai indikator rekaan 103, 101, 102; fungsi mengembalikan tepat 3 elemen, tanpa hasil parsial atau kesalahan. Array biasa tanpa AS_SERIES. Ambang 102,5 menguji pemilihan data, bukan sinyal trading. MQL5 — CopyBuffer menghitung start_pos dari bar berjalan dan menempatkan elemen tertua di awal memori fisik.
Simpan start_pos, jumlah elemen yang benar-benar dikembalikan dan arah indeks array tujuan dalam uji EA. Jumlah salinan lengkap belum membuktikan nilai yang benar dipilih. Indeks 2 di sini tidak berlaku universal pada konfigurasi array lain.
Event OnInit, OnTick dan OnDeinit
OnInit menangani inisialisasi program. Itu event siklus hidup, bukan jaminan fungsi hanya dipanggil satu kali selama seluruh penggunaan. Periksa sumber daya dan kembalikan status gagal jika persiapan yang diperlukan tidak dapat diselesaikan.
OnTick menangani NewTick untuk simbol grafik tempat EA dipasang. Jika NewTick sudah antre atau sedang diproses, event baru sejenis tidak ditambahkan ke antrean. EA juga dapat memakai event lain dan tidak wajib memiliki OnTick. Mematikan AutoTrading melarang permintaan transaksi EA, tetapi tidak menghentikan program atau memotong handler yang sedang berjalan.
OnDeinit menangani penghentian beserta alasannya: penghapusan program, terminal ditutup atau perubahan yang memicu inisialisasi ulang. Kelola sumber daya dan penyimpanan status secara eksplisit. OnTimer dan OnTradeTransaction dapat penting; siklus tidak terbatas pada tiga callback. Tick pada grafik terpasang tidak membuktikan pengamatan simbol lain dalam EA multisimbol sudah mutakhir.
Permintaan order dan kelas CTrade
OrderSend mengirim permintaan. Nilai true tidak dengan sendirinya memastikan operasi pasar sudah terisi. Periksa kode respons, lalu rekonsiliasi order, deal dan posisi. OrderCheck adalah pemeriksaan awal, bukan jaminan eksekusi berikutnya. Dalam uji kegagalan hipotetis, EA meminta buy 0,10 lot lalu kehilangan kepastian respons. Mengulang tanpa rekonsiliasi dapat menghasilkan 0,20 lot bila kedua permintaan terisi. Tidak adanya konfirmasi lokal bukan bukti server tidak melakukan apa-apa.
OnTradeTransaction membedakan penghapusan order dari penambahan deal ke riwayat; prioritas kedatangan notifikasi tidak dijamin. Asumsikan awal tanpa posisi dan dua fill buy dikonfirmasi: D1=0,04 lot, D2=0,06 lot. Penghitung cacat yang mereset pada ORDER_DELETE membaca nol sesudah urutan D1, D2, ORDER_DELETE, tetapi 0,10 setelah ORDER_DELETE, D1, D2. Jumlah buy dikonfirmasi tetap 0,10 pada kedua urutan.
Status order dan eksposur posisi adalah bidang berbeda. Buku transaksi nyata juga perlu menangani sell, pembalikan, koreksi riwayat serta mode pencatatan akun. CTrade menyediakan Buy, Sell dan PositionClose. Pemeriksaan metode Buy berhasil belum selalu berarti transaksi berhasil; periksa ResultRetcode dan ResultDeal. Lihat slippage untuk perbedaan harga eksekusi.
Deduplicasi log membantu rekonstruksi; tidak menjamin pengulangan permintaan order aman atau idempoten di server.
Pada layar kecil, gulir diagram mendatar atau perbesar. Nilai dan kesimpulan juga tersedia dalam teks di bawah.
- Baris impor
- D1 0,04; D1 0,04; D2 0,06 lot – Jumlah baris mentah 0,14 lot menghitung D1 dua kali.
- Deal unik yang direkonsiliasi
- D1 0,04 + D2 0,06 = 0,10 lot – ID deal sama dan isi sama dikenali sebagai pemutaran ulang.
- ID sama tetapi isi berbeda
- Tandai konflik – Jangan memilih satu volume diam-diam; rekonsiliasi dengan catatan otoritatif.
Contoh tambahan khusus rekonstruksi log, bukan klaim MT5 mengirim duplikat: proses impor kita memutar ulang catatan D1 yang sama dua kali, lalu D2. Penjumlahan baris mentah memberi 0,04+0,04+0,06=0,14 lot. Setelah duplikat identik dikenali melalui ID deal, dua deal unik berjumlah 0,10 lot. Jika ID yang sama memiliki volume berbeda, tandai konflik untuk direkonsiliasi; jangan diam-diam memilih salah satunya. ID membantu pencatatan, tetapi tidak membuat permintaan order otomatis idempoten di server.
Strategy Tester dan pemisahan evaluasi
Strategy Tester MT5 menjalankan kajian historis memakai tick hasil pembangkitan atau tick nyata yang dikumpulkan broker, sesuai mode serta ketersediaan data. Simpan asal data, waktu, spesifikasi kontrak dan biaya. Jangan menganggap tick nyata berasal dari satu sumber harga MetaQuotes yang universal.
Memilih parameter pada riwayat yang sama dengan evaluasi dapat melebihkan bukti. Itu tidak menjamin secara matematis kurva akan mulus atau hasil live akan gagal. Pertahankan periode evaluasi yang belum dipakai, serta dokumentasikan pilihan riset berulang. Pelajari backtesting dengan kontrak, biaya dan waktu yang konsisten.
Kapan otomasi membantu dan kapan perlu pengawasan?
EA dapat menjalankan pemeriksaan berulang serta memantau instrumen terpilih. Dua ratus transaksi sebulan, operasi malam atau keputusan cepat adalah kemungkinan kebutuhan rancangan, bukan bukti keunggulan menguntungkan.
Nyatakan informasi serta kondisi event yang dipakai, termasuk larangan transaksi. Rilis tidak biasa atau kondisi pasar baru memerlukan tes serta pengawasan, tetapi tidak otomatis mendiskualifikasi seluruh otomasi. Grafik marketplace atau survei forum tanpa identitas tidak cukup untuk memperkirakan performa live masa depan.
Menulis EA sendiri dan menjaga kelangsungan operasi
Proyek kecil dapat menguji apakah aturan presisi diterapkan dengan benar. Tentukan anggaran belajar dari keterampilan serta cakupan yang diperlukan. Tiga sampai enam bulan belajar atau membangun sendiri alih-alih membeli tidak menjamin hasil lebih baik.
Operasi tanpa pengawasan langsung membutuhkan infrastruktur, izin serta prosedur pemulihan. AutoTrading lokal melarang permintaan transaksi EA; itu tidak menutup posisi atau menghentikan perhitungan. Stop biasa yang sudah diterima server dapat tetap aktif sesudah terminal lokal ditutup, sedangkan exit khusus EA memerlukan program berjalan dan mencapai server.
MetaQuotes Virtual Hosting adalah lingkungan hasil migrasi terpisah dengan otomasi diizinkan. Tombol lokal tidak menghentikan instans jarak jauh tersebut. Windows VPS adalah layanan berbeda. Tinjau VPS dan latensi menurut kebutuhan aktual, bukan harga atau jaminan kecepatan universal.
Tetapkan kriteria penerimaan untuk data indikator hilang, restart, langkah volume tidak valid, respons permintaan tidak pasti dan perubahan posisi manual. Pulihkan informasi eksposur saat ini sebelum melanjutkan; jangan mempercayai sinyal lokal lama. Akun netting menggabungkan strategi pada simbol yang sama dalam posisi netonya. Magic Number tidak menciptakan modal atau margin terpisah.
Handle sudah ada: apakah nilai indikator siap?
Handle terbentuk belum membuktikan indikator sudah menghitung bar yang diperlukan. BarsCalculated mengembalikan jumlah data terhitung atau −1 ketika gagal. Lalu periksa jumlah aktual hasil CopyBuffer, buffer yang benar dan offset bar. Jangan mengubah pembacaan gagal menjadi nol: RSI nol merupakan nilai ekstrem, bukan “informasi belum siap”.
Handle sudah ada: apakah nilainya siap?
Model kita memerlukan satu nilai: A handle tidak valid, sehingga tidak ada pembacaan; B handle ada tetapi 0 nilai disalin, tunggu; C satu nilai disalin tetapi EMPTY_VALUE, belum ada nilai yang dapat dipakai; D satu nilai valid 45 disalin, aturan baru dapat dievaluasi. Angka 45 adalah pembacaan rekaan, bukan sinyal investasi.
EMPTY_VALUE secara bawaan sama dengan DBL_MAX, angka berhingga. Pemeriksaan berhingga saja tidak cukup. Indikator khusus dapat menetapkan penanda kosong lain. Periksa kontraknya, bukan menolak setiap nol. Riwayat hilang, penanda kosong dan angka valid adalah keadaan berbeda.
Latihan: handle ada dan satu nilai disalin, tetapi nilainya EMPTY_VALUE. Apa berikutnya?
Jangan mengevaluasi ambang strategi. Periksa buffer, bar serta penanda kosong, catat data belum tersedia dan coba kembali pada event yang sesuai. Jangan mengarang observasi nol.
Data API memerlukan pemeriksaan ketersediaan terpisah: pemutaran ulang informasi dalam tes offline. Aturan bergantung grafik memiliki keterbatasan berbeda: perbedaan tes visual.
Langkah belajar berikutnya
- Unduh MT5 dari situs broker, buka akun demo dan Strategy Tester. Jalankan satu pass EA sampel Moving Average atau MACD Sample pada EUR/USD H1. Baca laporan untuk memahami kurva equity, drawdown dan profit factor, tanpa menyamakannya dengan bukti keunggulan.
- Baca dokumentasi OnInit, OnTick serta CTrade untuk mengenali susunan dokumentasi dan lokasi contoh; belum perlu menulis kode.
- Tulis masukan, entri, exit, ukuran serta kondisi tidak trading. Tandai keputusan diskresioner; aturan kontekstual dapat diformalkan jika masukan dan kondisinya dinyatakan. Gunakan checklist setup.
- Rencanakan proyek kecil dengan kriteria penerimaan akses data, pemrosesan event serta respons order. Cakupan dan durasinya bergantung pada fungsi serta keterampilan yang diperlukan.
- Periksa alur operasi di demo sebelum mempertimbangkan risiko live. Periode satu bulan hanya ilustrasi; eksekusi demo dapat berbeda. Tester dapat meniru penundaan, tetapi penundaan simulasi tidak mengukur seluruh fill nyata masa depan.
Periksa pemahaman Anda
Latihan: sekitar 2 menit.
Lihat jawaban dan penjelasan
Benar. Awal memori fisik memuat elemen tertua, sehingga indeks akhir 2 memuat shift 1 dalam array biasa ini.
Pertanyaan lain
Apa beda EA MQL5 dari robot Python?
Apakah harus bisa memprogram untuk menjalankan EA?
Mengapa tester bagus tetapi live rugi?
Apakah EA selalu memerlukan VPS?
Sumber dan verifikasi
- MQL5 — CopyBuffer
start_pos, jumlah hasil dan elemen tertua di awal memori fisik.
- MQL5 — OnTick
Antrean NewTick, simbol grafik dan AutoTrading tidak menghentikan handler.
- MQL5 — OnTradeTransaction
Jenis order/deal serta prioritas kedatangan notifikasi tidak dijamin.
- MQL5 — CTrade Buy
Keberhasilan pemeriksaan metode tidak selalu berarti operasi berhasil; periksa respons server.
- MQL5 — BarsCalculated
Jumlah data terhitung atau −1; keberadaan handle bukan bukti nilai siap.
- MQL5 — Other Constants
EMPTY_VALUE bawaan DBL_MAX serta penanda kosong indikator khusus.
- MetaTrader 5 — Migration
Lingkungan migrasi terpisah dan otomatisasi diizinkan pada platform virtual.
Perhitungan menggunakan asumsi yang dinyatakan secara terbuka. Perhitungan ini tidak menggantikan data pasar terkini atau ketentuan penyedia.
