الحلقة السابعة والخمسين من سلسلة تعلم البرمجة باسهل طريقة

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • الحلقة السابعة والخمسين من سلسلة تعلم البرمجة باسهل طريقة

    نصائح وخدع ( 11 )
    Tips and Tricks




    حل مشكلات أخطاء التداول المتقطعة
    Troubleshooting Intermittent Trading Errors




    على الرغم من أن معظم الأخطاء الجادة يمكن العثور عليها ببساطة من خلال اختبار العودة، إلا أن بعضها قد يحدث فقط أثناء التداول في الوقت الحقيقي. يمكن أن تؤدي أخطاء في المنطق إلى عدم وضع الصفقات بشكل صحيح، ويمكن أن تستغرق هذه الأخطاء بعض الجهد للعثور عليها. إذا كانت هناك صفقات تُوضع بشكل غير صحيح أثناء التداول التجريبي أو الحي، فإننا نحتاج إلى أكبر قدر ممكن من المعلومات لحل المشكلة.

    سنقوم بإضافة ميزة اختيارية لتسجيل معلومات الصفقات والحالة في الوقت الحقيقي، بحيث نكون لدينا سجل لها عند حل مشكلات التداول. سنستخدم تعليمات Print() كما في السابق، ولكننا سنسجل قيم المؤشرات والأسعار - أي معلومات تكون مفيدة في عملية تصحيح الأخطاء. سنقوم أيضًا بإضافة متغير خارجي لتشغيل وإيقاف التسجيل.


    كود PHP:
    // External variables
    extern bool Debug = true;
    // Place near the end of the start() function
    if(Debug == true) Print(StringConcatenate("Bid:",Bid," Ask:",Ask," MA:",MA,
    " BuyTicket:",BuyTicket," SellTicket:",SellTicket)); 
    

    سيتم تسجيل معلومات الأسعار والمؤشرات، بالإضافة إلى محتوى المتغيرات BuyTicket و SellTicket في الشيفرة أعلاه. إذا كانت هناك أي أسئلة حول كيفية فتح صفقة أو لماذا لم تتم فتح صفقة معينة، ستظهر السجل في تلك اللحظة معلومات حالة جميع شروط الصفقة ذات الصلة. يمكنك تشغيل أو إيقاف تسجيل المعلومات باستخدام المتغير الخارجي Debug.

    يجب وضع تعليمة الـ Print() للتصحيح بالقرب من نهاية الدالة start()، بعد جميع دوال التداول. إذا كنت تستخدم مؤقتًا و/أو ميزة تنفيذ عند فتح شريط، يجب وضع تعليمة الـ Print() للتصحيح داخل كتلة المؤقت بحيث تعمل فقط عند الضرورة. وإلا فإن الخطأ سيظهر في السجل في كل انقضاء زمني (تيك)، مما يمكن أن يؤدي إلى إنشاء ملف سجل ضخم.





    حل أخطاء التجميع
    Fixing Compilation Errors




    عند تجميع مستشار الخبير الخاص بك، سيقوم المترجم بفحص الصيغة الصحيحة وضمان أن جميع الوظائف والمتغيرات المخصصة قد تم إعلانها بشكل صحيح. إذا نسيت شيئًا ما، سيتوقف المترجم، وستظهر أي أخطاء في التجميع في علامة الأخطاء في نافذة الأدوات.
    عندما تواجه قائمة طويلة من أخطاء التجميع، دائمًا ابدأ من الخطأ الأول. انقر نقرًا مزدوجًا على الخطأ في القائمة، وسيقفز المحرر مباشرةً إلى السطر الذي يحتوي على الخطأ. قم بتصحيح الخطأ وأعد التجميع. في بعض الأحيان، قد ينتج خطأ بسيط في الصيغة عن العديد من أخطاء غير مرتبطة، على الرغم من أن الأول فقط كان صحيحًا.

    إليك قائمة بأخطاء التجميع الشائعة وحلولها:

    المتغير غير معرف( Variable not defined ): نسيت أن تعلن عن متغير بنوع البيانات. إذا كان متغيراً عاماً أو خارجياً، قم بإعلانه في الجزء العلوي من الملف. إذا كان متغيرًا محليًا، ابحث عن أول حدوث وضع تصريح النوع أمامه. في حالة الشك، تحقق من الإملاء أو حالة (أعلى/أدنى) اسم المتغير.

    المتغير تم تعريفه بالفعل( Variable already defined ): قمت بتعريف نفس المتغير مرتين. احذف تصريح النوع من جميع التصريحات المتكررة.

    الدالة غير معرفة( Function is not defined ): إذا كانت الدالة في سياق تضمين أو مكتبة، تأكد من أن التوجيه #include أو #import موجود في الجزء العلوي من الملف وصحيح. في حالة عدم وجوده، تحقق من الإملاء أو حالة اسم الدالة وتأكد من وجودها إما في الملف الحالي أو في الملفات المتضمنة أو المكتبات ذات الصلة.

    استخدام تعيين غير قانوني( Illegal assignment used ): غالبًا ما يكون ذلك مرتبطًا برمز اليساوي (=). تذكر أن العلامة اليساوي الواحدة تُستخدم لتعيين المتغير، وعلامتي اليساوي (==) هما عامل مقارنة. قم بتصحيح عامل التعيين إلى العامل المقارن المناسب.

    المتوقع تعيينه( Assignment expected ): هذا يكون عادةً متعلقًا بعامل المقارن "يساوي" (==). لقد استخدمت اثنين من علامات اليساوي بدلاً من واحدة في تعيين المتغير. قم بتصحيح العامل إلى علامة اليساوي الواحدة.

    قوس الإغلاق اليميني غير متوازن( Unbalanced right parenthesis ): هذه الأخطاء عادة تحدث في عبارة if عند استخدام الأقواس متداخلة. انتقل إلى السطر الذي يشير إليه الخطأ الأول وأدخل قوس الإغلاق اليميني في المكان المناسب.

    قوس الفتح اليساري غير متوازن( Unbalanced left parenthesis ): هذا أمر معقد. الخطأ عادةً ما يشير إلى نهاية سطر البرنامج. ببساطة نسيت قوس الإغلاق اليميني في مكان ما. قم بمراجعة الشيفرة التي قمت بتحريرها مؤخرًا وابحث عن قوس الإغلاق اليميني المفقود. قد تضطر إلى تعليق أجزاء من الشيفرة للعثور على المشكلة.

    عدد معلمات خاطئ( Wrong parameters count ): لديك عدد قليل أو كثير جدًا من الوسائط في دالة. قم بالتحقق المضاعف من بنية الدالة في مرجع MQL وقم بتصحيح الوسائط.

    المتوقع نص الفاصلة( Semicolon expected ): ربما نسيت وضع فاصلة في نهاية السطر. قم بوضع فاصلة في نهاية السطر السابق. علمًا أن نسيان الفاصلة يمكن أن يتسبب في أي من الأخطاء أعلاه أيضًا، لذا تأكد من وضع تلك الفواصل!
يعمل...
X