تعليم لغة mql4 5

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

  • تعليم لغة mql4 5

    الحلقات والقرارات (جزء 2)

    تحدثنا في الدرس السابق عن الحلقات

    وكما ذكرنا من قبل , فالحلقات هي احدى طريقتين تقومان على تغيير التسلسل الطبيعي لتنفيذ اوامر البرنامج من القمة للقاع ( راجع الدرس السابق ).

    حسنا , الطريقة الأخرى هي القرارات decisions .

    القرارات decision هي جملة برمجية تقوم بعمل انتقال امر برمجي لمرة واحدة لجزء أخر من البرنامج معتمدا على قيمة المتغير.
    اللهم انك سلطت علينا عدوا عليما بعيوبنا - يرانا هو
    وقبيله من حيث لانراهم -- اللهم آيسه منا كما آيستـه من رحمتك وقنطه
    منا كما قنطـته من عـفوك -- وباعــد بيننا وبينه كما باعـدت بينه وبين
    رحمتك وجنتك

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

    هناك عدة انواع من القرارات في لغة MQL4 :

    1- الجملة الشرطية ( إذا ) .. ( if ) :

    ( إذا أخطأ علي فاضربوه ) .. حسنا ماذا لو لم يخطئ علي ؟ فلن يتم تنفيذ البرنامج (هذا مثال سريع قبل الدخول في التفاصيل )

    الجملة ( if ) هي اسهل انواع الجمل الشرطية ( القرارات ).

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


    كود PHP:
    if( x < 100 )


    Print("hi");


    هنا الكلمة المحجوزة ( if ) جاء بعدها القوسان ( ) وبداخلهم جاء تعبير الأختبار ( هل تتذكروه ) على هذه الصورة ( X<100 ) , متى جاءت النتيجة بين القوسين صحيحة true سيقوم جسد الجملة بتنفيذ الأمر (Print("hi") ,, وكمتى جاءت خاطئة false فسينتقل التسلسل التنفيذي للأوامر الى جزء أخر من البرنامج .
    اللهم انك سلطت علينا عدوا عليما بعيوبنا - يرانا هو
    وقبيله من حيث لانراهم -- اللهم آيسه منا كما آيستـه من رحمتك وقنطه
    منا كما قنطـته من عـفوك -- وباعــد بيننا وبينه كما باعـدت بينه وبين
    رحمتك وجنتك

    تعليق


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

      الجمل المتعددة في جسد الجملة ( if ) (الأوامر ) :

      مثل ما رأينا في الحلقات , فالجملة ( if ) يمكن ان تتكون من اكثر من جملة تنفيذية ويحاطون بالقوسين { }.

      ( لاحظ انه لو وجدت جملة واحدة لن نحتاج الى هذه الأقواس { } )

      مثال :


      كود PHP:
      if(current_price==stop_lose)


      {

      Print("you have to close the order");

      PlaySound("warning.wav");

      }


      ملاحظة : العلامة == الموجودة في تعبير الأختبار , هي احد عمليات المقارنة وليست = عملية مساواة (راجع درس العمليات والتعبيرات) ... هذه مصدر العديد من أخطاء الكتابة البرمجية نظرا للتشابه بينهم .
      اللهم انك سلطت علينا عدوا عليما بعيوبنا - يرانا هو
      وقبيله من حيث لانراهم -- اللهم آيسه منا كما آيستـه من رحمتك وقنطه
      منا كما قنطـته من عـفوك -- وباعــد بيننا وبينه كما باعـدت بينه وبين
      رحمتك وجنتك

      تعليق


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

        التداخل Nesting :

        يمكن للحلقات والقرارات ان يتداخلوا في بعضهم البعض , بمعنى انه يمكنك كتابة حلقة ( for ) داخل جملة شرطية ( if ) والعكس بالعكس ... تسمى هذه العملية بالتداخل Nesting .

        مثال :


        كود PHP:
        for(int i=2 ; i<10 ; i++)


        if(i%2==0)

        {

        Print("It's not a prime nomber");

        PlaySound("warning.wav");

        }


        في هذا المثال تم وضع الجملة الشرطية (القرار) ( if ) بداخل الحلقة ( for ) .
        اللهم انك سلطت علينا عدوا عليما بعيوبنا - يرانا هو
        وقبيله من حيث لانراهم -- اللهم آيسه منا كما آيستـه من رحمتك وقنطه
        منا كما قنطـته من عـفوك -- وباعــد بيننا وبينه كما باعـدت بينه وبين
        رحمتك وجنتك

        تعليق


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

          2- الجملة الشرطية ( إذا .. وإلا ) .. ( if .. else ) :

          ( اذا أخطأ علي فاضربوه والا فأكرموه ) هنا البرنامج سينفذ ايا من الأمرين , ان أخطأ علي true سيتم ضربه , وان لم يخطئ false سيتم تنفيذ الأمر الثاني وهو الأكرام . .

          هذه الجملة تختلف عن سابقتها ان لها نتيجيتين واحدة في حالة true والأخرى false ( في الجملة if كانت هناك نتيجة واحدة فقط في حالة صحة تعبير الأختبار true اما الحالة false فينتقل البرنامج الى جزء أخر منه )

          تتكون هذه الجملة من الكلمة المحجوزة if متبوعة بجملة تنفيذ او اكثر , وكلمة محجوزة أخرى هي else متبوعة بجملة تنفيذ او اكثر .

          مثال :


          كود PHP:
          if(current_price>stop_lose)


          Print("It’s too late to stop, please stop!");

          else

          Print("you playing well today!");


          ترجمة هذا المثال على النحو التالي :

          إذا (السعر الحالي > وقف الخسارة )

          اطبع جملة ("انت متأخر جدا , ارجوك اغلق العقد")

          والا

          اطبع جملة ("انت تضارب جيدا اليوم")
          اللهم انك سلطت علينا عدوا عليما بعيوبنا - يرانا هو
          وقبيله من حيث لانراهم -- اللهم آيسه منا كما آيستـه من رحمتك وقنطه
          منا كما قنطـته من عـفوك -- وباعــد بيننا وبينه كما باعـدت بينه وبين
          رحمتك وجنتك

          تعليق


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

            التداخل Nesting في جملة ( if .. else ) :

            لايمكن لجملة ( if .. else ) ان تتداخل مع جملة ( if ) , ولكن يمكن ان نجعل جملة ( if .. else ) تتداخل مع جملة ( if .. else ) أخرى ... وهكذا .

            في هذا المثال :


            كود PHP:
            if(current_price>stop_lose)

            Print("It’s too late to stop, please stop!");

            if(current_price==stop_lose)

            Print("It’s time to stop!");

            else

            Print("you playing well today!");

            توجد مشكلة برمجية هنا , حيث الجملتين الشرطيتين هنا متعارضتين وسيواجه الكومبيوتر مشكلة ايهما ينفذ ؟

            ان جاء السعر اعلى من وقف الخسارة هناك امران احداهما "انتا متاخر جدا , ارجوك اغلق العقد " في الجملة الأولى ,, والأخرى "انت تضارب جيدا اليوم" ( نتيجة انه false ان لم يحدث == في الجملة الثالثة .

            وهذا خطا برمجي ان يكون هناك اكثر من امر شبيه عند تحقق شروط متشابهة ( فأيهما ينفذ ؟)

            هناك حل لهذا الأمر :

            * ان نحيط الجملة ( if.. else ) بكاملها بالقوسين { }

            مثال :


            كود PHP:
            if(current_price>stop_lose)

            {

            Print("It’s too late to stop, please stop!");

            if(current_price==stop_lose)

            Print("It’s time to stop!");

            else

            Print("you playing well today!");

            }

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

            تعليق


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

              3- الجملة الشرطية ( التوزيع ) .. ( switch ) :

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

              دعونا نرى مثالا :


              كود PHP:
              switch(x)

              {

              case
              'A'
              :

              Print(
              "CASE A"
              );

              break;

              case
              'B'
              :

              case
              'C'
              :

              Print(
              "CASE B or C"
              );

              break;

              default:

              Print(
              "NOT A, B or C"
              );

              break;

              }

              كيف يعمل هذا الكود (الجملة البرمجية في المثال) ؟

              تبدا الجملة بالكلمة المحجوزة switch لتوزع اوامر التنفيذ لقيم النتغير x المختلفة .

              وتاتي الأوامر بين القوسين { } .

              الجملة switch تربط المتغير x بجميع القيم الداخلة للبرنامج وتتعامل معها على هذا النحو :

              في حالة x==A سيخرج الكومبيوتر الناتج ( case A ) والا سينفذ الأمر Break (راجع هذا الأمر في الدرس السابق)

              في حالة x==B او x==C سيخرج الكومبيوتر الناتج ( case B or case C ) وذلك لعدم وجود الأمر Brea.

              في حالة !==x اي ان x لا تتطابق مع اي من القيم السابقة سيخرج الكومبيوتر النتيجة الأفتراضية ( Not caseA,caseB or case C )
              اللهم انك سلطت علينا عدوا عليما بعيوبنا - يرانا هو
              وقبيله من حيث لانراهم -- اللهم آيسه منا كما آيستـه من رحمتك وقنطه
              منا كما قنطـته من عـفوك -- وباعــد بيننا وبينه كما باعـدت بينه وبين
              رحمتك وجنتك

              تعليق


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

                أخي أريد التدخل من بعد إذنك !!
                عند نقلك للموضوع لم تنته لتغير مكان الأقواس والمعقفات بالتالي بتغير مكانها أصبح من المستحيل تطبيقها على mq4 compilateur فرجو منك التفطن لهذه النقطة و شكر لك !!!!

                تعليق


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

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

                  تعليق

                  يعمل...
                  X