النتائج 1 إلى 6 من 6
  1. #1
    الصورة الرمزية ZoozFX
    ZoozFX غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2021
    الإقامة
    مصر
    المشاركات
    26

    افتراضي MQL5: كيفية الحصول على أعلى قيمة لمؤشر في فترة محددة | الرجاء المساعدة

    السلام عليكم ورحمة الله وبركاته

    انا بصنع مؤشر بلغة MQL5 وعايز أحدد فيه أعلى قيمة وأدنى قيمة لمؤشر الـ RSI خلال 100 شمعة
    انا عرفت ان الطريقة في MQL5 بتعتمد على استخدام CopyBuffer

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

    ولو مرفق مثال توضيحي اكون شاكر جدا
    وجزاكم الله خيرا

  2. #2
    الصورة الرمزية GH_EXE
    GH_EXE غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2021
    الإقامة
    المغرب
    المشاركات
    105

    افتراضي

    كود PHP:

    #property copyright 
    #property link      

    #property indicator_separate_window
    #property indicator_minimum -1
    #property indicator_maximum +1
    #property indicator_buffers 2
    #property indicator_color1 Red
    #property indicator_color2 LawnGreen
    //-Parametros
    extern int periodo=20;
    extern int periodoRSI=20;

    //---- buffers
    double ExtMapBuffer1[];
    double ExtMapBuffer2[];
    double RSI_Buffer[];
    double RSI_Buffer2[];
    double a1_Buffer[];
    double a2_Buffer[];
    double b1_Buffer[];
    double b2_Buffer[];
    //+------------------------------------------------------------------+
    //| Custom indicator initialization function                         |
    //+------------------------------------------------------------------+
    int init()
      {
    //---- indicators
       
    IndicatorBuffers(8);
    //--- Internal Variables   

    SetIndexBuffer(2,RSI_Buffer); 
    SetIndexBuffer(3,a1_Buffer); 
    SetIndexBuffer(4,a2_Buffer); 
    SetIndexBuffer(5,b1_Buffer); 
    SetIndexBuffer(6,b2_Buffer); 
    SetIndexBuffer(7,RSI_Buffer2);    
       
    //--- Plot a line   
    SetIndexStyle(0,DRAW_LINE);
    SetIndexBuffer(0,ExtMapBuffer1);
    SetIndexStyle(1,DRAW_LINE);
    SetIndexBuffer(1,ExtMapBuffer2);
    //----
       
    return(0);
      }
    //+------------------------------------------------------------------+
    //| Custom indicator deinitialization function                       |
    //+------------------------------------------------------------------+
    int deinit()
      {
    //----
       
    //----
       
    return(0);
      }
    //+------------------------------------------------------------------+
    //| Custom indicator iteration function                              |
    //+------------------------------------------------------------------+

    int start()
      {
         
    //---- last counted bar will be recounted
       
    int counted_bars IndicatorCounted();
       if(
    counted_bars>0counted_bars--;
       
    int limit=Bars-counted_bars;


    //---- Current RSI value
          
    for(int i limit-1i>=0i--)// Count down for one pass 
             
    RSI_Buffer[i]=iRSI(NULL,0,periodoRSI,PRICE_CLOSE,i);
    //---- Highest price in 20 periods         
          
    for(limit-1i>=0i--)// Count down for one pass 
             
    a1_Buffer[i]=High[iHighest(NULL,0,MODE_HIGH,periodo,i)];
    //---- Highest RSI value in 20 periods                  
          
    for(limit-1i>=0i--) // Count down for one pass 
             
    a2_Buffer[i] = RSI_Buffer[ArrayMaximum(RSI_Bufferperiodoi)];
    //---- Lowest price in 20 periods
          
    for(0i<limiti++)   
             
    b1_Buffer[i]=Low[iLowest(NULL,0,MODE_LOW,periodo,i)];
    //---- Lowest RSI value in 20 periods
          
    for(ilimit-1i>=0i--)
             
    b2_Buffer[i] = RSI_Buffer[ArrayMinimum(RSI_Bufferperiodoi)];
             
    //---- Bullish Divergence 
          
    for(ilimit-1i>=0i--)
          {
             if((
    Close[i]<=b1_Buffer[i] && RSI_Buffer[i]>b2_Buffer[i]) || (RSI_Buffer[i]<=b2_Buffer[i] && Close[i]>b1_Buffer[i]))
                
    ExtMapBuffer1[i]=-1;
                else
                   
    ExtMapBuffer1[i]=0;
                   
          }          
          
    //---  Bearish Divergence      
          
    for(ilimit-1i>=0i--)
          {
             if((
    Close[i]>=a1_Buffer[i] && RSI_Buffer[i]<a2_Buffer[i])|| (RSI_Buffer[i]>=a2_Buffer[i] && Close[i]<a1_Buffer[i]))
                
    ExtMapBuffer2[i]=1;
                else
                   
    ExtMapBuffer2[i]=0;
          
          }
            
    //----
       
    return(0);
      }
    //+------------------------------------------------------------------+ 

  3. #3
    الصورة الرمزية GH_EXE
    GH_EXE غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2021
    الإقامة
    المغرب
    المشاركات
    105

    افتراضي

    حاول تقرأ الكود بعناية وتمعن وراح يساعدك في فكرة مؤشرك لان الامر قائم على buffers و arrays و max و min الخاص ب array و مقارنات بين القيم

  4. #4
    الصورة الرمزية ZoozFX
    ZoozFX غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2021
    الإقامة
    مصر
    المشاركات
    26

    افتراضي

    مشكور اخي الحبيب بالفعل استفادت من هذا المؤشر المرفق جزاك الله خيرا
    لكن كيف البرمجة بمثل هذه الكيفية على لغة MQL5 ؟

  5. #5
    الصورة الرمزية GH_EXE
    GH_EXE غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2021
    الإقامة
    المغرب
    المشاركات
    105

    افتراضي

    الانتقال بين mq4 و mql5 سهل فقط اختلافات بسيطة
    https://www.mql5.com/en/articles/81
    هدا المقال يوضح كيفية الانتقال بين الاثنين بشكل سلس

  6. #6
    الصورة الرمزية ZoozFX
    ZoozFX غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2021
    الإقامة
    مصر
    المشاركات
    26

    افتراضي

    شكرا جزيلا اخي GH_EXE لكني لم استطيع حل المشكلة بعد

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


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17