Beranda > Blog > Menyelesaikan Tuntas Market Closed (10018 / Error 132)

MT5MQL5ErrorTroubleshootingEA

Menyelesaikan Tuntas Market Closed (10018 / Error 132)

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

Menyelesaikan Tuntas Market Closed (MT5/MQL5)

Saat log EA menampilkan Market closed atau market is closed, alasan "wajar karena akhir pekan" hanya berlaku untuk separuh kasus. Muncul di siang hari kerja, atau hanya terjadi pada simbol tertentu padahal simbol lain bisa order dengan normal — pola seperti ini yang paling banyak membuat trader bingung.

Penyebabnya bukan cuma "akhir pekan", tetapi bisa juga sesi trading khusus per simbol (jeda harian pada emas atau indeks saham), selisih waktu server broker dengan waktu lokal Anda, hingga batasan mode trading simbol (close-only, dll.). Artikel ini ditujukan untuk pengguna EA di MT5 maupun developer yang menulis EA di MQL5, merangkum hakikat error Market closed, 6 penyebabnya, cara diagnosis 30 detik, hingga pencegahan permanen di level kode. Untuk daftar lengkap kode error, lihat Panduan Lengkap Mengatasi Kode Error MQL5 / MT5.

Artikel ini berdasarkan MT5 (build seri 4xxx) per Juli 2026. Waktu sesi dan nama tampilan bisa berbeda tergantung broker dan build.


Apa itu Market Closed (Perbedaan 10018 dan 132)

Kode yang menyatakan "pasar sedang tutup" berbeda antara MT5 dan MT4 (MQL4). Sesuaikan penjelasan berikut dengan platform yang Anda pakai dan dari mana nilai tersebut diambil.

① TRADE_RETCODE_MARKET_CLOSED = 10018 (Return Code OrderSend() di MT5)

Hasil order dari OrderSend() di MQL5 disimpan dalam MqlTradeResult.retcode. Ketika server trading menilai "simbol ini sedang di luar jam trading" dan menolak order, kodenya adalah 10018. Ini bukan error internal MT5, melainkan notifikasi penolakan dari server broker.

Arti  : Pasar sedang tutup (Market is closed)
Konstanta: TRADE_RETCODE_MARKET_CLOSED
Nilai : 10018
// Contoh output khas yang terlihat di log
2026.07.06 23:05:11.204 EA_NAME XAUUSD,M5: OrderSend error 10018 [Market closed]

② ERR_MARKET_CLOSED = 132 (GetLastError() di MT4 / MQL4)

Di MT4 (MQL4), GetLastError() mengembalikan nilai 132 setelah OrderSend() gagal. Artinya sama dengan 10018, yaitu "pasar sedang tutup". Jika Anda juga menjalankan EA versi MT4, penyebab yang sama akan muncul sebagai 10018 di MT5 dan 132 di MT4.

Arti  : Pasar sedang tutup (Market is closed)
Konstanta: ERR_MARKET_CLOSED (MQL4)
Nilai : 132

Perbandingan praktis:

PlatformSumber nilaiNilai
MT5 (MQL5)MqlTradeResult.retcode / CTrade.ResultRetcode()10018
MT4 (MQL4)GetLastError() setelah OrderSend() gagal132

Keduanya memiliki akar penyebab yang sama, yaitu "order dikirim di luar sesi trading server (atau trading pada simbol tersebut sedang dibatasi)". Karena penanganannya juga sama, berikut dibahas sekaligus.


Diagnosis Cepat dalam 30 Detik

Sebelum asal me-restart EA, cek 4 hal berikut untuk menemukan arah penyebabnya.

  1. Periksa sesi trading simbol — Klik kanan simbol yang bersangkutan di Market Watch → "Specification" → "Trading Sessions". Di sana tertulis jam trading per hari (dalam waktu server). Jika waktu saat ini berada di luar rentang tersebut, itulah jawabannya.
  2. Periksa waktu server — Waktu yang ditampilkan di bagian atas jendela Market Watch adalah waktu server broker. Penentuan sesi trading didasarkan pada waktu ini, bukan jam di PC Anda. Umumnya berbeda beberapa jam dari waktu Indonesia (WIB).
  3. Periksa mode trading — Cek apakah kolom "Trade" pada layar "Specification" yang sama menunjukkan status selain Full access (misalnya Disabled / Close only). Jika ya, order baru akan ditolak meski masih dalam sesi trading.
  4. Coba dengan simbol lain — Jika EA/order manual yang sama berhasil di pasangan FX utama seperti EURUSD, maka masalahnya bukan di akun atau EA, melainkan sesi/batasan pada simbol tersebut.

Penyebab dan Solusi (6 Pola)

① Seluruh Pasar Tutup karena Akhir Pekan atau Hari Libur

Gejala: Error muncul pada Sabtu, Minggu, atau saat libur akhir/awal tahun maupun Natal. Terjadi di semua simbol.

Penyebab: Pasar FX pada umumnya tidak dapat ditransaksikan mulai penutupan Jumat hingga pembukaan Senin (waktu server). Hari libur (Tahun Baru, Natal, dll.) juga bisa membuat pasar tutup atau trading dipersingkat meski jatuh pada hari kerja. Jika EA tetap mencoba mengirim order karena sisa proses bar atau timeframe tertentu saat akhir pekan, error 10018/132 akan muncul terus-menerus.

Solusi:

  1. Error ini sendiri tidak berbahaya. Akan hilang otomatis begitu pasar dibuka kembali
  2. Jika ingin log tetap bersih, tambahkan pengecekan hari dan sesi di sisi EA agar order tidak dikirim sama sekali (lihat kode di bagian bawah)
  3. Kalender hari libur berbeda-beda tiap broker, jadi cek pengumuman jadwal libur dari broker Anda

② Di Luar Sesi Trading Khusus Simbol (Jeda Harian)

Gejala: Error terjadi meski hari kerja, hanya pada simbol tertentu (emas, perak, CFD indeks saham, energi, dll.). Muncul hampir di jam yang sama setiap hari.

Penyebab: Pasangan FX bisa ditransaksikan hampir 24 jam pada hari kerja, tetapi logam mulia dan CFD indeks saham memiliki jeda trading harian selama puluhan menit hingga beberapa jam. Jeda ini mengikuti jadwal maintenance bursa aset dasar atau rollover, dan waktunya berbeda tergantung broker dan simbol. Jika EA mengirim order saat jeda ini, akan muncul error 10018.

Solusi:

  1. Cek jam jeda trading yang akurat untuk simbol tersebut di "Specification → Trading Sessions" (jam yang tertera di sini adalah satu-satunya acuan yang benar — jangan langsung percaya jam dari blog orang lain, karena berbeda tiap broker)
  2. Gunakan filter waktu pada EA (TradeStartHour/TradeEndHour, dll.) untuk menghindari jeda tersebut
  3. Developer dapat memeriksa SymbolInfoSessionTrade() di kode (dibahas di bawah)

Perlu dicatat, banyak broker yang membuka trading kripto (BTCUSD, dll.) bahkan di akhir pekan, tetapi ini juga tergantung broker. Jangan berasumsi "karena kripto pasti 24/7" — selalu cek di layar Specification.


③ Tertukar antara Waktu Server dan Waktu Lokal

Gejala: Error muncul padahal "seharusnya masih dalam jam trading sesuai sesi di Specification". Sering terjadi saat menggunakan broker luar negeri.

Penyebab: Baik jam sesi yang tertulis di Specification maupun tampilan waktu di MT5, semuanya menggunakan waktu server broker. Banyak broker luar negeri menggunakan zona GMT+2/+3 (dengan penutupan NY disetel menjadi pukul 0), sehingga berbeda 5-6 jam dari waktu Indonesia (WIB). Contoh klasiknya: menurut waktu Indonesia "masih Jumat malam", tetapi menurut waktu server sudah masuk Sabtu.

Solusi:

  1. Biasakan berpatokan pada waktu di jendela Market Watch (= waktu server)
  2. Parameter EA (filter jam trading, dll.) umumnya memang ditentukan dalam waktu server. Periksa kembali apakah Anda mengaturnya dengan asumsi waktu Indonesia
  3. Di kode, gunakan TimeTradeServer() (jangan menentukan sesi dengan TimeLocal())

④ Simbol Dinonaktifkan/Hanya Bisa Close (SYMBOL_TRADE_MODE)

Gejala: Meski masih dalam jam sesi dan hari kerja, semua order baru pada simbol tertentu ditolak. Kadang hanya penutupan posisi yang bisa dilakukan.

Penyebab: Broker dapat mengatur mode trading per simbol.

SYMBOL_TRADE_MODEArti
SYMBOL_TRADE_MODE_FULLTanpa batasan (normal)
SYMBOL_TRADE_MODE_CLOSEONLYHanya bisa close (tidak bisa order baru). Contoh: CFD yang akan didelisting atau menjelang pergantian kontrak
SYMBOL_TRADE_MODE_DISABLEDTrading dinonaktifkan sepenuhnya
SYMBOL_TRADE_MODE_LONGONLY / SHORTONLYHanya bisa buy / hanya bisa sell

Pengaturan ini bisa berbeda antara akun demo dan akun live, atau simbol yang tersedia bisa berbeda tergantung jenis akun.

Solusi:

  1. Periksa kolom "Trade" di layar "Specification"
  2. Jika Close only, lupakan order baru dan fokus pada manajemen posisi. Jika ingin tetap trading simbol tersebut secara permanen, cek apakah tersedia simbol kontrak lain dengan nama serupa atau suffix berbeda (misalnya US500.f)
  3. Jika status tetap Disabled, tanyakan ke broker apakah simbol tersebut bisa ditradingkan pada jenis akun Anda

⑤ Segera Setelah Pembukaan Senin atau Sesi Baru Dimulai

Gejala: Error atau penolakan order muncul hanya dalam beberapa menit pertama setelah pasar buka Senin, atau tepat setelah jeda harian berakhir.

Penyebab: Ada jeda waktu antara saat sesi "dibuka" dengan saat eksekusi order benar-benar stabil. Segera setelah pembukaan, likuiditas masih tipis dan spread melebar ekstrem, dan sebagian broker bahkan menolak order sebelum quote mulai mengalir stabil (diperlakukan sebagai "market closed"). Ini sering menjimpit EA yang mengirim sinyal tepat di awal Senin, atau EA emas yang menargetkan momen setelah jeda berakhir.

Solusi:

  1. Tambahkan filter yang menahan order baru selama beberapa menit setelah pembukaan (misalnya AvoidMondayOpen). Inilah alasan EA yang dibagikan di situs kami secara default menghindari jam 0-3 (waktu server) pada hari Senin
  2. Selalu gunakan filter spread (MaxSpread) secara bersamaan. Eksekusi pada spread abnormal segera setelah pembukaan justru lebih merugikan daripada sekadar error
  3. Rancang agar tidak langsung retry saat menerima 10018, melainkan menunggu hingga bar berikutnya

⑥ Penghentian Trading karena Berita atau Event

Gejala: Error muncul sementara di sekitar waktu rilis indikator ekonomi penting, atau saat pergerakan harga simbol tertentu sangat tidak wajar.

Penyebab: Sebagian broker atau simbol menghentikan trading sementara (halt) atau membatasi order baru saat terjadi event besar. Pada CFD indeks saham, penghentian ini kadang mengikuti circuit breaker di pasar aset dasarnya. Order yang dikirim pada periode ini akan ditolak dengan kode sejenis market closed.

Solusi:

  1. Sifatnya sementara, akan pulih setelah beberapa waktu
  2. Dengan filter indikator ekonomi (UseEconomicFilter pada EA di situs kami), Anda bisa menahan order baru di sekitar waktu rilis berita, sekaligus menghindari error dan risiko pergerakan harga mendadak

Kode MQL5 untuk Mencegah Error Ini (untuk Developer EA)

Desain yang benar untuk Market closed bukanlah "tangani setelah error muncul", melainkan cek sesi dan mode trading sebelum order dikirim, lalu batalkan pengiriman jika pasar sedang tutup. Selain membuat log lebih bersih, ini juga mencegah request server yang sia-sia dan retry yang tidak terkendali.

Memeriksa Apakah Sedang dalam Sesi Trading

SymbolInfoSessionTrade() mengembalikan waktu mulai/selesai (dalam detik sejak pukul 0 waktu server) untuk sesi ke-i pada hari tertentu. Untuk simbol dengan beberapa sesi (misalnya indeks dengan jeda harian), semua sesi diperiksa melalui loop.

// Menentukan apakah waktu server saat ini berada dalam sesi trading simbol ini
bool IsTradeSessionOpen(const string symbol)
{
   MqlDateTime dt;
   TimeToStruct(TimeTradeServer(), dt);           // Wajib menggunakan waktu server
   int now = dt.hour*3600 + dt.min*60 + dt.sec;   // Detik sejak pukul 0

   datetime from, to;
   for(uint i = 0; SymbolInfoSessionTrade(symbol, (ENUM_DAY_OF_WEEK)dt.day_of_week, i, from, to); i++)
   {
      int f = (int)from;                 // Detik sejak pukul 0
      int t = (int)to;                   // Berakhir pukul 24:00 menjadi 86400
      if(now >= f && now < t)
         return true;
   }
   return false;   // Tidak ada sesi untuk hari ini (akhir pekan, dll.) atau di luar semua sesi
}

Memeriksa Mode Trading (SYMBOL_TRADE_MODE)

// Menentukan apakah mode trading mengizinkan entry baru
bool IsNewEntryAllowed(const string symbol, ENUM_ORDER_TYPE type)
{
   long mode = SymbolInfoInteger(symbol, SYMBOL_TRADE_MODE);
   if(mode == SYMBOL_TRADE_MODE_DISABLED)  return false; // Trading dinonaktifkan
   if(mode == SYMBOL_TRADE_MODE_CLOSEONLY) return false; // Hanya close = tidak bisa order baru
   if(mode == SYMBOL_TRADE_MODE_LONGONLY  && type != ORDER_TYPE_BUY)  return false;
   if(mode == SYMBOL_TRADE_MODE_SHORTONLY && type != ORDER_TYPE_SELL) return false;
   return true;   // SYMBOL_TRADE_MODE_FULL, dll.
}

Menggabungkan sebagai Gate Sebelum Order

// Di dalam OnTick: meski sinyal muncul, order tidak dikirim jika pasar sedang tutup
if(!IsTradeSessionOpen(_Symbol) || !IsNewEntryAllowed(_Symbol, ORDER_TYPE_BUY))
{
   // Mencegah 10018 sebelum terjadi. Cukup catat satu baris log lalu tunggu bar berikutnya
   return;
}

Penanganan Jika 10018 Tetap Muncul

Kasus yang lolos dari gate tetap bisa terjadi, misalnya akibat jeda pembaruan informasi sesi atau penolakan tepat setelah pembukaan pasar. Aturan utamanya: saat melihat retcode dari OrderSend() bernilai 10018, jangan langsung retry (tunggu hingga bar berikutnya). Mengirim ulang berkali-kali saat pasar tutup hanya mengotori log tanpa manfaat apa pun.

MqlTradeRequest req; MqlTradeResult res;
ZeroMemory(req); ZeroMemory(res);
// ... susun req ...
if(!OrderSend(req, res) || res.retcode != TRADE_RETCODE_DONE)
{
   if(res.retcode == TRADE_RETCODE_MARKET_CLOSED)   // 10018
      Print("Market closed. Skip and wait for the next session.");
   else
      PrintFormat("OrderSend failed: retcode=%d, lastError=%d", res.retcode, GetLastError());
}

Sejujurnya, EA yang mengirim order tepat setelah pembukaan Senin atau di sekitar jeda harian (khususnya pada emas dan indeks saham) akan sering menghadapi error ini. EA yang mempertimbangkan jadwal — dengan pengecekan sesi, penundaan setelah pembukaan, dan penutupan sebelum akhir pekan — tidak hanya menghindari error yang sia-sia, tetapi juga terhindar dari eksekusi buruk saat likuiditas tipis. EA yang dibagikan FXEA365 sudah menerapkan secara standar fitur penghindaran pembukaan Senin (AvoidMondayOpen), filter waktu, dan penutupan sebelum akhir pekan (CloseAllBeforeWeekend).


Daftar Periksa Prioritas

PrioritasYang DiperiksaSolusi
🚨 PertamaApakah sekarang akhir pekan/hari libur (dalam waktu server)Cukup tunggu. Error ini sendiri tidak berbahaya
🚨 PertamaApakah masih dalam rentang "Trading Sessions" di SpecificationHindari jeda per simbol dengan filter waktu
⚠️ BerikutnyaApakah tertukar antara waktu server dan waktu IndonesiaAtur ulang dengan patokan waktu di Market Watch
⚠️ BerikutnyaApakah mode trading dalam status Full accessJika Close only / Disabled, cek ketentuan broker
✅ CekApakah baru saja setelah pembukaan/akhir jedaTunda beberapa menit + gunakan filter spread
🛠 DeveloperApakah sudah mengecek sesi/mode sebelum orderTerapkan gate SymbolInfoSessionTrade

Kesimpulan

  • Market closed adalah 10018 (TRADE_RETCODE_MARKET_CLOSED) di MT5, dan 132 (ERR_MARKET_CLOSED) di MT4. Artinya sama: "order dikirim di luar sesi trading/saat trading sedang dibatasi".
  • Bukan hanya karena akhir pekan, tetapi juga bisa terjadi akibat jeda harian per simbol (emas, indeks), selisih waktu server, batasan SYMBOL_TRADE_MODE, dan penolakan tepat setelah pembukaan. Jika muncul di hari kerja, cek dulu "Specification → Trading Sessions".
  • Jam sesi berbeda tergantung broker dan simbol. Satu-satunya jawaban yang benar adalah jam yang tertera di layar Specification MT5 Anda sendiri.
  • Developer EA sebaiknya menerapkan gate sebelum order menggunakan SymbolInfoSessionTrade() + SYMBOL_TRADE_MODE + TimeTradeServer() sebagai solusi permanen. Jika menerima 10018, jangan langsung retry — tunggu bar berikutnya.

Untuk kode error secara umum, lihat Panduan Lengkap Mengatasi Kode Error MQL5 / MT5, dan untuk EA gratis dengan fitur penghindaran sesi serta filter waktu standar, lihat Daftar EA.


FAQ

T: Market closed muncul padahal ini siang hari kerja. Kenapa?

Penyebabnya adalah jeda trading khusus simbol tersebut (jeda harian) atau batasan mode trading pada simbol. Emas, perak, dan CFD indeks saham memiliki jam-jam tertentu setiap hari yang tidak bisa ditradingkan meski hari kerja. Klik kanan simbol di Market Watch → "Specification" → periksa kolom "Trading Sessions" dan "Trade".

T: Apa bedanya 10018 dan 132?

Hanya berbeda platform, artinya sama. 10018 (TRADE_RETCODE_MARKET_CLOSED) adalah return code OrderSend() di MT5, sedangkan 132 (ERR_MARKET_CLOSED) adalah nilai GetLastError() di MT4 (MQL4). Cara penanganannya sama.

T: EA saya terus mengeluarkan error di akhir pekan. Apakah aman dibiarkan?

Tidak ada dampak nyata. Akan berhenti otomatis begitu pasar dibuka. Namun jika terganggu dengan log yang kotor atau notifikasi push yang terus berbunyi, solusi permanennya adalah menambahkan pengecekan hari/sesi di EA agar pengiriman order dilewati sepenuhnya (lihat kode di bagian atas).

T: Kripto (BTCUSD) juga muncul Market closed. Bukankah bisa trading 24 jam?

Apakah CFD kripto bisa ditradingkan di akhir pekan tergantung pada broker. Ada broker yang menghentikan trading di akhir pekan, atau menetapkan jeda maintenance singkat. Sama seperti pasangan FX, periksa "Specification → Trading Sessions" untuk mengetahui jam trading aktual pada broker Anda.

📧 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