الأسئلة البرمجية MT5 & MT4

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

  • #31
    المشاركة الأصلية بواسطة Turkm مشاهدة المشاركة

    أخي الكريم

    اذا لم تستطيع تنفيذ الفكرة على mt4 فمستحيل ان تنفذها على mt5
    انا نجحت بتطبيقها في اكسبيرت ميتاتريدر 4 من خلال الوظيفة التي اعطيتهانا سابقا بالزيجزاج ولكن بعدما قومت بتركيبها هي نفسها بدون اخطاء لم تعطيني النتيجة المرجوة للأسف في الميتاتريدر 5

    هذه الوظيفة ناجحة جدا في الميتاتريدر 4 وفاشلة جدا في الميتاتريدر 5:
    كود HTML:
    double ZagZag(int Q)
    {
    int First;
    for(int i=0;i<Bars;i++)
    {
    double zag=iCustom(NULL,0,"ZigZag",12,5,3,0,i);
    if(zag!=0)First++;
    if(First==1&&Q==0&&zag!=0){return(zag);}
    if(First==2&&Q==1&&zag!=0){return(zag);}
    if(First==3&&Q==2&&zag!=0){return(zag);}
    if(First==4&&Q==3&&zag!=0){return(zag);}
    if(First==5&&Q==4&&zag!=0){return(zag);}
    if(First==6&&Q==5&&zag!=0){return(zag);}
    
    }
    return(0);
    }​

    تعليق


    • #32
      المشاركة الأصلية بواسطة Turkm مشاهدة المشاركة
      جرب الملف المرفق

      عندما يتم التحول سار علوي الى سار سفلي او العكس هنا ياتي دور الوظائف التى في الاكسبيرت المرفق:

      حتى هذا الكود لم ينفع في مؤشر الميتاتريدر 4
      واعطاني اشارات بهذا الشكل
      عندما حاولت أن اضع هذا الشرط:
      if(Sar(1)<Sar(2)
      اضغط على الصورة لعرض أكبر. 

الإسم:	ASSAR.png 
مشاهدات:	4 
الحجم:	10.3 كيلوبايت 
الهوية:	950250

      تعليق


      • #33
        سؤال آخر أخي قد يحل هذه المشكلة

        ما معنى هذه الرموز:
        اضغط على الصورة لعرض أكبر.   الإسم:	1sar.png  مشاهدات:	0  الحجم:	10.5 كيلوبايت  الهوية:	950252




        وهل يمكن استخدام احداهم في اللوب كي تدل على احد العناصر المختارة وليس كل العناصر مجتمعة؟

        مثال اذا اريد أن اكتب أن احد قيم السار خلال 30 شمعة تكون أكبر من هاي نفس الشمعة:

        أي سار شمعة 1 أكبر من هاي شمعة 1
        أو سار شمعة 2 أكبر من هاي شمعة 2
        أو ... سار شمعة 30 تكون أكبر من هاي شمعة 30

        فهل يمكنني عمل لوب باستخدام |=؟

        ليكون الشكل هو:
        for( int k = 1+2; k |= 1+30; k++ )

        فهل هذه الطريقة صحيحة؟

        تعليق


        • #34
          المشاركة الأصلية بواسطة zooz1o مشاهدة المشاركة
          سؤال آخر أخي قد يحل هذه المشكلة

          ما معنى هذه الرموز:
          اضغط على الصورة لعرض أكبر.  الإسم:	1sar.png  مشاهدات:	0  الحجم:	10.5 كيلوبايت  الهوية:	950252




          الصور لم تظهر!!!!

          وهل يمكن استخدام احداهم في اللوب كي تدل على احد العناصر المختارة وليس كل العناصر مجتمعة؟

          مثال اذا اريد أن اكتب أن احد قيم السار خلال 30 شمعة تكون أكبر من هاي نفس الشمعة:

          يمكنك التحكم بذلك عن طرق تغيير قيمة الحلقة ( في آخر وظيفة ارفقتها لك بدلا من 200 واجعلها 30 اي ان عملية البحث سترجع للوراء 30 شمعة فقط) او ان تلغي الحلقة تما وتضع بدل متغير ( i ) قيمة الشمعة التي تريدها مطروح منها واحد لان العد يبدء من الشمعة الحالية التي رقمها صفر

          أي سار شمعة 1 أكبر من هاي شمعة 1
          أو سار شمعة 2 أكبر من هاي شمعة 2
          أو ... سار شمعة 30 تكون أكبر من هاي شمعة 30

          اكتب

          كود PHP:
          double Sar_Bar(int Q)
          {
          return(iSAR(NULL,0,0.02,0.2,Q) > High[Q]);
          }




          فهل يمكنني عمل لوب باستخدام |=؟

          ليكون الشكل هو:
          for( int k = 1+2; k |= 1+30; k++ )

          فهل هذه الطريقة صحيحة؟
          الرد في التعليق

          تعليق


          • #35
            أخي رجاءا قم بمساعدتي وجزاك الله خيراً
            لقد اعطيتني اكسبيرت والاكسبيرت لا يعمل بشكل جيد على ميتاتريدر 4 كما اخبرتني
            فما السبب؟ هل تستطيع أن تراه وتصحح الأخطاء به؟

            تعليق


            • #36
              المشاركة الأصلية بواسطة Turkm مشاهدة المشاركة

              الرد في التعليق
              كنت أسأل عن معنى هذه الرموز:
              AND bitwise operation of binary representations of y and x y &= x;
              OR bitwise operation of binary representations of y and x y |= x;
              Excluding OR bitwise operation of binary representations of y and x y ^= x;

              تعليق


              • #37
                الوظيفة هذه التي اعطيتهاني ونجحت في اكسبيرت الميتاتريدر 4 فشلت في مؤشر الميتاتريدر 4!

                كود PHP:
                double ZagZag(int Q)
                {
                int First;
                for(int i=0;i<Bars;i++)
                {
                double zag=iCustom(NULL,0,"ZigZag",12,5,3,0,i);
                if(zag!=0)First++;
                if(First==1&&Q==0&&zag!=0){return(zag);}
                if(First==2&&Q==1&&zag!=0){return(zag);}
                if(First==3&&Q==2&&zag!=0){return(zag);}
                if(First==4&&Q==3&&zag!=0){return(zag);}
                if(First==5&&Q==4&&zag!=0){return(zag);}
                if(First==6&&Q==5&&zag!=0){return(zag);}
                
                }
                return(0);
                }

                تعليق


                • #38
                  بالنسبة للرموز بالمختصر هي لإجراء عمليات ثنائية لان اي صفر و واحد نظام العد الثنائي الذي يستخدمه الكمبيوتر وحتى الآن لم اواجه موقفا يضطرني ان استخدم العمليات الثنائية


                  تفضل راجع هالمؤشرين:
                  واحد يضع اسهم عند القمم والقيعان لمؤشر الزجزاج والآخر يضع اسهم عند تغير السار:



                  اضغط على الصورة لعرض أكبر. 

الإسم:	EURUSDH1.png 
مشاهدات:	77 
الحجم:	103.8 كيلوبايت 
الهوية:	950269





                  اضغط على الصورة لعرض أكبر. 

الإسم:	EURUSDH12.png 
مشاهدات:	79 
الحجم:	107.6 كيلوبايت 
الهوية:	950270






                  الملفات المرفقة

                  تعليق


                  • #39
                    المشاركة الأصلية بواسطة Turkm مشاهدة المشاركة
                    بالنسبة للرموز بالمختصر هي لإجراء عمليات ثنائية لان اي صفر و واحد نظام العد الثنائي الذي يستخدمه الكمبيوتر وحتى الآن لم اواجه موقفا يضطرني ان استخدم العمليات الثنائية


                    تفضل راجع هالمؤشرين:
                    واحد يضع اسهم عند القمم والقيعان لمؤشر الزجزاج والآخر يضع اسهم عند تغير السار:



                    اضغط على الصورة لعرض أكبر. 

الإسم:	EURUSDH1.png 
مشاهدات:	77 
الحجم:	103.8 كيلوبايت 
الهوية:	950269





                    اضغط على الصورة لعرض أكبر. 

الإسم:	EURUSDH12.png 
مشاهدات:	79 
الحجم:	107.6 كيلوبايت 
الهوية:	950270





                    في المؤشرات المرفقة تكون هناك اشارات بيع وشراء هذا جيد
                    ولكن كيف أربط هذه الاشارات مع بعضها في مؤشر آخر جديد؟
                    شاهد الصورة:
                    اضغط على الصورة لعرض أكبر. 

الإسم:	sda1.png 
مشاهدات:	72 
الحجم:	13.5 كيلوبايت 
الهوية:	950282

                    تعليق


                    • #40
                      السلام عليكم ورحمه الله
                      كل عام وانتم بخير
                      هل متاح برمجه مجانيه لاكسبيرت

                      تعليق


                      • #41
                        المشاركة الأصلية بواسطة zooz1o مشاهدة المشاركة

                        في المؤشرات المرفقة تكون هناك اشارات بيع وشراء هذا جيد
                        ولكن كيف أربط هذه الاشارات مع بعضها في مؤشر آخر جديد؟
                        شاهد الصورة:
                        اضغط على الصورة لعرض أكبر. 

الإسم:	sda1.png 
مشاهدات:	72 
الحجم:	13.5 كيلوبايت 
الهوية:	950282
                        هل تقصد مؤشر ZigZag_Pointer؟

                        تعليق


                        • #42
                          المشاركة الأصلية بواسطة haz مشاهدة المشاركة
                          السلام عليكم ورحمه الله
                          كل عام وانتم بخير
                          هل متاح برمجه مجانيه لاكسبيرت
                          نعم متاح الى حد معين ولكن يمكنك فتح موضوع للإكسبيرت الذي تريده وسأقوم بتقييم الأكسبيرت هل هو مجاني ام مدفوع
                          عموما الاكسبيرتات التي تستخدم استراتيجيات المضاعفات او التحوط او ان يعتمد الاكسبيرت على أكثر من مؤشر واحد فسيتم تحويله للقسم المدفوع

                          تعليق


                          • #43
                            المشاركة الأصلية بواسطة Turkm مشاهدة المشاركة

                            هل تقصد مؤشر ZigZag_Pointer؟
                            أقصد أي مؤشر خارجي له 2 بافر شراء وبيع
                            فكيف يمكن تنفيذ هذه النظرية؟

                            تعليق


                            • #44
                              المشاركة الأصلية بواسطة zooz1o مشاهدة المشاركة

                              أقصد أي مؤشر خارجي له 2 بافر شراء وبيع
                              فكيف يمكن تنفيذ هذه النظرية؟
                              عن طريق دالة iCustom




                              تعليق


                              • #45
                                المشاركة الأصلية بواسطة Turkm مشاهدة المشاركة

                                عن طريق دالة iCustom



                                نعم قولت لك سابقاً أني نفذتها ولكنها لم تعمل عندي في هذا المؤشر المرفق:
                                كود PHP:
                                #include <stdlib.mqh>
                                #include <stderror.mqh>
                                
                                //--- indicator settings
                                #property indicator_chart_window
                                #property indicator_buffers 2
                                
                                #property indicator_type1 DRAW_ARROW
                                #property indicator_width1 1
                                #property indicator_color1 0xFFAA00
                                #property indicator_label1 "Buy"
                                
                                #property indicator_type2 DRAW_ARROW
                                #property indicator_width2 1
                                #property indicator_color2 0x0000FF
                                #property indicator_label2 "Sell"
                                
                                //--- indicator buffers
                                double Buffer1[];
                                double Buffer2[];
                                
                                double myPoint; //initialized in OnInit
                                //+------------------------------------------------------------------+
                                //| Custom indicator initialization function                         |
                                //+------------------------------------------------------------------+
                                int OnInit()
                                  {  
                                   IndicatorBuffers(2);
                                   SetIndexBuffer(0, Buffer1);
                                   SetIndexEmptyValue(0, EMPTY_VALUE);
                                   SetIndexArrow(0, 241);
                                   SetIndexBuffer(1, Buffer2);
                                   SetIndexEmptyValue(1, EMPTY_VALUE);
                                   SetIndexArrow(1, 242);
                                   //initialize myPoint
                                   myPoint = Point();
                                   if(Digits() == 5 || Digits() == 2|| Digits() == 3)
                                     {
                                      myPoint *= 10;
                                     }
                                   return(INIT_SUCCEEDED);
                                  }
                                
                                //+------------------------------------------------------------------+
                                //| Custom indicator iteration function                              |
                                //+------------------------------------------------------------------+
                                int OnCalculate(const int rates_total,
                                                const int prev_calculated,
                                                const datetime& time[],
                                                const double& open[],
                                                const double& high[],
                                                const double& low[],
                                                const double& close[],
                                                const long& tick_volume[],
                                                const long& volume[],
                                                const int& spread[])
                                  {
                                   int limit = rates_total - prev_calculated;
                                   //--- counting from 0 to rates_total
                                   ArraySetAsSeries(Buffer1, true);
                                   ArraySetAsSeries(Buffer2, true);
                                   //--- initial zero
                                   if(prev_calculated < 1)
                                     {
                                      ArrayInitialize(Buffer1, EMPTY_VALUE);
                                      ArrayInitialize(Buffer2, EMPTY_VALUE);
                                     }
                                   else
                                      limit++;
                                  
                                   //--- main loop
                                   for(int i = limit-1; i >= 0; i--)
                                     {
                                      if (i >= MathMin(5000-1, rates_total-1-50)) continue; //omit some old rates to prevent "Array out of range" or slow calculation  
                                      
                                      //Indicator Buffer 1
                                      if(FirstSAR(1)<FirstSAR(3)
                                      
                                      )
                                        {
                                         Buffer1[i] = Low[i];
                                        }
                                      else
                                        {
                                         Buffer1[i] = EMPTY_VALUE;
                                        }
                                      //Indicator Buffer 2
                                      if(FirstSAR(1)>FirstSAR(3)
                                      
                                      )
                                        {
                                         Buffer2[i] = High[i];
                                        }
                                      else
                                        {
                                         Buffer2[i] = EMPTY_VALUE;
                                        }
                                     }
                                   return(rates_total);
                                  }
                                //+------------------------------------------------------------------+
                                double FirstSAR(int Q)
                                {
                                int First;
                                for(int i=0;i<Bars;i++)
                                {
                                double zag=iCustom(NULL,0,"ZigZag",12,5,3,0,i);
                                if(zag!=0)First++;
                                if(First==1&&Q==0&&zag!=0){return(zag);}
                                if(First==2&&Q==1&&zag!=0){return(zag);}
                                if(First==3&&Q==2&&zag!=0){return(zag);}
                                if(First==4&&Q==3&&zag!=0){return(zag);}
                                if(First==5&&Q==4&&zag!=0){return(zag);}
                                if(First==6&&Q==5&&zag!=0){return(zag);}
                                
                                }
                                return(0);
                                }
                                
                                الملفات المرفقة

                                تعليق

                                يعمل...
                                X