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?

Simulasi buatan tanpa transaksi. Tetapkan sinyal numerik positif 1.1050 dan ambang 1.1040. Kondisinya “sinyal lebih besar dari ambang”. Bandingkan angka eksplisit dengan pembacaan objek yang ditandai tidak tersedia. Ini bukan kuotasi MT5 atau log eksekusi; nilainya dipilih untuk menjelaskan aliran data.

Input tidak tersedia bukan harga nol

Input tidak tersedia bukan harga nolSimulasi buatan: sinyal 1.1050 melampaui ambang 1.1040. Pembacaan objek tidak tersedia menjadi null pada model dan kondisinya tidak dievaluasi. Ini tidak menyatakan fungsi MT5 mengembalikan null.Angka eksplisit1.1050Ambang: 1.1040Objek tak tersedianullTidak ada nilaiHasil modeltrue / unknownTidak kirim orderPeriksa nilai dan ketersediaan secara terpisah.Model buatan — nilai hipotetis.forex-basics.com/id/
Input tidak tersedia berbeda dari nol. Model buatan membandingkan angka eksplisit 1.1050 dengan ambang 1.1040. Jalur objek yang tidak tersedia mempertahankan null dan tidak dievaluasi. Hasil true/unknown bukan order; kartu menunjukkan jalur skematis, bukan grafik harga atau bukti perilaku EA tertentu.

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.

Satu ambang, jenis input berbeda
JalurInputEvaluasi
Sinyal angka eksplisit1.10501.1050 > 1.1040: true pada model.
Objek tidak tersedianull: tidak ada nilaiKondisi tidak dievaluasi.
Substitusi keliru0 menggantikan tidak ada nilai0 > 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.

Ini menyimulasikan aturan contoh, bukan pengujian EA di MT5. Gunakan bilangan positif dengan titik desimal, 10⁻⁸–10⁸, hingga 15 digit. Data objek yang tidak tersedia menjadi null pada model; versi keliru terpisah menggantinya dengan nol. Hasil tidak menetapkan penyebab kegagalan EA Anda.

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

  1. 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.
  2. 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.
  3. 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.