Dalam artikel ini
Setelah membaca artikel ini…
- Memeriksa kelengkapan sejarah sebelum mengevaluasi aturan.
- Membedakan data hilang dari hasil sah tanpa entry.
- Menguji umur kuotasi koheren dan menyimpan timestamp berzona jelas.
Pelajari istilah tanpa meninggalkan artikel
Simple Moving Average (SMA) Rencana trading Backtesting (uji data historis) Nilai nosional posisi Akun demo Ekspektasi (expectancy) Trading algoritmikProyek algoritmik pertama dapat mencatat sinyal, menghitung ukuran atau memeriksa eksposur tanpa melakukan transaksi. Mulailah dengan satu operasi yang hasilnya dapat Anda jelaskan dan verifikasi. Definisikan informasi, aturan dan perilaku program sebelum memberinya izin order. Otomasi tidak membuktikan sebuah strategi menguntungkan.
Apa itu trading algoritmik dan apa batasnya?
Pisahkan pemilihan sinyal, pelaksanaan keputusan yang sudah dibuat, pengelolaan posisi dan pelaporan. Program yang membagi satu order memiliki tujuan berbeda dari robot yang memilih entry. Laporan BIS tahun 2020 tentang algoritma eksekusi FX membahas struktur pasar, eksekusi dan risiko terkait; itu bukan bukti laba suatu bot ritel. Singkatan EA dalam laporan berarti execution algorithm, sedangkan MetaTrader memakai EA untuk Expert Advisor.
Tuliskan instrumen, sumber data, jam operasi, timestamp keputusan, aturan entry/exit, jumlah, batas eksposur dan tindakan bila sudah ada posisi. Pilihan manusia tentang input dan pengawasan tetap ada. Program dapat mencegah satu kesalahan manual sekaligus memperkenalkan kesalahan lain, misalnya permintaan ganda setelah restart. Uji kebenaran program terpisah dari hasil ekonomis aturan. Trading algoritmik tidak harus mencakup seluruh strategi.
Dari alert ke otomasi: pilih alat sesuai tugas
Untuk tugas pemberitahuan, alert mungkin cukup. Alert bawaan MT5 menerima perbandingan harga, volume transaksi terakhir dan waktu; ia bukan editor bebas untuk kondisi gabungan moving average dan ATR. Logika khusus mungkin memerlukan indikator atau EA. MQL5 bekerja di dalam MT5; Python dapat menganalisis data atau memakai koneksi yang didokumentasikan. Tidak ada urutan wajib alert→MQL5→Python→FIX.
Sesuaikan lingkungan dengan akun, data dan operasi. Jangan mengasumsikan jumlah baris kode, lama pembangunan, latensi eksekusi atau akses API universal pada semua produk broker. Dasar EA MQL5 membahas perilaku program platform; Backtest Forex dengan Python menjelaskan alur riset terpisah. Mengimplementasikan ide yang sama dalam keduanya bersifat opsional. Untuk operasi pertama, log sinyal yang benar sudah merupakan hasil lengkap.
Input ketiga rata-rata tidak boleh ditebak
Aturan contoh membutuhkan tepat tiga close, urutan paling lama ke terbaru: x,100,102. Instrumen dan interval sama; ketiganya harus candle historis yang sudah selesai. x adalah harga lama yang belum tersedia, bukan harga masa depan. Bobot sama 1/3 dan tidak ada pembulatan sebelum perbandingan.
Dua isian buatan menunjukkan masalahnya: x 98 memberi rerata 100 dan kondisi 102>100 benar; x 106 memberi 308/3≈102,667 dan 102 tidak lebih besar. Keduanya bukan data pasar yang diklaim telah diambil. Merata-ratakan dua harga menjadi 101 mengganti aturan menjadi dua periode. Mengisi nol menciptakan input fiktif. Program harus mencatat data belum lengkap dan tidak memberi keputusan. Jika pengambilan berikutnya berhasil, periksa bahwa record memang berasal dari candle yang dimaksud. Dokumentasi CopyRates menjelaskan jumlah record yang dikembalikan, error dan data yang baru sebagian tersedia. Contoh ini tentang kelengkapan, bukan arah indeks atau urutan fisik array.
Keterampilan dan pilihan bahasa
Keterampilan yang berguna mencakup pemrograman, pengolahan data, sizing risiko dan penalaran statistik. Kurva equity pendek adalah bukti tentang sampel itu, bukan keuntungan masa depan. Rencanakan validasi dengan data representatif, evaluasi out-of-sample dan pemeriksaan eksekusi demo. Mengubah parameter tanpa error sintaks tidak menguji data atau status order.
MQL5 terhubung melalui terminal MT5; Python dapat memakai terminal tersebut atau antarmuka lain yang didokumentasikan. Latensi menyeluruh bergantung pada kode, hosting, jaringan dan eksekusi broker, bukan jaminan milidetik satu digit. Kemampuan mengawasi kegagalan dan menghentikan evaluasi sama pentingnya dengan menulis rumus.
Contoh: dari spesifikasi strategi ke backtest
Untuk crossover EUR/USD H1 hipotetis, definisikan EMA, SMA dan ATR, waktu sinyal, stop serta target dengan tepat. Bandingkan keputusan manual dan otomatis pada data serta tanggal yang sama dahulu. Test otomatis lima tahun tidak wajib menyerupai sampel manual enam bulan: rezim dan feed berbeda. Rekonsiliasi perbedaan pada periode identik, modelkan biaya, lalu nilai aturan yang dibekukan pada data terpisah.
Spesifikasi offline dapat memakai EMA 21, SMA 55 dan jarak berbasis ATR yang dipilih untuk latihan. Nyatakan apakah keputusan memakai candle H1 tertutup dan kapan evaluasi boleh dilakukan. Awalnya catat sinyal, jangan kirim order. Uji satu sinyal, tanpa sinyal, pergantian bar, sejarah hilang dan posisi yang sudah ada. Input hilang bukan hasil sah “tidak entry”.
Model sizing sumber tetap dalam USD: equity 10.000 USD, anggaran kerugian harga awal yang dipilih 0,5%, stop 25 pip dan pip EUR/USD 0,0001. Dengan 100.000 EUR per lot standar, nilai pip 10 USD per lot. Anggaran 50 USD memberi volume sebelum biaya 50÷(25×10)=0,20 lot, yaitu 20.000 EUR notional. Asumsi ini bukan rekomendasi risiko universal. Notional, margin dan kerugian awal rencana merupakan besaran berbeda.
Masukkan komisi dan asumsi eksekusi sebelum menyesuaikan volume dengan langkah kontrak yang diizinkan. Stop biasa dapat terisi berbeda saat gap; rencana 50 USD bukan batas rugi tanpa syarat. Bandingkan aturan, data dan keputusan individual identik, bukan hanya laba akhir yang mirip dari transaksi berbeda. Pisahkan seleksi parameter dari evaluasi: hasil baik pada data pemilihan dapat mencerminkan bias seleksi.
Program juga dapat menghitung spread palsu dari harga yang masing-masing benar tetapi waktunya berbeda. Pada stream hipotetis, t 1 memiliki Bid/Ask 1,1000/1,1002; t 2 memiliki 1,1010/1,1012. Dengan pip 0,0001, kedua spread 2 pip. Mencampur Ask t 1 dengan Bid t 2 menghasilkan(1,1002−1,1010)/0,0001=−8 pip. Filter spread kurang dari 2,5 akan keliru menerima angka buatan itu; bukan spread pasar negatif yang teramati.
SymbolInfoTick MQL5 mengembalikan harga dan waktu pembaruan dalam satu MqlTick. Periksa keberhasilan lalu gunakan bidang struktur yang sama dan disimpan untuk kondisi tersebut. Tambahkan kasus yang sengaja mencampur dua pembacaan valid namun berubah. Kuotasi koheren adalah pemeriksaan data, bukan jaminan likuiditas atau fill masa depan.
Tambahan IDR: koheren belum berarti cukup baru
Model USD/IDR terpisah, seluruhnya hipotetis: setiap snapshot berisi Bid 16.000 dan Ask 16.002 IDR per USD dari pembaruan yang sama. Spread 2 memenuhi batas contoh paling banyak 3 IDR/USD. Walau harganya sama dan tidak tercampur, umur datanya dapat berbeda. Tetapkan waktu evaluasi 10:00:03,000 UTC serta aturan terpilih 0≤umur≤2.000 milidetik; umur adalah waktu evaluasi dikurangi timestamp kuotasi. Asumsikan keduanya sudah memakai acuan UTC yang tersinkron, satu tanggal yang sama, tidak ada pembulatan dan timestamp milidetik dapat dibandingkan. Batas 2.000 adalah kebijakan latihan, bukan batas resmi MQL5 atau latensi penyedia.
Simpan waktu kanonik dan alasan jeda; koherensi, kelengkapan dan kesegaran merupakan pemeriksaan berbeda.
Pada layar kecil, gulir diagram mendatar atau perbesar. Nilai dan kesimpulan juga tersedia dalam teks di bawah.
- 10:00:00,500 UTC
- 2500 ms →tunda – Spread 2≤3 lolos; umur melebihi batas.
- 10:00:01,000 UTC
- 2000 ms →lolos pemeriksaan umur – Batas inklusif, bukan izin order otomatis.
- 10:00:02,500 UTC
- 500 ms →lolos pemeriksaan umur – Harga sama tidak berarti timestamp sama.
- 10:00:03,500 UTC
- −500 ms →tandai inkonsistensi – Timestamp update berada 500 ms setelah waktu evaluasi; tandai inkonsistensi acuan jam.
Kuotasi 10:00:00,500 berumur 2.500 ms sehingga evaluasi ditunda walaupun spread lolos. Timestamp 10:00:01,000 tepat 2.000 ms lolos batas inklusif; 10:00:02,500 berumur 500 ms juga lolos. Timestamp 10:00:03,500 menghasilkan −500 ms: tandai inkonsistensi waktu, bukan “sangat segar”. Lolos di sini hanya berarti melewati dua pemeriksaan data; tidak otomatis menghasilkan order atau membuktikan harga dapat dieksekusi. Tidak ada ukuran posisi, pertukaran pokok, biaya, saldo atau P/L disimulasikan.
Log harus menyimpan timestamp, zona, umur, hasil kelengkapan/koherensi/kesegaran dan alasan menunda. Jika acuan jam tidak diketahui atau tidak sebanding, jangan mengarang umur. WIB=UTC+7, WITA=UTC+8 dan WIT=UTC+9 menurut BMKG; 10:00:03 UTC sama dengan 17:00:03 WIB, 18:00:03 WITA atau 19:00:03 WIT. Offset tampilan tidak mengubah umur milidetik. Simpan identitas candle dan timestamp kanonik; jangan memakai jam dinding berzona berbeda seolah satu zona. Bahasa pembaca tidak menetapkan domisili atau mata uang akun.
Kegagalan proyek: uji kode, data dan ekonomi secara terpisah
Proyek dapat gagal karena aturan buruk, kode salah, data tidak lengkap, perbedaan eksekusi atau masalah operasi. Jangan menetapkan peringkat dua penyebab universal atau menyepelekan bug. Sesudah jawaban order ambigu, periksa order, deal dan posisi sebenarnya sebelum retry. OrderSend mengembalikan true saja belum berarti fill selesai: periksa kode hasil dan status transaksi. Catat versi aturan, timestamp informasi dan alasan bertindak atau tidak bertindak.
Backtest juga memerlukan data produk, biaya dan kronologi yang relevan. Catat semua varian yang dicoba dan bedakan data pengembangan dari evaluasi. Mengubah aturan setelah melihat hasil out-of-sample menjadikan periode itu bagian pengembangan. Mencari trading edge membahas evaluasinya. Simpan laporan gagal dan alasan perubahan, bukan hanya kurva terbaik.
Win rate, expectancy dan profit factor menjawab pertanyaan berbeda. Pada sampel fixed-R hipotetis 100 transaksi, 40 pemenang+2 R dan 60 pecundang−1 R memberi mean (80−60)/100=+0,2 R sebelum biaya. Profit factor 80/60≈1,33. Itu input aritmetika pilihan, bukan strategi teruji atau bukti sampel berikutnya mempunyai hasil sama.
Buat lembar biaya data, hosting, lisensi dan waktu, walau bahasa pemrograman sendiri tidak mengenakan biaya lisensi. Harga penyedia, hak akses dan prosedur pemulihan bergantung pada setup. Uji restart dan pemadaman; lihat platform dan alat untuk lingkungan terkait. VPS tidak menghilangkan pengawasan atau semua kegagalan. Artikel ini tidak menetapkan aturan izin, pajak atau status syariah berdasarkan bahasa pembaca.
Langkah pertama berikutnya
- Pilih satu operasi dan tulis spesifikasi yang dapat diulang: data, timestamp, aturan, hasil serta kondisi penghentian evaluasi. Log sinyal yang dapat dipercaya sudah cukup untuk proyek pertama.
- Verifikasi kelengkapan sejarah, koherensi dan kesegaran pada kasus kecil yang dapat dijelaskan. Pisahkan candle selesai dari candle berjalan dan simpan timestamp input setiap keputusan.
- Jika perlu order, tambahkan di lingkungan demo yang jelas. Uji permintaan terkonfirmasi, penolakan, restart dan jawaban ambigu; periksa status nyata sebelum retry. Tenggat kalender tidak mewajibkan pindah ke uang live.
- Bekukan aturan untuk evaluasi terpisah dengan data dan biaya sesuai produk. Bandingkan tanggal serta keputusan individual sama. Selidiki perbedaan material, jangan menetapkan toleransi persentase universal.
- Tulis prosedur jeda, restart dan pembaruan. Menonaktifkan AutoTrading lokal tidak menutup posisi yang sudah ada. Bedakan proteksi server yang telah diterima dari aturan yang dikelola program; periksa instance jarak jauh secara terpisah. Pengamatan demo tidak menjamin eksekusi live identik.
Periksa pemahaman Anda
Latihan: sekitar 2 menit.
Lihat jawaban dan penjelasan
Benar. Isian 98 dan 106 memberi jawaban berlawanan; simpan input yang belum ada sebagai data hilang.
Pertanyaan lain
Apa sebenarnya trading algoritmik ritel dan apa batasnya?
Bagaimana memilih alert, EA atau program riset?
Keterampilan apa yang diperlukan?
Kegagalan apa yang harus diperiksa sebelum memperluas proyek?
Mengapa satu struktur kuotasi yang benar belum cukup?
Sumber dan verifikasi
- BIS — FX execution algorithms and market functioning
Laporan 2020 membahas algoritma eksekusi dan risiko pasar; bukan uji profit bot ritel.
- MQL5 — CopyRates
Jumlah record, data parsial dan candle berjalan.
- MQL5 — SymbolInfoTick
Harga dan timestamp update dalam struktur yang sama; batas umur merupakan aturan latihan sendiri.
- MQL5 — OrderSend
Keberhasilan pengiriman tidak sendiri membuktikan fill; periksa hasil dan status.
- MT5 — Executing Trades, Alerts
Kondisi harga, volume transaksi terakhir dan waktu; bukan editor indikator bebas.
- MT5 — Expert Advisors and Custom Indicators
Izin AutoTrading dan integrasi Python; penghentian izin bukan order penutupan posisi.
- BMKG — Tanda Waktu Nasional
Offset WIB UTC+7, WITA+8, WIT+9.
Perhitungan menggunakan asumsi yang dinyatakan secara terbuka. Perhitungan ini tidak menggantikan data pasar terkini atau ketentuan penyedia.
