Beranda > Blog > Unsupported Filling Mode (Error MT5 10030)

MT5MQL5ErrorTroubleshootingEA

Unsupported Filling Mode (Error MT5 10030)

Dipublikasikan: 2026-07-07Waktu baca: sekitar 6 menit
This article reflects information as of its publish date. EA performance figures (PF, DD, annual return) change with live trading and re-validation — check the latest on the EA pages. See the latest EA results

Panduan Lengkap Mengatasi Unsupported Filling Mode (Error MT5 10030)

EA yang kemarin masih berjalan normal di broker lain, begitu dipindahkan ke akun baru langsung memunculkan Unsupported filling mode atau OrderSend error 10030 di tab Expert dan tidak bisa entry sama sekali — ini adalah salah satu masalah paling klasik saat pindah broker dalam penggunaan EA di MT5. EA-nya tidak rusak, akunnya juga tidak bermasalah. Penyebabnya hanya satu: mode eksekusi order ("filling mode") yang ditentukan tidak diizinkan untuk simbol tersebut di broker baru.

Artikel ini ditujukan untuk pengguna EA di MT5 maupun developer yang menulis EA di MQL5, merangkum secara tuntas apa itu TRADE_RETCODE_INVALID_FILL (10030), arti FOK/IOC/RETURN, cara cek dalam 30 detik, hingga solusi permanen di sisi kode. Untuk daftar lengkap kode error lainnya, lihat Panduan Lengkap Mengatasi Kode Error MQL5 / MT5.

Artikel ini mengacu pada MT5 (build seri 4xxx) per Juli 2026. Nama tampilan dan penulisan bisa sedikit berbeda tergantung broker dan build.


Apa Itu 10030 (TRADE_RETCODE_INVALID_FILL)

Hasil dari OrderSend() disimpan dalam MqlTradeResult.retcode. Kode 10030 = TRADE_RETCODE_INVALID_FILL yang muncul di sana adalah penolakan dari sisi server yang berarti "type_filling (mode eksekusi) yang ditentukan dalam request tidak diizinkan untuk simbol ini".

Arti  : Mode eksekusi (filling type) yang ditentukan tidak didukung
Konstanta: TRADE_RETCODE_INVALID_FILL
Nilai : 10030
Tampilan: Unsupported filling mode / Invalid order filling type
// Contoh output khas yang terlihat di log
2026.07.07 09:15:32.441 EA_NAME EURUSD,M15: OrderSend error 10030
2026.07.07 09:15:32.441 EA_NAME EURUSD,M15: failed market buy 0.10 EURUSD [Unsupported filling mode]

Poin pentingnya, hal ini sama sekali tidak berkaitan dengan modal, lot, atau harga. 10030 murni masalah pada satu field saja, yaitu MqlTradeRequest.type_filling, dan begitu itu diperbaiki, order yang sama akan langsung tereksekusi.

4 Jenis Mode Eksekusi (type_filling)

ENUM_ORDER_TYPE_FILLING di MQL5 memiliki 4 nilai.

KonstantaSebutanArti
ORDER_FILLING_FOKFill or KillOrder hanya dieksekusi jika seluruh volume bisa terpenuhi. Jika order 1 lot hanya tersedia likuiditas 0,7 lot, seluruh order dibatalkan
ORDER_FILLING_IOCImmediate or CancelBagian yang bisa terpenuhi dieksekusi segera, sisanya dibatalkan. Jika hanya 0,7 lot yang terisi, 0,3 lot sisanya hilang
ORDER_FILLING_RETURNReturnBagian yang bisa terpenuhi dieksekusi, sisanya tetap tercatat sebagai order (menunggu eksekusi tambahan). Digunakan pada eksekusi bertipe bursa
ORDER_FILLING_BOCBook or CancelHanya diterima jika order masuk ke book (menunggu secara pasif); jika harga langsung tereksekusi maka ditolak. Khusus untuk limit/stop-limit (ditambahkan pada build yang lebih baru)

Untuk EA forex pada umumnya, yang benar-benar dipakai hampir selalu FOK atau IOC. RETURN relevan untuk eksekusi bertipe bursa (Exchange execution) seperti saham dan futures, sedangkan BOC adalah kebutuhan khusus untuk memaksa order sebagai maker.

Kenapa Bisa "Invalid" — SYMBOL_FILLING_MODE

Mode eksekusi mana yang diterima ditentukan oleh flag yang diatur broker per simbol (SYMBOL_FILLING_MODE). Di MQL5 bisa dibaca seperti ini.

long flags = SymbolInfoInteger(_Symbol, SYMBOL_FILLING_MODE);
// Jika flag SYMBOL_FILLING_FOK aktif, berarti FOK diizinkan
// Jika flag SYMBOL_FILLING_IOC aktif, berarti IOC diizinkan

SYMBOL_FILLING_MODE berupa bit flag yang berisi status izin FOK dan IOC (jika keduanya diizinkan, kedua flag akan aktif). RETURN tidak termasuk dalam flag ini, dan penggunaannya ditentukan oleh mode eksekusi simbol (dijelaskan di bawah).

Jadi, struktur masalah 10030 sebenarnya sederhana:

type_filling yang dikirim EA ∉ mode eksekusi yang diizinkan untuk simbol tersebut → 10030

Hanya itu saja.


Kenapa Muncul Tepat "Saat Ganti Broker"

Alasan 10030 disebut sebagai "error klasik saat migrasi broker" adalah sebagai berikut.

  1. Mode eksekusi yang diizinkan berbeda-beda tergantung broker dan simbol. Ada broker yang hanya mengizinkan FOK untuk simbol forex, broker lain hanya IOC, dan ada pula yang mengizinkan keduanya. Bahkan dalam satu broker yang sama pun, pengaturan forex dan CFD/saham biasanya berbeda.
  2. Banyak EA yang menuliskan type_filling secara hardcode. Misalnya EA yang menulis request.type_filling = ORDER_FILLING_FOK; akan berjalan normal bertahun-tahun di broker A yang mengizinkan FOK. Karena berjalan lancar di lingkungan pembuatnya, hal ini tidak pernah terdeteksi sebagai bug dan tetap didistribusikan.
  3. Jika broker B yang dituju tidak mengizinkan FOK, maka entry pertama pun langsung gagal total. Hal ini seringkali tidak muncul saat backtest (perilaku tester lebih longgar dibanding server sebenarnya), sehingga baru terlihat jelas "pada hari dipindahkan ke akun real".

Dengan kata lain, 10030 bukan murni bug pada EA, melainkan terungkapnya asumsi yang terlalu bergantung pada lingkungan tertentu. Sebaliknya, jika diperbaiki agar membaca flag izin simbol dan memilih secara dinamis, EA tersebut akan bisa berjalan di broker manapun (kode ada di bawah).

Kaitannya dengan Mode Eksekusi (SYMBOL_TRADE_EXEMODE)

Selain mode eksekusi order, simbol juga memiliki mode eksekusi (execution mode) yang memengaruhi mode eksekusi mana yang relevan.

Mode EksekusiKonstantaContoh KhasKecenderungan Mode Eksekusi Order
InstantSYMBOL_TRADE_EXECUTION_INSTANTSebagian forex (banyak di broker tipe DD)Eksekusi pada harga yang ditentukan. Dunia FOK/IOC + requote
MarketSYMBOL_TRADE_EXECUTION_MARKETMayoritas forex/CFD (tipe NDD)Eksekusi market. FOK atau IOC (tergantung pengaturan broker)
ExchangeSYMBOL_TRADE_EXECUTION_EXCHANGESaham, futuresEksekusi ke order book. RETURN sebagai standar
RequestSYMBOL_TRADE_EXECUTION_REQUESTLegacyEksekusi berbasis request (sekarang jarang)

Kombinasi izin yang tepat memang bergantung pada pengaturan server broker, tetapi secara praktis cukup diingat: "untuk eksekusi Market di forex/CFD gunakan FOK atau IOC, untuk simbol bertipe bursa gunakan RETURN". Mode eksekusi juga bisa dicek lewat SymbolInfoInteger(_Symbol, SYMBOL_TRADE_EXEMODE).


Cek Cepat Dalam 30 Detik

① Cek Mode Eksekusi yang Diizinkan pada Simbol (Tampilan MT5)

Buka Market Watch → klik kanan simbol → Specification, lalu lihat baris "Filling". Di sana akan tertampil Fill or Kill / Immediate or Cancel / keduanya. Jika EA mengirim mode yang tidak tercantum di sini, sudah pasti akan muncul 10030.

② Cek Parameter Input EA

EA yang dibuat dengan baik biasanya punya input seperti FillingType atau Filling Mode. Jika ada, cukup ubah sesuai mode yang diizinkan pada langkah ① dan masalah langsung selesai (tanpa perlu ubah kode).

③ Cek Lewat Kode (Untuk Developer)

long flags = SymbolInfoInteger(_Symbol, SYMBOL_FILLING_MODE);
PrintFormat("%s filling: FOK=%s IOC=%s exemode=%d",
            _Symbol,
            ((flags & SYMBOL_FILLING_FOK) != 0) ? "yes" : "no",
            ((flags & SYMBOL_FILLING_IOC) != 0) ? "yes" : "no",
            (int)SymbolInfoInteger(_Symbol, SYMBOL_TRADE_EXEMODE));

Jalankan ini lewat script, dan status izin sebenarnya untuk broker serta simbol tersebut akan langsung tampil dalam satu baris.


Solusi Permanen — Kode MQL5 yang Membaca Flag Izin dan Memilih Otomatis

Cara memperbaiki 10030 yang benar bukanlah "menyesuaikan manual setiap kali pindah broker", melainkan membuat EA itu sendiri membaca flag izin simbol dan memilih mode secara otomatis. Berikut implementasi standar yang bisa langsung dipakai.

Fungsi Deteksi Otomatis

// Mengembalikan mode eksekusi yang benar-benar diizinkan untuk simbol tersebut
// Prioritas: FOK → IOC → RETURN (fallback untuk tipe bursa)
ENUM_ORDER_TYPE_FILLING GetFillingMode(const string symbol)
{
   long flags = SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE);

   if((flags & SYMBOL_FILLING_FOK) != 0)
      return ORDER_FILLING_FOK;    // Eksekusi hanya jika seluruh volume terpenuhi (tanpa partial fill)

   if((flags & SYMBOL_FILLING_IOC) != 0)
      return ORDER_FILLING_IOC;    // Eksekusi sebagian yang terpenuhi, sisanya dibatalkan

   return ORDER_FILLING_RETURN;    // Tanpa flag = tipe bursa dsb. Kirim dengan RETURN
}

Cara Pakai di OrderSend

MqlTradeRequest req; MqlTradeResult res;
ZeroMemory(req); ZeroMemory(res);

req.action       = TRADE_ACTION_DEAL;
req.symbol       = _Symbol;
req.volume       = lots;
req.type         = ORDER_TYPE_BUY;
req.price        = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
req.deviation    = 20;
req.magic        = MagicNumber;
req.type_filling = GetFillingMode(_Symbol);   // ← jangan hardcode

if(!OrderSend(req, res) || res.retcode != TRADE_RETCODE_DONE)
{
   if(res.retcode == TRADE_RETCODE_INVALID_FILL)   // 10030
      PrintFormat("Unsupported filling mode: sent=%d, allowed flags=%d",
                  (int)req.type_filling,
                  (int)SymbolInfoInteger(_Symbol, SYMBOL_FILLING_MODE));
   else
      PrintFormat("OrderSend failed: retcode=%d", res.retcode);
}

Dengan ini, EA yang sama, dengan binary yang sama, tetap bisa berjalan baik di broker yang hanya mengizinkan FOK maupun yang hanya mengizinkan IOC. Tidak perlu lagi penyesuaian manual setiap kali pindah broker.

Jika Menggunakan CTrade

Standard library CTrade sudah menyediakan SetTypeFillingBySymbol() yang otomatis mengatur mode eksekusi berdasarkan flag izin simbol.

#include <Trade/Trade.mqh>
CTrade trade;

int OnInit()
{
   trade.SetExpertMagicNumber(MagicNumber);
   trade.SetTypeFillingBySymbol(_Symbol);   // Membaca flag izin dan mengatur otomatis
   return INIT_SUCCEEDED;
}

Jika 10030 muncul karena penulisan lama yang hardcode seperti trade.SetTypeFilling(ORDER_FILLING_FOK);, cukup ganti dengan satu baris ini untuk menyelesaikannya. Jika ingin menentukan secara manual, hasil dari GetFillingMode() di atas juga bisa dioper ke SetTypeFilling() untuk efek yang sama.

Catatan Saat Menggunakan Order Limit (BOC)

ORDER_FILLING_BOC (Book or Cancel) khusus untuk order limit/stop-limit, dan akan ditolak jika harga yang ditentukan langsung tereksekusi. Menggunakannya untuk order market adalah kesalahan, jadi EA bertipe market tidak perlu memasukkan BOC sebagai pilihan.


Catatan Terkait Broker (Pengecekan Ulang Saat Migrasi)

  • Pengaturan izin mode eksekusi bukan hanya berbeda antar broker, tetapi juga berbeda antar simbol (grup instrumen) dalam broker yang sama. Sangat wajar jika forex mengizinkan IOC, tetapi CFD saham hanya mengizinkan RETURN.
  • Perubahan tipe akun atau server juga bisa mengubah pengaturan ini. Bukan hanya saat pindah broker, 10030 juga bisa tiba-tiba muncul setelah perpindahan server, perubahan tipe akun, atau revisi spesifikasi instrumen dalam broker yang sama.
  • Oleh karena itu, sebagai aturan operasional, sebaiknya jadikan kebiasaan untuk "mengecek ulang mode eksekusi lewat halaman spesifikasi (atau script) setiap kali akun, server, atau simbol berubah". Jika EA sudah dilengkapi kode deteksi otomatis, pengecekan ini pun tidak lagi diperlukan.

Informasi seperti "simbol tertentu di broker tertentu hanya mengizinkan FOK" cepat kedaluwarsa karena bisa berubah lewat pengaturan server, sehingga tidak dicantumkan di artikel ini. Pastikan selalu mengecek langsung dari spesifikasi simbol di akun Anda sendiri.


Checklist Prioritas

PrioritasPengecekanTindakan
🚨 PertamaApakah kolom "Filling" pada spesifikasi simbol cocok dengan yang ditentukan EASesuaikan dengan mode yang diizinkan
🚨 PertamaApakah EA memiliki input FillingTypeCukup ubah input untuk menyelesaikannya (tanpa kode)
⚠️ BerikutnyaApakah type_filling di-hardcode dalam kode EAGanti dengan GetFillingMode() / SetTypeFillingBySymbol()
⚠️ BerikutnyaApakah baru saja pindah broker, server, atau tipe akunSelalu cek ulang spesifikasi setelah perubahan
✅ KonfirmasiPerbedaan mode eksekusi (Instant/Market/Exchange)Instrumen bertipe bursa berbasis RETURN
🛠 DeveloperApakah 10030 sudah ditangani secara khusus lewat retcodeLog mode yang dikirim dan flag yang diizinkan

Kesimpulan

  • Unsupported filling mode (10030 / TRADE_RETCODE_INVALID_FILL) adalah penolakan dari server saat type_filling (FOK / IOC / RETURN / BOC) pada order tidak diizinkan untuk simbol tersebut. Tidak ada kaitannya dengan modal atau lot.
  • Karena mode yang diizinkan berbeda-beda per broker dan per simbol, EA yang meng-hardcode type_filling akan memunculkan 10030 secara serentak tepat pada hari pindah broker. Ini adalah pola klasik dari error ini.
  • Bagi pengguna, solusinya cukup "cek kolom Filling di spesifikasi simbol → ubah input EA". Bagi developer, solusi permanen bisa dicapai dengan membaca flag SymbolInfoInteger(SYMBOL_FILLING_MODE) dan memilih secara otomatis (atau menggunakan CTrade::SetTypeFillingBySymbol()).

Untuk kode error lainnya secara umum, lihat Panduan Lengkap Mengatasi Kode Error MQL5 / MT5. EA yang didistribusikan oleh FXEA365 sudah menerapkan deteksi mode eksekusi otomatis sehingga bisa berjalan di broker manapun (Daftar EA).


FAQ

Q: EA yang kemarin masih normal, setelah ganti broker langsung sama sekali tidak bisa entry karena 10030. Apakah EA-nya rusak?

Bukan rusak. Ini hanya karena mode eksekusi (misalnya FOK) yang ditentukan EA tidak diizinkan untuk simbol tersebut di broker baru. Cek kolom "Filling" pada spesifikasi simbol, lalu sesuaikan input EA (seperti FillingType), atau perbaiki kode agar mendeteksi secara otomatis, dan EA akan kembali berjalan normal seperti sebelumnya.

Q: Sebaiknya pakai FOK atau IOC?

Jika simbol mengizinkan keduanya, perbedaan perilakunya baru terlihat "saat likuiditas tidak mencukupi". FOK akan membatalkan seluruh order jika tidak bisa terpenuhi penuh (posisi tidak akan setengah-setengah), sedangkan IOC akan tetap membuka posisi sebesar bagian yang terpenuhi (bisa terjadi partial fill). Untuk ukuran lot trading forex individu, kekurangan likuiditas itu sendiri jarang terjadi, sehingga dalam praktiknya perbedaannya tidak terlalu signifikan. Memprioritaskan FOK seperti pada kode deteksi otomatis di atas sudah cukup aman.

Q: Tidak muncul saat backtest, tetapi muncul 10030 di akun real.

Proses eksekusi pada Strategy Tester tidak sepenuhnya mereplikasi pengaturan server yang sebenarnya, sehingga ketidaksesuaian type_filling terkadang tidak terlihat saat testing. Saat pertama kali menjalankan di akun real maupun demo, segera cocokkan dengan kolom Filling pada spesifikasi simbol.

Q: Di broker yang sama, 10030 muncul pada satu simbol tapi tidak pada simbol lain.

Ini adalah perilaku normal (dan wajar terjadi). Izin mode eksekusi diatur per simbol, sehingga pasangan forex bisa mengizinkan IOC sementara CFD saham hanya mengizinkan RETURN, tergantung grup instrumennya. EA multi-simbol wajib membaca SYMBOL_FILLING_MODE untuk setiap simbol secara terpisah.

Q: Tidak bisa mengubah kode EA (hanya punya file .ex5). Bagaimana solusinya?

Cek terlebih dahulu apakah EA memiliki parameter input bertipe FillingType. Jika tidak ada, berarti EA tersebut tidak bisa digunakan untuk simbol tersebut di broker yang sekarang. Anda perlu meminta developer untuk memperbaikinya, atau menjalankan EA tersebut di broker/tipe akun yang mengizinkan mode eksekusi yang menjadi asumsi EA tersebut.

📧 Peringatan sebelum harga naik + kursus email gratis 5 hari

Semua EA dijual dengan harga peluncuran dan naik bertahap seiring penjualan. Dapatkan pemberitahuan sebelum setiap kenaikan, plus email harian tentang trading algo, membaca backtest, dan memilih broker.

* Privasi sangat dilindungi. Anda dapat berhenti berlangganan kapan saja.

Komentar & pertanyaan