Call of Imported Functions | Pemanggilan Fungsi yang Diimpor (MQL4)

Penawaran Terbatas! Paket Data 25GB Hanya Rp 90.000
Dapatkan kuota besar 25GB untuk semua nomor AS, Loop, dan simPATI hanya dengan Rp 90.000, berlaku selama 30 hari! Internet lancar tanpa khawatir kehabisan kuota, cocok untuk streaming, gaming, dan browsing sepuasnya!
Aktifkan sekarang dan nikmati kebebasan internet!
Read More Beli PaketUntuk mengimpor fungsi selama eksekusi program MQL4, terminal klien menggunakan early binding. Ini berarti bahwa jika suatu program memanggil fungsi yang diimpor, modul yang bersangkutan (berformat .ex4
atau .dll
) akan dimuat saat program dimuat. Library MQL4 dan DLL dijalankan dalam thread dari modul pemanggil.
Tidak disarankan menggunakan nama lengkap file seperti Drive:\Direktori\NamaFile.Ekstensi
. Library MQL4 dimuat dari folder terminal_dir\MQL4\Libraries
. Jika tidak ditemukan, terminal akan mencarinya di terminal_dir\experts
.
Library sistem (DLL) dimuat mengikuti aturan sistem operasi. Jika library sudah dimuat oleh EA lain, maka library tersebut akan digunakan kembali. Jika belum, sistem akan mencarinya dalam urutan berikut:
- Direktori asal EA, script, indikator, atau library EX4.
terminal_data_directory\MQL4\Libraries
- Direktori asal MetaTrader 4 dijalankan
- Direktori sistem
- Direktori Windows
- Direktori saat ini
- Direktori dalam variabel sistem
PATH
Jika suatu DLL membutuhkan DLL lain, maka DLL pertama tidak akan dimuat jika yang kedua tidak tersedia.
Sebelum EA dimuat, akan dibuat daftar umum dari semua library EX4. Ini memungkinkan EX4 yang sering digunakan hanya dimuat satu kali. Library bisa menggunakan variabel bawaan dari EA yang memanggilnya.
Pencarian library EX4 dilakukan dengan urutan:
- Direktori relatif terhadap EA/script/indikator
terminal_directory\MQL4\Libraries
Common\MQL4\Libraries
Fungsi DLL dalam Program MQL4
Fungsi yang diimpor dari DLL harus sesuai dengan aturan Windows API. Gunakan __stdcall
pada program C/C++ untuk mencocokkan aturan Microsoft®. Aturannya meliputi:
- Program MQL4 harus mengetahui prototipe fungsi.
- Parameter dikirim dari kanan ke kiri (urutan terbalik).
- Parameter dikirim berdasarkan nilai, kecuali string (bisa by reference).
- Fungsi mengatur sendiri stack setelah membaca parameter.
Parameter default dapat digunakan dalam prototipe fungsi.
Jika Library Gagal Dimuat
Jika library gagal dimuat, DLL dilarang, atau fungsi tidak ditemukan, EA akan berhenti dan menampilkan pesan "Expert Advisor stopped" di log. EA tidak akan berjalan lagi sampai:
- EA dikompilasi ulang
- Atau jendela properti EA dibuka dan tombol OK ditekan
Pengiriman Parameter
Semua parameter bertipe sederhana dikirim berdasarkan nilai, kecuali jika secara eksplisit ditetapkan sebagai referensi. Jika string dikirim, maka alamat buffer salinan string akan dikirim. Jika string dikirim sebagai referensi, maka alamat buffer asli yang dikirim tanpa penyalinan.
Struktur kompleks seperti array dinamis, kelas, atau array dari struktur lain tidak bisa dikirim ke fungsi impor.
Jika array dikirim ke DLL, maka alamat awal buffer dikirim. Fungsi dalam DLL tidak tahu tentang flag AS_SERIES
, sehingga array dianggap sebagai array statis. Gunakan parameter tambahan untuk menyebutkan ukuran array.