مساعدة في برمجة ماكد للـ ار اس اي
النتائج 1 إلى 4 من 4
  1. #1
    تاريخ التسجيل
    Mar 2009
    العمر
    30
    المشاركات
    8

    افتراضي مساعدة في برمجة ماكد للـ ار اس اي

    السلام عليكم
    اني احاول برمجة مؤشر ماكد لمؤشر الار اس اي
    وقد قمت بالبحث عن كود مؤشر ماكد وعثرت عليه فعلا وغيرت فيه الخانة الخاصة بسعر الاغلاق الي دالة مؤشر الار اس اي ولكني لم احصل علي شيء رغم ان عقليا المفروض انه يعمل فارجو من الاخوة المساعدة في الكود وياريت حد يشرحلي انا غلطان في ايه لاني احاول تعلم لغة برمجة الخاصة بالميتا ترايدر
    كود PHP:
    //+------------------------------------------------------------------+
    //|                                                  Custom MACD.mq4 |
    //|                      Copyright © 2004, MetaQuotes Software Corp. |
    //|                                       http://www.metaquotes.net/ |
    //+------------------------------------------------------------------+
    #property  copyright "Copyright © 2004, MetaQuotes Software Corp."
    #property  link      "http://www.metaquotes.net/"
    //---- indicator settings
    #property  indicator_separate_window
    #property  indicator_buffers 2
    #property  indicator_color1  Lime
    #property  indicator_color2  Red

    //---- indicator parameters
    extern int FastEMA=12;
    extern int SlowEMA=26;
    extern int SignalSMA=9;
    //---- indicator buffers
    double     ind_buffer1[];
    double     ind_buffer2[];

    //+------------------------------------------------------------------+
    //| Custom indicator initialization function                         |
    //+------------------------------------------------------------------+
    int init()
      {
    //---- drawing settings
       //SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,0);
       
    SetIndexDrawBegin(1,SignalSMA);
       
    IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1);
    //---- indicator buffers mapping
       
    if(!SetIndexBuffer(0,ind_buffer1) && !SetIndexBuffer(1,ind_buffer2))
          Print(
    "cannot set indicator buffers!");
    //---- name for DataWindow and indicator subwindow label
       
    IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+")");
       
    SetIndexLabel(0,"MACD");
       
    SetIndexLabel(1,"Signal");
    //---- initialization done
       
    return(0);
      }
    //+------------------------------------------------------------------+
    //| Moving Averages Convergence/Divergence                           |
    //+------------------------------------------------------------------+
    int start()
      {
       
    int limit;
       
    int counted_bars=IndicatorCounted();
    //---- check for possible errors
       
    if(counted_bars<0) return(-1);
    //---- last counted bar will be recounted
       
    if(counted_bars>0counted_bars--;
       
    limit=Bars-counted_bars;
    //---- macd counted in the 1-st buffer
       
    for(int i=0i<limiti++)
          
    ind_buffer1[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,iRSI(NULL,0,14,PRICE_CLOSE,i),i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,iRSI(NULL,0,14,PRICE_CLOSE,i),i);
    //---- signal line counted in the 2-nd buffer
       
    for(i=0i<limiti++)
          
    ind_buffer2[i]=iMAOnArray(ind_buffer1,Bars,SignalSMA,0,MODE_SMA,i);
    //---- done
       
    return(0);
      } 

  2. #2
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    12,977

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة super_rio مشاهدة المشاركة
    السلام عليكم
    اني احاول برمجة مؤشر ماكد لمؤشر الار اس اي
    وقد قمت بالبحث عن كود مؤشر ماكد وعثرت عليه فعلا وغيرت فيه الخانة الخاصة بسعر الاغلاق الي دالة مؤشر الار اس اي ولكني لم احصل علي شيء رغم ان عقليا المفروض انه يعمل فارجو من الاخوة المساعدة في الكود وياريت حد يشرحلي انا غلطان في ايه لاني احاول تعلم لغة برمجة الخاصة بالميتا ترايدر
    كود PHP:
    //+------------------------------------------------------------------+
    //|                                                  Custom MACD.mq4 |
    //|                      Copyright © 2004, MetaQuotes Software Corp. |
    //|                                       http://www.metaquotes.net/ |
    //+------------------------------------------------------------------+
    #property  copyright "Copyright © 2004, MetaQuotes Software Corp."
    #property  link      "http://www.metaquotes.net/"
    //---- indicator settings
    #property  indicator_separate_window
    #property  indicator_buffers 2
    #property  indicator_color1  Lime
    #property  indicator_color2  Red

    //---- indicator parameters
    extern int FastEMA=12;
    extern int SlowEMA=26;
    extern int SignalSMA=9;
    //---- indicator buffers
    double     ind_buffer1[];
    double     ind_buffer2[];

    //+------------------------------------------------------------------+
    //| Custom indicator initialization function                         |
    //+------------------------------------------------------------------+
    int init()
      {
    //---- drawing settings
       //SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,0);
       
    SetIndexDrawBegin(1,SignalSMA);
       
    IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1);
    //---- indicator buffers mapping
       
    if(!SetIndexBuffer(0,ind_buffer1) && !SetIndexBuffer(1,ind_buffer2))
          Print(
    "cannot set indicator buffers!");
    //---- name for DataWindow and indicator subwindow label
       
    IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+")");
       
    SetIndexLabel(0,"MACD");
       
    SetIndexLabel(1,"Signal");
    //---- initialization done
       
    return(0);
      }
    //+------------------------------------------------------------------+
    //| Moving Averages Convergence/Divergence                           |
    //+------------------------------------------------------------------+
    int start()
      {
       
    int limit;
       
    int counted_bars=IndicatorCounted();
    //---- check for possible errors
       
    if(counted_bars<0) return(-1);
    //---- last counted bar will be recounted
       
    if(counted_bars>0counted_bars--;
       
    limit=Bars-counted_bars;
    //---- macd counted in the 1-st buffer
       
    for(int i=0i<limiti++)
          
    ind_buffer1[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,iRSI(NULL,0,14,PRICE_CLOSE,i),i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,iRSI(NULL,0,14,PRICE_CLOSE,i),i);
    //---- signal line counted in the 2-nd buffer
       
    for(i=0i<limiti++)
          
    ind_buffer2[i]=iMAOnArray(ind_buffer1,Bars,SignalSMA,0,MODE_SMA,i);
    //---- done
       
    return(0);
      } 
    وعليكم السلام ورحمة الله وبركاته
    لا أخي الكريم عقليا لن يعمل فطريقة كتابة الكود بهذا الشكل خاطئه
    مؤشر الموفينج أفريج عند إستدعائه
    كود PHP:
    iMAstring symbolint timeframeint periodint ma_shiftint ma_methodint applied_priceint shift
    applied_price تأخذ سعر الإغلاق أو الإفتتاح أو الهاي ... إلخ
    لكن لا يمكن إستدعاء مؤشر مكانها


    الطريقة الصحيح لبرمجة المؤشر الذي تريده
    أولا :
    عمل مؤشر خارجي آخر يعتمد على حساب الموفينج أفريج لكن ليس للشمعه لكن سيحسب الموفينج أفريج لقيم مؤشر الآر إس آي
    مثلا جزء بسيط من دالة مؤشر الموفينج أفريج سيمبل
    كود PHP:
    void sma()
      {
       
    double sum=0;
       
    int    i,pos=Bars-ExtCountedBars-1;
    //---- initial accumulation
       
    if(pos<MA_Periodpos=MA_Period;
       for(
    i=1;i<MA_Period;i++,pos--)
          
    sum+=Close[pos];
    //---- main calculation loop
       
    while(pos>=0)
         {
          
    sum+=Close[pos];
          
    ExtMapBuffer[pos]=sum/MA_Period;
           
    sum-=Close[pos+MA_Period-1];
            
    pos--;
         }
    //---- zero initial bars
       
    if(ExtCountedBars<1)
          for(
    i=1;i<MA_Period;i++) ExtMapBuffer[Bars-i]=0;
      } 
    فسوف تستخدم بدلا من سعر الإغلاق Close سوف تستخدم قيم مؤشر الآر إس آي
    ليصبح
    كود PHP:
    void sma()
      {
       
    double sum=0;
       
    int    i,pos=Bars-ExtCountedBars-1;
    //---- initial accumulation
       
    if(pos<MA_Periodpos=MA_Period;
       for(
    i=1;i<MA_Period;i++,pos--)
          
    sum+=iRSI(Symbol(),0,14,PRICE_CLOSE,pos);//Close[pos];
    //---- main calculation loop
       
    while(pos>=0)
         {
          
    sum+=iRSI(Symbol(),0,14,PRICE_CLOSE,pos);//Close[pos];
          
    ExtMapBuffer[pos]=sum/MA_Period;
           
    sum-=iRSI(Symbol(),0,14,PRICE_CLOSE,pos+MA_Period-1);//Close[pos+MA_Period-1];
            
    pos--;
         }
    //---- zero initial bars
       
    if(ExtCountedBars<1)
          for(
    i=1;i<MA_Period;i++) ExtMapBuffer[Bars-i]=0;
      } 
    ثم تستخدم هذا المؤشر لعمل مؤشر ماكد الآر إس آي الذي تريده
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  3. #3
    تاريخ التسجيل
    Mar 2009
    العمر
    30
    المشاركات
    8

    افتراضي

    ساحاول الاخذ بنصيحتك وشكرا علي المساعدة وجاري التجربة

  4. #4
    تاريخ التسجيل
    Mar 2009
    العمر
    30
    المشاركات
    8

    افتراضي

    انا مش عارف اعمله ممكن مساعدة حضرتك لاني لسه مبتدي