Dalam artikel ini
Setelah membaca artikel ini…
- Membedakan pembatasan objek platform dari semantik null dalam model pendidikan.
- Mencatat mode serta build tanpa mengirim transaksi dan mempertahankan alur inisialisasi.
- Mencari perbedaan input atau perhitungan pertama dalam dua run yang terdokumentasi.
Pelajari istilah tanpa meninggalkan artikel
Expert Advisor (EA) Backtesting (uji data historis)EA yang hanya berfungsi pada pengujian visual MT5 perlu diperiksa apakah keputusannya bergantung pada data atau sesuatu yang digambar di grafik. Objek grafis sebaiknya tidak menggantikan nilai sinyal yang eksplisit. Bandingkan mode, versi, data dan perbedaan pertama dalam log sebelum mengubah strategi. Contoh di sini tidak menjalankan MT5: model buatan memisahkan angka dari pembacaan yang tidak tersedia. Input hilang tetap tidak diketahui dan tidak ada order yang dikirim.
Apa yang berbeda pada mode visual?
Dokumentasi tester MQL5 menyatakan objek grafis tidak digambar di luar pengujian visual; permintaan properti objek yang dibuat selama pengujian/optimasi menerima nilai nol. Batasan itu tidak berlaku pada mode visual. Ini perilaku yang didokumentasikan platform, bukan eksperimen yang dilakukan terhadap EA Anda dan bukan penjelasan universal untuk semua perbedaan hasil.
Bila EA membaca harga garis atau keadaan tombol sebagai input, catat tahap itu terpisah dari indikator atau data harga. Tentukan dahulu apakah nilai tersedia pada mode tersebut. Status tidak tersedia yang eksplisit memungkinkan diagnosis berhenti sebelum perhitungan, tanpa menerima nol teknis sebagai harga. Grafik terlihat juga tidak membuktikan seluruh input strategi sudah siap.
Bagaimana memisahkan sinyal angka dari objek grafik?
Input tidak tersedia bukan harga nol
Periksa nilai dan status ketersediaan secara terpisah; jangan menyamarkan input hilang sebagai false.
Pada layar kecil, gulir diagram mendatar atau perbesar. Nilai dan kesimpulan juga tersedia dalam teks di bawah.
| Jalur | Input | Evaluasi |
|---|---|---|
| Sinyal angka eksplisit | 1.1050 | 1.1050 > 1.1040: true pada model. |
| Objek tidak tersedia | null: tidak ada nilai | Kondisi tidak dievaluasi. |
| Substitusi keliru | 0 menggantikan tidak ada nilai | 0 > 1.1040: tampak seperti hasil false biasa. |
Baris terakhir menunjukkan versi perbandingan yang keliru. Jalur dengan penjagaan input mempertahankan pembacaan hilang sebagai null; versi lain memperlihatkan akibat menggantinya dengan nol. Nol adalah angka, sedangkan null menyatakan tidak ada input pada model ini. Pada kondisi terbalik, “sinyal lebih kecil dari ambang”, nol pengganti bahkan dapat tampak memenuhi syarat. Jangan memperbaiki program dengan nilai cadangan sembarang.
Pisahkan data dari objek grafik
Contoh pendidikan ini berjalan lokal di browser: tidak terhubung ke akun atau API, tidak mengirim input Anda dan tidak menyimpannya secara persisten. Jangan masukkan kata sandi atau data pribadi.
Alat menerima dua nilai positif berhingga. Angka eksplisit dapat dievaluasi, sedangkan jalur objek tidak tersedia tetap tanpa hasil perbandingan. Halaman tidak membaca grafik, tidak melakukan pengujian platform dan tidak menghasilkan sinyal investasi. Tujuannya membedakan kondisi false dari kondisi yang belum dapat dinilai.
Bagaimana mencatat mode program tanpa trading?
Flag MQL5 MQL_TESTER, MQL_VISUAL_MODE dan MQL_OPTIMIZATION menggambarkan lingkungan program. TERMINAL_BUILD menunjukkan nomor build terminal. Catat pembacaan aktual, tanpa menebak mode tester dari tampilan jendela. Catatan flag sendiri tidak membuktikan data atau parameter sama.
EA diagnostik kecil yang berdiri sendiri berikut mencatat konfigurasi pada OnInit dan mempunyai OnTick kosong. Ia tidak mengirim atau mengubah order. Dokumentasi OnInit menjelaskan signature inisialisasi; PrintFormat menjelaskan format output. Simpan sebagai file MQ5 terpisah, kompilasi di MetaEditor dan pertahankan hasil serta log aktual terminal Anda.
#property strict
int OnInit()
{
PrintFormat("tester=%d visual=%d optimization=%d build=%d symbol=%s period=%d",
(int)MQLInfoInteger(MQL_TESTER),
(int)MQLInfoInteger(MQL_VISUAL_MODE),
(int)MQLInfoInteger(MQL_OPTIMIZATION),
(int)TerminalInfoInteger(TERMINAL_BUILD),
_Symbol, (int)_Period);
return INIT_SUCCEEDED;
}
void OnTick() {}
Jangan membuat OnInit kedua dalam EA yang sudah ada atau mengganti inisialisasinya dengan cuplikan ini. Penambahan logging harus mempertahankan alur program. Dokumentasi tester memberikan pengecualian OnInit terhadap pembatasan PrintFormat selama optimasi. Tidak munculnya output dari tahap lain tidak membuktikan tahap itu tidak pernah dijalankan. Cuplikan tidak menyertakan hasil kompilasi atau log run.
Bagaimana mencari perbedaan pertama, bukan hanya profit?
Siapkan catatan sepasang run: mode visual/nonvisual, versi terminal dan kode, parameter, simbol serta timeframe, model generasi tick, awal yang diminta dan aktual, snapshot data, biaya dan keadaan awal. Simpan file pengaturan serta identitas versi. Bila deklarasi berbeda, jangan mengaitkan seluruh perubahan dengan jendela grafik. Pembanding catatan dua backtest membantu menyusun pemeriksaan itu.
Cari tahap paling awal ketika nilai satu jalur berbeda: keberhasilan pengambilan, timestamp data, kesiapan indikator, sinyal, kondisi atau keputusan. Catatan “profit 120 dibanding 80” tidak mengidentifikasi tahap tersebut. Simpan log asli dan buat tabel perbandingan kecil di sampingnya. Jangan mengarang nilai yang dahulu tidak dicatat program.
Catatan diagnostik perlu cukup ringkas agar peristiwa kedua run dapat dicocokkan. Mencatat semuanya tanpa identitas stabil dapat menyamarkan perbedaan pertama. Catat input yang diminta, timestamp atau posisi urutannya serta apakah program menerimanya. Tambahkan ID observasi; kecocokan dua urutan tidak perlu bergantung pada tebakan apakah harga mirip berasal dari tahap yang sama. Ini pilihan desain catatan, bukan jaminan log otomatis menemukan seluruh ketergantungan.
Apa yang perlu berubah dalam rancangan sinyal?
Perhitungan sebaiknya menghasilkan nilai eksplisit beserta status ketersediaan; lapisan grafis dapat menampilkannya. Mematikan gambar kemudian tidak harus mengubah sumber input dengan sengaja. Uji modul yang sama pada beberapa input terkendali, termasuk data tidak tersedia dan nilai tepat sama dengan ambang. Pada model ketat >, nilai sama menghasilkan false, sedangkan input tidak tersedia tetap tidak dievaluasi.
Pemisahan tersebut mengatasi satu ketergantungan, tanpa menjamin seluruh hasil tester akan sama. Versi, snapshot data, biaya dan dependensi kode lainnya tetap relevan. Bila tidak memiliki kode sumber, kirim catatan pasangan run dan perbedaan pertama yang terdokumentasi kepada pembuat EA. Jangan mengganti diagnosis dengan rangkaian percobaan order live. Panduan backtesting MT4 dan MT5 menjelaskan persiapan pengujian umum.
Tiga langkah pemeriksaan berikutnya
- Lengkapi catatan pasangan mode. Simpan versi kode/terminal, input, data dan rentang satu pasang run. Tandai bagian belum terkonfirmasi. File EA sama tidak membuktikan seluruh pengaturan atau data identik.
- Pisahkan tidak ada nilai dari nol. Gunakan model dengan sinyal 1.1050 dan ambang 1.1040, lalu samakan kedua nilai. Pastikan objek tidak tersedia tetap null terlepas dari hasil perbandingan angka eksplisit. Latihan ini tidak memerlukan akun trading.
- Catat tahap pertama yang berbeda. Pada konfigurasi demo atau tester terpisah, kumpulkan entri diagnostik tanpa transaksi dan bandingkan urutannya. Tentukan apakah input, ketersediaan atau kondisi berubah. Catatan diagnostik tidak membuktikan profitabilitas atau menjadi rekomendasi investasi.
Periksa pemahaman Anda
Latihan: sekitar 3 menit.
Lihat jawaban dan penjelasan
Benar. Itulah semantik eksplisit model, bukan klaim bahwa fungsi objek MT5 mengembalikan null.
Pertanyaan lain
Apakah null pada model berarti fungsi objek MT5 mengembalikan null?
Apakah hasil true membuktikan EA akan membuka transaksi?
Apakah menghapus objek grafis menjamin hasil tester sama?
Apakah logger kecil ini strategi siap trading?
Sumber dan verifikasi
- MetaQuotes — Testing Trading Strategies
Pembatasan objek grafis serta pengecualian OnInit untuk PrintFormat saat optimasi.
- MetaQuotes — Running MQL5 Program Properties
Flag MQL_TESTER, MQL_VISUAL_MODE dan MQL_OPTIMIZATION.
- MetaQuotes — Client Terminal Properties
TERMINAL_BUILD menunjukkan nomor build terminal.
- MetaQuotes — OnInit
Signature int OnInit serta INIT_SUCCEEDED, bukan hasil run cuplikan ini.
- MetaQuotes — PrintFormat
Urutan, jenis dan format parameter output; baca pengecualian OnInit pada dokumentasi tester.
Perhitungan menggunakan asumsi yang dinyatakan secara terbuka. Perhitungan ini tidak menggantikan data pasar terkini atau ketentuan penyedia.
