تعليم لغة mql4 6

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

  • تعليم لغة mql4 6

    عالم الدوال في لغة MQL4


    الدوال في اي لغة برمجية هي عصب البرنامج وقارب النجاة لكل مبرمج.

    الدوال functions هي عبارة عن جمل statements متجمعة (هناك جمل مستقلة ولا تحتاج للتجمع لتكوين دالة مثل الحلقات والقرارات)

    دعونا نبدأ الدرس .

    * ماذا نعني بالدوال functions ?

    الدالة تشبه في طريقة عملها طريقة عمل مشواة اللحم , فأنت عليك ان تضع اللحم والبهارات وهي عليها ان تخرج لك الكباب المشوي

    اللحم والبهارت هما المعرفات والتغيرات واسم الدالة , والكباب هو ناتج الدالة والذي يمثل بقيمة return , اما المشواة ذاتها فهي جسد الدلة .

    هناك اختلاف وحيد بين المشواة والدالة وهو ان بعض الدوال لها ناتج خالي (لاشئ) (ويمثلها في لغة MQL4 بالكلمة المحجوزة void)

    دعونا نأخذ بعض الأمثلة :

    كود PHP:
    double

    my_func
    (double a, double b, double c)
    // المعرفات والمتغيرات ( اللحم والبهارت)
    {

    return (
    a*b + c);
    // ناتج الدالة (الكباب)

    }

    كما نرى في المثال اعلاه , الدالة بدأت بتحديد نوع الناتج (الكلمة المحجوزة double) , وبعدها اسم الدالة متبوعة بالقوسين ( ) .

    بداخل تلك الأقواس ( ) اسف اقصد المعرفات ومتغيراتهم

    هنا عندنا 3 معرفات double a , double b , double c .

    تبدأ الدالة عملها وتنتهي داخل القوسين { }

    الكلمة المحجوزة ( return ) هي المسئولة عن اخراج الناتج النهائي للدالة .
    اللهم انك سلطت علينا عدوا عليما بعيوبنا - يرانا هو
    وقبيله من حيث لانراهم -- اللهم آيسه منا كما آيستـه من رحمتك وقنطه
    منا كما قنطـته من عـفوك -- وباعــد بيننا وبينه كما باعـدت بينه وبين
    رحمتك وجنتك

  • #2
    رد: تعليم لغة mql4 6

    الكلمة المحجوزة ( Return ) :

    الكلمة المحجوزة ( return ) كما قلنا هي المسئولة عن انهاء الدالة ( مثل الكلمة المحجوزة Break في الحلقات والقرارات) , كما تعطينا التحكم في نداء الدالة function call (سنعرفها بعد قليل)

    الكلمة المحجوزة ( return ) يمكن ان تحتوي على تعبير ما بين اقواسها ( ) كما في مثالنا هنا ( التعبير هو اتحاد العمليات والمعرفات , راجع درس العمليات والتعبيرات ) وهنا وظيفتها ان تنهي الدالة وتخرج لنا نتائج العمليات بداخلها (كما في المثال (a*b + c);

    ويمكن ايضا ان لا تحتوي على تعبير ما وهنا تكون وظيفتها فقط انهاء الدالة .

    ملاحظة : ليس كل الدوال تنتهي بالكلمة المحجوزة ( return ) خاصة لو لم يكن هناك اي قيمة ناتجة عن عمليات او ما شابه .

    مثال عن ذلك :


    كود PHP:
    void // void mean there’s no sausage – returned value.

    my_func (string s)
    // function name and parameters list (meat & spices)

    {

    Print(
    s
    );

    }

    تذكروا هنا ان الكلمة المحجوزة void معناها انه لا يوجد هناك نتيجة للمعطيات.

    في هذا المثال لم تخرج لنا الدالة قيمة الناتج بل فقط أخرجت لنا المعرف ( s ) كما ادخلناه دون تغيير

    متى لم تستخدم الدالة الكلمة المحجوزة ( return ) يجب علينا استخدام الكلمة المحجوزة ( void ) لنحدد طبيعة الدالة .

    هذه الأنواع من الدوال تسمى في بعض اللغات البرمجية بالطرق (methods) ولكنها في لغة MQL4 تسمى دوال functions
    اللهم انك سلطت علينا عدوا عليما بعيوبنا - يرانا هو
    وقبيله من حيث لانراهم -- اللهم آيسه منا كما آيستـه من رحمتك وقنطه
    منا كما قنطـته من عـفوك -- وباعــد بيننا وبينه كما باعـدت بينه وبين
    رحمتك وجنتك

    تعليق


    • #3
      رد: تعليم لغة mql4 6

      استدعاء الدالة function call :

      كلنا عرفنا ماهي الدالة functin ( كما اتمنى ) , حسنا كيف نقوم باستدعاء واستخدام الدالة في لغة MQL4 ؟

      هناك عدة طرق بعد كتابة الدالة الخاصة بك تمكنك من استخدامها (استدعائها) في برنامجك .

      افترض معي انك كتبت دالة تقوم بجمع عددين صحيحين ( integers )

      هذه هي الدالة :


      كود PHP:
      int collect (int first_number, int second_number)


      {

      return(first_number+ second_number);

      }


      انت تعرف كيف تعمل هذه الدالة , لكنك تريد استخدامها في البرنامج .

      يمكنك استخدامها ( استدعائها ) هكذا :


      كود PHP:
      int a = 10;


      int b = 15;

      int sum = collect(a,b);

      Print (sum);


      في المثال السابق سيخرج البرنامج والكومبيوتر الناتج 25 ( نتيجة جمع العددين 10 , 15 ) داخل الدالة التي كتبتها. !!

      هل هذا سحر ام خيال !! كيف قامت السطور السابقة باستخدام ( باستدعاء ) الدالة الخاصة بك ؟؟؟

      لا حظ انك سميت الدالة الخاصة بك بالأسم collect , وقيمة الكلمة المحجوزة ( return ) بها عملية الجمع .

      السطر الخيالي ( int sum = collect(a,b); ) هو من قام باستخدام الدالة ( استدعائها ) بإضافة القيمة ( collelct ) اسم الدالة الى المتغير ( sum ) وأعطى الدالة القيمتين 10 و 15 .

      فعند طباعة المتغير sum ستقوم بأستداء الدالة واخراج نتيجتها .

      بمعنى شامل : انك كتبت الدالة وأعطيتها اسما ما , ثم كتبت امر استخدامها بكتابة اسمها داخل الأمر فقط (وتم تعريف اسم الدالة كمتغير ) , انت هكذا اساسا استدعيت الدالة الخاصة بك .

      لغة MQL4 حين ترى اسم الدالة الخاصة بك ستقوم بأخذ القيم ( 10 و 15 في المثال ) وتذهب بهم الى الدالة تبعك وتقوم بمعالجتهم حسب قيمة الكلمة المحجوزة ( return ) وتعود بالقيمة الناتجة الى السطور السابقة لتقوم بطبعها او اخراجها في المكان السابق .
      اللهم انك سلطت علينا عدوا عليما بعيوبنا - يرانا هو
      وقبيله من حيث لانراهم -- اللهم آيسه منا كما آيستـه من رحمتك وقنطه
      منا كما قنطـته من عـفوك -- وباعــد بيننا وبينه كما باعـدت بينه وبين
      رحمتك وجنتك

      تعليق


      • #4
        رد: تعليم لغة mql4 6

        تداخل دالة في دالة أخرى Nesting.

        يمكننا ان ندخل دالة ما بداخل دالة جديدة وذلك بمعالجة سطر استدعاء الدالة برمجيا كجملة برمجية statement ( في الحقيقة كلهم يعتبروا سطور برمجية )

        لنرى مثالا يوضح ذلك :


        كود PHP:
        void print_collection (int first_number, int second_number)


        {

        int sum = collect(first_number, second_number);

        Print(sum);

        }


        في المثال نحن استخدمنا دالة collect ووضعناها داخل دالة جديدة والناتج هو خلاصة الدالتين .
        اللهم انك سلطت علينا عدوا عليما بعيوبنا - يرانا هو
        وقبيله من حيث لانراهم -- اللهم آيسه منا كما آيستـه من رحمتك وقنطه
        منا كما قنطـته من عـفوك -- وباعــد بيننا وبينه كما باعـدت بينه وبين
        رحمتك وجنتك

        تعليق


        • #5
          رد: تعليم لغة mql4 6

          دوال لغة MQL4 الأساسية ( ()init() , deinit() , start ):

          كل برنامج في لغة MQL4 سواء كان مؤشر , اكسبرت او اسكربت فهو يبدا دائما بالدالة " ()init " اختصار كلمة بدأ (initialize) وهي تعمل بمجرد وضع البرنامج ( اكسبرت او مؤشر او اسكربت) على شارت الميتاتريدر , ووظيفتها بدء عمل المتغيرات الرئيسية بالبرنامج ( سنعرف الكثير عن المتغيرات في الدرس القادم ان شاء الله )

          متى انتهى عمل البرنامج بأغلاق الشارت او مسح المؤشر او الكسبرت او اغلاق الميتا تريدر تقوم الدالة " ()deinit " بعملها لأنهاء البرنامج .

          الدالة الثالثة " ()start " ( اهم الدوال على الإطلاق ) تعمل بصفة دائمة كلما استقبلت معطيات وقيم جديدة في متغيراتها ( تحرك السعر يعطي قيم جديدة للهاي واللو والكلوز وقيم المؤشرات المختلفة هي قيم تتغير طوال الوقت ) , احب ان اخبرك هنا انك ستقضي 90% من حياتك البرمجية داخل هذه الدالة .
          اللهم انك سلطت علينا عدوا عليما بعيوبنا - يرانا هو
          وقبيله من حيث لانراهم -- اللهم آيسه منا كما آيستـه من رحمتك وقنطه
          منا كما قنطـته من عـفوك -- وباعــد بيننا وبينه كما باعـدت بينه وبين
          رحمتك وجنتك

          تعليق


          • #6
            رد: تعليم لغة mql4 6

            أخي هناك الكثير من الأخطاء البرمجية فيما ذكرته يستحيل نقل لغة mq4 دون فهمها !!
            راجع المشاركات السابقة

            تعليق

            يعمل...
            X