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

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

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

    نطاق أو مجال المتغيرات (Variable Scope):

    يحدد نطاق المتغير الوظائف التي يكون متاحًا لها ومدة بقائها في الذاكرة.
    في MQL يمكن أن يكون النطاق محلي (local) أو عام (global).

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

    يتم استثناء المتغيرات المحلية الثابتة (static local) من هذه القاعدة. حيث تظل المتغيرات الثابتة في الذاكرة حتى بعد انتهاء الوظيفة. وعند تشغيل الوظيفة مرة أخرى ، لا تتم إعادة تهيئة المتغير ، ولكنه يحتفظ به بدلاً من ذلك القيمة السابقة.

    يتم التصريح عن المتغيرات الثابتة عن طريق كتابة static أمام إعلان المتغير. مثال عن إعلان متغير ثابت:
    كود:
    static int MyStaticVar;




    إذا كان المتغير الثابت يجب توفيره لأكثر من دالة ، فاستخدم متغيرًا عامًا
    و في هذه الحالة لا تحتاج إلى التصريح عن المتغير على أنه ثابت(static).

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

    لاحظ الصورة:






    مخطط ملف MQ4:
    إنشاء إكسبيرت جديد:

    إن معالج إنشاء الإكسبيرت في MetaEditor هو أسرع طريقة للبدء في إنشاء
    إكسبيرت. يمكنك بدء المعالج بتحديد "New" من قائمة "File" ، أو عن طريق الضغط على الزر "New" من شريط الأدوات ، أو بالضغط على Ctrl + N في لوحة المفاتيح.







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

    لاحظ الصور:







    ستتم مطالبتك بالاسم والمؤلف والرابط ، بالإضافة إلى بعض الخصائص الاختيارية. الاسم سيكون هو اسم ملف إكسبيرتك. سيتم حفظ EA في مجلد \ Experts أسفل ذلك اسم الملف.

    ستظهر محتويات حقل المؤلف بجوار اسم EA في Strategy Tester ، وكتلميح عند تحريك الماوس فوق اسم الإكسبيرت في نافذة المستكشف. حقل الارتباط هو عنوان URL لملف موقع الويب ، لكنه لن يظهر في أي مكان خارج ملف التعليمات البرمجية المصدر mq4.

    يمكنك أيضًا إدخال الخصائص الخاصة بإكسبيرتك من هنا. في الوقت الحالي ، أضف واحدة أو اثنتين ( انا قمت بإضافة اثنتين ) ، لكن لا تهتم يمكن تعديلها. من الأفضل إضافة هذه الأشياء يدويًا إلى الكود المصدري لاحقًا.









    يعتبر قالب الإكسبيرت الافتراضي ضئيلاً نوعًا ما ، ولكنه يحتوي على الهيكل الأساسي للإكسبيرت. دعنا نحدد مخطط ملف MQL باستخدام قالب الإكسبيرت كدليل لنا.


    توجيهات المعالج ( Preprocessor Directives ):

    أول شيء يظهر في أي ملف MQL هو توجيهات المعالج. يسبقها #.
    يحتوي قالب الإكسبيرت الافتراضي على اربع:
    # copyright (ملكية حقوق النشر) وهو اسم المؤلف ( أي أنت ) والذي تم إدخاله في معالج Expert Advisor
    # link وهو الرابط الذي أدخلته في ملف المعالج
    # version وهو رقم نسخة هذا الملف
    # strict لتوجيه المترجم (Compiler) لوضع الترجمة الصارم وذلك من أجل تنبيهك عند ارتكاب أي خطأ.


    هناك توجيهات أخرى لكن جميعها تقريبًا مرتبطة بالمؤشرات والنصوص.
    التوجيه الوحيد الذي يجب تضمينه في إكسبيرتك هو # copyright ملكية حقوق الطبع والنشر والذي يعرف الـ EA على أنه من إبداعك.

    النوع الثاني من توجيهات المعالج والذي من المحتمل أن تستخدمه هو التوجيه # include. يتكون ملف التضمين من وظائف ورموز المصدر والذي سيتم تضمينها في مشروعك عندما يتم تجميعها. كيفية بناء الجملة لتوجيه التضمين هو:
    كود:
    #include <name.mqh>



    حيث ان name هو اسم الملف الذي تريد تضمينه.

    يتم استخدام التوجيه #define للتصريح عن الثوابت لاستخدامها في برنامجنا. على سبيل المثال ، بدلاً من كتابة سلسلة نصية طويلة في كل مرة تريد استخدامها يمكنك تحديد ثابت وكتابة ذلك مثال:
    كود:
    #define MYCONSTANT “This is a constant”



    الآن في كل مرة سنقوم بكتابة MYCONSTANT فورا سيعرف المترجم (Compiler) أننا نقصد ( This is a constant ), وقد اصطلح على ان التصريح عن المعرفات الثابتة هو باستخدام الأحرف الكبيرة. على الرغم من أنه ليس ضروري على الإطلاق ، ولكن من أجل التناسق ، يجب عليك تحديد جميع معرفات الثوابت باستخدام الأحرف الاستهلالية ( الكبيرة ).

    في بعض الأحيان ستحتاج إلى وظيفة قد تم كتابتها استخدامها في ملف آخر ، مثل
    ملف مكتبة ( library file ) أو ملف ( Windows DLL ( dll. حيث يمكنك استيراد هذه الوظائف مباشرة إلى مشروعك ( إكسبيرت أو مؤشر ) باستخدام توجيهات #import.

    تتشابه المكتبات (Libraries) مع تضمين الملفات (include files) ، ولكن بدلاً من تضمين شفرة المصدر في مشروعنا ، سيقوم المترجم بتنفيذ الملف الآخر واستدعاء الوظيفة منه. سنتحدث عن استخدام المكتبات لاحقًا إن شاء الله.

    مثال على توجيه #import:
    كود:
    #import "library.ex4"
    double MyImportedFunction();
    #import




    في هذا المثال ، ملف المكتبة الذي نستورد الوظيفة (الوظائف) منه هو library.ex4. وهنا قمنا باستيراد دالة واحدة من النوع double ، تسمى MyImportedFunction (). لاحظ أن معرف الوظيفة يجب أن يتطابق مع اسم الوظيفة في ملف المكتبة المصدر. لاحظ الفاصلة المنقوطة في نهاية الدالة.


    سأتوقف هنا وفي الحلقة القادمة بإذن الله سنكمل مخطط ملف الإكسبيرت
    أترككم في رعاية الله.
    التعديل الأخير تم بواسطة Turkm; 2022 - 04 - 18, 15:10.

  • #2
    رد: الحلقة العاشرة من سلسلة تعلم البرمجة باسهل طريقة

    قريبا ان شاء الله الحلقة الحادية عشرة

    تعليق

    يعمل...
    X