Jebakan Partial Close + Trailing Stop dan Cara Mengeceknya
Daftar Isi (5)
- Kesimpulan: yang rusak bukan logikanya, tetapi "serah terima status"
- Mengapa penggabungan keduanya mudah bermasalah
- Sisa volume tidak bisa bergantung pada "ingatan" EA
- Lot harus "dibulatkan ke bawah", bukan "dibulatkan biasa"
- Penulisan SL dikumpulkan di satu tempat saja, di akhir
- Daftar periksa implementasi dan verifikasi
- Keterbatasan dan hal yang perlu diperhatikan
- Ringkasan
Daftar Isi
- Kesimpulan: yang rusak bukan logikanya, tetapi "serah terima status"
- Mengapa penggabungan keduanya mudah bermasalah
- Sisa volume tidak bisa bergantung pada "ingatan" EA
- Lot harus "dibulatkan ke bawah", bukan "dibulatkan biasa"
- Penulisan SL dikumpulkan di satu tempat saja, di akhir
- Daftar periksa implementasi dan verifikasi
- Keterbatasan dan hal yang perlu diperhatikan
- Ringkasan
Kesimpulan: yang rusak bukan logikanya, tetapi "serah terima status"
Partial close dan trailing stop sebenarnya bukan proses yang sulit jika dijalankan sendiri-sendiri. Masalah muncul ketika keduanya diterapkan pada posisi yang sama. Dari pengalaman pengembangan kami, masalahnya hampir selalu terkonsentrasi di tiga tempat berikut.
- Pengelolaan sisa volume: EA tidak bisa mengingat apakah posisi "sudah di-partial close atau belum"
- Kelipatan lot: volume yang ditutup tidak sesuai dengan lot minimum atau kelipatan lot dari broker
- Urutan pengaturan ulang SL: partial close, pemindahan ke breakeven, dan trailing saling menimpa satu sama lain
Ketiganya sulit terlihat di backtest, dan biasanya baru disadari saat EA berjalan di akun riil.
Perbandingan Broker Direkomendasikan →
🎁 Unduh EA Gratis📧 Kursus email gratis (8 email) + paket 13 indikator MT5 khusus pelanggan
* Privasi sangat dilindungi. Anda dapat berhenti berlangganan kapan saja.
Mengapa penggabungan keduanya mudah bermasalah
Sisa volume tidak bisa bergantung pada "ingatan" EA
Di MT5, tiket posisi tidak berubah setelah partial close. Yang berkurang hanya POSITION_VOLUME. Jika status "sudah partial close" hanya disimpan dalam variabel bool, nilainya hilang saat EA dimulai ulang, VPS tersambung kembali, atau time frame diganti. Pada tick pertama setelahnya, posisi yang tersisa bisa kembali ditutup separuh. Ini adalah kecelakaan yang paling khas.
Sebagai solusi, kami menelusuri riwayat eksekusi posisi tersebut dengan HistorySelectByPosition(), lalu membandingkan volume awal dengan sisa volume saat ini untuk menentukan tahap partial close. Flag di memori hanya dipakai sebagai pelengkap.
Lot harus "dibulatkan ke bawah", bukan "dibulatkan biasa"
Jika 0,03 lot dibagi dua, hasilnya 0,015. Pada akun dengan kelipatan lot 0,01, pembulatan biasa akan menutup 0,02 lot, sehingga yang dilepas lebih banyak dari rencana. Volume penutupan perlu dibulatkan ke bawah dengan SYMBOL_VOLUME_STEP, dan Anda juga harus memastikan sisa volume setelah penutupan masih sama dengan atau di atas SYMBOL_VOLUME_MIN. Posisi 0,01 lot pada dasarnya tidak bisa dibagi. Karena itu, putuskan lebih dulu dalam spesifikasi apakah EA "tidak melakukan partial close" atau "menutup seluruh posisi". Kalau tidak, EA akan terus menerima error.
Penulisan SL dikumpulkan di satu tempat saja, di akhir
PositionModify() adalah fungsi yang menetapkan SL dan TP sekaligus. Jika proses trailing mengirim nilai 0 untuk TP, TP akan hilang. Selain itu, jika proses pemindahan SL ke breakeven setelah partial close dan proses penaikan SL oleh trailing berjalan terpisah pada tick yang sama, yang menulis belakangan akan menang. Akibatnya, SL yang sudah dinaikkan ke breakeven bisa turun lagi.
Urutan yang kami gunakan adalah sebagai berikut.
- Kirim partial close → pilih ulang posisi dan pastikan sisa volumenya
- Hitung kandidat SL breakeven dan kandidat SL trailing
- Gerakkan SL hanya ke sisi yang "lebih menguntungkan daripada SL saat ini" (yang lebih tinggi untuk posisi buy, yang lebih rendah untuk posisi sell)
- Periksa stop level dan freeze level, lalu ubah sekali saja dengan mengirim ulang nilai TP yang berlaku saat ini
Daftar periksa implementasi dan verifikasi
| Butir yang diperiksa | Gejala jika rusak | Cara memeriksa |
|---|---|---|
| Apakah tahap partial close ditentukan dari riwayat eksekusi? | Partial close ganda setelah EA dimulai ulang | Pasang ulang EA saat berjalan, lalu amati perubahan sisa volume |
| Apakah volume penutupan dibulatkan ke bawah sesuai kelipatan lot? | Volume yang ditutup lebih besar dari rencana, atau muncul error | Buka posisi dengan lot minimum, lalu lihat log |
| Apakah penanganan pembagian pada lot minimum sudah ditentukan? | Penutupan gagal di setiap tick | Coba dengan 0,01 lot |
| Apakah SL tidak berbalik ke arah yang merugikan? | Posisi tertutup rugi setelah SL breakeven | Telusuri perubahan SL secara berurutan di log |
| Apakah perubahan SL tidak menghapus TP? | Take profit tidak bekerja | Lihat kolom TP pada posisi setelah perubahan |
| Apakah SL tidak digeser ketika partial close gagal? | Sisa volume dan SL tidak lagi sejalan | Kirim order sesaat sebelum pasar tutup agar sengaja gagal |
| Apakah EA tidak dijalankan di akun netting? | Posisi tergabung dengan posisi EA lain | Pastikan jenis akun |
Dari sisi pengguna, pemeriksaan tercepat adalah menjalankan EA di akun demo dengan lot minimum, lalu melihat apakah perilakunya tetap sama setelah EA dipasang ulang di tengah jalan. Dasar-dasar pengaturan kami rangkum di Cara Mengatur EA.
Keterbatasan dan hal yang perlu diperhatikan
Strategy tester mengeksekusi order secara instan, dan hampir tidak pernah terjadi order yang hanya terisi sebagian. Karena itu, masalah di sekitar partial close hampir tidak terlihat dari angka backtest. Perbedaan metode eksekusi di akun riil (filling mode) dan perilaku saat terjadi requote hanya bisa dipastikan per broker. Itulah kenyataannya.
Menambahkan partial close juga belum tentu membuat hasil lebih baik. Pada tipe trend following yang win rate-nya rendah dan keuntungan totalnya ditopang oleh sedikit profit besar (misalnya DONCHIAN ENGINE, dengan win rate 34,5% di backtest), volume justru dikurangi pada fase ketika profit sedang berkembang, sehingga ekspektasi bisa menurun. Fluktuasi untung-rugi memang menjadi lebih kecil, tetapi apa yang dikorbankan sebagai gantinya tidak bisa diketahui tanpa pengujian untuk tiap EA. Kami sendiri juga belum memeriksa semua kombinasi.
Jika Anda menambahkan partial close sendiri pada strategi seperti DONCHIAN ENGINE, perhatikan bahwa hasil verifikasi aslinya tidak lagi berlaku apa adanya.
Ringkasan
- Yang mudah rusak saat partial close dan trailing digabung adalah "serah terima status", bukan logikanya
- Tahap partial close ditentukan dari riwayat eksekusi dan sisa volume, bukan dari flag di memori
- Bulatkan lot ke bawah sesuai kelipatan lot, lalu pastikan sisa volume tidak berada di bawah lot minimum
- Kumpulkan perubahan SL di satu tempat, gerakkan hanya ke arah yang menguntungkan, dan jangan hapus TP
- Karena sulit terlihat di backtest, lakukan uji pemasangan ulang di akun demo
- Partial close memang mengecilkan fluktuasi untung-rugi, tetapi bisa juga menurunkan ekspektasi
Catatan implementasi lainnya juga kami rangkum di Pengetahuan EA & MT5.
Terkait
📧 Kursus email gratis (8 email) + paket 13 indikator MT5 khusus pelanggan
* Privasi sangat dilindungi. Anda dapat berhenti berlangganan kapan saja.
Punya pertanyaan tentang EA atau Forex?
Anda bisa mengajukannya di forum trading Nattzy (daftar gratis). Pertanyaan di luar artikel ini juga dipersilakan — pengaturan EA, memilih broker, dan lainnya.
Tanya di Nattzy ↗