اخطاء بسيطة - و راجي منكم التصحيح
النتائج 1 إلى 7 من 7
  1. #1
    تاريخ التسجيل
    Oct 2005
    المشاركات
    296

    13 اخطاء بسيطة - و راجي منكم التصحيح

    السلام عليكم ..

    قمت بكتابة هذا الكود .. و اتضح لي بعد التجربة بعض الاخطاء ..
    الكود يعمل الان .. ولكنه لا يحترم بعضا من الامور ..
    اولها (و اهمها ) .. ان المحدد باللون الاحمر لا ياُخذ في عين الاعتبار ( كانه غير موجود !!)
    و الثاني .. عند الانتقال من Profile الى اخر .. ( اي الانتقال من مجموعة الى اخرى ) يقوم البرنامج بالتنبيه , بالرغم من ان هذه التنبيهات غير مستوفية لاي شرط .

    وهذا هو الكود ..

    كود:
    //+------------------------------------------------------------------+
    //|                                        http://www.****quotes.net |
    //+------------------------------------------------------------------+
    #property copyright " "
    #property link      "http://www.****quotes.net"
    #property indicator_chart_window
    extern int MA_Period = 38;
    extern int MA_Method = MODE_SMA;
    extern int MA_applied_to = PRICE_CLOSE;
    extern bool    Enabled = true;
    
    
    //  MODE_SMA 0 Simple moving average.
    //  MODE_EMA 1 Exponential moving average.
    //  MODE_SMMA 2 Smoothed moving average.
    //  MODE_LWMA 3 Linear weighted moving average.
    
    //  PRICE_CLOSE 0 Close price.
    //  PRICE_OPEN 1 Open price.
    //  PRICE_HIGH 2 High price.
    //  PRICE_LOW 3 Low price.
    //  PRICE_MEDIAN 4 Median price, (high+low)/2.
    //  PRICE_TYPICAL 5 Typical price, (high+low+close)/3.
    //  PRICE_WEIGHTED 6 Weighted close price, (high+low+close+close)/4.
    
    
    
    //---- buffers
    //+------------------------------------------------------------------+
    //| Custom indicator initialization function                         |
    //+------------------------------------------------------------------+
    int init()
      {
    //---- indicators
    //----
       return(0);
      }
    //+------------------------------------------------------------------+
    //| Custom indicator deinitialization function                       |
    //+------------------------------------------------------------------+
    int deinit()
      {
    //----
     
    //----
       return(0);
      }
    //+------------------------------------------------------------------+
    //| Custom indicator iteration function                              |
    //+------------------------------------------------------------------+
    int start()
      {
      
       if (!Enabled) return (0);
       
       int    counted_bars=IndicatorCounted();
    //----
       if (counted_bars<0) return(-1); 
     
    //---- last counted bar will be recounted 
     
    if (counted_bars>0) counted_bars--; 
     
    int pos=Bars-counted_bars; 
     
    while(pos>=0) 
     
    
    {  
       if((iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,pos)-Bid)< 0  && 
          MathAbs(iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,pos)-Bid)<= 0.0025  && 
        iMACD(NULL,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)< 0)
      {
       Alert ("Sell " + Symbol());
       PlaySound ("alert.wav");
       return(-1);
      }
     
    
      if ((Bid-iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,pos))> 0  && 
          MathAbs(Bid-iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,pos))<= 0.0025  && 
        iMACD(NULL,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)> 0)
      {
      Alert ("Buy "+ Symbol());
      PlaySound ("alert.wav");
      return(-1);
      }
     
     
     pos--; 
     
    }
    //----
    //----
       return(0);
      }
    //+------------
    و راجي منكم التصحيح.
    تحياتي

  2. #2
    تاريخ التسجيل
    Nov 2005
    المشاركات
    158

    افتراضي رد: اخطاء بسيطة - و راجي منكم التصحيح

    اخي العزيز
    لا ارى اي خطأ في الكود
    والمؤشر يعمل معي

    (iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_appli ed_to,pos)-Bid)< 0

    لو كان سعر Bid = 1.4511
    وكانت قيمة MA = 1.4439
    إذاً الناتج يكون
    MA - Bid = 1.4439 - 1.4511 = -0.0072
    الشرط : (MA - Bid) < 0
    وهذا صحيح

    ولو كانت القيمه اكبر لما خرج لنا تنبيه بالبيع

    قل لي اخي ما هي شروط اظهار التنبيه وسأحاول المساعده

  3. #3
    تاريخ التسجيل
    Oct 2005
    المشاركات
    296

    افتراضي رد: اخطاء بسيطة - و راجي منكم التصحيح

    مشكور اخوي ما قصرت .. بسبب طريقة ردك عرفت المشكلة ..
    في المحدد باللون الاحمر .. بعد قلب MA - bid <0 الى Bid-MA<0 كل شي تمام ..

    اما المشكلة الثانية ما ذكرت عنها شي .. وهي ظهور التنبيه عند تحميل المؤشر .. او ظهور التنبيه عند الانتقال من مجموعة شارتات الى مجموعة اخرى ..

  4. #4
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    47
    المشاركات
    6,555

    افتراضي رد: اخطاء بسيطة - و راجي منكم التصحيح

    اقتباس المشاركة الأصلية كتبت بواسطة t4fast مشاهدة المشاركة
    مشكور اخوي ما قصرت .. بسبب طريقة ردك عرفت المشكلة ..
    في المحدد باللون الاحمر .. بعد قلب MA - bid <0 الى Bid-MA<0 كل شي تمام ..

    اما المشكلة الثانية ما ذكرت عنها شي .. وهي ظهور التنبيه عند تحميل المؤشر .. او ظهور التنبيه عند الانتقال من مجموعة شارتات الى مجموعة اخرى ..

    أهلا بك أخي الكريم

    جوابا على سؤالك الثاني فأقول .

    عند تحميل المؤشر ( وليس الاكسبيرت ) فإن برنامج الميتاتريدر يقوم بتنفيذه حتى قبل أن يحمل كل معلومات الشارت الأخيرة .

    وعند التحميل قد يصادف المؤشر حالة تتحقق فيها الشروط ولكنها قديمة طبعا ويقوم بإصدار التنبيه وفقا لها .


    لذلك إذا أردت أن لا يقوم المؤشر بهذا التنبيه في البداية يمكنك وضع مؤخر زمني مقداره مثلا 30 ثانية في الوظيفة init تسمح لبرنامج الميتاتريدر بتحميل الشموع الجديدة ولا يصدر أي تنبيهات قبل تحميل كل المعلومات .

    الوظيفة هي :

    كود PHP:
    Sleep(30000); 
    وكل ألف تعني ثانية .


    طبعا هذا أحد الحلول وهناك حلول أخرى .
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  5. #5
    تاريخ التسجيل
    Oct 2005
    المشاركات
    296

    افتراضي رد: اخطاء بسيطة - و راجي منكم التصحيح

    مرحبا استاذ وضاح ..
    شكرا على اهتمامك ..
    وجزاك الله كل خير على هذا التكليف ..

    بعد اضافة الكود sleep

    int init()
    {
    Sleep(30000);
    //---- indicators
    //----
    return(0);
    }

    لم يحدث اي تغيير .. و المشكلة قائمة الى الان .
    و ايضا عند الانتقال من و الى مجلد Profile .. يتفعّل الكود ! .

  6. #6
    تاريخ التسجيل
    Apr 2006
    الإقامة
    السعودية
    العمر
    47
    المشاركات
    6,555

    افتراضي رد: اخطاء بسيطة - و راجي منكم التصحيح

    طيب أخي

    جرب الكود التالي :

    كود PHP:
    //+------------------------------------------------------------------+
    //|                                        http://www.****quotes.net |
    //+------------------------------------------------------------------+
    #property copyright " "
    #property link      "http://www.****quotes.net"
    #property indicator_chart_window
    extern int MA_Period 38;
    extern int MA_Method MODE_SMA;
    extern int MA_applied_to PRICE_CLOSE;
    extern bool    Enabled true;
     
    //  MODE_SMA 0 Simple moving average.
    //  MODE_EMA 1 Exponential moving average.
    //  MODE_SMMA 2 Smoothed moving average.
    //  MODE_LWMA 3 Linear weighted moving average.
    //  PRICE_CLOSE 0 Close price.
    //  PRICE_OPEN 1 Open price.
    //  PRICE_HIGH 2 High price.
    //  PRICE_LOW 3 Low price.
    //  PRICE_MEDIAN 4 Median price, (high+low)/2.
    //  PRICE_TYPICAL 5 Typical price, (high+low+close)/3.
    //  PRICE_WEIGHTED 6 Weighted close price, (high+low+close+close)/4.
     
    //---- buffers
    //+------------------------------------------------------------------+
    //| Custom indicator initialization function                         |
    //+------------------------------------------------------------------+
    int init()
      {
    //---- indicators
    //----
       
    return(0);
      }
    //+------------------------------------------------------------------+
    //| Custom indicator deinitialization function                       |
    //+------------------------------------------------------------------+
    int deinit()
      {
    //----
     
    //----
       
    return(0);
      }
    //+------------------------------------------------------------------+
    //| Custom indicator iteration function                              |
    //+------------------------------------------------------------------+
    int start()
      {
     
       if (!
    Enabled) return (0);
     
       
    int    counted_bars=IndicatorCounted();
    //----
       
    if (counted_bars<0) return(-1); 
     
    //---- last counted bar will be recounted 
     
    if (counted_bars>0counted_bars--; 
     
    int pos=Bars-counted_bars
     
    while(
    pos>=0
    {  
       if(
    Time[0]<TimeCurrent()) return(0);
     
       if((
    iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,pos)-Bid)< 0  && 
          
    MathAbs(iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,pos)-Bid)<= 0.0025  && 
        
    iMACD(NULL,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)< 0)
      {
       
    Alert ("Sell " Symbol());
       
    PlaySound ("alert.wav");
       return(-
    1);
      }
     
      if ((
    Bid-iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,pos))> 0  && 
          
    MathAbs(Bid-iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,pos))<= 0.0025  && 
        
    iMACD(NULL,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)> 0)
      {
      
    Alert ("Buy "Symbol());
      
    PlaySound ("alert.wav");
      return(-
    1);
      }
     
     
     
    pos--; 
     
    }
    //----
    //----
       
    return(0);
      }
    //+---- 

    حيث أضفنا الشرط التالي داخل الحلقة الرئيسية :

    كود PHP:
       if(Time[0]<TimeCurrent()) return(0); 
    جربه وقل لي النتيجة


    هناك شيء آخر

    بما أن المؤشر أصلا يعطيك تنبيه لآخر شمعة فلا داعي أصلا ليقوم بعمل حلقة على كل الشموع

    إنما يكتفى بفحص الحالة للشمعات رقم صفر فقط .

    ليصبح الكود كما يلي :

    كود PHP:
    //+------------------------------------------------------------------+
    //|                                        http://www.****quotes.net |
    //+------------------------------------------------------------------+
    #property copyright " "
    #property link      "http://www.****quotes.net"
    #property indicator_chart_window
    extern int MA_Period 38;
    extern int MA_Method MODE_SMA;
    extern int MA_applied_to PRICE_CLOSE;
    extern bool    Enabled true;

    //  MODE_SMA 0 Simple moving average.
    //  MODE_EMA 1 Exponential moving average.
    //  MODE_SMMA 2 Smoothed moving average.
    //  MODE_LWMA 3 Linear weighted moving average.
    //  PRICE_CLOSE 0 Close price.
    //  PRICE_OPEN 1 Open price.
    //  PRICE_HIGH 2 High price.
    //  PRICE_LOW 3 Low price.
    //  PRICE_MEDIAN 4 Median price, (high+low)/2.
    //  PRICE_TYPICAL 5 Typical price, (high+low+close)/3.
    //  PRICE_WEIGHTED 6 Weighted close price, (high+low+close+close)/4.
     
    //---- buffers
    //+------------------------------------------------------------------+
    //| Custom indicator initialization function                         |
    //+------------------------------------------------------------------+
    int init()
      {
    //---- indicators
    //----
       
    return(0);
      }
    //+------------------------------------------------------------------+
    //| Custom indicator deinitialization function                       |
    //+------------------------------------------------------------------+
    int deinit()
      {
    //----
     
    //----
       
    return(0);
      }
    //+------------------------------------------------------------------+
    //| Custom indicator iteration function                              |
    //+------------------------------------------------------------------+
    int start()
      {
      
       if (!
    Enabled) return (0);
       
       if((
    iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,0)-Bid)< 0  && 
          
    MathAbs(iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,0)-Bid)<= 0.0025  && 
        
    iMACD(NULL,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)< 0)
      {
       
    Alert ("Sell " Symbol());
       
    PlaySound ("alert.wav");
       return(-
    1);
      }
     
      if ((
    Bid-iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,0))> 0  && 
          
    MathAbs(Bid-iMA(NULL,PERIOD_H1,MA_Period,0,MA_Method,MA_applied_to,0))<= 0.0025  && 
        
    iMACD(NULL,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)> 0)
      {
      
    Alert ("Buy "Symbol());
      
    PlaySound ("alert.wav");
      return(-
    1);
      }
       return(
    0);
      } 
    آخر تعديل بواسطة وضاح عطار ، 26-01-2008 الساعة 10:36 PM
    توقيع العضو
    اثنان لا يجتمعان علم وسوء خلق

  7. #7
    تاريخ التسجيل
    Oct 2005
    المشاركات
    296

    افتراضي رد: اخطاء بسيطة - و راجي منكم التصحيح

    بعد اضافة الكود
    if(Time[0]<TimeCurrent()) return(0);

    اصبح المؤشر لا يصدر اي نتبيه ..

    ولكن بعد حذف الحلقة على كل الشموع .. اصبح المؤشر يعمل بالشكل المطلوب

    شكرا على التصحيح ..

المواضيع المتشابهه

  1. عضو جديد ويحتاج مساعده بسيطة منكم
    By طيب القلب in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EA
    مشاركات: 2
    آخر مشاركة: 24-10-2009, 05:26 PM
  2. اشهر اخطاء المبتدئين
    By د:محمد العشري in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادن
    مشاركات: 15
    آخر مشاركة: 14-03-2009, 12:18 AM
  3. ال تريد فيه اخطاء احذرو
    By hasan ameen in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادن
    مشاركات: 16
    آخر مشاركة: 02-03-2008, 03:37 AM
  4. التصحيح ووقت التصحيح هنا تجدون اراءكم !!!!!
    By abouzeed in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادن
    مشاركات: 18
    آخر مشاركة: 09-06-2006, 01:11 AM
  5. اخطاء برنامج التدوال
    By YOOOSEF71 in forum سوق تداول العملات الأجنبية والسلع والنفط والمعادن
    مشاركات: 0
    آخر مشاركة: 15-08-2005, 03:30 AM

الاوسمة لهذا الموضوع