هل حان وقت الشراء؟ ستاندرد تشارترد يراهن على تعافي البيتكوين! ( الخميس 04 يونيو 2026 10:54 ص ) مايكروسوفت تقلل اعتمادها على أوبن إيه آي عبر إطلاق نماذج ذكاء اصطناعي خاصة بها ( الخميس 04 يونيو 2026 10:51 ص ) الصين ترفض الانتقادات الأوروبية وتؤكد قوة العلاقات الاقتصادية مع الاتحاد الأوروبي ( الخميس 04 يونيو 2026 10:08 ص ) السعودية تعزز حضورها الدولي بالمشاركة في منتدى سانت بطرسبورج ( الخميس 04 يونيو 2026 10:07 ص ) كيبكو الكورية تفوز بعقد جديد مع أرامكو في مشروع الجافورة ( الخميس 04 يونيو 2026 10:03 ص ) أسهم التكنولوجيا الأوروبية تتراجع بعد توقعات Broadcom ( الخميس 04 يونيو 2026 09:51 ص ) سهم برودكوم يتراجع بقوة في تعاملات ما بعد الإغلاق رغم قوة النتائج ( الخميس 04 يونيو 2026 09:48 ص ) سهم صالح الراشد يهبط دون سعر الإدراج مع خسائر تقارب 27% منذ نتائج الربع الأول ( الخميس 04 يونيو 2026 09:36 ص ) إنفاق شركات التكنولوجيا على الذكاء الاصطناعي سيتجاوز اقتصاد اليابان بحلول 2030 ( الخميس 04 يونيو 2026 08:48 ص ) أهم ما يحرك الأسواق: هدنة لبنان..سعر طرح SpaceX..فقاعة حقيقية! ( الخميس 04 يونيو 2026 08:46 ص ) رويترز: بنك اليابان قد يرفع الفائدة إلى 1% في اجتماع يونيو ( الخميس 04 يونيو 2026 08:44 ص ) عملة رقمية صغيرة ذات خصائص فريدة تسحب السيولة من العملات الكبرى وتصعد بنحو 180% ( الخميس 04 يونيو 2026 08:41 ص ) هل ما زال سهم آبل يستحق الشراء؟ ( الخميس 04 يونيو 2026 08:13 ص ) اليابان: نتوقع أن يتحرك بنك اليابان بشكل يناسب تحقيق هدف التضخم ( الخميس 04 يونيو 2026 08:01 ص ) وول ستريت تنهي سلسلة مكاسبها القوية وسط تطورات متسارعة بشأن حرب إيران ( الخميس 04 يونيو 2026 07:53 ص ) مؤشر FTSE 100 يرتفع مع آمال الاتفاق مع إيران ( الخميس 04 يونيو 2026 07:53 ص ) الأسهم الأوروبية ترتفع بعد اتفاق إسرائيل ولبنان على تجديد الهدنة الهشة ( الخميس 04 يونيو 2026 07:46 ص ) المملكة القابضة تكشف قيمة استثمارها في سبيس إكس ( الخميس 04 يونيو 2026 07:23 ص ) بيتكوين يتراجع لأدنى مستوى في 4 أشهر عند 61,000 دولار وسط توترات إيران ( الخميس 04 يونيو 2026 06:37 ص ) عاجل: التضخم في سويسرا دون التوقعات خلال مايو ( الخميس 04 يونيو 2026 06:36 ص )

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

    افتراضي مشاكل برمجة عويصة فيما يخص الاكسبرتات

    كود:
    int MyPendingOrdersTotal(int Magic)
    {
      int c=0;
      int total  = OrdersTotal();
     
      for (int cnt = 0 ; cnt < total ; cnt++)
      {
        OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && OrderType()>OP_SELL)
        {
          c++;
        }
      }
      return(c);
    }
    اريد استخدام الدالة MyPendingOrdersTotal (الخاصة بالاستاذ وضاح العطار في اكسبرت الشهباء)
    ولكن المشكلة عند نسخها في اى اكسبرت آخر نظهر رسالة خطأ التالية
    '(' - function definition unexpected H:\AL Trade 4\experts\TestExpert.mq4 (153, 25)
    معترض على الاقواس !

    'c' - variable not defined H:\AL Trade 4\experts\TestExpert.mq4 (163, 7)
    معترض على المتغير C رغم انه معرف ف بداية الدالة على انه متغير من نوع Int

    '}' - unbalanced parentheses H:\AL Trade 4\experts\TestExpert.mq4 (168, 1)
    وآخيرا وليس آخرا معترض على القوس } رغم ان عدد الاقواس المفتوحة = عدد الاقواس المغلقة


    جربت وضع الدالة في اكسبرت آخر ظهر لدى هذة الرسالة
    Function "MyPendingOrdersTotal" is not referenced and will be removed from exp-file
    مش عاجبه الدالة كلها وعاوز يحذفها كلها المرادى !

    وايضا باستخدام دالة الاستاذ مستر دولار DeletePendingOrders نفس رسائل الخطأ السابقة تماماً
    هذا كود الاكسبرت الكلى

    كود:
    //+------------------------------------------------------------------+
    //|                                                  My_First_EA.mq4 |
    //|                                                      Coders Guru |
    //|                                         http://www.forex-tsd.com |
    //+------------------------------------------------------------------+
    #property copyright "Coders Guru"
    #property link      "http://www.forex-tsd.com"
    
    //---- input parameters
    extern double    TakeProfit=250.0;
    extern double    Lots=0.1;
    extern double    TrailingStop=35.0;
    //+------------------------------------------------------------------+
    //| expert initialization function                                   |
    //+------------------------------------------------------------------+
    int init()
      {
    //---- 
       
    //----
       return(0);
      }
    //+------------------------------------------------------------------+
    //| expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    int deinit()
      {
    //---- 
       
    //----
       return(0);
      }
    
    int Crossed (double line1 , double line2)
       {
          static int last_direction = 0;
          static int current_dirction = 0;
          
          if(line1>line2)current_dirction = 1; //up
          if(line1<line2)current_dirction = 2; //down
    
    
    
          if(current_dirction != last_direction) //changed 
          {
                last_direction = current_dirction;
                return (last_direction);
          }
          else
          {
                return (0);
          }
       } 
    //+------------------------------------------------------------------+
    //| expert start function                                            |
    //+------------------------------------------------------------------+
    int start()
      {
    //---- 
    
       
       int cnt, ticket, total;
       double shortEma, longEma;
       
       
       if(Bars<100)
         {
          Print("bars less than 100");
          return(0);  
         }
       if(TakeProfit<10)
         {
          Print("TakeProfit less than 10");
          return(0);  // check TakeProfit
         }
         
         
       shortEma = iMA(NULL,0,8,0,MODE_EMA,PRICE_CLOSE,0);
       longEma = iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);
       
       int isCrossed  = Crossed (shortEma,longEma);
       
       total  = OrdersTotal(); 
       if(total < 1) 
         {
           if(isCrossed == 1)
             {
                ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"My EA",12345,0,Green);
                if(ticket>0)
                  {
                   if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
                  }
                else Print("Error opening BUY order : ",GetLastError()); 
                return(0);
             }
             if(isCrossed == 2)
             {
    
                ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"My EA",12345,0,Red);
                if(ticket>0)
                  {
                   if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
                  }
                else Print("Error opening SELL order : ",GetLastError()); 
                return(0);
             }
             return(0);
         }
       for(cnt=0;cnt<total;cnt++)
         {
          OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
          if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
            {
             if(OrderType()==OP_BUY)   // long position is opened
               {
                // should it be closed?
               if(isCrossed == 2)
                    {
                     OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
                     return(0); // exit
                    }
                // check for trailing stop
                if(TrailingStop>0)  
                  {                 
                   if(Bid-OrderOpenPrice()>Point*TrailingStop)
                     {
                      if(OrderStopLoss()<Bid-Point*TrailingStop)
                        {
                         OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
                         return(0);
                        }
                     }
                  }
               }
             else // go to short position
               {
                // should it be closed?
                if(isCrossed == 1)
                  {
                   OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
                   return(0); // exit
                  }
                // check for trailing stop
                if(TrailingStop>0)  
                  {                 
                   if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                     {
                      if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
                        {
                         OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                         return(0);
                        }
                     }
                  }
               }
            }
         }
     
    int DeletePendingOrders()
    {
      int total  = OrdersTotal();
      
      for (int cnt = total-1 ; cnt >= 0 ; cnt--)
      {
        OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && (OrderType()>OP_SELL))
        {
          OrderDelete(OrderTicket());
        }
      }
      return(0);
    }
    
    
       return(0);
      }
    //+------------------------------------------------------------------+


    ما مشكلة هذة اللغة المعترضة دائماً !!

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

    افتراضي رد: مشاكل برمجة عويصة فيما يخص الاكسبرتات

    اقتباس المشاركة الأصلية كتبت بواسطة EgyptionPro مشاهدة المشاركة
    كود:
    int MyPendingOrdersTotal(int Magic)
    {
      int c=0;
      int total  = OrdersTotal();
     
      for (int cnt = 0 ; cnt < total ; cnt++)
      {
        OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && OrderType()>OP_SELL)
        {
          c++;
        }
      }
      return(c);
    }
    اريد استخدام الدالة MyPendingOrdersTotal (الخاصة بالاستاذ وضاح العطار في اكسبرت الشهباء)
    ولكن المشكلة عند نسخها في اى اكسبرت آخر نظهر رسالة خطأ التالية
    '(' - function definition unexpected H:\AL Trade 4\experts\TestExpert.mq4 (153, 25)
    معترض على الاقواس !

    'c' - variable not defined H:\AL Trade 4\experts\TestExpert.mq4 (163, 7)
    معترض على المتغير C رغم انه معرف ف بداية الدالة على انه متغير من نوع Int

    '}' - unbalanced parentheses H:\AL Trade 4\experts\TestExpert.mq4 (168, 1)
    وآخيرا وليس آخرا معترض على القوس } رغم ان عدد الاقواس المفتوحة = عدد الاقواس المغلقة


    جربت وضع الدالة في اكسبرت آخر ظهر لدى هذة الرسالة
    Function "MyPendingOrdersTotal" is not referenced and will be removed from exp-file
    مش عاجبه الدالة كلها وعاوز يحذفها كلها المرادى !

    وايضا باستخدام دالة الاستاذ مستر دولار DeletePendingOrders نفس رسائل الخطأ السابقة تماماً
    هذا كود الاكسبرت الكلى

    كود:
    //+------------------------------------------------------------------+
    //|                                                  My_First_EA.mq4 |
    //|                                                      Coders Guru |
    //|                                         http://www.forex-tsd.com |
    //+------------------------------------------------------------------+
    #property copyright "Coders Guru"
    #property link      "http://www.forex-tsd.com"
    
    //---- input parameters
    extern double    TakeProfit=250.0;
    extern double    Lots=0.1;
    extern double    TrailingStop=35.0;
    //+------------------------------------------------------------------+
    //| expert initialization function                                   |
    //+------------------------------------------------------------------+
    int init()
      {
    //---- 
       
    //----
       return(0);
      }
    //+------------------------------------------------------------------+
    //| expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    int deinit()
      {
    //---- 
       
    //----
       return(0);
      }
    
    int Crossed (double line1 , double line2)
       {
          static int last_direction = 0;
          static int current_dirction = 0;
          
          if(line1>line2)current_dirction = 1; //up
          if(line1<line2)current_dirction = 2; //down
    
    
    
          if(current_dirction != last_direction) //changed 
          {
                last_direction = current_dirction;
                return (last_direction);
          }
          else
          {
                return (0);
          }
       } 
    //+------------------------------------------------------------------+
    //| expert start function                                            |
    //+------------------------------------------------------------------+
    int start()
      {
    //---- 
    
       
       int cnt, ticket, total;
       double shortEma, longEma;
       
       
       if(Bars<100)
         {
          Print("bars less than 100");
          return(0);  
         }
       if(TakeProfit<10)
         {
          Print("TakeProfit less than 10");
          return(0);  // check TakeProfit
         }
         
         
       shortEma = iMA(NULL,0,8,0,MODE_EMA,PRICE_CLOSE,0);
       longEma = iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);
       
       int isCrossed  = Crossed (shortEma,longEma);
       
       total  = OrdersTotal(); 
       if(total < 1) 
         {
           if(isCrossed == 1)
             {
                ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"My EA",12345,0,Green);
                if(ticket>0)
                  {
                   if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
                  }
                else Print("Error opening BUY order : ",GetLastError()); 
                return(0);
             }
             if(isCrossed == 2)
             {
    
                ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"My EA",12345,0,Red);
                if(ticket>0)
                  {
                   if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
                  }
                else Print("Error opening SELL order : ",GetLastError()); 
                return(0);
             }
             return(0);
         }
       for(cnt=0;cnt<total;cnt++)
         {
          OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
          if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
            {
             if(OrderType()==OP_BUY)   // long position is opened
               {
                // should it be closed?
               if(isCrossed == 2)
                    {
                     OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
                     return(0); // exit
                    }
                // check for trailing stop
                if(TrailingStop>0)  
                  {                 
                   if(Bid-OrderOpenPrice()>Point*TrailingStop)
                     {
                      if(OrderStopLoss()<Bid-Point*TrailingStop)
                        {
                         OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
                         return(0);
                        }
                     }
                  }
               }
             else // go to short position
               {
                // should it be closed?
                if(isCrossed == 1)
                  {
                   OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
                   return(0); // exit
                  }
                // check for trailing stop
                if(TrailingStop>0)  
                  {                 
                   if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                     {
                      if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
                        {
                         OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                         return(0);
                        }
                     }
                  }
               }
            }
         }
     
    int DeletePendingOrders()
    {
      int total  = OrdersTotal();
      
      for (int cnt = total-1 ; cnt >= 0 ; cnt--)
      {
        OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
        if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && (OrderType()>OP_SELL))
        {
          OrderDelete(OrderTicket());
        }
      }
      return(0);
    }
    
    
       return(0);
      }
    //+------------------------------------------------------------------+


    ما مشكلة هذة اللغة المعترضة دائماً !!

    عند تعريف داله يجب أن تقوم بتعريفها خارج الداله start ثم بعد ذلك تقوم بإستدعائها داخل الداله start لتؤدي عملها وهذا سبب الخطأ عندك يجب أن تقوم بتعريف الداله DeletePendingOrders خارج الداله start على إعتبار أنها داله لوحدها
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  3. #3
    الصورة الرمزية EgyptionPro
    EgyptionPro غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2008
    الإقامة
    ALEX
    العمر
    42
    المشاركات
    866

    افتراضي رد: مشاكل برمجة عويصة فيما يخص الاكسبرتات

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    عند تعريف داله يجب أن تقوم بتعريفها خارج الداله start ثم بعد ذلك تقوم بإستدعائها داخل الداله start لتؤدي عملها وهذا سبب الخطأ عندك يجب أن تقوم بتعريف الداله DeletePendingOrders خارج الداله start على إعتبار أنها داله لوحدها
    ربنا يبارك فيك دائما سريع الخدمة

  4. #4
    الصورة الرمزية EgyptionPro
    EgyptionPro غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2008
    الإقامة
    ALEX
    العمر
    42
    المشاركات
    866

    افتراضي رد: مشاكل برمجة عويصة فيما يخص الاكسبرتات

    اخى الفاضل اين نعرف الدالة DeletePendingOrders هل نعرفها بداخل الدالة init ام قبل او بعد الدالة Start ولا في بداية الاكسبرت ؟
    وهل نعرفها بInt ام لها كلمة محجوزة آخرى لتعريف الدالة


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

    افتراضي رد: مشاكل برمجة عويصة فيما يخص الاكسبرتات

    اقتباس المشاركة الأصلية كتبت بواسطة EgyptionPro مشاهدة المشاركة
    اخى الفاضل اين نعرف الدالة DeletePendingOrders هل نعرفها بداخل الدالة init ام قبل او بعد الدالة Start ولا في بداية الاكسبرت ؟
    وهل نعرفها بInt ام لها كلمة محجوزة آخرى لتعريف الدالة

    في لغة MQL4 يوجد ثلاث دوال أساسيه هي
    init و deinit و start

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

  6. #6
    الصورة الرمزية EgyptionPro
    EgyptionPro غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jul 2008
    الإقامة
    ALEX
    العمر
    42
    المشاركات
    866

    افتراضي رد: مشاكل برمجة عويصة فيما يخص الاكسبرتات

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    في لغة MQL4 يوجد ثلاث دوال أساسيه هي
    init و deinit و start

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

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

  1. ما هي أفضل الكتب لتعلم برمجة الاكسبرتات
    By MR.dollar in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EA
    مشاركات: 7
    آخر مشاركة: 03-09-2010, 06:13 AM
  2. لمحترفين برمجة الاكسبرتات .......مساعدة بسيطة جدا
    By batttot in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EA
    مشاركات: 4
    آخر مشاركة: 29-04-2010, 05:18 PM
  3. سؤال في برمجة الاكسبرتات (بسيط)
    By Dr.Aoudi in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EA
    مشاركات: 1
    آخر مشاركة: 11-01-2009, 08:00 AM

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


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