Tingkat kemenangan historis yang tinggi saja belum membuktikan keunggulan. Backtest mengevaluasi aturan eksplisit pada data yang ditentukan dengan model eksekusi tertentu. Pengujian yang teliti pun tidak menjamin hasil masa depan; tujuannya menemukan apa yang dapat dan tidak dapat disimpulkan dari percobaan yang dapat direproduksi.

Mengapa menguji aturan pada data historis?

Ekspektasi historis positif adalah bukti tentang sampel yang diuji. Hasil dapat berasal dari kebetulan, seleksi, atau penyesuaian berlebihan. Periksa data yang benar-benar disisihkan, biaya, dan ketahanan sebelum menarik kesimpulan lebih luas. Tidak ada hak otomatis untuk berpindah ke akun live setelah hasil positif.

Aturan harus menetapkan keputusan dan waktunya

Tulis simbol, timeframe, input sinyal, waktu order, aturan keluar, serta perhitungan ukuran posisi. Pada model aturan harian, bandingkan penutupan bar yang sudah selesai dengan high bar sebelumnya, lalu kirim order hanya setelah penutupan itu tersedia. Menggunakan close final untuk masuk pada open yang lebih awal di bar sama memakai informasi masa depan. Harga open berikutnya pun bukan fill yang dijamin.

Pengaturan EMA 50/200, RSI(14) di bawah 70, sentuhan rata-rata 20, stop 1,5 ATR(14), target 2,5 ATR, dan risiko 1% ekuitas dapat menjadi bagian spesifikasi hipotetis. Itu belum menjawab kapan sinyal tersedia, sisi harga, order, biaya, atau sizing diskret. Tetapkan pula tindakan jika posisi sudah ada, data hilang, atau margin tidak cukup. Pengaturan indikator tidak menyelesaikan keputusan tersebut.

Mencari keunggulan trading membahas hubungan hipotesis dan pengujian. Hasil historis dapat membantah aturan yang diajukan, tetapi angka positif tetap perlu penilaian biaya, seleksi, dan ketidakpastian. Hubungkan proses ini dengan pencatatan rutin di bagian praktik perpustakaan.

Data harus sesuai instrumen dan model eksekusi

Futures mata uang, spot OTC, dan CFD merupakan kontrak berbeda. Data futures terpusat tidak otomatis menggantikan data strategi spot ritel. Catat penyedia, produk, sisi kuotasi, zona waktu, celah, serta versi berkas. Pilih periode riset yang mencakup kondisi relevan dan nyatakan keterbatasannya.

Tidak ada ambang universal 100 transaksi untuk signifikansi statistik. Bukti yang diperlukan bergantung pada penyebaran hasil, ketergantungan antarobservasi, besar efek, seleksi ide, serta cakupan rezim. Laporkan ketidakpastian dan ukuran sampel efektif, bukan hanya jumlah baris. Menambah instrumen dapat mengubah hipotesis, bukan sekadar memperkuat bukti yang sama.

OHLC tidak menetapkan urutan stop dan target yang sama-sama tersentuh dalam satu bar. Dokumentasi rinci MT5 menjelaskan bahwa bar menit tanpa riwayat tick dapat memakai tick yang dibangkitkan bahkan ketika pengujian memakai real ticks. Periksa dataset dan jurnal, bukan nama mode saja. Untuk keranjang instrumen, simpan seleksi yang tersedia pada waktu itu; untuk rilis makro, pakai nilai yang sudah dipublikasikan saat keputusan, bukan revisi yang muncul kemudian.

Rekonsiliasi harga sebelum membebankan spread

Hasil dari Ask masuk dan Bid keluar berbeda dasar pengukurannya dari perubahan titik tengah. Asumsi sumber: dua kuotasi serentak untuk instrumen fiktif yang sama, masuk Bid/Ask 100/102, keluar 103/105. Titik tengah adalah rata-rata kedua sisi. Satu unit jumlah, eksekusi tepat pada Ask dan Bid yang ditetapkan, tanpa komisi, pendanaan, gap, atau slippage. Ini bukan kuotasi FX terkini atau fill yang dijamin.

Geser diagram secara mendatar bila perlu.

Rekonsiliasi harga sebelum menghitung spreadModel fiktif membeli lalu menjual satu unit jumlah tanpa komisi, pendanaan, atau slippage. Saat masuk Bid 100, Ask 102, titik tengah 101; keluar Bid 103, Ask 105, titik tengah 104. Ask 102 ke Bid 103 menghasilkan +1 satuan harga. Perubahan titik tengah +3 dikurangi setengah spread 1 saat masuk dan 1 saat keluar memberi +1 sama. Mengurangi dua spread penuh 2 dan 2 dari +3 memberi −1 yang keliru. Batang hasil memakai nol dan skala linear sama; −1 adalah kesalahan pengukuran, bukan eksekusi alternatif sah.DUA METODE, HASIL SAMALong fiktif • satu unit jumlahBidAskTitik tengahMasuk100102101Keluar103105104Perubahan titik tengah+3Ask → Bid+1Keliru: −2 − 2−1−2024Satuan harga • +3 − 1 − 1 = +1

Ask 102 ke Bid 103 memberi 103 − 102 = +1 satuan harga. Titik tengah berubah 104 − 101 = +3. Harga beli satu di atas titik tengah dan harga jual satu di bawahnya, sehingga +3 − 1 − 1 = +1. Kedua cara merekonsiliasi model yang sama.

Spread penuh saat masuk dan keluar masing-masing 2. Mengurangi keduanya dari perubahan titik tengah memberi +3 − 2 − 2 = −1, tidak sesuai eksekusi. Mengurangi spread 2 lagi dari 103 − 102 juga menghitung komponen sama dua kali. Dokumentasi MetaQuotes membedakan harga pembentuk chart dari harga transaksi. Catat asal setiap harga; biaya lain membutuhkan model terpisah.

Biaya harus diterapkan pada seluruh transaksi

Model eksekusi menentukan biaya yang sudah masuk harga dan biaya yang terpisah. Ask masuk/Bid keluar sudah memasukkan spread dalam hasil harga. Tambahkan komisi, pendanaan, dan perbedaan eksekusi yang dinyatakan tanpa menduplikasi spread. Spread hipotetis 0,8 pip adalah 0,4% dari target 200 pip, tetapi 16% dari target 5 pip. Angka tersebut bagian dari jarak target, bukan bagian dari edge atau estimasi hasil transaksi nyata.

Contoh sumber yang terpisah memakai PLN: 50 transaksi tertutup, 30 laba masing-masing PLN 40 dan 20 rugi masing-masing PLN 50 sebelum biaya. Total laba PLN 1.200, total rugi PLN 1.000, hasil PLN 200, rata-rata PLN 4. Terapkan biaya penuh yang sama pada setiap transaksi, termasuk transaksi rugi.

Biaya per transaksiTotal bersihRata-rata bersihProfit factor bersih
PLN 0PLN 200PLN 41,20
PLN 2PLN 100PLN 2Sekitar 1,10
PLN 4PLN 0PLN 01,00

Pada biaya PLN 2, setiap laba menjadi PLN 38 dan setiap rugi PLN 52. Profit factor ialah 1.140/1.040 ≈ 1,10. Hanya asumsi biaya yang berubah; ini aritmetika, bukan catatan strategi teramati. Uji perubahan biaya dan fill yang masuk akal. Saringan biaya dua kali rata-rata adalah pilihan aturan, bukan margin keamanan universal atau bukti profitabilitas.

Model IDR: transaksi nol dapat menjadi rugi

Model tambahan terpisah memakai tiga transaksi tertutup dengan hasil harga +30.000, 0, dan −10.000 IDR. Hasil sudah memakai sisi eksekusi yang relevan, sehingga spread tidak dikurangkan lagi. Semua biaya terpisah diringkas sebagai biaya penuh c per transaksi, sama pada ketiganya. Tidak ada posisi terbuka, pajak, pendanaan lain, arus kas tambahan, atau perubahan ukuran. Angka diciptakan untuk latihan, bukan konversi dari tabel PLN atau biaya broker.

Biaya mengubah klasifikasi transaksiModel tiga hasil harga IDR: +30.000, 0, −10.000. Biaya penuh sama per transaksi; tanpa arus lain atau posisi terbuka. Spread sudah termuat harga.PERHITUNGAN HIPOTETISTanpa biayaTotal +20.000 IDR · PF 3Biaya 5.000 IDR per transaksiTotal +5.000 IDR · PF1,25Biaya 10.000 IDR per transaksiTotal −10.000 IDR · PF2/3
Biaya mengubah klasifikasi transaksi. Model tiga hasil harga IDR: +30.000, 0, −10.000. Biaya penuh sama per transaksi; tanpa arus lain atau posisi terbuka. Spread sudah termuat harga.

Hitung biaya pada setiap transaksi, lalu bentuk ulang kelompok hasil bersih. Mengurangi biaya hanya dari pemenang melebihkan hasil.

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

Tanpa biaya
Total +20.000 IDR · PF 3 – Laba 30.000; rugi 10.000; transaksi nol belum masuk keduanya.
Biaya 5.000 IDR per transaksi
Total +5.000 IDR · PF 1,25 – Hasil +25.000, −5.000, −15.000; penyebut rugi menjadi 20.000.
Biaya 10.000 IDR per transaksi
Total −10.000 IDR · PF 2/3 – Hasil +20.000, −10.000, −20.000; biaya tiga transaksi 30.000.

Tanpa biaya, total +20.000 dan profit factor 30.000/10.000 = 3. Dengan c = 5.000 IDR, hasil menjadi +25.000, −5.000, dan −15.000: total +5.000, rata-rata sekitar +1.666,67 IDR, profit factor 25.000/(5.000 + 15.000) = 1,25. Transaksi yang sebelumnya nol sekarang masuk jumlah kerugian. Pada c = 10.000, hasil +20.000, −10.000, −20.000 memberi total −10.000 dan profit factor 2/3 ≈ 0,67.

Mengurangi biaya hanya dari transaksi pemenang memberi hasil salah: laba 25.000 dan rugi 10.000, total +15.000 serta profit factor 2,5 pada c = 5.000. Dua biaya yang terlewat berjumlah 10.000 IDR. Untuk 0 ≤ c ≤ 30.000, pembilang laba ialah 30.000 − c dan penyebut rugi 10.000 + 2c. Total selalu 20.000 − 3c; titik impas model c = 20.000/3 ≈ 6.666,67 IDR. Ini batas aritmetis model yang ditetapkan, bukan batas biaya aman strategi masa depan.

Seleksi histori dan kebocoran informasi

Memilih hasil terbaik dari banyak parameter, instrumen, dan pembagian sampel dapat menyesuaikan keunikan histori. Catat seluruh percobaan, termasuk ide yang dibuang di luar optimiser. Hasil terpilih yang kuat saja tidak membuktikan overfitting, tetapi perlu evaluasi terpisah. Membatasi optimisasi ke dua parameter tidak menghapus seleksi lain.

Bekukan aturan serta biaya sebelum menguji. Hasil pada histori yang dipakai memilih strategi masih membutuhkan pengamatan baru yang benar-benar terpisah. Bekukan pembagian sebelum tuning dan sisihkan data evaluasi; 70/30 hanya salah satu desain. Hasil evaluasi lebih lemah dapat berasal dari rezim atau variasi sampel, selain overfitting. Jika strategi direvisi setelah melihat hasil test, periode itu sudah menjadi data pengembangan; catat penggunaannya.

Urutan juga bergantung pada kapan hasil diketahui. Model sumber: keputusan pada t mendapat label pada t + 3. Test pertama dimulai pada t10 dan fitting harus selesai sebelumnya. Dari kandidat keputusan t1–t9, hanya t1–t6 memiliki hasil sebelum t10. Keputusan t6 diberi label pada t9; label t7–t9 muncul pada t10–t12 dan tidak boleh masuk fitting itu. Harga lebih awal masih mungkin dibutuhkan untuk indikator test. Pengecualian label ini menyelesaikan overlap yang dinyatakan, bukan seluruh kebocoran. Parameter gap pada TimeSeriesSplit mengecualikan baris akhir train; besar gap harus sesuai ketersediaan informasi, bukan dipilih tanpa memeriksa label.

Membaca statistik tanpa menciptakan riwayat

Asumsi hipotetis peluang menang 0,54, rata-rata kemenangan 2,3R, dan kerugian 1R memberi ekspektasi bruto 0,54 × 2,3 − 0,46 = 0,782R. Profit factor sekitar 2,70 dari 1,242/0,46. Asumsi tersebut tidak menetapkan drawdown atau total imbal hasil; urutan, biaya, eksposur, serta posisi terbuka belum diberikan.

Secara terpisah, imbal hasil yang ditetapkan +87% selama tepat lima tahun berarti laju majemuk 1,87^(1/5) − 1 ≈ 13,34% per tahun. Angka itu tidak diturunkan dari statistik transaksi tadi. Jangan menambahkan jumlah transaksi, periode kalender, drawdown, atau riwayat akun fiktif untuk membuatnya terlihat terukur.

Langkah kerja yang dapat direproduksi

Hubungkan laporan dengan dataset, versi aturan, dan model eksekusi yang dapat diidentifikasi. Reproduksi transaksi satu per satu, termasuk satu rugi, satu sinyal hilang, serta satu kasus intrabar ambigu. Demo dapat menguji operasi saat data datang; hasil positif tidak mewajibkan akun live.

  1. Simpan aturan mekanis dalam berkas teks, termasuk waktu informasi tersedia, order, sizing, serta tindakan untuk input ambigu atau hilang. Bandingkan sinyal yang direproduksi secara independen dan selidiki perbedaan.
  2. Tetapkan lama data serta pembagian kronologis sebelum tuning. Lima tahun untuk swing atau dua tahun untuk day trading bukan syarat universal; sesuaikan pertanyaan riset dan bukti yang tersedia.
  3. Masukkan spread yang belum termuat harga, komisi, pendanaan, dan asumsi slippage. Uji sensitivitas. Biaya yang menyerap lebih dari 20% laba bruto bukan ambang penolakan universal.
  4. Catat jumlah transaksi, ketergantungan, penyebaran, dan ketidakpastian. Seratus transaksi tidak otomatis signifikan; tambahan sejarah atau instrumen bisa mengubah sampel serta hipotesis.
  5. Bandingkan perilaku demo dengan model yang dibekukan. Selidiki selisih; tiga bulan demo tidak menjamin kesiapan atau keuntungan live. Analisis walk-forward membahas evaluasi periode berikutnya.

Pelajari data sumber nyata

Studi kalender kurs referensi ECB 2016–2025 (bahasa Indonesia) melaporkan 2.560 publikasi EUR/USD dan 49 hari kerja tanpa publikasi yang sesuai penutupan TARGET terjadwal pada snapshotnya; data, grafik, serta kode tersedia di sana. Ini studi kelengkapan publikasi, bukan data OHLC, spread, atau jalur tick. Kurs referensi harian tidak dapat menetapkan urutan stop dan target intraday. Angka tersebut berasal dari studi tertaut, bukan perhitungan ulang artikel ini.