لماذا انخفض الدولار رغم استمرار ترقب بيانات التوظيف الأمريكية؟ ( الخميس 04 يونيو 2026 04:22 م ) إيرباص تسلم 81 طائرة... هل تنجح في تحقيق هدف 870 طائرة هذا العام؟ ( الخميس 04 يونيو 2026 04:06 م ) كيف يمكن للذكاء الاصطناعي إعادة تشكيل مستقبل سبيس إكس؟ غولدمان ساكس يوضح! ( الخميس 04 يونيو 2026 03:37 م ) فيتش تخفض نظرتها المستقبلية لقطاع الطيران العالمي إلى متدهورة ( الخميس 04 يونيو 2026 03:30 م ) جوجل تراهن على الطاقة المتجددة في أحدث مشاريع مراكز البيانات ( الخميس 04 يونيو 2026 03:16 م ) أمين عام أوبك: الطلب على النفط سيظل قوياً ولا تغيير في التقديرات ( الخميس 04 يونيو 2026 02:55 م ) إيران تكشف تفاصيل جديدة عن الاتفاق المرتقب مع الولايات المتحدة ( الخميس 04 يونيو 2026 02:54 م ) عاجل| ارتفاع دون التوقعات في مخزونات الغاز الطبيعي الأمريكية ( الخميس 04 يونيو 2026 02:34 م ) وول ستريت في حالة ارتباك.. داو جونز يرتفع بقوة وسط تراجع ناسداك وستاندرد أند بورز ( الخميس 04 يونيو 2026 02:10 م ) هل تنسحب روسيا من أوبك+؟ نوفاك يحسم الجدل! ( الخميس 04 يونيو 2026 02:06 م ) انخفاض في وول ستريت وسط مبيعات على أسهم الرقائق ( الخميس 04 يونيو 2026 02:01 م ) مجلس الذهب العالمي يكشف مفاجآت في تقرير حديث حول مشتريات المعدن الأصفر ( الخميس 04 يونيو 2026 01:58 م ) أسعار الغاز الطبيعي الأوروبي تتراجع بعد اتفاق إسرائيل ولبنان على هدنة هشة ( الخميس 04 يونيو 2026 01:43 م ) آي بي إم وجوجل كلاود تطلقان منصة جديدة لدعم التحول بالذكاء الاصطناعي ( الخميس 04 يونيو 2026 01:30 م ) راي داليو: هناك خلط في الرهان على الذكاء الاصطناعي ( الخميس 04 يونيو 2026 01:27 م ) طرح قوي لشركة كونتينيوم التابعة لهانيويل في ناسداك ( الخميس 04 يونيو 2026 01:14 م ) عقود TSX الآجلة مستقرة وسط توترات الشرق الأوسط المتصاعدة ( الخميس 04 يونيو 2026 12:48 م ) عاجل.. صدور بيانات إعانات البطالة الأمريكية للأسبوع الماضي ( الخميس 04 يونيو 2026 12:32 م ) سوسيتيه جنرال: جميع المؤشرات لا تزال تدعم ضعف الين الياباني ( الخميس 04 يونيو 2026 12:19 م ) أسعار الغاز الطبيعي مدعومة في الربع الثالث لكن آفاق 2027 تتراجع ( الخميس 04 يونيو 2026 12:19 م )

النتائج 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