Dalam artikel ini
Setelah membaca artikel ini…
- Memisahkan nilai yang hilang dari kondisi yang memang False.
- Memeriksa NaN, batas numerik serta kesamaan input sebelum memindahkan aturan otomatis.
- Mencocokkan keadaan order dan ketergantungan operasional sebelum mengulang permintaan.
Pelajari istilah tanpa meninggalkan artikel
Backtesting (uji data historis) Eksekusi order Nilai nosional posisi Komisi Akun demo Spread (selisih Bid–Ask)MQL5 dan Python menyediakan cara berbeda untuk mengotomatisasi proses trading yang sudah didefinisikan. Mulailah dari akses rekening, data serta cara sistem dioperasikan. Nama bahasa, skrip pendek atau rancangan hybrid tidak membuktikan aturan menguntungkan maupun jalur tercepat menuju eksekusi yang andal. Pilihan perlu menjawab kebutuhan yang dapat diperiksa, termasuk ketika data atau komunikasi gagal.
Apa yang sebenarnya dibandingkan?
Expert Advisor MQL5 berjalan melalui terminal MT5. Python dapat memakai paket resmi MetaTrader5, API broker terpisah, atau berkas historis untuk riset saja. Paket resmi berkomunikasi dengan terminal; ia bukan konektor langsung ke semua server broker. Periksa kecocokan distribusi, interpreter serta sistem operasi. Pada pemeriksaan 24 Oktober 2026, berkas rilis PyPI MetaTrader5 5.0.6231 yang ditinjau berupa wheel Windows x86-64. Python tersedia di sistem lain tidak berarti wheel ini otomatis cocok di sana.
initialize() dapat meluncurkan terminal bila perlu. Tetapkan instalasi yang dimaksud, lalu periksa rekening, server serta status demo/live. Jangan mengandalkan rekening yang terakhir dipakai. Koneksi berhasil tidak mengonfirmasi hasil permintaan order sebelumnya. API terpisah juga membutuhkan pemeriksaan entitas, produk, izin dan data sendiri.
| Susunan | Ketergantungan operasional | Pemeriksaan awal |
|---|---|---|
| EA MQL5 | Terminal, kode, parameter serta koneksi rekening. | Versi aktif dan respons operasi. |
| Python melalui MT5 | Proses Python, terminal serta komunikasi di antaranya. | Identitas rekening sesudah terhubung. |
| Python melalui API broker | Otorisasi, adapter, batas serta model order. | Satuan instrumen dan izin yang tersedia. |
| Riset Python, eksekusi MQL5 | Aturan serta versi yang sepadan di dua lingkungan. | Input batas yang sama diputar ulang. |
Lihat langkah awal trading algoritmik dan dasar Expert Advisor. Jumlah proses lebih sedikit mungkin menyederhanakan pengawasan, tetapi tidak menggantikan respons terhadap penolakan, fill parsial atau keadaan yang belum pasti. Materi platform trading membantu menempatkan pilihan ini dalam susunan kerja keseluruhan.
Integrasi MQL5 tetap memiliki syarat
MQL5 menggabungkan event terminal, fungsi trading serta Strategy Tester. Periksa data, biaya dan asumsi eksekusi yang dipilih; tester bukan rekaman sempurna kenyataan broker historis. Optimasi cloud mempunyai syarat tersendiri. Model yang disiapkan di lingkungan lain dapat berjalan melalui antarmuka ONNX yang didukung MQL5. Machine learning tidak selalu memerlukan Python aktif saat eksekusi; bentuk input/output serta preprocessing harus sesuai.
OnTick tidak menjamin satu callback berbeda untuk setiap tick yang diterima. NewTick baru tidak dimasukkan ketika event sejenis sudah mengantre atau sedang diproses. Ukur beban aktual serta kebutuhan waktu respons. Nama bahasa tidak membuktikan latensi satu milidetik atau bahwa latensi selalu tidak penting untuk keputusan H1.
Library Python tidak menghapus pemeriksaan adapter
Python menyediakan alat analisis serta pemodelan. Antarmuka umum tetap harus menangani simbol, jumlah, sesi, ketersediaan data dan aturan order setiap penyedia. Data makro atau beberapa rekening adalah kebutuhan yang perlu diuji, bukan alasan otomatis menetapkan satu tumpukan unggul. Pengujian berkas analitis tidak membutuhkan izin mengirim order.
Simpan versi dependensi serta konfigurasi. Repositori asli ib_insync diarsipkan pemiliknya pada 14 Maret 2024. Kode lama tidak otomatis tidak dapat digunakan, tetapi tutorial lama juga tidak membuktikan dukungan sekarang. Periksa integrasi yang benar-benar dipilih. Simpan kredensial di luar kode publik dan log biasa; jangan mencampurkan kredensial demo serta live.
Dua rancangan hybrid yang berbeda
Pada rancangan pertama, Python mengembangkan model dan aturan terverifikasi dipasang dalam EA MQL5. Python tidak perlu terus berjalan jika seluruh logika yang dibutuhkan sudah berada dalam pelaksana. Pada rancangan kedua, Python terus mengirim permintaan melalui terminal. Pantau kedua proses, kesegaran input serta keadaan rekening aktual.
Hosting virtual MetaQuotes memigrasikan lingkungan EA/grafik yang didukung; layanan itu bukan desktop Windows umum untuk menjalankan proses Python eksternal apa pun. EA tambahan juga tidak dapat menutup posisi melalui terminal atau koneksi broker yang sama-sama tidak tersedia. Baca kembali perlindungan yang diterima server secara terpisah.
order_send() mengirim permintaan dan mengembalikan struktur hasil. Penutupan memerlukan action dan konteks posisi yang tepat; daftar fungsi resmi yang ditinjau tidak mendokumentasikan fungsi umum position_close(). Sesudah komunikasi tidak pasti, cocokkan order, deal serta posisi sebelum memutuskan mengirim permintaan lagi.
Niatnya membeli 0,10 lot. Permintaan pertama terisi, tetapi respons hilang. Permintaan kedua 0,10 lot yang dikirim tanpa rekonsiliasi juga terisi: total menjadi 0,20 lot. Dengan kontrak linear EUR/USD rekaan 100.000 EUR per lot, pip 0.0001 dan rekening USD, eksposur per pip naik dari 1 USD menjadi 2 USD. Kedua fill ditetapkan dalam model; tidak berarti setiap permintaan tidak pasti pasti terisi atau semua broker menggabungkan posisi dengan cara sama.
Negasi dapat membuat data hilang menjadi True
Pada pengujian scalar Python float ini, x = float('nan') mewakili hasil indikator yang hilang. Ambang 10 adalah rekaan. NaN bukan nol atau bilangan besar; input ini tidak dianggap sudah dibuang sebelumnya.
Untuk NaN, x > 10 adalah False tetapi not(x <= 10) adalah True. Periksa data serta finiteness sebelum mengevaluasi aturan entri.
Pada layar kecil, gulir diagram mendatar atau perbesar. Nilai dan kesimpulan juga tersedia dalam teks di bawah.
x > 10 memberi False, sedangkan not(x <= 10) memberi True. Pada bilangan finite keduanya dapat tampak setara, tetapi tidak pada NaN. Periksa tipe, ketersediaan serta finiteness sebelum aturan. Pada varian ini, math.isfinite(x) and x > 10 memblokir NaN. Contoh berlaku untuk scalar float, bukan array NumPy atau aturan Decimal yang berbeda; jangan menganggap semua bahasa menangani data hilang sama.
Cocokkan batas aturan serta fill yang ditetapkan
Dalam contoh sinyal rekaan, sinyal baru tersedia sesudah bar ditutup pada 1.1000. Model A membeli di sana, sedangkan B membeli pada Ask berikutnya 1.1003. Dengan pip EUR/USD 0.0001, selisihnya tiga pip. Waktu, pergerakan pasar serta sisi kuotasi dapat berperan; seluruh selisih tidak boleh langsung disebut overhead Python atau spread. Bandingkan catatan sinyal, permintaan, jumlah, fill dan biaya sebelum membandingkan total return.
Backtest tervektorisasi bisa memasukkan biaya. Nama event-driven pun tidak membuktikan model fill benar. Tester MT5 tidak menjalankan sembarang skrip Python sebagai EA native. Implementasi hasil porting perlu memakai versi input serta aturan yang sama. Tinjau komisi, nilai nosional dan cakupan backtesting secara eksplisit.
Pemeriksaan batas lain memakai scalar Python float: 0.1 + 0.2 menghasilkan 0.30000000000000004, lebih besar daripada float 0.3. Dalam model Decimal yang dibuat dari string, jumlahnya tepat 0.3; satuan integer memberi 1 + 2 = 3. Menampilkan dua float sebagai “0.3” tidak mengubah perbandingan nilai tersimpannya. Pilihan toleransi harus didefinisikan, bukan ditambahkan sesudah melihat hasil yang tidak disukai.
Uji input di bawah, sama dengan, di atas, hilang serta non-finite saat memindahkan aturan. Pemeriksaan NaN di diagram tidak menjalankan versi MQL5 atau membuktikan keunggulan trading. Array, tipe numerik lain serta pembulatan memiliki semantiknya sendiri.
Pilih berdasarkan kebutuhan yang dapat diulang
Tuliskan rekening/API, data, waktu keputusan, library, sistem operasi serta kebutuhan pengawasan. Nilai apa yang mampu dipelihara. Prototipe kecil dapat membaca data dan mencatat sinyal tanpa trading. Jumlah baris kode, waktu pemasangan tetap atau perbandingan waktu belajar dua banding satu tidak menetapkan pilihan yang benar. Bila eksekusi peka waktu, ukur susunan yang diusulkan; interval bar saja tidak menghilangkan kebutuhan ketepatan waktu.
Langkah berikutnya: uji satu susunan dan kegagalannya
- Tetapkan aturan kecil beserta ketersediaan input, semantik kesamaan, satuan serta hasil yang diharapkan sebelum memilih pelaksana.
- Pisahkan konfigurasi rekening demo, pengujian data saja dan izin order. Baca kembali identitas rekening serta instrumen tujuan.
- Latih penolakan, input tidak tersedia, restart serta respons tidak pasti di demo. Koneksi pulih tidak membuktikan order sebelumnya gagal.
- Cocokkan sinyal satu per satu serta asumsi eksekusi sebelum profit agregat. Catat kebutuhan yang belum terpenuhi serta alternatif lebih sederhana; skrip pendek yang berhasil bukan sertifikat keandalan.
Lanjutkan ke backtest Python atau dasar EA MQL5. Gunakan praktik trading dan manajemen risiko sebagai konteks, tanpa menganggap pilihan bahasa memberi izin broker atau perlakuan pajak Indonesia tertentu.
Periksa pemahaman Anda
Latihan: sekitar 2 menit.
Lihat jawaban dan penjelasan
Benar. Pemeriksaan ketersediaan serta isfinite yang terpisah diperlukan; True belum membuktikan hasil indikator tersedia.
Pertanyaan lain
Apakah harus menguasai Python untuk memulai?
Apakah hybrid Python dan MT5 stabil untuk live?
Apakah MQL5 selalu cukup cepat untuk strategi per tick?
Kapan perlu beralih dari MQL5 ke Python?
Mengapa not(x <= 10) memberi True pada NaN?
Mengapa pengulangan order bisa menggandakan eksposur?
Sumber dan verifikasi
- MQL5: integrasi Python
Paket MetaTrader5 berkomunikasi dengan terminal; identitas rekening dan instrumen tetap perlu dicek.
- MQL5: initialize()
Terminal dapat diluncurkan; path, login serta server harus sesuai tujuan.
- MQL5: properti order
Bibliografi tipe, status serta atribut order; bukan bukti satu permintaan tertentu terisi.
- Backtrader: Quickstart
Bibliografi framework backtesting, tanpa klaim benchmark lebih cepat atau fill otomatis benar.
- Yves Hilpisch: Python for Finance, edisi kedua
Bibliografi buku 2018; tidak ada kutipan langsung buku yang diklaim terverifikasi.
- MQL5: OnTick dan antrean event
NewTick tidak ditambahkan bila event sejenis mengantre atau diproses; bukan janji callback setiap tick.
- MetaTrader 5: migrasi hosting virtual
Lingkungan yang didukung dimigrasikan; bukan desktop umum untuk proses eksternal.
- Python: perbandingan dan operasi Boolean
Semantik scalar float NaN serta negasi; bukan jaminan kesetaraan lintas bahasa.
- Python: math.isfinite
Memisahkan nilai finite dari NaN dan infinity sebelum aturan.
- PyPI MetaTrader5: berkas distribusi
Rilis 5.0.6231 yang diperiksa memiliki wheel Windows x86-64; periksa interpreter serta platform.
- erdewit/ib_insync: repositori asli
Repositori diarsipkan pemiliknya 14 Maret 2024; tidak berarti semua kode lama tidak dapat digunakan.
- MQL5: dukungan ONNX
Model dapat disiapkan di lingkungan lain dan dijalankan lewat antarmuka yang didukung MQL5.
- MQL5: order_send()
Permintaan dan struktur hasil, termasuk konteks posisi untuk perubahan atau penutupan.
Perhitungan menggunakan asumsi yang dinyatakan secara terbuka. Perhitungan ini tidak menggantikan data pasar terkini atau ketentuan penyedia.
