النتائج 1 إلى 7 من 7

الموضوع: طلب بسيط خفيف ؟

  1. #1
    الصورة الرمزية stop1
    stop1 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2011
    المشاركات
    27

    07 طلب بسيط خفيف ؟

    السلا عليكم

    اخي الكريم

    اريد منك برمجة مؤشر خفيف على الشكل التالي

    مجموع عدد من الشموع مقسومة على نفسها

    مثال
    1+2+3+4+5/5
    فقط لا غير

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

    ولك الفففففففففففففففففففففففففففففففففففففففففففففففف ففف شكر

  2. #2
    الصورة الرمزية stop1
    stop1 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2011
    المشاركات
    27

    افتراضي

    .

  3. #3
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,864

    افتراضي

    الإختلاف بسيط
    بالنسبة لمؤشر الموفينج فسوف تجد أن الكود كبير قليلا لأنه به خيارات أخرى وهي نوع الموفينج هل هو سيمبل أو إكسبونشل,,,,, إلخ

    الجزء المهم لديك هو
    كود 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;
      } 
    وهو الخاص بالموفينج أفريج سيمبل أو مجموع الشموع على عددها كما تطلبه
    ويمكنك حذف باقي الدوال الأخرى وهي
    كود PHP:
    void ema()
      {
       
    double pr=2.0/(MA_Period+1);
       
    int    pos=Bars-2;
       if(
    ExtCountedBars>2pos=Bars-ExtCountedBars-1;
    //---- main calculation loop
       
    while(pos>=0)
         {
          if(
    pos==Bars-2ExtMapBuffer[pos+1]=Close[pos+1];
          
    ExtMapBuffer[pos]=Close[pos]*pr+ExtMapBuffer[pos+1]*(1-pr);
            
    pos--;
         }
      }
    //+------------------------------------------------------------------+
    //| Smoothed Moving Average                                          |
    //+------------------------------------------------------------------+
    void smma()
      {
       
    double sum=0;
       
    int    i,k,pos=Bars-ExtCountedBars+1;
    //---- main calculation loop
       
    pos=Bars-MA_Period;
       if(
    pos>Bars-ExtCountedBarspos=Bars-ExtCountedBars;
       while(
    pos>=0)
         {
          if(
    pos==Bars-MA_Period)
            {
             
    //---- initial accumulation
             
    for(i=0,k=pos;i<MA_Period;i++,k++)
               {
                
    sum+=Close[k];
                
    //---- zero initial bars
                
    ExtMapBuffer[k]=0;
               }
            }
          else 
    sum=ExtMapBuffer[pos+1]*(MA_Period-1)+Close[pos];
          
    ExtMapBuffer[pos]=sum/MA_Period;
            
    pos--;
         }
      }
    //+------------------------------------------------------------------+
    //| Linear Weighted Moving Average                                   |
    //+------------------------------------------------------------------+
    void lwma()
      {
       
    double sum=0.0,lsum=0.0;
       
    double price;
       
    int    i,weight=0,pos=Bars-ExtCountedBars-1;
    //---- initial accumulation
       
    if(pos<MA_Periodpos=MA_Period;
       for(
    i=1;i<=MA_Period;i++,pos--)
         {
          
    price=Close[pos];
          
    sum+=price*i;
          
    lsum+=price;
          
    weight+=i;
         }
    //---- main calculation loop
       
    pos++;
       
    i=pos+MA_Period;
       while(
    pos>=0)
         {
          
    ExtMapBuffer[pos]=sum/weight;
          if(
    pos==0) break;
          
    pos--;
          
    i--;
          
    price=Close[pos];
          
    sum=sum-lsum+price*MA_Period;
          
    lsum-=Close[i];
          
    lsum+=price;
         }
    //---- zero initial bars
       
    if(ExtCountedBars<1)
          for(
    i=1;i<MA_Period;i++) ExtMapBuffer[Bars-i]=0;
      } 
    ثم بداخل الداله start
    بدلا من هذا الجزء
    كود PHP:
    switch(MA_Method)
         {
          case 
    sma();  break;
          case 
    ema();  break;
          case 
    smma(); break;
          case 
    lwma();
         } 
    وهو الخاص بنوع الموفينج سوف تحذفه وتضع بدلا منه
    كود PHP:
     sma(); 
    فيصبح لديك موفينج أفريج سيمبل فقط
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  4. #4
    الصورة الرمزية stop1
    stop1 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2011
    المشاركات
    27

    افتراضي

    هل لك ان تصلح الخطء
    int start()
    {
    //----
    double A;


    for(int i=0;i<Bars;i++)
    {


    for(int C=0;C<=MA_Period;C++)

    A=C+Close[i];



    ExtMapBuffer1[i]=A/MA_Period;

    }
    //----
    return(0);
    }
    //+---------------------------------------------------------
    المطلوب عمله من المؤشر مجموع 5 شموع /5
    لكن يظهر الخط بعيدا عن الشموع للاسفل

  5. #5
    الصورة الرمزية MR.dollar
    MR.dollar غير متواجد حالياً مشرف المتداول العربي
    تاريخ التسجيل
    Jun 2009
    الإقامة
    مصر
    المشاركات
    13,864

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة stop1 مشاهدة المشاركة
    هل لك ان تصلح الخطء
    int start()
    {
    //----
    double A;


    for(int i=0;i<Bars;i++)
    {


    for(int C=0;C<=MA_Period;C++)

    A=C+Close[i];



    ExtMapBuffer1[i]=A/MA_Period;

    }
    //----
    return(0);
    }
    //+---------------------------------------------------------
    المطلوب عمله من المؤشر مجموع 5 شموع /5
    لكن يظهر الخط بعيدا عن الشموع للاسفل
    كود PHP:
    int start()
    {
    //----



    for(int i=0;i<Bars;i++)
    {
    double A;
    for(
    int C=i;C<MA_Period+i;C++)

    A+=Close[C];

    ExtMapBuffer1[i]=A/MA_Period;

    }
    //----
    return(0);

    راجع الكود وأخبرني بأي جزء غير واضح
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  6. #6
    الصورة الرمزية stop1
    stop1 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2011
    المشاركات
    27

    افتراضي

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

  7. #7
    الصورة الرمزية stop1
    stop1 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2011
    المشاركات
    27

    افتراضي

    .


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