Dalam artikel ini
Setelah membaca artikel ini…
- Pisahkan ketersediaan fungsi API dari kualitas arsip data.
- Pilih versi yang diketahui saat keputusan serta bedakan null dari nol.
- Periksa batas waktu dan timestamp ambigu tanpa mengubah kontrak data atau menebak jam rilis.
Pelajari istilah tanpa meninggalkan artikel
Backtesting (uji data historis) Expert Advisor (EA) Kalender EkonomiEA dapat mengunduh data API pada demo tetapi tidak menerima respons setara dalam tester. Itu belum tentu berarti server mati. Periksa ketersediaan fungsi dalam lingkungan pengujian sebelum menilai arsip datanya. Mengambil nilai hari ini lalu memasukkannya ke keputusan masa lalu menghasilkan pengujian berbeda. Model berikut memutar ulang versi yang dinyatakan, membedakan revisi dari data tidak tersedia, dan tidak membuat koneksi API eksternal.
Mengapa WebRequest yang berjalan belum cukup untuk backtest?
Dokumentasi MQL5 menyatakan WebRequest tidak dapat dijalankan dalam Strategy Tester. Menambahkan endpoint ke daftar URL yang diizinkan terminal tidak mengubah pembatasan ini. Pisahkan fungsi yang tidak tersedia dalam tester dari gangguan jaringan, kegagalan otorisasi atau respons yang diterima saat EA beroperasi biasa.
Anggap aturan memerlukan pengamatan ekonomi eksternal. Jangan mengganti kegagalan permintaan dengan nol: nol bisa nilai sah, sedangkan kegagalan berarti input tidak tersedia. Mengganti WebRequest dengan file juga belum cukup bila file itu memuat revisi yang belum diketahui pada waktu keputusan. Tentukan pengamatan, versi, nilai dan waktu ketersediaan sebelum menghubungkan logika sinyal langsung ke HTTP. Panduan EA memisahkan data, keputusan dan eksekusi; di sini kita mengembangkan lapisan data. Adapter berbeda tidak boleh diam-diam mengubah makna informasi atau perlakuan input hilang.
Memisahkan adapter online dan offline
Adapter online menangani respons penyedia; adapter pengujian memilih catatan tersimpan yang tersedia pada waktu keputusan. Keduanya menyampaikan jenis hasil sama kepada logika keputusan: nilai valid, status tidak tersedia yang eksplisit atau kesalahan. Ini rancangan organisasi kode untuk latihan, bukan robot trading lengkap atau janji kompatibilitas dengan setiap API.
Simpan respons mentah terpisah dari catatan siap uji. Catat sumber, versi skema, waktu pengambilan serta bukti ketersediaannya. Periode yang dijelaskan pengamatan berbeda dari waktu informasi itu diketahui. Bila hanya tanggal vintage tersedia, jangan mengarang jam rilis tepat. Arsip harian tidak membuktikan ketersediaan intrahari.
FRED menjelaskan periode real-time yang membedakan informasi diketahui sekarang dari informasi diketahui sebelumnya. Itu contoh data berversi, bukan API FX universal. Tanggal vintage tidak otomatis memberikan timestamp publikasi UTC yang presisi. Tetapkan kronologi penyedia sebelum menyusun input uji intrahari dari catatan bertanggal saja.
Dalam MQL5, FileOpen memakai area file yang ditentukan, termasuk saat pengujian. Path relatif belum tentu menunjuk folder terminal biasa. Dokumentasi membedakan folder MQL5/Files terminal dari folder agen pengujian; FILE_COMMON memakai area bersama. Periksa keberhasilan membuka dan membaca. File tidak ada atau gagal dibaca harus menjadi status yang dikenali, bukan tabel kosong yang dianggap sejarah lengkap.
Versi mana yang boleh dipakai keputusan sebelumnya?
Riwayat tiga respons rekaan
Anggap pengamatan fiktif GDP-model pada 1 Oktober 2026. Ini bukan rilis PDB atau respons endpoint nyata. Semua timestamp UTC. availableAt menyatakan kapan model dapat mengakses catatan, bukan waktu order dieksekusi.
| availableAt | revision | value |
|---|---|---|
2026-10-01T12:00:00Z | initial | "1.0" |
2026-10-01T13:00:00Z | revised | "1.4" |
2026-10-01T14:00:00Z | unavailable | null |
Pada 12:30, nilai terakhir yang memenuhi waktu adalah 1.0. Pada 13:30, nilainya 1.4. Pada 14:30, catatan terbaru yang memenuhi waktu mempunyai null, jadi hasilnya tidak tersedia. Model tidak kembali otomatis ke 1.4 atau mengubah ketiadaan menjadi nol.
Versi saat itu, bukan hari ini
Revisi tidak mengganti pengetahuan keputusan yang lebih awal. Pada varian ini null memblokir evaluasi sinyal baru; tidak diganti nol atau nilai lama. Aturan rekaan yang memerlukan nilai lebih besar dari 1,2 bernilai salah pada 12:30. Menyisipkan revisi 1.4 dari 13:00 akan membalik keputusan walaupun data harga tidak berubah. Ini pengujian ketersediaan informasi, bukan profitabilitas strategi. Alat memilih catatan; tidak menghitung sinyal atau return.
Jika strategi harus mempertahankan nilai terakhir saat data baru tidak tersedia, rancang kebijakan terpisah. Nyatakan batas usia serta alasan memakai catatan lama sebelum mengevaluasi hasil. Varian null eksplisit ini tidak menerapkan fallback tersebut. Menambahkannya setelah melihat hasil lebih menarik tidak menghasilkan pengujian yang sama.
Membaca jam lokal: pada tanggal model ini, 12:30 UTC adalah 19:30 WIB, 20:30 WITA atau 21:30 WIT. BMKG menyatakan offset masing-masing UTC+7, +8 dan +9. Konversi membantu membaca waktu yang sama, bukan memberi waktu rilis baru. Kolom alat tetap mengharuskan 2026-10-01T12:30:00Z; jangan masukkan jam lokal tanpa konversi lalu menambahkan huruf Z.
Apa yang diperiksa replayer lokal?
Tempel objek JSON dengan version berupa angka 1 dan array events. Setiap peristiwa mempunyai tepat field availableAt, observation, value dan revision. Waktu harus berbentuk YYYY-MM-DDTHH:mm:ssZ, tanpa pecahan detik atau offset lain. observation dan revision berupa teks. value berupa teks angka bertitik desimal atau null, bukan nilai yang diubah ke Number. Nama field, nilai contoh dan titik desimal dalam JSON dipertahankan sebagai kontrak data.
Putar ulang informasi yang tersedia saat keputusan
Latihan berjalan lokal di browser: tidak menghubungkan akun atau API, mengirim input Anda maupun menyimpannya secara persisten. Jangan masukkan kata sandi atau data pribadi.
Masukkan decisionAt secara terpisah dalam format UTC sama. Dipilih versi terakhir dari pengamatan yang availableAt-nya tidak melewati waktu keputusan, termasuk tepat pada batasnya. Sebelum catatan pertama, belum ada nilai tersedia. Dua catatan untuk pengamatan dan waktu ketersediaan sama ambigu dan ditolak, bukan diselesaikan menurut urutan tempel. Label revision bukan penghitung kronologi numerik.
Latihan memproses peristiwa yang ditempel tanpa mengunduh rilis atau memakai kredensial API. Timestamp penyedia tidak diverifikasi. JSON valid tidak membuktikan arsip asli: tanggal tebakan atau revisi belakangan yang diberi waktu rilis awal akan membuat algoritma benar mereproduksi asumsi keliru. Simpan dokumentasi asal data yang dipakai dalam riset.
Dokumentasi tester membedakan lingkungan dan file agen dari terminal. Gunakan salinan dataset tetap untuk pengujian paralel, bukan menimpanya dengan respons live selama studi. Simpan identitas dataset yang benar-benar dipertahankan pada manifest pengujian, bukan hanya nama endpoint. Panduan backtest Python mengembangkan penggabungan menurut waktu; kalender ekonomi membahas revisi rilis. Replay data tidak otomatis memutar ulang eksekusi: Bid/Ask, biaya, kuantitas serta respons server tetap komponen berbeda. Bandingkan beberapa keputusan tanpa transaksi dahulu sebelum mengatribusikan perbedaan hasil pada strategi.
Kebijakan fallback perlu aturan tersendiri; algoritma pemilihan tidak memvalidasi asal timestamp.
Pada layar kecil, gulir diagram mendatar atau perbesar. Nilai dan kesimpulan juga tersedia dalam teks di bawah.
- 12:30 UTC
- Versi 12:00 · teks "1.0" – Revisi 13:00 belum tersedia; aturan > 1,2 bernilai salah.
- 13:30 UTC
- Versi 13:00 · teks "1.4" – Nilai berbeda tersedia kemudian, bukan koreksi pengetahuan masa lalu.
- 14:30 UTC
- Versi 14:00 · null – Evaluasi sinyal baru diblokir; tidak diganti nol atau nilai lama.
Sebelum menilai hasil EA
- Tetapkan kontrak data serta adapter online/offline terpisah. Simpan respons mentah, definisi pengamatan dan bukti ketersediaan. Versi historis yang tidak dimiliki adalah keterbatasan; jangan menempelkan respons hari ini ke tanggal lampau seolah pengetahuan terarsip.
- Telusuri satu pengamatan rekaan sebelum versi awal, di antara rilis/revisi dan sesudah null eksplisit. Cocokkan dengan tabel. Uji batas waktu tepat serta timestamp konflik sebelum studi lebih besar.
- Dalam tester, pastikan file yang dimaksud benar-benar dibaca dan data hilang dikenali. Simpan versi data bersama laporan serta log input terpilih. Setelah perbedaan input dijelaskan, periksa sinyal, eksekusi dan biaya terpisah. Replay benar tidak membuktikan keunggulan atau profitabilitas live masa depan.
Periksa pemahaman Anda
Latihan: sekitar 3 menit.
Lihat jawaban dan penjelasan
Catatan 12:00 memenuhi syarat; revisi berikutnya tidak mengganti input evaluasi yang lebih awal.
Pertanyaan lain
Apakah mengizinkan URL membuat WebRequest berjalan dalam tester?
Apakah tabel pengamatan historis yang tersedia hari ini cukup?
Apakah null berarti nol atau memakai nilai sebelumnya?
Apakah replay benar memvalidasi seluruh backtest?
Sumber dan verifikasi
- MetaQuotes, WebRequest
Pembatasan Strategy Tester dan perbedaan penggunaan di luar tester.
- MetaQuotes, FileOpen
Sandbox file, folder agen dan hasil gagal membuka file.
- Federal Reserve Bank of St. Louis, periode real-time FRED
Informasi tersedia kini versus dahulu dan tanggal periode versi.
- MetaTrader 5, fitur pengujian
Agen, lingkungan terpisah, file dan area bersama.
- BMKG, tanda waktu nasional
WIB UTC+7, WITA UTC+8 dan WIT UTC+9 untuk membaca waktu yang sama.
Perhitungan menggunakan asumsi yang dinyatakan secara terbuka. Perhitungan ini tidak menggantikan data pasar terkini atau ketentuan penyedia.
