Dua pengujian robot yang tampak sama dapat menghasilkan hasil berbeda meskipun parameter yang terlihat tidak berubah. Sebelum mengubah strategi, periksa kode, data, spesifikasi simbol dan model eksekusi. Manifest run mencatat deklarasi kondisi tersebut. Pembanding di bawah membandingkan dua catatan, sedangkan contoh memisahkan perubahan komisi. Catatan identik belum membuktikan lingkungan identik: simpan laporan dan log eksekusi yang mendasarinya.

Apa yang disimpan sebelum menjalankan tester lagi?

Arsipkan laporan, daftar eksekusi, jurnal dan set parameter kedua run, termasuk hasil yang kurang menguntungkan. Beri identitas terpisah. Screenshot kurva equity tidak membuktikan harga fill pertama, jumlah eksekusi parsial atau awal tes aktual. Anda memerlukan hubungan antara kondisi pengujian, operasi dan hasil akhir.

Bedakan pengujian tunggal, pencarian optimasi dan evaluasi periode berikutnya. Dokumentasi Strategy Tester menjelaskan mode tersebut. Nama file robot sama dapat menyimpan kompilasi atau dependensi berbeda. Simpan build terminal, program dan pustaka relevan; nama tidak mengidentifikasi isi file.

Bandingkan awal yang diminta dengan awal aktual. MetaQuotes menjelaskan bahwa riwayat persiapan yang tidak cukup dapat menggeser awal aktual. Sebulan penuh berbeda dari periode terpotong. Pemeriksa cakupan CSV memeriksa ekspor; artikel ini membandingkan kondisi run yang lebih luas.

Membuat dua manifest dengan format sama

Tempel dua objek JSON memakai tepat tiga belas nama kolom berikut. Jangan terjemahkan kunci atau menambah kolom tingkat atas. version adalah angka 1 untuk format manifest, bukan versi EA. Nilai lain berupa string; inputs, costs dan initialState boleh berupa objek biasa untuk rincian pengaturannya.

Kolom manifest dan bukti yang dibutuhkan
Kunci tetapCatatan
version, platform, build, codeRevisionFormat, platform, build serta identitas kode/dependensi.
inputs, dataSnapshotParameter dan versi dataset yang diarsipkan.
symbolSpecification, executionModel, costsKontrak, aturan simulasi dan seluruh biaya asumsi.
requestedStart, actualStart, endBatas waktu yang diminta dan benar-benar dievaluasi.
initialStateSaldo awal, posisi dan kondisi inisialisasi relevan.

Pada dataSnapshot, masukkan identitas arsip atau checksum yang dihitung terpisah. Label data-v1 tetap deklarasi: alat tidak membaca file. Menamai codeRevision sebagai hash juga tidak memverifikasi isinya. Label teknis cukup; jangan masukkan sandi, kode akses atau informasi pribadi. Kolom yang belum diketahui adalah pekerjaan verifikasi, bukan alasan menciptakan versi yang tampak sah.

Gunakan tanggal dengan zona waktu eksplisit, sebaiknya representasi UTC konsisten. Menambahkan Z pada jam server tidak mengonversinya ke UTC. Dua format dapat merujuk saat yang sama tetapi tetap berbeda secara literal. Standarkan hanya setelah memeriksa tanggal dan offset sumber. Pembanding tidak mengetahui kalender penyedia atau apakah waktu yang ditulis cocok dengan log.

Apa yang sebenarnya diperiksa pembanding?

Edit dua contoh manifest lalu bandingkan deklarasinya. Alat bekerja lokal, tanpa mengirim data, mengimpor file atau menyimpan isian secara persisten. Ia tidak menjalankan MT5 atau membaca akun. Objek sama berarti isian sama; dependensi yang tidak dicatat atau deskripsi keliru tetap mungkin ada. Keputusan tentang penyebab memerlukan laporan serta log, bukan indikator bahwa semua kolom sama.

Bandingkan dua catatan backtest

Analisis berjalan lokal di browser. Alat tidak mengirim data atau menyimpannya secara persisten. Jangan masukkan sandi atau data pribadi.

Gunakan skema terdokumentasi dengan version: 1. Tulis angka spesifikasi sebagai string bertitik desimal. Kolom kosong atau hilang berarti belum diketahui. Batas setiap catatan 64 KiB.

Format JSON: kolom dan batas

version: 1. Kolom lain yang didukung: platform, build, codeRevision, inputs, dataSnapshot, symbolSpecification, executionModel, costs, requestedStart, actualStart, end, initialState.

Nilai kolom tingkat atas berupa string. inputs, costs dan initialState juga boleh objek. Kolom kosong atau dihilangkan dianggap belum diketahui. Kunci ganda dan kolom tingkat atas yang tidak terdokumentasi ditolak. Batas: 8 tingkat dan 2.000 nilai; angka bersarang maksimum 15 digit signifikan; bilangan bulat besar yang tidak aman ditolak. Tulis zona waktu eksplisit. Perbandingan literal: alat tidak menyelaraskan deskripsi atau format tanggal berbeda.

Contoh fiktif: transaksi sama, komisi berbeda

Asumsikan kontrak linier, akun USD dan satu transaksi tertutup dengan dua fill. Laba harga 10 USD; harga, kuantitas dan periode cocok, sedangkan pendanaan serta biaya lain nol. Run A menyatakan komisi 1 USD per fill dalam costs, B menyatakan 2 USD. Hasil A = 10 − 2 × 1 = 8 USD; B = 10 − 2 × 2 = 6 USD. Perubahan biaya menjelaskan selisih 2 USD dalam model. Itu tidak membuktikan sinyal lebih buruk, data rusak atau slippage. Pembanding menandai costs; interpretasinya tetap harus dicocokkan dengan laporan dan asumsi lain. Angka ini bukan tarif broker.

Satu transaksi, dua asumsi biaya

Satu transaksi, dua asumsi biayaModel laba harga 10 USD, dua fill. A: komisi 1 USD/fill, total 2, bersih 8 USD. B: komisi 2 USD/fill, total 4, bersih 6 USD. Selisih 2 USD; bukan tarif nyata.Satu transaksi, dua asumsi biayaRun ALaba harga: +10 USD2 fill × 1 USD = 2 USD biayaBersih: +8 USDSatu perubahan deklarasiKolom: costsHarga dan jumlah samaSelisih hasil bersih: 2 USDRun BLaba harga: +10 USD2 fill × 2 USD = 4 USD biayaBersih: +6 USDModel 1 transaksi, 2 fill; biaya lain = 0.forex-basics.com/id/
Satu transaksi, dua asumsi biaya. Model satu transaksi tertutup, dua fill, laba harga 10 USD, biaya lain nol; komisi A 1 USD/fill dan B 2 USD/fill.

Komisi menjelaskan selisih model 2 USD; alat tidak memverifikasi kebenaran deklarasi.

Pada layar kecil, gulir diagram mendatar atau perbesar. Nilai dan kesimpulan juga tersedia dalam teks di bawah.

Contoh tambahan: saldo akhir sama, lintasan berbeda

Latihan baru memakai rupiah terpisah dari contoh USD dan tidak merupakan hasil robot nyata. Saldo awal Rp1.000.000, tanpa posisi mengambang, biaya atau arus kas. Pada lintasan A, hasil tertutup berurutan +Rp80.000 lalu −Rp60.000 memberi saldo Rp1.080.000 lalu Rp1.020.000. Pada B, −Rp60.000 lalu +Rp80.000 memberi Rp940.000 lalu Rp1.020.000. Dua hasil akhir sama-sama laba Rp20.000, tetapi operasi pertama sudah berbeda.

Dengan drawdown hanya pada titik saldo yang disebut, A turun Rp60.000 dari puncak Rp1.080.000: sekitar 5,56%. B turun Rp60.000 dari puncak awal Rp1.000.000: 6%. Tidak diasumsikan lintasan intratransaksi, sehingga ini bukan maximum equity drawdown dari tick lengkap. Saldo akhir yang cocok tidak membuktikan dua run mereproduksi keputusan yang sama. Cari peristiwa pertama berbeda; jangan menambah field baru pada skema alat untuk menutupi kekurangan arsip.

Saldo akhir sama, urutan berbedaModel IDR terpisah, tanpa biaya/arus kas/posisi terbuka. Drawdown diukur hanya pada titik saldo yang disebut.PERHITUNGAN HIPOTETISA: +80.000, lalu −60.000Akhir Rp1.020.000B: −60.000, lalu +80.000Akhir Rp1.020.000
Saldo akhir sama, urutan berbeda. Model IDR terpisah, tanpa biaya/arus kas/posisi terbuka. Drawdown diukur hanya pada titik saldo yang disebut.

Hasil akhir bukan pengganti urutan eksekusi yang dapat ditelusuri.

Pada layar kecil, gulir diagram mendatar atau perbesar. Nilai dan kesimpulan juga tersedia dalam teks di bawah.

A: +80.000, lalu −60.000
Akhir Rp1.020.000 – Puncak Rp1.080.000; penurunan 60.000/1.080.000≈5,56%.
B: −60.000, lalu +80.000
Akhir Rp1.020.000 – Puncak awal Rp1.000.000; penurunan 6%.

Bagaimana jika semua deklarasi masih sama?

Cari eksekusi pertama yang berbeda: waktu sinyal, simbol, sisi harga, jumlah serta alasan masuk/keluar. Saldo akhir dapat menutupi perbedaan sejak pembacaan indikator pertama. Catat pula keputusan tidak bertransaksi. Pada run terkontrol, ubah satu kondisi dan simpan laporan sebelumnya. Mengubah beberapa pengaturan sekaligus menyulitkan penelusuran penyebab.

Periksa dependensi file dan inisialisasi program. Dokumentasi tester membedakan lingkungan agent dari terminal, termasuk global variables dan operasi file. Jika program memakai angka acak, simpan cara inisialisasinya. Jangan menyalahkan cache untuk semua perbedaan, atau menghapus arsip sebagai tindakan pertama. Bila mengompilasi ulang, simpan executable lama serta catat revisi dan build.

Manifest cocok merupakan awal pemeriksaan lebih rinci, bukan sertifikat reproduktibilitas. Jangan otomatis memilih laba lebih besar atau menyebut hasil lebih kecil sebagai kesalahan platform. Register versi dan bukti membahas validasi lanjut; panduan MT4/MT5 membahas pengaturan.

Langkah setelah membandingkan run

  1. Simpan laporan A dan B terpisah, lengkapi tiga belas kolom serta hubungan identitas ke arsip kode, data dan pengaturan. Tandai informasi yang belum diketahui.
  2. Pilih satu perbedaan dan uji konsekuensinya pada contoh pendek yang terkontrol. Untuk komisi, cocokkan jumlah fill serta biaya; untuk tanggal awal, temukan sinyal pertama tersedia. Simpan hasil yang tidak mengonfirmasi penjelasan awal.
  3. Jika deklarasi sama, cari peristiwa jurnal pertama yang menyimpang. Tentukan informasi yang diperlukan untuk mereproduksi keputusan dan perluas arsip Anda. Kembali menilai strategi setelah menjelaskan penyebab; alat tidak meramal laba masa depan atau menyertifikasi hasil historis.