Pendahuluan
Banyak orang tertarik membuat Expert Advisor, atau biasa disingkat EA, karena ingin mengurangi ketergantungan pada emosi saat trading. Keputusan manual sering terganggu oleh takut rugi, ingin balas dendam setelah loss, ragu menutup posisi, atau terlalu cepat mengambil profit. EA tampak seperti jawaban yang rapi: aturan ditulis menjadi program, program berjalan di MetaTrader 5, lalu transaksi dilakukan secara otomatis.
Namun buku ini dimulai dengan satu prinsip penting: EA bukan mesin uang pasti.
EA adalah alat eksekusi aturan. Jika aturan trading-nya buruk, EA akan mengeksekusi keburukan itu dengan cepat dan konsisten. Jika aturan trading-nya belum diuji, EA hanya akan membuat ketidakpastian menjadi otomatis. Jika risiko tidak dibatasi, EA dapat memperbesar kerugian lebih disiplin daripada manusia. Karena itu, tujuan buku ini bukan membuat pembaca percaya bahwa otomatisasi selalu lebih baik daripada trading manual. Tujuan buku ini adalah membantu pembaca membangun EA yang jelas aturannya, terukur risikonya, dapat diuji, dapat diaudit, dan layak dievaluasi secara bertahap.
MetaTrader 5 menyediakan lingkungan untuk membuat dan menjalankan program trading otomatis menggunakan bahasa MQL5, termasuk Expert Advisor, indikator kustom, script, serta fasilitas pengujian strategi melalui Strategy Tester, sebagaimana dijelaskan dalam dokumentasi resmi MQL5 dan MetaTrader 5 dari MetaQuotes (MetaQuotes, “MQL5 Reference”; MetaQuotes, “Strategy Tester”). Dalam buku ini, kita akan menggunakan MT5 bukan hanya sebagai platform untuk menaruh order, tetapi sebagai laboratorium kecil untuk mengubah ide trading menjadi sistem yang bisa diperiksa.
Bayangkan seseorang berkata, “Saya ingin membuat EA yang buy ketika harga naik dan sell ketika harga turun.” Kalimat itu terdengar sederhana, tetapi belum cukup untuk menjadi sistem. Apa arti “harga naik”? Naik dibanding candle sebelumnya, moving average, level breakout, atau struktur tren beberapa hari? Kapan entry dilakukan: saat candle berjalan, saat candle close, atau saat tick tertentu? Di mana stop loss diletakkan? Berapa lot yang digunakan? Kapan EA berhenti trading jika kondisi pasar tidak wajar? Pertanyaan-pertanyaan seperti ini adalah inti dari buku ini.
Kita akan belajar mengubah ide yang kabur menjadi aturan yang objektif.
Mengapa EA Trading Perlu Dibangun dengan Cara yang Disiplin
Trading adalah aktivitas mengambil risiko dengan harapan memperoleh imbal hasil. Dalam konteks ini, risiko berarti kemungkinan hasil aktual berbeda dari hasil yang diharapkan, terutama kemungkinan kehilangan modal. Risiko bukan sekadar “takut rugi”; risiko adalah bagian matematis dari keputusan trading. Misalnya, jika sebuah EA membuka posisi dengan stop loss 50 poin dan ukuran lot tertentu, maka potensi kerugian per transaksi dapat dihitung sebelum posisi dibuka. Perhitungan inilah yang membedakan sistem yang disiplin dari spekulasi yang tidak terkendali.
Pasar keuangan juga tidak bergerak dalam kondisi yang selalu sama. Spread bisa melebar, volatilitas bisa meningkat, likuiditas bisa menurun, dan eksekusi bisa mengalami slippage. Spread adalah selisih antara harga beli dari sisi trader dan harga jual dari sisi trader, yaitu perbedaan antara ask dan bid. Slippage adalah perbedaan antara harga yang diminta saat order dikirim dan harga aktual saat order tereksekusi. Dalam kajian mikrostruktur pasar, biaya transaksi seperti bid-ask spread dan dampak likuiditas merupakan bagian nyata dari proses perdagangan, bukan detail kecil yang bisa diabaikan (Harris, 2003).
Contohnya, sebuah strategi scalping mungkin terlihat sangat bagus di backtest karena rata-rata profit per trade adalah 5 poin. Tetapi jika pada kondisi live spread melebar dari 2 poin menjadi 6 poin, keunggulan kecil itu dapat hilang. Strategi yang tampak “profit konsisten” di data historis bisa berubah menjadi rugi ketika biaya transaksi dan kondisi eksekusi tidak dimodelkan dengan realistis. Karena itu, sejak awal buku ini akan memperlakukan spread, komisi, swap, slippage, dan kualitas data sebagai bagian utama dari desain EA, bukan sebagai catatan kaki.
Disiplin juga diperlukan karena komputer tidak memahami maksud kita. EA hanya menjalankan instruksi. Jika kita lupa menambahkan filter spread, EA dapat tetap membuka posisi saat spread terlalu lebar. Jika kita salah menghitung ukuran lot, EA bisa mengambil risiko jauh lebih besar daripada rencana. Jika logika entry berjalan setiap tick tanpa pencegahan sinyal berulang, EA bisa membuka banyak posisi karena satu sinyal yang sama. Kesalahan kecil dalam kode dapat menjadi kerugian nyata di akun live.
Karena itu, buku ini akan menggabungkan tiga kemampuan:
- Pemahaman pasar, agar kita tahu kondisi apa yang sedang dieksekusi oleh EA.
- Pemahaman strategi, agar ide trading bisa ditulis sebagai aturan objektif.
- Pemahaman teknis MQL5, agar aturan tersebut dapat dijalankan, diuji, dan diawasi dengan benar.
Ketiganya harus berjalan bersama. EA yang kodenya rapi tetapi strateginya lemah tetap berbahaya. Strategi yang idenya masuk akal tetapi kodenya penuh bug juga berbahaya. Strategi dan kode yang terlihat baik tetapi tidak diuji dengan benar juga belum layak masuk akun live.
Apa yang Dimaksud dengan “Konsisten”
Dalam percakapan sehari-hari, banyak trader memakai kata “konsisten” untuk berarti “profit terus”. Dalam buku ini, kita akan memakai definisi yang lebih sehat. Konsisten bukan berarti tidak pernah rugi. Konsisten berarti proses trading memiliki aturan yang stabil, risiko per transaksi terkendali, hasil dapat dievaluasi, dan performa jangka panjang tidak bergantung pada satu atau dua keberuntungan besar.
Sebuah EA yang menang 60% dari transaksi tetapi sekali rugi langsung menghapus keuntungan tiga bulan bukan EA yang sehat. Sebaliknya, EA yang hanya menang 45% tetapi rata-rata profit jauh lebih besar daripada rata-rata loss bisa saja layak dipelajari, jika drawdown masih masuk batas rencana. Drawdown adalah penurunan ekuitas dari puncak sebelumnya ke titik yang lebih rendah. Misalnya, jika ekuitas akun naik dari 10.000 menjadi 12.000, lalu turun ke 10.800, maka drawdown dari puncak adalah 1.200 atau 10% dari 12.000.
Konsistensi juga harus dibaca melalui distribusi hasil, bukan hanya total profit. Distribusi hasil berarti pola penyebaran profit dan loss dari banyak transaksi. Dua EA bisa sama-sama menghasilkan profit 20% dalam backtest, tetapi kualitasnya berbeda. EA pertama mungkin menghasilkan profit dari ratusan trade kecil dengan drawdown terkendali. EA kedua mungkin rugi sepanjang tahun lalu diselamatkan oleh satu trade besar. Keduanya tidak boleh dinilai sama hanya karena angka profit akhirnya sama.
Di sinilah metrik performa menjadi penting. Kita akan mempelajari profit factor, expected value, recovery factor, Sharpe ratio, win rate, risk-reward, jumlah trade, streak kalah, dan bentuk equity curve. Expected value atau nilai harapan adalah rata-rata hasil yang diharapkan per trade jika sistem dijalankan dalam banyak kesempatan. Secara sederhana, jika rata-rata satu trade menghasilkan keuntungan bersih positif setelah memperhitungkan menang, kalah, biaya, dan frekuensi, sistem memiliki nilai harapan positif. Tetapi nilai harapan positif di backtest belum otomatis berarti sistem akan tetap positif di masa depan; kita perlu menguji ketahanan asumsi tersebut.
Pendekatan ini sejalan dengan prinsip umum evaluasi strategi kuantitatif: hasil historis perlu dibaca dengan hati-hati karena data masa lalu dapat menyesatkan jika strategi terlalu disesuaikan pada data tersebut. López de Prado menekankan bahwa pengujian strategi finansial harus memperhatikan masalah seperti overfitting, data leakage, dan validasi out-of-sample agar hasil riset tidak tampak bagus hanya karena terlalu cocok dengan data historis tertentu (López de Prado, 2018).
Dari Ide Trading ke Sistem yang Dapat Diuji
Salah satu perubahan cara berpikir paling penting dalam buku ini adalah membedakan ide dan sistem.
Ide trading adalah pernyataan awal, misalnya:
“Harga cenderung melanjutkan arah setelah breakout dari area sempit.”
Itu baru ide. Agar menjadi sistem, ide tersebut harus diubah menjadi aturan yang dapat dijawab “ya” atau “tidak” oleh komputer. Misalnya:
“Jika range 20 candle terakhir lebih kecil dari nilai ATR tertentu, lalu candle saat ini close di atas high 20 candle sebelumnya, dan spread kurang dari batas maksimum, maka EA membuka posisi buy dengan risiko 1% dari ekuitas, stop loss di bawah low range, dan take profit dua kali jarak stop loss.”
Aturan kedua lebih panjang, tetapi lebih berguna. Komputer bisa memeriksa 20 candle terakhir. Komputer bisa menghitung ATR. Komputer bisa membandingkan spread. Komputer bisa menghitung lot berdasarkan risiko. Komputer bisa menempatkan stop loss dan take profit. Dengan kata lain, aturan itu dapat diuji.
ATR, atau Average True Range, adalah indikator yang mengukur besar pergerakan harga rata-rata dalam periode tertentu. ATR tidak memberi tahu arah harga, tetapi membantu membaca volatilitas. Jika ATR besar, harga sedang bergerak lebih lebar; jika ATR kecil, harga sedang bergerak lebih sempit. Contohnya, EA breakout bisa menghindari entry ketika ATR terlalu kecil karena sinyal mungkin kurang bertenaga, atau menghindari entry ketika ATR terlalu besar karena stop loss menjadi terlalu lebar.
Dalam buku ini, setiap strategi akan diperlakukan sebagai kumpulan keputusan yang jelas:
- kapan boleh trading,
- kapan tidak boleh trading,
- kapan masuk posisi,
- kapan keluar posisi,
- berapa risiko yang boleh diambil,
- bagaimana menangani kondisi pasar yang tidak normal,
- bagaimana mencatat alasan setiap keputusan.
Hal ini penting karena sistem yang tidak dapat dijelaskan biasanya sulit diperbaiki. Jika sebuah EA rugi dan kita tidak tahu mengapa ia masuk posisi, kita tidak sedang mengelola sistem; kita hanya menonton program bekerja.
Backtesting Bukan Bukti Mutlak
Backtesting adalah proses menguji strategi pada data historis. Jika kita memiliki data harga EURUSD selama lima tahun, kita dapat menjalankan EA seolah-olah ia hidup pada masa lalu dan melihat bagaimana hasilnya. MT5 memiliki Strategy Tester yang memungkinkan pengujian seperti ini, termasuk pemilihan simbol, timeframe, rentang tanggal, model tick, parameter input, dan optimasi strategi (MetaQuotes, “Strategy Tester”).
Backtesting berguna karena memberi cara cepat untuk melihat apakah aturan strategi masuk akal secara historis. Tetapi backtesting bukan bukti bahwa EA akan profit di masa depan. Ada beberapa alasan.
Pertama, data historis tidak selalu mewakili kondisi masa depan. Strategi yang bagus saat pasar trending bisa gagal saat pasar sideways. Strategi yang baik saat volatilitas rendah bisa rusak saat volatilitas tinggi.
Kedua, backtest dapat terlalu optimistis jika biaya transaksi tidak realistis. Misalnya, jika spread di backtest terlalu kecil, strategi scalping akan tampak lebih bagus daripada kenyataan. Jika komisi tidak dimasukkan, hasil akhir bisa menipu. Jika kualitas tick rendah, entry dan exit intrabar mungkin tidak tergambar dengan benar.
Ketiga, ada bahaya overfitting. Overfitting terjadi ketika parameter strategi terlalu disesuaikan dengan data historis sehingga strategi tampak sangat bagus di masa lalu tetapi buruk di data baru. Contohnya, kita mencoba ratusan kombinasi moving average, stop loss, take profit, jam trading, dan filter indikator sampai menemukan kombinasi yang paling profit pada data 2019–2023. Kombinasi itu mungkin bukan menemukan hukum pasar, melainkan hanya cocok dengan kebetulan pada periode tersebut.
Cara melawan overfitting bukan dengan berhenti melakukan optimasi, tetapi dengan mengoptimasi secara sehat. Kita akan mempelajari out-of-sample test, walk-forward testing, parameter sensitivity, dan pemilihan parameter yang robust. Robust berarti performa strategi tidak runtuh hanya karena parameter berubah sedikit. Misalnya, jika EA hanya profit ketika moving average persis 37 dan langsung rugi ketika 36 atau 38, strategi itu patut dicurigai. Jika performa tetap cukup baik pada rentang 30 sampai 45, sistem mungkin lebih stabil.
Mengapa MQL5 Perlu Dipahami, Bukan Sekadar Disalin
Banyak pemula memulai EA dengan menyalin kode dari internet. Ini tidak selalu salah sebagai latihan, tetapi berbahaya jika kode dijalankan tanpa pemahaman. MQL5 adalah bahasa pemrograman yang digunakan untuk membuat aplikasi trading di MetaTrader 5, termasuk EA. Dokumentasi resmi MQL5 menjelaskan struktur program, tipe data, fungsi event seperti OnInit, OnTick, dan OnDeinit, serta akses ke data pasar dan fungsi trading (MetaQuotes, “MQL5 Reference”).
Untuk pemula, istilah “event” mungkin terdengar teknis. Dalam konteks EA, event adalah kejadian yang memicu bagian tertentu dari program. Misalnya, OnInit dijalankan saat EA pertama kali dipasang atau dimulai. OnTick dijalankan setiap kali ada tick harga baru. OnDeinit dijalankan saat EA dilepas atau dihentikan. Jika kita memahami alur ini, kita bisa menempatkan logika pada tempat yang benar.
Contohnya, pembuatan handle indikator moving average sebaiknya dilakukan pada tahap inisialisasi, bukan dibuat ulang terus-menerus di setiap tick tanpa alasan. Sebaliknya, pengecekan sinyal entry memang biasanya dilakukan saat ada data harga baru. Pemisahan seperti ini membuat EA lebih efisien dan lebih mudah diperiksa.
Kita akan belajar MQL5 dari dasar: variabel, tipe data, fungsi, kondisi, loop, array, struktur EA, pengambilan data harga, handle indikator, eksekusi order, pengelolaan posisi, logging, debugging, dan deployment. Namun fokus buku ini bukan menjadikan Anda programmer umum. Fokusnya adalah membuat Anda cukup memahami kode agar dapat membangun, menguji, memperbaiki, dan mengawasi EA trading dengan bertanggung jawab.
Jalur Belajar Buku Ini
Buku ini disusun dari fondasi menuju praktik. Bab awal membangun cara berpikir: apa itu EA, bagaimana pasar bekerja, apa arti spread dan likuiditas, serta bagaimana MT5 digunakan. Setelah itu, kita masuk ke jenis strategi yang bisa diotomatisasi: trend-following, mean reversion, breakout, scalping, grid, martingale, news trading, dan portofolio EA.
Kita akan berhati-hati pada strategi berisiko tinggi seperti grid dan martingale. Martingale adalah pendekatan yang biasanya menambah ukuran posisi setelah rugi dengan harapan satu kemenangan berikutnya menutup kerugian sebelumnya. Masalahnya, pasar dapat bergerak melawan posisi lebih lama daripada kapasitas modal trader. Strategi seperti ini bisa tampak stabil dalam waktu lama, lalu mengalami kerugian besar dalam satu rangkaian kejadian ekstrem. Buku ini tidak melarang pembaca mempelajari konsep tersebut, tetapi akan menempatkannya dalam kerangka risiko yang jujur.
Setelah fondasi strategi dan risiko, kita masuk ke MQL5. Anda akan belajar membuat EA pertama dari nol, lalu meningkatkan kualitasnya dengan manajemen posisi, proteksi spread, stop loss, take profit, trailing stop, break-even, dan error handling. Setelah itu, kita belajar backtesting, membaca metrik performa, optimasi, forward test, proteksi kondisi ekstrem, logging, debugging, deployment di VPS, evaluasi live trading, portofolio EA, serta etika dan keamanan modal.
Alur ini sengaja dibuat bertahap. Banyak orang ingin langsung membuat EA yang kompleks, padahal belum bisa menjawab pertanyaan sederhana: “Jika EA rugi, apakah penyebabnya strategi, parameter, biaya transaksi, kondisi pasar, bug kode, atau eksekusi broker?” Buku ini akan melatih Anda membedakan sumber masalah tersebut.
Sikap yang Diperlukan Selama Belajar
Ada tiga sikap yang akan sangat membantu.
Pertama, berpikir statistik. Satu trade tidak cukup untuk menilai EA. Sepuluh trade juga biasanya belum cukup. Kita perlu melihat kumpulan trade yang memadai, distribusi hasil, kondisi pasar, dan apakah performa tetap masuk akal di data yang tidak dipakai untuk menyusun strategi. Ini tidak berarti semua hal harus rumit, tetapi keputusan tidak boleh hanya berdasarkan perasaan setelah beberapa kemenangan atau kekalahan.
Kedua, menerima kerugian kecil sebagai biaya bisnis. EA yang sehat tetap bisa mengalami loss. Yang ingin kita hindari bukan setiap loss, melainkan loss yang tidak terkendali, tidak direncanakan, dan tidak bisa dijelaskan. Jika sebuah sistem dirancang dengan risiko 1% per trade, lalu mengalami lima loss beruntun, kerugian tersebut menyakitkan tetapi masih berada dalam ruang yang bisa dihitung. Jika sebuah sistem tanpa batas risiko mengalami satu loss sebesar 40%, itu bukan sekadar bad luck; itu desain risiko yang buruk.
Ketiga, mendokumentasikan segala sesuatu. Setiap EA sebaiknya memiliki catatan: versi kode, parameter, simbol, timeframe, periode backtest, asumsi spread, hasil optimasi, hasil forward test, aturan risiko, dan alasan perubahan. Tanpa dokumentasi, kita mudah mengulang kesalahan yang sama. Dengan dokumentasi, kita bisa melihat perkembangan secara objektif.
Contohnya, jika setelah tiga bulan forward test performa EA jauh lebih buruk daripada backtest, dokumentasi membantu menjawab: apakah spread live lebih besar? Apakah jam trading berbeda? Apakah broker memiliki eksekusi berbeda? Apakah ada perubahan parameter? Apakah sinyal yang muncul memang sesuai kode? Dari sini, perbaikan bisa dilakukan secara rasional.
Batasan dan Peringatan
Buku ini adalah materi pembelajaran, bukan nasihat investasi personal. Keputusan menggunakan EA di akun live tetap menjadi tanggung jawab pembaca. Pasar memiliki risiko, leverage dapat memperbesar keuntungan sekaligus kerugian, dan hasil masa lalu tidak menjamin hasil masa depan. Prinsip ini penting karena otomatisasi sering memberi rasa aman palsu. EA yang berjalan di VPS selama 24 jam tetap membutuhkan pengawasan, evaluasi, dan batas risiko.
Kita juga tidak akan mengejar janji “profit harian pasti”, “tanpa loss”, atau “EA anti margin call”. Klaim seperti itu tidak sejalan dengan cara kerja pasar yang penuh ketidakpastian. Bahkan sistem yang baik pun bisa memasuki periode buruk. Karena itu, buku ini akan lebih sering bertanya:
- Apakah aturan strategi jelas?
- Apakah risiko per trade masuk akal?
- Apakah backtest realistis?
- Apakah hasil out-of-sample tetap stabil?
- Apakah forward test mendekati ekspektasi?
- Apakah EA memiliki proteksi kondisi ekstrem?
- Apakah semua keputusan tercatat dan dapat diaudit?
Jika jawaban atas pertanyaan-pertanyaan ini makin kuat, barulah sebuah EA layak dipertimbangkan untuk tahap berikutnya. Bukan karena pasti profit, tetapi karena prosesnya semakin profesional.
Tujuan Akhir Buku Ini
Pada akhir buku, Anda diharapkan mampu membangun sebuah EA yang siap diuji secara serius. “Siap diuji” tidak sama dengan “siap menghasilkan uang”. Siap diuji berarti EA memiliki spesifikasi strategi, kode yang dapat dipahami, manajemen risiko, proteksi dasar, hasil backtest, proses optimasi yang tidak ceroboh, rencana forward test, checklist deployment, dan prosedur evaluasi.
Jika Anda sebelumnya trading manual dan merasa hasilnya tidak konsisten, buku ini akan membantu memindahkan keputusan dari impuls sesaat ke aturan yang dapat diuji. Jika Anda sudah pernah memakai EA tetapi tidak memahami cara kerjanya, buku ini akan membantu membaca isi sistem dengan lebih kritis. Jika Anda sudah bisa coding tetapi belum memahami risiko trading, buku ini akan menempatkan kode dalam konteks pasar dan manajemen modal.
Kita akan mulai dari cara berpikir yang benar. Sebelum menulis baris kode pertama, kita perlu menata ekspektasi: EA bukan pengganti disiplin. EA adalah bentuk disiplin yang ditulis menjadi program. Jika disiplin itu dangkal, hasilnya rapuh. Jika disiplin itu dibangun dari pemahaman pasar, aturan objektif, pengujian yang jujur, dan kontrol risiko, EA dapat menjadi alat yang kuat dalam proses trading yang lebih terukur.
Itulah perjalanan buku ini: dari ide menuju sistem, dari sistem menuju pengujian, dari pengujian menuju validasi, dan dari validasi menuju operasi yang disiplin.
References
Harris, L. (2003). Trading and Exchanges: Market Microstructure for Practitioners. Oxford University Press.
López de Prado, M. (2018). Advances in Financial Machine Learning. Wiley.
MetaQuotes. “MQL5 Reference.” MQL5 Documentation. https://www.mql5.com/en/docs
MetaQuotes. “Strategy Tester.” MetaTrader 5 Help. https://www.metatrader5.com/en/terminal/help/algotrading/testing