ورشة تعليم برمجة الاكسبيرتات:اكسبيرت الشموع الانعكاسية

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

  • #31
    رد: ورشة تعليم برمجة الاكسبيرتات:اكسبيرت الشموع الانعكاسية

    الحلقة for
    الحلقة بشكل مختصر هي عملية تكرار للكود الدي يوجد داخلها لحين استيفاء احد الشروط
    الحلقة الاكثر شيوعا هي الحلقة for
    تكتب على الشكل التالي
    مثال
    كود PHP:
    for (int i=0;i<10;i++)
    {
    print(i);
    } 
    
    صورة على المحرر

    داخل الحلقة for ثلاث اجزاء مفصولة بالاشارة ;
    الجزء الاول هو int i=0
    يعني اننا عرفنا داخل الحلقة متغير صحيح اسمه i و اعطيناه قيمة 0
    الجزء الثاني هو i<10
    هو شرط توقف الحلقة و الخروج منها
    الجزء الاخير ++i
    يعني اننا سنزيد قيمة i بالعدد 1 في كل مرة تدور الحلقة
    الان سنفوم بشرح كيفية عمل المثال السابق
    اول شيء سيعرف للحلقة من خلال الجزء الاول ان هناك i قيمته 0 ثم ستقارنه بالجزء الثاني وهو ان i لابد ان يكون اصغر من 10
    ادا كانت المقارنة صحيحة كما في حالتنا تنفد ما هو داخل الحلقة اي ستطبع قيمة i التي هي 0 ثم ستطبق الجزء الاخير وهو زيادة قيمة i لتصبح قمته واحد
    ثم ستقارن مجددا بالجزء الثاني ادا كنت صحيحة ستكتب قيمة i و هكدا حتي تصل قيمة i الى
    10
    ستدخل لتقارن ستجد ان المقارنة غير صحيحة و بدلك تنتهي الحلقة

    داخل الحلقة يمكننا كتابة جمل شرطية او استدعاء دوال معينة
    ستنعرف على هده الاشياء لاحقا في شرح الاكسبيرت ان شاء الله

    تعليق


    • #32
      رد: ورشة تعليم برمجة الاكسبيرتات:اكسبيرت الشموع الانعكاسية

      الدوال

      الدوال تشبه الى حد كبير البرنامج المصغر
      و هي تقوم بمهام وعمليات مقارنة و جمل شرطية ويمكن كدلك ان نضيف اليها الحلاقات بناءا ما يسمى بالبارامتر وتنقسم على نوعين
      دوال دات ناتج ودوال دون ناتج
      1
      - الدوال دات الناتج

      وتكون كتابتها على الشكل التالي
      نوع المتغير الدي نريد ان يكون ناتج الدالة عبارة عنه ثم اسم الدالة وهو اسم نختاره نحن وثم نضع البارامترات التي ستشتغل عليها الدالة
      في جسد الدالة اخر سطر سنكتب في كلمة return ونكتب بجانبها الناتج الدي ستؤول اليه الدالة
      مثال
      كود PHP:
      
      int  Max(int  numl,int num2)
         {
           if(num1>num2)
           {
           return num1;
           }
           else
           {
           return num2;
           }
      } 
      
      الدالة ستؤول الى اكبر عدد بين البارامتر الاول num1 و البارامتر الثاني num2

      2

      الدوال بدون ناتج

      هي دوال لا تؤول الي نتيجة معينة وتكتب بنفس الدوال السابقة لكن مع بعض الاختلاف

      كتابة الدالة تبدأ بكلمة void ثم اسم الدالة والبارامترات الدخلة

      في جسد الدالة لا تكون كلمة return

      مثال
      كود PHP:
      void Max(int num1,int num2)
      {
      if(num1>num2)
      {
      Print(num1);
      }
      else
      {
      Print (num2);
      }
      } 
      
      الدالة الحالية هي نفس الاولى لكنها لا تؤول الى عدد بل تقوم بطباعة العدد الاكبر
      صورة للدالتين على المحرر


      تعليق


      • #33
        رد: ورشة تعليم برمجة الاكسبيرتات:اكسبيرت الشموع الانعكاسية

        تم الانتهاء من الاساسيات
        اعتدر لاني لم ارفق الاكسبيرت اليوم وسـنؤجل شرح الاكسبيرت الى الغد لاتمكن من تجهيز الصور و الشرح

        تعليق


        • #34
          رد: ورشة تعليم برمجة الاكسبيرتات:اكسبيرت الشموع الانعكاسية

          بسم الله ما شاء الله

          بارك الله فيك اخى taoufik02 بالراحة انا مش ملاحق على المشاركات والشرح ان شاء الله اراجع ما تبقى اليوم وغدا تحياتى ومنتظرين الاكسبيرت

          تعليق


          • #35
            رد: ورشة تعليم برمجة الاكسبيرتات:اكسبيرت الشموع الانعكاسية

            المشاركة الأصلية بواسطة EL@NAWAWY مشاهدة المشاركة
            بسم الله ما شاء الله

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

            تعليق


            • #36
              رد: ورشة تعليم برمجة الاكسبيرتات:اكسبيرت الشموع الانعكاسية

              مرفق الاكسبيرت
              كود PHP:
              //+------------------------------------------------------------------+
              //|                                                 arabicbroker.mq4 |
              //|                        Copyright 2013, MetaQuotes Software Corp. |
              //|                                              http://www.mql5.com |
              //+------------------------------------------------------------------+
              #property copyright "Copyright 2013, MetaQuotes Software Corp."
              #property link      "http://www.arabicbroker.com"
              #property version   "1.00"
              #property strict
              //+------------------------------------------------------------------+
              //| Expert initialization function                                   |
              //+------------------------------------------------------------------+
              extern string S2=" 0=micro/ 1=mini/ 2=Stander";
               extern int lottyp=2;
              
               int Q;
               datetime Time0;
               double point;
               int digits;
                int MagicNumber=12542;      
               double SL,TP,spread;
                
              
              int OnInit()
                {
              //---
                 if(Digits==5||Digits==3)Q=10;
                else Q=1;
                  if(Digits<4)
                 {
                    point=0.01;
                    digits=2;
                 }
                 else
                 {
                    point=0.0001;
                    digits=4;
                 }
              //---
                 return(INIT_SUCCEEDED);
                }
              //+------------------------------------------------------------------+
              //| Expert deinitialization function                                 |
              //+------------------------------------------------------------------+
              void OnDeinit(const int reason)
                {
              //---
                 
                }
              //+------------------------------------------------------------------+
              //| Expert tick function                                             |
              //+------------------------------------------------------------------+
              void OnTick()
                {
              //---
                 
                    
                     if((isibbuy(1)==1 || ishummer(1)==1 || isnjs(1)==1)  && Time0!=Time[0] && TOTALORDER(MagicNumber)<=5 && High[0]>High[1])
                     {
                    spread=Ask-Bid; 
                     SL=Low[1]-(1*point);
                     TP=Ask+((High[1]-Low[1])+spread);
                     OrderSend(Symbol(),OP_BUY,1,Ask,3*Q,SL,TP," ",MagicNumber,0,Green);  
                     Time0=Time[0];
                     } 
                     if((isibsell(1)==1 || ischb(1)==1 ||  isshk(1)==1)  && Time0!=Time[0] && TOTALORDER(MagicNumber)<=5 && Low[0]<Low[1])
                     {
                     spread=Ask-Bid;
                     SL=High[1]+spread+(1*point);
                     TP=Bid-((High[1]-Low[1])+spread);
                     OrderSend(Symbol(),OP_SELL,1,Bid,3*Q,SL,TP," ",MagicNumber,0,Green);  
                     Time0=Time[0];    
                     } 
                  
              
                }
                int TOTALORDER(int Mg)
              {
                int j=0;
                int total  = OrdersTotal();
                for (int i = 0 ; i < total ;i++)
                {
                  OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
                  if (OrderMagicNumber() == Mg && OrderSymbol()==Symbol()&& (OrderType()==OP_BUY || OrderType()==OP_SELL))
                  {
                    j++;
                  }
                }
                return (j);
              }
               
               
              
              int isibbuy(int c)
              {
               int t=0;
               if(Open[c]<Close[c] && Open[c+1]>Close[c+1] && Close[c]>=Open[c+1])
                     {
                       t=1;
                     }
              return t;
              }
              int isibsell(int c)
              {
               int t=0;
               if(Close[c]<Open[c] && Close[c+1]>Open[c+1] && Close[c]<=Open[c+1])
                     {
                       t=1;
                     }
              return t;
              }
              int ishummer(int c)
              {
              int t=0;
                 if(Open[c]<Close[c] && (Close[c]-Open[c])<((Open[c]-Low[c])/2) && (Close[c]-Open[c])>(High[c]-Close[c]) )
                   {
                   t=1;
                     }
                if(Close[c]<Open[c] && (Open[c]-Close[c])<((Close[c]-Low[c])/2) && (Open[c]-Close[c])>(High[c]-Open[c]))
                {
                 t=1;
                }      
                   return (t);
              }   
              int ischb(int c)
              {
              int t=0;
                 if(Open[c]<Close[c] && (Close[c]-Open[c])<((High[c]-Close[c])/2) && (Close[c]-Open[c])>(Open[c]-Low[c]) )
                   {
                   t=1;
                     }
                if(Close[c]<Open[c] && (Open[c]-Close[c])<((High[c]-Open[c])/2) && (Open[c]-Close[c])>(Close[c]-Low[c]))
                {
                 t=1;
                }      
                   return (t);
              }   
              int isnjs(int c)
              {
               int t=0;
               if(Open[c]<Close[c] && Open[c+1]>Close[c+1] && Close[c]>=(Open[c+1]-Close[c+1])/2)
                     {
                       t=1;
                     }
              return t;
              }
              int isshk(int c)
              {
               int t=0;
               if(Close[c]<Open[c] && Close[c+1]>Open[c+1] && Close[c]<=(Close[c+1]-Open[c+1])/2)
                     {
                       t=1;
                     }
              return t;
              } 
              
              سنقسم الاكسبيرت الى اربعة اقسام كي يسهل الشرح
              الاكسبيرت مبرمج على النسخة الحديثة للمتاتريدر لدلك الشرح سيكون على المحرر الجديد حسب طلب احد الاخوة
              نلتقي بعد قليل ان شاء الله
              الملفات المرفقة

              تعليق


              • #37
                رد: ورشة تعليم برمجة الاكسبيرتات:اكسبيرت الشموع الانعكاسية

                الجزء الاول
                كود PHP:
                //+------------------------------------------------------------------+
                //|                                                 arabicbroker.mq4 |
                //|                        Copyright 2013, MetaQuotes Software Corp. |
                //|                                              http://www.mql5.com |
                //+------------------------------------------------------------------+
                #property copyright "Copyright 2013, MetaQuotes Software Corp."
                #property link      "http://www.arabicbroker.com"
                #property version   "1.00"
                #property strict
                //+------------------------------------------------------------------+
                //| Expert initialization function                                   |
                //+------------------------------------------------------------------+
                extern string S2=" 0=micro/ 1=mini/ 2=Stander";
                 extern int lottyp=2;
                
                 int Q;
                 datetime Time0;
                 double point;
                 int digits;
                  int MagicNumber=12542;      
                 double SL,TP,spread;
                  
                
                int OnInit()
                  {
                //---
                   if(Digits==5||Digits==3)Q=10;
                  else Q=1;
                    if(Digits<4)
                   {
                      point=0.01;
                      digits=2;
                   }
                   else
                   {
                      point=0.0001;
                      digits=4;
                   }
                //---
                   return(INIT_SUCCEEDED);
                  } 
                
                صورة على المحرر

                الجزء الثاني
                كود PHP:
                void OnDeinit(const int reason)
                  {
                //---
                   
                  }
                //+------------------------------------------------------------------+
                //| Expert tick function                                             |
                //+------------------------------------------------------------------+
                void OnTick()
                  {
                //---
                   
                      
                       if((isibbuy(1)==1 || ishummer(1)==1 || isnjs(1)==1)  && Time0!=Time[0] && TOTALORDER(MagicNumber)<=5 && High[0]>High[1])
                       {
                      spread=Ask-Bid; 
                       SL=Low[1]-(1*point);
                       TP=Ask+((High[1]-Low[1])+spread);
                       OrderSend(Symbol(),OP_BUY,1,Ask,3*Q,SL,TP," ",MagicNumber,0,Green);  
                       Time0=Time[0];
                       } 
                       if((isibsell(1)==1 || ischb(1)==1 ||  isshk(1)==1)  && Time0!=Time[0] && TOTALORDER(MagicNumber)<=5 && Low[0]<Low[1])
                       {
                       spread=Ask-Bid;
                       SL=High[1]+spread+(1*point);
                       TP=Bid-((High[1]-Low[1])+spread);
                       OrderSend(Symbol(),OP_SELL,1,Bid,3*Q,SL,TP," ",MagicNumber,0,Green);  
                       Time0=Time[0];    
                       } 
                    
                
                  } 
                
                صورة على المحرر

                الجزء الثالث
                كود PHP:
                int TOTALORDER(int Mg)
                {
                  int j=0;
                  int total  = OrdersTotal();
                  for (int i = 0 ; i < total ;i++)
                  {
                    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
                    if (OrderMagicNumber() == Mg && OrderSymbol()==Symbol()&& (OrderType()==OP_BUY || OrderType()==OP_SELL))
                    {
                      j++;
                    }
                  }
                  return (j);
                }
                int isibbuy(int c)
                {
                 int t=0;
                 if(Open[c]<Close[c] && Open[c+1]>Close[c+1] && Close[c]>=Open[c+1])
                       {
                         t=1;
                       }
                return t;
                }
                int isibsell(int c)
                {
                 int t=0;
                 if(Close[c]<Open[c] && Close[c+1]>Open[c+1] && Close[c]<=Open[c+1])
                       {
                         t=1;
                       }
                return t;
                } 
                
                صورة على المحرر

                الجزء الرابع
                كود PHP:
                int ishummer(int c)
                {
                int t=0;
                   if(Open[c]<Close[c] && (Close[c]-Open[c])<((Open[c]-Low[c])/2) && (Close[c]-Open[c])>(High[c]-Close[c]) )
                     {
                     t=1;
                       }
                  if(Close[c]<Open[c] && (Open[c]-Close[c])<((Close[c]-Low[c])/2) && (Open[c]-Close[c])>(High[c]-Open[c]))
                  {
                   t=1;
                  }      
                     return (t);
                }   
                int ischb(int c)
                {
                int t=0;
                   if(Open[c]<Close[c] && (Close[c]-Open[c])<((High[c]-Close[c])/2) && (Close[c]-Open[c])>(Open[c]-Low[c]) )
                     {
                     t=1;
                       }
                  if(Close[c]<Open[c] && (Open[c]-Close[c])<((High[c]-Open[c])/2) && (Open[c]-Close[c])>(Close[c]-Low[c]))
                  {
                   t=1;
                  }      
                     return (t);
                }   
                int isnjs(int c)
                {
                 int t=0;
                 if(Open[c]<Close[c] && Open[c+1]>Close[c+1] && Close[c]>=(Open[c+1]-Close[c+1])/2)
                       {
                         t=1;
                       }
                return t;
                }
                int isshk(int c)
                {
                 int t=0;
                 if(Close[c]<Open[c] && Close[c+1]>Open[c+1] && Close[c]<=(Close[c+1]-Open[c+1])/2)
                       {
                         t=1;
                       }
                return t;
                } 
                
                صورة على المحرر

                تعليق


                • #38
                  رد: ورشة تعليم برمجة الاكسبيرتات:اكسبيرت الشموع الانعكاسية

                  سنبدأ بشرح الجزء الاول ثم الثالث و الرابع
                  اما الجزء الثاني فسنتركه لللاخير

                  تعليق


                  • #39
                    رد: ورشة تعليم برمجة الاكسبيرتات:اكسبيرت الشموع الانعكاسية





                    1--
                    تسمى بالتعليقات وهده تساعد القارئ للكود على التعرف على اجزاء الاكسبيرت
                    يتعرف عليها المحرر لكنه لا ينفدها لكتاتبها نكتب دائما الرمز // ثم نكتب وراءه ما نريد
                    لونها دائما يكون رمادي كما في الصورة
                    2--
                    تسمى بحقوق الملكية تكتب دائما اوتوماتيكيا عند انشاء اكسبيرت جديد
                    3--
                    المتغيرات
                    شرحناها سابقا لكن هناك نوع جديد مسبوق بكلمة extern
                    وهي التي تضهر للمتداول عند قيامه بتشغيل الاكسبيرت لاول مرة لكي يعدل عليها كما يريد

                    المتغيرات الاخرة هي داخلية و لا يراها المتداول سنعرف الغاية منها عند التعمق في الشرح
                    4--
                    OnInit
                    هي احد الدوال الرئيسية لاي اكسبيرت تنفد مرة واحدة فقط عند تشغيل الاكسبيرت للمرة الاولى
                    بداخلها الكود التالي
                    كود PHP:
                     if(Digits==5||Digits==3)Q=10;
                      else Q=1;
                        if(Digits<4)
                       {
                          point=0.01;
                          digits=2;
                       }
                       else
                       {
                          point=0.0001;
                          digits=4;
                       } 
                    
                    الجملة الشطية الاولى
                    كود PHP:
                    --
                       if(Digits==5||Digits==3)Q=10;
                      else Q=1; 
                    
                    تستخدمها عدد الارقام بعد الفاصلة للعملات فكما تعلمون
                    لدينا نوعين من المنصات منصة دات اربعة ارقام او منصة دات 5 ارقام
                    لحل الاشكالية يقوم الاكسبيرت بالمقارنة مع احد المتغيرات الداخلية للمتاتريدر وهو Digits وهي تعطي عدد الارقام بعد الفاصلة للشارت الدي شغل عليه الاكسبيرت
                    حيت يقوم بعملية المقارنة ادا ماكانت Digits
                    تساوي 5 لعملات الدولار او 3 لعملات الين
                    ادا كانت المقارنة صحيحة
                    يعطي ل متغير قمنا بانشائه سابقا اسمه Q القيمة 10 ادا لم تكن صحيحة يعطيه القيمة 1
                    الغاية من هدا المتغير سنعرفها لاحقا ان شاء الله

                    المقارنة الثانية
                    كود PHP:
                    if(Digits<4)
                       {
                          point=0.01;
                          digits=2;
                       }
                       else
                       {
                          point=0.0001;
                          digits=4;
                       } 
                    
                    هي لمعرفة عدد الارقام للزوج على الشارت الدي قمنا بتشغيل الاكسبيرت عليه
                    ادا كانت Digits اصغر من اربعة فها يعني ان الزوج ينتمي لعائلة الين فيقوم الاكسبيرت بعمل التالي
                    يعطي لمتغير قمنا بانشائه سابقا اسمه point القيمة 0.01 لان النقطة في زوج الين هو التحرك ب 0.01
                    و عطي لمتغير اخر اسمه digits القيمة 2 اي الاعداد وراء الفاصلة
                    ادا لم تكن المقارنة صحيحة فالزوج لديه اربعة ارقام بعد الفاصلة ادن point تاخد 0.0001 و digits تاخد 4

                    ادن ما تعلمناه الان ان الاكسبيرت في اول تشغيل له اصبح يعرف ان المنصة دات 4 اة 5 ارقام
                    و اصبح يعرف ان الزوج الدي يشتغل عليه من ازوج الين او من ازوج الدولار

                    تعليق


                    • #40
                      رد: ورشة تعليم برمجة الاكسبيرتات:اكسبيرت الشموع الانعكاسية

                      قبل البدئ بشرح الجزء الثالث و الرابع يجب ان انبه لبعض الامور
                      الاكسبيرت بني على 7 دوال قمنا ببرمجتها خارج الدوال الرئيسية
                      6 دوال قمنا ببرمجتها لتجد الاشكال الست للشموع الانعكاسية التي عرفناها في اول الموضوع ووضعنا شروطها هده الدوال ادا وجدت ان اخر الشمعة اغلقت ستؤول الى الرقم 1
                      ادا لم تجد ستؤول الى الرقم 0
                      دالة واحدة قمنا ببرمجتها لحساب عدد الصفقات المفتوحة
                      داخل الدوال المخصصة للشموع
                      ادا اردنا معرفة قيم الهاي و اللة و الافتتاح و الاغلاق للشمعة الحالية
                      فهي موضودة سلفا في المحرر على الشكل التالي

                      [0]High
                      [0]Low
                      [0]Open
                      [0]Close
                      و تكون مكتوبة بالون الوردي 0 تعني الشمعة الحالية و التي لم تلغق بعد و يجب الانتباه هنا ان هده القيم تتغير ما عدا الافتتاح لان الشمعة تتحرك

                      [1]High
                      [1]Low
                      [1]Open
                      [1]Close
                      هده القيم لاخر شمعة اغلقت وهي قيم تابتة لات شمعة اغلقت وهكدا مع الشموع الاخرى


                      تعليق


                      • #41
                        رد: ورشة تعليم برمجة الاكسبيرتات:اكسبيرت الشموع الانعكاسية

                        الجزء الثالث

                        1--
                        الدالة TOTALORDER
                        كود PHP:
                         int TOTALORDER(int Mg)
                        {
                          int j=0;
                          int total  = OrdersTotal();
                          for (int i = 0 ; i < total ;i++)
                          {
                            OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
                            if (OrderMagicNumber() == Mg && OrderSymbol()==Symbol()&& (OrderType()==OP_BUY || OrderType()==OP_SELL))
                            {
                              j++;
                            }
                          }
                          return (j);
                        } 
                        
                        دالة تقوم بجمع عدد الصفقات المفتوحة و التي لديها نفس الماجيك نمبر الخاص بالاكسبيرت و نفس العملة التي نفد عليها الاكسبيرت وتعود بمجموع الصفقات المفتوحة
                        2--
                        الدالة isibbuy
                        كود PHP:
                        int isibbuy(int c)
                        {
                         int t=0;
                         if(Open[c]<Close[c] && Open[c+1]>Close[c+1] && Close[c]>=Open[c+1])
                               {
                                 t=1;
                               }
                        return t;
                        } 
                        

                        هي الدالة التي تقوم بالبحت عن الابتلاع الشرائي
                        من خلال رقم شمعة نعطيه لها في البارامتر
                        ادا تحقق الابتلاع الشرائي تؤول الى النتيجة 1 ادا لم يتحقق تؤول الى 0
                        3-- الدالة isibsell
                        كود PHP:
                        int isibsell(int c)
                        {
                         int t=0;
                         if(Close[c]<Open[c] && Close[c+1]>Open[c+1] && Close[c]<=Open[c+1])
                               {
                                 t=1;
                               }
                        return t;
                        } 
                        


                        هي الدالة التي تقوم بالبحت عن الابتلاع البيعي
                        من خلال رقم شمعة نعطيه لها في البارامتر
                        ادا تحقق الابتلاع البيعي تؤول الى النتيجة 1 ادا لم يتحقق تؤول الى 0

                        تعليق


                        • #42
                          رد: ورشة تعليم برمجة الاكسبيرتات:اكسبيرت الشموع الانعكاسية

                          الجزء الرابع

                          4--
                          الدالة ishummer
                          كود PHP:
                          int ishummer(int c)
                          {
                          int t=0;
                             if(Open[c]<Close[c] && (Close[c]-Open[c])<((Open[c]-Low[c])/2) && (Close[c]-Open[c])>(High[c]-Close[c]) )
                               {
                               t=1;
                                 }
                            if(Close[c]<Open[c] && (Open[c]-Close[c])<((Close[c]-Low[c])/2) && (Open[c]-Close[c])>(High[c]-Open[c]))
                            {
                             t=1;
                            }      
                               return (t);
                          } 
                          

                          هي الدالة التي تقوم بالبحت عن نمودج الهمر
                          من خلال رقم شمعة نعطيه لها في البارامتر
                          ادا تحقق نمودج الهمر تؤول الى النتيجة 1 ادا لم يتحقق تؤول الى 0


                          5--
                          الدالة ischb
                          كود PHP:
                          int ischb(int c)
                          {
                          int t=0;
                             if(Open[c]<Close[c] && (Close[c]-Open[c])<((High[c]-Close[c])/2) && (Close[c]-Open[c])>(Open[c]-Low[c]) )
                               {
                               t=1;
                                 }
                            if(Close[c]<Open[c] && (Open[c]-Close[c])<((High[c]-Open[c])/2) && (Open[c]-Close[c])>(Close[c]-Low[c]))
                            {
                             t=1;
                            }      
                               return (t);
                          } 
                          

                          هي الدالة التي تقوم بالبحت عن نمودج الشهاب
                          من خلال رقم شمعة نعطيه لها في البارامتر
                          ادا تحقق نمودج الشهاب تؤول الى النتيجة 1 ادا لم يتحقق تؤول الى 0


                          6--
                          الدالة isnjs
                          كود PHP:
                          int isnjs(int c)
                          {
                           int t=0;
                           if(Open[c]<Close[c] && Open[c+1]>Close[c+1] && Close[c]>=(Open[c+1]-Close[c+1])/2)
                                 {
                                   t=1;
                                 }
                          return t;
                          } 
                          

                          هي الدالة التي تقوم بالبحت عن نمودج النجم الصاعد
                          من خلال رقم شمعة نعطيه لها في البارامتر
                          ادا تحقق نمودج النجم الصاعد تؤول الى النتيجة 1 ادا لم يتحقق تؤول الى 0


                          7--
                          الدالة isshk
                          كود PHP:
                          int t=0;
                           if(Close[c]<Open[c] && Close[c+1]>Open[c+1] && Close[c]<=(Close[c+1]-Open[c+1])/2)
                                 {
                                   t=1;
                                 }
                          return t;
                          } 
                          

                          هي الدالة التي تقوم بالبحت عن نمودج السحابة القاتمة
                          من خلال رقم شمعة نعطيه لها في البارامتر
                          ادا تحقق الابتلاع الشرائي
                          نمودج السحابة القاتمة تؤول الى النتيجة 1 ادا لم يتحقق تؤول الى 0

                          تعليق


                          • #43
                            رد: ورشة تعليم برمجة الاكسبيرتات:اكسبيرت الشموع الانعكاسية

                            بقي لنا اخر جزء وهو الجزء الثاني وهو الاهم حيت توجد داخله اهم دالة رئيسية لللاكسبيرت
                            سنشرحه لعد قليل ان شاء الله

                            تعليق


                            • #44
                              رد: ورشة تعليم برمجة الاكسبيرتات:اكسبيرت الشموع الانعكاسية

                              الجزء الثاني

                              يتكون من داليتين رئيستين
                              1-- الدالة OnDeinit
                              كود PHP:
                              void OnDeinit(const int reason)
                                {
                              //---
                                 
                                } 
                              

                              هي الدالة التي يقوم بتنفيدها الاكسبيرت عند حدفه من الشارت
                              في اغلب الاكسبيرتات ستجدها فارغة لان القليل يستخدمها
                              2--
                              الدالة OnTick
                              كود PHP:
                              void OnTick()
                                {
                              //---
                                 
                                    
                                     if((isibbuy(1)==1 || ishummer(1)==1 || isnjs(1)==1)  && Time0!=Time[0] && TOTALORDER(MagicNumber)<=5 && High[0]>High[1])
                                     {
                                    spread=Ask-Bid; 
                                     SL=Low[1]-(1*point);
                                     TP=Ask+((High[1]-Low[1])+spread);
                                     OrderSend(Symbol(),OP_BUY,1,Ask,3*Q,SL,TP," ",MagicNumber,0,Green);  
                                     Time0=Time[0];
                                     } 
                                     if((isibsell(1)==1 || ischb(1)==1 ||  isshk(1)==1)  && Time0!=Time[0] && TOTALORDER(MagicNumber)<=5 && Low[0]<Low[1])
                                     {
                                     spread=Ask-Bid;
                                     SL=High[1]+spread+(1*point);
                                     TP=Bid-((High[1]-Low[1])+spread);
                                     OrderSend(Symbol(),OP_SELL,1,Bid,3*Q,SL,TP," ",MagicNumber,0,Green);  
                                     Time0=Time[0];    
                                     } 
                                  
                              
                                } 
                              

                              هي اهم دالة في الاكسبيرت لانها تنفد عند اي تحرك للسعر لدلك ستجد في اغلب الاكسبيرتات ان في وسط الدالة يوجد الكود الدي يرسل الاوامر
                              الان نأتي لشرح وسط الدالة
                              الدالة متكونة من جملتين شرطيتين
                              الجملة الاولى
                              كود PHP:
                                if((isibbuy(1)==1 || ishummer(1)==1 || isnjs(1)==1)  && Time0!=Time[0] && TOTALORDER(MagicNumber)<=5 && High[0]>High[1])
                                     {
                                    spread=Ask-Bid; 
                                     SL=Low[1]-(1*point);
                                     TP=Ask+((High[1]-Low[1])+spread);
                                     OrderSend(Symbol(),OP_BUY,1,Ask,3*Q,SL,TP," ",MagicNumber,0,Green);  
                                     Time0=Time[0];
                                     } 
                              

                              الشروط
                              كود PHP:
                              (isibbuy(1)==1 || ishummer(1)==1 || isnjs(1)==1)  && Time0!=Time[0] && TOTALORDER(MagicNumber)<=5 && High[0]>High[1] 
                              

                              (1)isnjs
                              (1)ishummer
                              (1)isibbuy
                              كما شرحنا سابقا هده الدوال ادا وجدت نمودج الهمر او النجم الصاعد او الابتلاع الشرائي للشمعة رقم 1 و هي اخر شمعة اغلقت ستؤول الى 1
                              ادا تحقق هدا الامر سيتجه الاكسبرت للشروط الاخرة وهي
                              كود PHP:
                              Time0!=Time[0] && TOTALORDER(MagicNumber)<=5 && High[0]>High[1] 
                              
                              الشرط
                              كود PHP:
                              Time0!=Time[0] 
                              
                              هدا الشرط لكي لا يعيد الاكسبيرت فتح الصفقة ادا فتحها سابقا
                              كود PHP:
                              TOTALORDER(MagicNumber) 
                              
                              هدا الشرط لكي لا يفتح الاكسبيرت اكثر من 5صفقات
                              كود PHP:
                              High[0]>High[1] 
                              
                              هدا الشرط يعني ان هاي الشمعة الحالية اخترق هاي الشمعة السابقة
                              ادا تحققت جميع هده الشروط سيقوم الاكسبيرت بالتالي
                              كود PHP:
                              spread=Ask-Bid; 
                                     SL=Low[1]-(1*point);
                                     TP=Ask+((High[1]-Low[1])+spread);
                                     OrderSend(Symbol(),OP_BUY,1,Ask,3*Q,SL,TP," ",MagicNumber,0,Green);  
                                     Time0=Time[0]; 
                              
                              كود PHP:
                              spread=Ask-Bid; 
                              
                              متغير كتبناه سابقا وخزنا فيه السبيرد اي الفارق بيه الاسك و البيد
                              كود PHP:
                              SL=Low[1]-(1*point); 
                              
                              الستوب و هو لو الشمعة السابقة ناقص نقطة
                              كود PHP:
                              TP=Ask+((High[1]-Low[1])+spread); 
                              
                              الهدف و هو الطلب زائد طول الشمعة السابقة زائد الاسبيرد
                              كود PHP:
                              OrderSend(Symbol(),OP_BUY,1,Ask,3*Q,SL,TP," ",MagicNumber,0,Green); 
                              
                              OrderSend
                              هده الدالة المسؤولة عن ارسال الاوامر الى المنصة
                              البارامتر داخلها

                              ()Symbol
                              إسم الزوج المشغل عليه الاكسبيرت
                              OP_BUY
                              تعني شراء ماركت
                              هناك انواع اخرى هي
                              OP_SELL بيع ماركت
                              OP_BUYSTOP شراء معلق من سعر أعلى من السعر الحالي
                              OP_SELLSTOP بيع معلق من سعر أدنى من السعر الحالي
                              OP_BUYLIMIT شراء معلق من سعر أدنى من السعر الحالي
                              OP_SELLLIMIT بيع معلق من سعر أعلى من السعر الحالي
                              1
                              تعني اللوت المستخدم
                              Ask
                              الطلب اي ان الامر المرسل هو شراء فوري من الطلب المتاح
                              3*Q
                              هو السليبيج وهو مقدار السماح للمنصة بالتنفيد من النقاط
                              SL
                              الستوب لوز كما اشرنا سابقا
                              TP
                              الهدف
                              " "
                              سلسلة نصية يمكن ان تكتب داخلها ما تريد
                              MagicNumber
                              الماجيك نمبر الخاص بالاكسبيرت وهو الرقم الدي يميز صفقات الاكسبيرت عن الصفقات العادية
                              0
                              تاريخ إنتهاء الصفقه يستعمل للأوامر المعلقة
                              Green
                              لون السهم الدي يضهر عن فتح الصفقة

                              الجملة الشرطية الثانية
                              ادا فهمتم الاولى فالثانية خاصة لصفقة البيع و مثلها مثل الاولى
                              كود PHP:
                              if((isibsell(1)==1 || ischb(1)==1 ||  isshk(1)==1)  && Time0!=Time[0] && TOTALORDER(MagicNumber)<=5 && Low[0]<Low[1])
                                     {
                                     spread=Ask-Bid;
                                     SL=High[1]+spread+(1*point);
                                     TP=Bid-((High[1]-Low[1])+spread);
                                     OrderSend(Symbol(),OP_SELL,1,Bid,3*Q,SL,TP," ",MagicNumber,0,Green);  
                                     Time0=Time[0];    
                                     } 
                              

                              تعليق


                              • #45
                                رد: ورشة تعليم برمجة الاكسبيرتات:اكسبيرت الشموع الانعكاسية

                                متابع معك اخي الكريم بالتوفيق

                                تعليق

                                يعمل...
                                X