← تمام ویڈیوز
MT5 API · 6:06

کنکشن میں رکاوٹ اور درخواستوں کی حد۔

ٹرمینل API بحال کرے، ایپ آپ سنبھالیں۔

Python مثال ڈاؤن لوڈ کریں · PY ↓

مرحلہ وار تحریری رہنما

  1. 0:00

    کنکشن میں رکاوٹ اور درخواستوں کی حد۔

    اس ٹیوٹوریل میں MT5 کی رکاوٹوں اور درخواستوں کی حد سے نمٹنا سیکھیں گے: API کی بحالی کا انتظار، اسٹریم دوبارہ شروع کرنا اور معلومات پڑھنے کی درخواست محفوظ طریقے سے دہرانا۔ ہم ڈیمو اکاؤنٹ کے حقیقی جواب استعمال کرتے ہیں۔

  2. 0:22

    پہلے موجودہ سیشن دیکھیں۔

    mt5.mrpc.pro کھولیں۔ API کی اور محفوظ ٹرمینل id سنبھال کر رکھیں۔ ریکارڈ شدہ ConnectState جواب میں Connected ہے اور isConnected، isAlive اور apiIsAlive سب true ہیں۔ ٹرمینل درست کام کر رہا ہے۔ براؤزر کا رابطہ ٹوٹنے یا ایک درخواست ناکام ہونے کا مطلب لازماً نیا ٹرمینل بنانا نہیں۔

  3. 0:53

    خودکار بحالی کو وقت دیں۔

    MetaRPC ٹرمینل کی حالت دیکھتا ہے اور اہل فعال سیشن خودکار طور پر بحال کرنے کی کوشش کرتا ہے، جبکہ ٹرمینل id وہی رہتا ہے۔ ایپ کو متاثرہ کام روک کر سروس کو وقت دینا چاہیے، نہ کہ بار بار Reconnect یا ConnectEx چلانا چاہیے۔ وقفے وقفے سے حالت دیکھیں، پھر AccountSummary سے اکاؤنٹ تک رسائی کی تصدیق کرکے کام جاری کریں۔ بحالی میں وقت لگتا ہے؛ ہر ناکام کال کے فوراً بعد یہ مکمل نہیں ہوتی۔

  4. 1:29

    وجہ کے مطابق قدم اٹھائیں۔

    جان بوجھ کر رابطہ ختم کرنا، سیشن کی میعاد ختم ہونا، سروس معطل ہونا یا غلط لاگ ان معلومات الگ الگ اقدام چاہتے ہیں۔ بتائی گئی وجہ پڑھیں، ضرورت ہو تو معلومات درست کریں یا اکاؤنٹ کا مسئلہ حل کریں۔ Reconnect اور ConnectByToken باقاعدہ بحالی کے اوزار ہیں، ہر درخواست کے دوبارہ کوشش والے لوپ کا حصہ نہیں۔ اہل سیشن پھر بھی دستیاب نہ ہو تو کام روکے رکھیں اور سپورٹ کو ایرر کوڈ اور وقت بتائیں۔

  5. 2:06

    ایپ کا WebSocket بحال کریں۔

    ٹرمینل اور ایپ کا WebSocket دو الگ کنکشن ہیں۔ اکاؤنٹ پڑھنا دوبارہ چلنے لگے تو خراب ساکٹ بند کرکے محفوظ id اور API کی سے OnSymbolTick کھولیں۔ مطلوبہ سمبل کی سبسکرپشن دوبارہ شروع کریں۔ EURUSD کے حقیقی پیغامات میں bid، ask اور وقت ہے۔ تازہ ڈیٹا آنے کی تصدیق کریں اور ایک اسٹریم دو بار نہ کھولیں۔ درست چلتی اسٹریم کھلی رہ سکتی ہے۔

  6. 2:40

    حد سے متعلق حقیقی جواب پہچانیں۔

    AccountSummary کا یہ حقیقی انکار محدود صرف پڑھنے والے ٹیسٹ سے ملا۔ HTTP Status Code 200 کا مطلب ہے کہ API نے جواب دیا۔ error null نہیں، اس میں TERMINAL_RATE_LIMIT_EXCEEDED ہے اور بتایا گیا ہے کہ کال انجام نہیں دی گئی۔ دیکھی گئی حد ہر ٹرمینل کے لیے پچھلے مسلسل ایک منٹ میں تین سو غیر تجارتی کالز تھی، جسے تمام کلائنٹ بانٹتے ہیں۔ عدد کو کوڈ میں مستقل رکھنے کے بجائے موجودہ حد دیکھیں۔

  7. 3:15

    سرور کے بتائے وقت تک انتظار کریں۔

    اس جواب میں error.properties کے اندر RetryAfterSeconds نام کی key-value جوڑی ہے، جس کی قدر 1 ہے۔ کم از کم ایک سیکنڈ انتظار کریں، پھر تھوڑی بے ترتیب تاخیر شامل کرکے پڑھنے کی درخواست دہرائیں۔ اسی ٹرمینل کا کوٹا استعمال کرنے والے دوسرے ورکر بھی روکیں۔ دوبارہ انکار ہو تو نئی انتظار کی مدت اپنائیں۔ HTTP Status Code 429 میں Retry-After ہیڈر پر عمل کریں۔

  8. 3:50

    کام بتدریج دوبارہ شروع کریں۔

    انتظار کے بعد حقیقی ریڈ کامیاب ہوئی: HTTP Status Code 200، کوئی API ایرر نہیں اور ڈیمو اکاؤنٹ کا ڈیٹا ملا۔ جمع شدہ ریڈ درخواستیں ایک ساتھ نہ بھیجیں۔ بار بار درکار معلومات کیش کریں، ورکرز کی رفتار میں ہم آہنگی رکھیں اور لائیو قیمتوں کے لیے OnSymbolTick استعمال کریں۔ حد کا انکار انتظار کی وجہ ہے، ٹرمینل دوبارہ جوڑنے کی نہیں۔

  9. 4:23

    دوبارہ کوشش کے واضح اصول رکھیں۔

    ساتھ دی گئی Python مثال صرف AccountSummary کے لیے ہے۔ یہ واضح حد یا مصروفیت کے جواب میں درست انتظار کی مدت ہونے پر ہی بے ترتیب تاخیر کے ساتھ کوشش دہراتی ہے اور تین کوششوں کے بعد رک جاتی ہے۔ دوسرے ایرر کال کرنے والے کو واپس ملتے ہیں۔ لاگ ان معلومات environment variables میں رکھیں۔ رکاوٹوں کے لیے الگ محدود پالیسی بنائیں؛ ریڈ helper کو کنکشن کمانڈ یا تجارتی طریقوں پر نہ لگائیں۔

  10. 5:00

    پہلے غیر یقینی ٹریڈ کا نتیجہ معلوم کریں۔

    تجارتی درخواست کا جواب کھو جائے تو بروکر اسے پہلے ہی انجام دے چکا ہو سکتا ہے۔ خودکار بحالی اس ٹریڈ کا نتیجہ نہیں بتاتی۔ رسائی واپس آنے پر OpenedOrders اور DealsHistory دیکھیں۔ آرڈر اور ڈیل ٹکٹ دستیاب ہوں تو استعمال کریں، ساتھ سمبل، سمت، حجم اور وقت ملائیں۔ ایک جیسی ٹریڈز میں ابہام ہو سکتا ہے۔ نامعلوم نتیجے والی درخواست خودکار طور پر پھر بھیجنے کے بجائے روکے رکھیں۔

  11. 5:36

    سیشن درست طریقے سے ختم کریں۔

    جب جان بوجھ کر سیشن ختم کریں تو سبسکرپشن روک کر Disconnect چلائیں۔ ڈیمو اسٹریم روک دی گئی اور ٹرمینل منقطع ہوا؛ کوئی ٹریڈ تبدیل نہیں ہوئی۔ یاد رکھیں: اہل ٹرمینل MetaRPC بحال کرتا ہے، ایپ ضرورت پر اپنا ساکٹ بحال کرتی ہے، حد آنے پر انتظار کرتی ہے اور نئی ٹریڈ سے پہلے غیر یقینی نتیجہ واضح کرتی ہے۔