Stop Loss في الجهة غير الصحيحة
إذا كان مستوى Stop Loss موضوعًا على الجانب غير الصحيح من السعر بالنسبة لاتجاه المركز، فقد يكون الطلب غير صالح.
ZIMZIR · MT5 TROUBLESHOOTING
تظهر هذه الرسالة عندما يحتوي طلب التداول على مستوى Stop غير صالح وفق حالة السعر الحالية أو خصائص الأداة أو قواعد خادم التداول. المشكلة قد ترتبط بـStop Loss أوTake Profit أو مستويات مرتبطة بالأوامر المعلقة والتعديلات.
القاعدة الأساسية
لا تغيّر Stop Loss أوTake Profit عشوائيًا. افحص اتجاه المستوى، والمسافة من السعر، وخصائص الرمز أولًا.
معنى الخطأ
في توثيق MQL5 الرسمي يحمل رمز خادم التداول TRADE_RETCODE_INVALID_STOPS الرقم 10016، ويعني أن مستويات الإيقاف الموجودة في طلب التداول غير صالحة.
Trade Server Return Code
10016 · TRADE_RETCODE_INVALID_STOPS
Invalid stops in the request.
وجود الخطأ لا يعني بالضرورة أن Stop Loss نفسه هو المشكلة الوحيدة. يجب فحص جميع مستويات السعر المرسلة مع الطلب والسياق الذي وقع فيه الرفض.
Stop Loss & Take Profit
أول سؤال عند ظهور Invalid Stops هو: هل تم وضع Stop Loss وTake Profit على الجانب الصحيح من السعر بالنسبة لاتجاه المركز؟
BUY
Stop Loss
يكون أسفل السعر المرجعي للمركز وفق قواعد التنفيذ.
Take Profit
يكون أعلى السعر المرجعي للمركز.
SELL
Stop Loss
يكون أعلى السعر المرجعي للمركز وفق قواعد التنفيذ.
Take Profit
يكون أسفل السعر المرجعي للمركز.
Bid وAsk مهمان عند فحص المستويات
لا تعتمد على خط واحد تراه على الرسم البياني وتفترض أنه السعر الوحيد المستخدم في التحقق. يفرق MT5 بين Bid وAsk عند التعامل مع مستويات البيع والشراء، لذلك قد يبدو المستوى بعيدًا بصريًا لكنه لا يحقق الشرط المطلوب فعليًا.
افهم Bid وAsk ←Stops Level
يمكن أن يحدد كل Symbol مسافة دنيا لمستويات Stop. في MQL5 تظهر هذه الخاصية باسم SYMBOL_TRADE_STOPS_LEVEL ويتم التعبير عنها بالنقاط Points.
لذلك قد يكون Stop Loss موضوعًا في الاتجاه الصحيح تمامًا، لكنه يظل غير صالح لأن المسافة بينه وبين السعر المرجعي أقل من الحد المطلوب.
Symbol Property
SYMBOL_TRADE_STOPS_LEVEL
Minimum stop distance expressed in points.
قيمة Stops Level ليست رقمًا عالميًا ثابتًا لجميع الأدوات أو الوسطاء. افحص مواصفات الرمز الذي تتداوله بدل استخدام مسافة مفترضة لجميع الأسواق.
الأسباب الشائعة
إذا كان مستوى Stop Loss موضوعًا على الجانب غير الصحيح من السعر بالنسبة لاتجاه المركز، فقد يكون الطلب غير صالح.
يجب أن يكون Take Profit في الاتجاه المناسب للمركز. وضعه على الجانب المعاكس قد يؤدي إلى رفض مستويات الحماية.
قد يحدد الرمز مسافة دنيا يجب احترامها بين السعر الحالي ومستويات Stop Loss أو Take Profit أو بعض مستويات الأوامر.
إذا كان السوق يتحرك بسرعة، فقد يصبح المستوى الذي كان صالحًا عند حسابه قريبًا جدًا أو غير صالح عند معالجة الطلب.
يجب أن تتوافق الأسعار المستخدمة مع خصائص الرمز مثل عدد الخانات ودقة تغير السعر. القيم المحسوبة بطريقة غير مناسبة قد تسبب رفض الطلب.
قد تكون هناك منطقة تجميد حول السعر تمنع تعديل بعض الأوامر أو المستويات عندما تصبح قريبة جدًا من سعر التفعيل.
Freeze Level
بعض الرموز تحدد أيضًا مسافة تسمى Freeze Level. هذه المنطقة ترتبط بتجميد بعض عمليات التداول عندما يصبح السعر قريبًا من مستويات معينة.
لذلك يمكن أن تواجه مشكلة أثناء تعديل أمر أو مستوى حتى لو لم تكن تحاول إنشاء صفقة جديدة.
SYMBOL_TRADE_FREEZE_LEVEL
تمثل هذه الخاصية مسافة تجميد عمليات التداول بالنقاط.
عند التشخيص، لا تفترض أن Stops Level وFreeze Level شيء واحد. الأول يرتبط بالمسافة الدنيا لمستويات الإيقاف، بينما الثاني يرتبط بمنطقة يمكن أن تتقيد داخلها بعض عمليات التعديل.
Price Precision
تختلف طريقة تسعير الأدوات. قد يعرض رمز خمس خانات عشرية بينما يعرض آخر خانتين أو ثلاثًا، كما توجد خاصية Tick Size التي تحدد أقل تغير سعري للأداة.
إذا كان EA أو سكربت يحسب Stop Loss أوTake Profit رياضيًا، فيجب أن تكون النتيجة متوافقة مع خصائص الرمز الفعلية بدل افتراض نفس دقة السعر لجميع الأدوات.
Digits
عدد الخانات السعرية المعروضة.
Point
قيمة النقطة المستخدمة في خصائص الرمز.
Tick Size
أقل تغير سعري تسمح به مواصفات الأداة.
خطوات التشخيص
الهدف هو معرفة أي شرط فشل في الطلب بدل تحريك المستوى عدة مرات حتى يقبله الخادم بالصدفة.
حدد أولًا هل الخطأ ظهر أثناء فتح صفقة أم تعديل Stop Loss أو Take Profit أم تعديل Pending Order.
راجع اتجاه الصفقة: Buy أم Sell.
قارن Stop Loss وTake Profit مع Bid وAsk الحاليين.
افتح Symbol Specification وراجع Stops Level.
راجع Freeze Level إذا كانت المشكلة تظهر عند التعديل.
تحقق من Digits وPoint وTick Size الخاصة بالرمز.
إذا كان السوق سريع الحركة، أعد قراءة السعر الحالي قبل حساب المستويات.
إذا كان الطلب صادرًا من EA، راجع Journal وExperts وTrade Return Code.
Moving Market
الأسعار لا تبقى ثابتة أثناء تنفيذ البرنامج أو إرسال الطلب إلى خادم التداول. إذا تحرك Bid أوAsk، فقد تتغير المسافة الفعلية بين السعر ومستوى Stop Loss أوTake Profit.
تظهر أهمية ذلك بصورة أكبر عندما تكون المسافة المستخدمة قريبة أصلًا من الحد الأدنى المسموح به.
لا تعتمد على سعر قديم
احسب مستوياتك باستخدام بيانات السعر الحالية قبل إرسال الطلب.
وإذا كان النظام آليًا، يجب أن يتعامل مع تغير السعر والقيود الحالية بدل افتراض أن السعر الذي استُخدم في خطوة سابقة ما زال صالحًا.
Expert Advisor
عند استخدام Expert Advisor لا يكفي أن تعرف أن الصفقة لم تُفتح أو أن تعديل Stop Loss فشل. اقرأ نتيجة طلب التداول نفسها.
ظهور Retcode 10016 يساعدك على فصل مشكلة مستويات السعر عن مشكلات أخرى مثل حجم الصفقة أو الهامش أو إغلاق السوق.
اقرأ السعر الحالي
لا تعتمد على Bid أوAsk قديم عند تكوين الطلب.
اقرأ خصائص الرمز
افحص Stops Level وFreeze Level وPoint وTick Size بدل كتابة قيم ثابتة تصلح لرمز واحد فقط.
سجّل القيم الفعلية
عند الخطأ، سجّل Bid وAsk وSL وTP والمسافات وRetcode حتى تعرف الشرط الذي فشل.
لا تخلط الأخطاء
يستخدم MT5 رموز رفض مختلفة للمشكلات المختلفة. تحديد الرمز الصحيح يمنعك من معالجة مشكلة غير موجودة.
10016
Invalid Stops
يرتبط بمستويات Stop الموجودة في طلب التداول.
Invalid Volume
مشكلة حجم
تتعلق بحجم التداول وقواعد الحد الأدنى أو الأقصى أو الخطوة.
Not enough money
مشكلة هامش
تتعلق بعدم كفاية الأموال أو الهامش المتاح لإتمام الطلب.
الخلاصة
ابدأ باتجاه Stop Loss وTake Profit، ثم افحص المسافة من Bid وAsk وStops Level. وإذا كان الخطأ يظهر عند تعديل مستوى موجود، افحص Freeze Level أيضًا. أما الأنظمة الآلية فيجب أن تقرأ خصائص الرمز والأسعار الحالية بدل الاعتماد على قيم ثابتة.
هذا المحتوى تعليمي عام. قواعد Stops Level وFreeze Level ودقة الأسعار وأنواع الأوامر قد تختلف حسب الأداة والسوق والحساب والوسيط. راجع مواصفات الرمز الفعلية داخل MT5 والمعلومات الرسمية لمزود الخدمة عند التشخيص.