← সব ভিডিও
MT5 API · 6:52

সংযোগ বিচ্ছিন্নতা ও অনুরোধের সীমা।

টার্মিনাল পুনরুদ্ধার করবে API, অ্যাপ সামলাবেন আপনি।

Python উদাহরণ ডাউনলোড করুন · PY ↓

ধাপে ধাপে লিখিত নির্দেশনা

  1. 0:00

    সংযোগ বিচ্ছিন্নতা ও অনুরোধের সীমা।

    এই টিউটোরিয়ালে MT5-এর সংযোগ সমস্যা ও অনুরোধের সীমা সামলানো দেখানো হবে: API-এর পুনরুদ্ধারের জন্য অপেক্ষা করা, স্ট্রিম আবার চালু করা এবং নিরাপদে তথ্য পড়ার অনুরোধ পুনরায় পাঠানো। আমরা ডেমো অ্যাকাউন্টের আসল উত্তর ব্যবহার করছি।

  2. 0:23

    আগের সেশনটি আগে পরীক্ষা করুন।

    mt5.mrpc.pro খুলে API key ও সংরক্ষিত টার্মিনাল id রাখুন। রেকর্ড করা ConnectState উত্তরে Connected দেখা যাচ্ছে এবং isConnected, isAlive ও apiIsAlive সবই true। টার্মিনাল ঠিক আছে। ব্রাউজারের সংযোগ হারানো বা একটি অনুরোধ ব্যর্থ হওয়া মানেই নতুন টার্মিনাল তৈরি করতে হবে না।

  3. 0:59

    স্বয়ংক্রিয় পুনরুদ্ধারকে সময় দিন।

    MetaRPC টার্মিনালের অবস্থা পর্যবেক্ষণ করে এবং উপযুক্ত সক্রিয় সেশন স্বয়ংক্রিয়ভাবে পুনরুদ্ধারের চেষ্টা করে। টার্মিনালের id একই থাকে। অ্যাপের উচিত প্রভাবিত কাজ থামিয়ে সেবাকে সময় দেওয়া, বারবার Reconnect বা ConnectEx ডাকা নয়। বিরতি দিয়ে অবস্থা দেখুন, তারপর AccountSummary দিয়ে অ্যাকাউন্টে প্রবেশ নিশ্চিত করে কাজ চালান। পুনরুদ্ধারে সময় লাগে; প্রতিটি ব্যর্থ কলের পর তা সঙ্গে সঙ্গে শেষ হয় না।

  4. 1:40

    কারণ অনুযায়ী ব্যবস্থা নিন।

    ইচ্ছাকৃত সংযোগ বিচ্ছিন্নতা, মেয়াদ শেষ, স্থগিত সেবা বা ভুল লগইন তথ্যের জন্য উপযুক্ত পদক্ষেপ দরকার। জানানো কারণ পড়ুন এবং প্রয়োজনে লগইন তথ্য বদলান বা অ্যাকাউন্টের সমস্যা ঠিক করুন। Reconnect ও ConnectByToken স্পষ্টভাবে পুনরুদ্ধার করার সরঞ্জাম, প্রতিটি অনুরোধের পুনরাবৃত্তির লুপ নয়। উপযুক্ত সেশনও অপ্রাপ্য থাকলে কাজ বন্ধ রাখুন এবং সহায়তা বিভাগকে ত্রুটির কোড ও সময় জানান।

  5. 2:23

    অ্যাপের WebSocket আবার চালু করুন।

    টার্মিনাল ও অ্যাপের WebSocket দুটি আলাদা সংযোগ। অ্যাকাউন্ট পড়া আবার কাজ করলে নষ্ট সকেট বন্ধ করে সংরক্ষিত id ও API key দিয়ে OnSymbolTick খুলুন। প্রয়োজনীয় প্রতীকের সাবস্ক্রিপশন আবার চালু করুন। EURUSD-এর আসল বার্তায় bid, ask ও সময় আছে। নতুন তথ্য আসছে কি না দেখুন এবং একই স্ট্রিম একাধিকবার খুলবেন না। ঠিকমতো চলা স্ট্রিম খোলা রাখা যায়।

  6. 3:01

    সীমা অতিক্রমের আসল উত্তর চিনুন।

    AccountSummary-এর এই আসল প্রত্যাখ্যানটি সীমিত সংখ্যক শুধু-পড়ার পরীক্ষা থেকে এসেছে। HTTP Status Code 200 মানে API উত্তর দিয়েছে। error null নয়, এতে TERMINAL_RATE_LIMIT_EXCEEDED রয়েছে এবং বলা আছে কলটি করা হয়নি। দেখা সীমা ছিল প্রতি টার্মিনালে চলমান এক মিনিটের সময়সীমায় তিনশো অ-ট্রেডিং কল, যা সব ক্লায়েন্ট ভাগ করে ব্যবহার করে। সংখ্যাটি কোডে স্থায়ীভাবে না বসিয়ে বর্তমান সীমা দেখুন।

  7. 3:44

    সার্ভারের বলা সময় অপেক্ষা করুন।

    এই উত্তরে error.properties-এ RetryAfterSeconds নামে key-value জোড়া আছে, যার মান 1। অন্তত এক সেকেন্ড অপেক্ষা করে সামান্য এলোমেলো বিলম্ব যোগ করুন, তারপর পড়ার অনুরোধ আবার করুন। একই টার্মিনালের কোটা ব্যবহার করা অন্য worker-গুলোকেও থামান। আবার প্রত্যাখ্যান হলে নতুন অপেক্ষার সময় ব্যবহার করুন। HTTP Status Code 429 হলে Retry-After হেডার মানুন।

  8. 4:22

    ধীরে ধীরে কাজ আবার শুরু করুন।

    অপেক্ষার পর আসল পড়ার অনুরোধ সফল হয়েছে: HTTP Status Code 200, কোনো API ত্রুটি নেই এবং ডেমো অ্যাকাউন্টের তথ্য পাওয়া গেছে। জমে থাকা সব অনুরোধ একসঙ্গে পাঠাবেন না। বারবার লাগে এমন তথ্য ক্যাশ করুন, worker-দের অনুরোধের গতি সমন্বয় করুন এবং সরাসরি দামের জন্য OnSymbolTick ব্যবহার করুন। সীমা ছুঁলে অপেক্ষা করতে হয়, টার্মিনাল আবার সংযুক্ত করতে নয়।

  9. 4:59

    পুনরায় চেষ্টার নিয়ম স্পষ্ট রাখুন।

    সঙ্গে থাকা Python উদাহরণ কেবল AccountSummary-এর জন্য। স্পষ্ট সীমা বা ব্যস্ততার উত্তরে বৈধ অপেক্ষার সময় থাকলেই এটি এলোমেলো বিলম্ব দিয়ে আবার চেষ্টা করে, সর্বোচ্চ তিনবার। অন্য ত্রুটি caller-এর কাছে ফেরত যায়। লগইন তথ্য environment variable-এ রাখুন। সংযোগ সমস্যার জন্য আলাদা সীমিত নীতি ব্যবহার করুন; পড়ার এই helper সংযোগ কমান্ড বা ট্রেডিং পদ্ধতিতে লাগাবেন না।

  10. 5:39

    আগে অনিশ্চিত ট্রেডের ফল জানুন।

    ট্রেডিং অনুরোধের উত্তর হারিয়ে গেলে ব্রোকার সেটি ইতিমধ্যে প্রক্রিয়া করে থাকতে পারে। স্বয়ংক্রিয় পুনরুদ্ধার সেই ট্রেডের ফল জানায় না। অ্যাক্সেস ফিরে এলে OpenedOrders ও DealsHistory দেখুন। অর্ডার ও ডিল টিকিট থাকলে ব্যবহার করুন, আর প্রতীক, দিক, পরিমাণ ও সময় মিলিয়ে দেখুন। একই রকম ট্রেড গুলিয়ে যেতে পারে। ফল অজানা অনুরোধ স্বয়ংক্রিয়ভাবে আবার না পাঠিয়ে থামিয়ে রাখুন।

  11. 6:17

    সেশন সঠিকভাবে শেষ করুন।

    ইচ্ছাকৃতভাবে সেশন শেষ করলে সাবস্ক্রিপশন বন্ধ করে Disconnect ডাকুন। ডেমো স্ট্রিম থামানো হয়েছে এবং টার্মিনাল বিচ্ছিন্ন করা হয়েছে; কোনো ট্রেড বদলানো হয়নি। মনে রাখুন: উপযুক্ত টার্মিনাল MetaRPC পুনরুদ্ধার করে, অ্যাপ প্রয়োজনে নিজের সকেট চালু করে, সীমা এলে অপেক্ষা করে এবং নতুন ট্রেডের আগে অনিশ্চিত ফল পরিষ্কার করে।