← Semua tutorial
MT5 API · 5:41

Gangguan koneksi dan batas permintaan.

API memulihkan terminal. Anda mengatur aplikasi.

Unduh contoh Python · PY ↓

Panduan tertulis

  1. 0:00

    Gangguan koneksi dan batas permintaan.

    Tutorial ini menjelaskan cara menangani gangguan MT5 dan batas permintaan: menunggu pemulihan API, menyambungkan kembali aliran data, dan mengulang pembacaan dengan aman. Kami menggunakan respons nyata dari akun demo.

  2. 0:19

    Periksa sesi yang sudah ada.

    Buka mt5.mrpc.pro. Simpan kunci API dan id terminal. Respons ConnectState yang direkam ini menunjukkan Connected, dengan isConnected, isAlive, dan apiIsAlive bernilai true. Terminal berfungsi normal. Koneksi browser terputus atau satu permintaan gagal tidak otomatis berarti Anda perlu membuat terminal baru.

  3. 0:46

    Biarkan pemulihan otomatis bekerja.

    MetaRPC memantau kesehatan terminal dan mencoba memulihkan sesi aktif yang memenuhi syarat secara otomatis, dengan id yang sama. Aplikasi perlu menjeda operasi terdampak dan memberi waktu kepada layanan, bukan memanggil Reconnect atau ConnectEx berulang kali. Periksa status secara berkala, lalu pastikan akses akun melalui AccountSummary sebelum melanjutkan. Pemulihan memerlukan waktu dan tidak langsung selesai setiap kali permintaan gagal.

  4. 1:21

    Tangani penyebabnya.

    Pemutusan yang disengaja, sesi kedaluwarsa, penangguhan, atau kredensial tidak valid memerlukan tindakan yang sesuai. Baca penyebabnya, lalu perbarui kredensial atau selesaikan masalah akun. Reconnect dan ConnectByToken adalah alat pemulihan eksplisit, bukan bagian dari pengulangan setiap permintaan. Jika sesi yang memenuhi syarat tetap tidak tersedia, pertahankan jeda dan sampaikan kode kesalahan serta waktunya kepada dukungan.

  5. 1:54

    Pulihkan WebSocket aplikasi.

    Koneksi terminal dan WebSocket aplikasi adalah dua koneksi berbeda. Setelah pembacaan akun kembali berhasil, tutup socket yang bermasalah dan buka OnSymbolTick dengan id tersimpan serta kunci API. Pulihkan langganan simbol. Pesan EURUSD nyata ini berisi bid, ask, dan waktu. Pastikan pesan baru masuk dan hindari aliran ganda. Aliran yang masih sehat tidak perlu ditutup.

  6. 2:25

    Kenali respons pembatasan nyata.

    Penolakan AccountSummary ini berasal dari pengujian baca dengan batas yang jelas. HTTP Status Code 200 berarti API mengembalikan respons. Kolom error tidak null, berisi TERMINAL_RATE_LIMIT_EXCEEDED, dan menyatakan panggilan tidak dijalankan. Batas yang diamati adalah tiga ratus panggilan nontrading per menit bergulir, dibagi oleh semua pemanggil terminal. Periksa batas terbaru; jangan menetapkan angka ini secara permanen dalam kode.

  7. 3:03

    Tunggu sesuai petunjuk server.

    Dalam respons ini, error.properties memuat pasangan kunci dan nilai RetryAfterSeconds dengan nilai 1. Tunggu setidaknya satu detik, lalu tambahkan sedikit jeda acak sebelum mengulang pembacaan. Jeda juga proses lain yang menggunakan kuota terminal yang sama. Jika ditolak lagi, gunakan waktu tunggu terbaru. Untuk HTTP Status Code 429, patuhi header Retry-After.

  8. 3:33

    Lanjutkan secara bertahap.

    Setelah menunggu, pembacaan nyata berhasil lagi: HTTP Status Code 200, tanpa kesalahan API, dengan data akun demo. Jangan mengirim seluruh antrean pembacaan sekaligus. Simpan data berulang dalam cache, koordinasikan laju permintaan antarproses, dan gunakan OnSymbolTick untuk harga langsung. Pembatasan adalah alasan untuk menunggu, bukan menyambungkan ulang terminal.

  9. 4:04

    Batasi aturan percobaan ulang.

    Contoh Python hanya digunakan untuk AccountSummary. Ia mengulang respons pembatasan atau sibuk yang eksplisit dan memiliki waktu tunggu valid, menambahkan jeda acak, lalu berhenti setelah tiga percobaan. Kesalahan lain diteruskan kepada pemanggil. Simpan kredensial dalam variabel lingkungan. Gunakan kebijakan terpisah yang terbatas untuk gangguan; jangan menerapkan fungsi baca ini pada perintah koneksi atau trading.

  10. 4:38

    Pastikan hasil transaksi yang belum jelas.

    Jika respons permintaan trading hilang, broker mungkin sudah memprosesnya. Pemulihan otomatis tidak menjelaskan hasil transaksi tersebut. Setelah akses pulih, periksa OpenedOrders dan DealsHistory. Gunakan tiket order dan deal jika tersedia, serta cocokkan simbol, arah, volume, dan waktu. Transaksi yang mirip bisa tertukar. Biarkan permintaan yang belum jelas tetap dijeda, bukan dikirim ulang otomatis.

  11. 5:13

    Akhiri sesi dengan benar.

    Saat sengaja mengakhiri sesi, hentikan langganan dan panggil Disconnect. Aliran demo telah dihentikan dan terminal diputus; tidak ada transaksi yang diubah. Ingat: MetaRPC memulihkan terminal yang memenuhi syarat, aplikasi memulihkan socket bila perlu, menunggu saat dibatasi, dan memastikan hasil transaksi sebelum mengirim transaksi lain.