صفحة 621 من 686 الأولىالأولى ... 121521571611615616617618619620621622623624625626627631671 ... الأخيرةالأخيرة
النتائج 9,301 إلى 9,315 من 10278
  1. #9301
    الصورة الرمزية sahrawi
    sahrawi غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Feb 2018
    الإقامة
    المغرب
    المشاركات
    61

    افتراضي

    السلام عليكم ورحمة الله ويركاته
    لقد وجدت الحل باستخدام Global Variables
    لكن هذه الاخيرة لا تشتغل على متغير نصي فقمت بالتماطل عليها ونجحت في ذلك لكن هذا الحل غير فعاب ويضيف سطور برمجية جديدة نحن في غنا عنها .. لذا اخواني اذا كان هناك حل آخر فلا تبخلو علينا وشكرا لكم

  2. #9302
    الصورة الرمزية msh3al
    msh3al غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Nov 2012
    الإقامة
    الكويت
    المشاركات
    410

    افتراضي

    السلام عليكم مرحبا استاذ اسامه الحبيب
    اتمنى انك بخير وصحه وعافيه

    لك رساله عالخاص
    اخوك
    توقيع العضو
    إذا لم يكن عونٌ من الله للفتى *** فأولُ ما يجني عليه اجتهادُهُ
    ( اللهم أسألك التوفيق )

  3. #9303
    الصورة الرمزية ابواحمد222
    ابواحمد222 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jun 2010
    المشاركات
    414

    افتراضي

    اخي مستر دولار العزيز
    هناك مشكله واجهتني عندما اريد اغلاق شمعه الربع ساعه اعلى من قمه شمعه الساعه
    مثال للتوضيح
    الساعه 6:59 الربع ساعه اعلى من قمه الشمعه الساعه رتبه واحد
    الساعه 7:00 الشمعه رتبه واحد للساعه سابقا اصبحت شمعه رتبه 2 مع ان اغلاق الشمعه ربع ساعه اعلى من رتبه واحد سابقا لذلك لا يعطيني تنبيه
    لا ادري اذا وفقت بشرح المشكله واذا مرت عليك سابقا وما هو الحل وجزاك الله كل خير

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة ابواحمد222 مشاهدة المشاركة
    اخي مستر دولار العزيز
    هناك مشكله واجهتني عندما اريد اغلاق شمعه الربع ساعه اعلى من قمه شمعه الساعه
    مثال للتوضيح
    الساعه 6:59 الربع ساعه اعلى من قمه الشمعه الساعه رتبه واحد
    الساعه 7:00 الشمعه رتبه واحد للساعه سابقا اصبحت شمعه رتبه 2 مع ان اغلاق الشمعه ربع ساعه اعلى من رتبه واحد سابقا لذلك لا يعطيني تنبيه
    لا ادري اذا وفقت بشرح المشكله واذا مرت عليك سابقا وما هو الحل وجزاك الله كل خير
    نعم وهذا منطقي لأن شمعة ساعة جديده تكونت في هذه الحاله يجب أن تستخدم الشمعة رقم 2 بدلا من الشمعة رقم 1 في المقارنه
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  5. #9305
    الصورة الرمزية mohamed2012
    mohamed2012 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Feb 2016
    الإقامة
    مصر
    المشاركات
    66

    افتراضي

    السلام عليكم ورحمة الله وبركاتة
    الأستاذ الفاضل أسامة بعد التحية .
    لقد قمت بعمل أكسبرت يعمل بعد أخذ صفقة لها هدف وأستوب يدوى ولكن لا ينفذ الشروط أرجوا الأطلاع على الكود وتعرفنى اين الخطأ
    والفكرة هى: عندما يتحقق التيك بروفت يفتح مباشرة صفقة جديدة سواء كانت بيع أو شراء
    وعندما يضرب الستوب لوز يفتح صففقة مباشرة جديدة ,بمعنى اذا كانت الصفقة شراء وضربت استوب يأخذ شراء ايضا وكذلك للبيع
    كود:
      int orderscnt(int type)
     {
     int cnt=0;
       for(int i =0;i<OrdersTotal();i++){
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
           if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()==type){
             cnt++;
           }
         }
       }
        return(cnt);
      }
    double LastOrder(string info,int type=-1)
    { 
     for(int i=OrdersHistoryTotal();i>=0;i--) 
     { 
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); 
      string sy=OrderSymbol(); 
      int    ot=OrderType(), 
             mn=OrderMagicNumber(); 
      double pt=OrderProfit(); 
      double sl=OrderStopLoss();        
      if(sy==Symbol()&&mn==MagicNumber&&(ot==type||type==-1)) 
      { 
       if(info=="Type")return(ot); 
      if(info=="Profit")return(pt);  
       else  if(info=="LOSS")return(sl);  
      } 
     } 
     return(0); 
    }        
     double order_stoploss = OrderStopLoss();
     double order_takeprofit = OrderTakeProfit();
    //+------------------------------------------------------------------+
    //| Expert tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
    { 
      if(LastOrder("Type")==OP_BUY&&LastOrder("Profit",OP_BUY)>0)Buy(); 
      if(LastOrder("Type")==OP_BUY&&LastOrder("LOSS",OP_BUY)>0)Buy(); 
      if(LastOrder("Type")==OP_SELL&&LastOrder("Profit",OP_SELL)>0)Sell();
      if(LastOrder("Type")==OP_SELL&&LastOrder("LOSS",OP_SELL)>0)Sell();
    }    
    void Buy()
    {
       double ask_76 = MarketInfo(Symbol(), MODE_ASK);
       double bid_84 = MarketInfo(Symbol(), MODE_BID);
     double price=NormalizeDouble(Ask,digits);
     if(orderscnt(OP_BUY)<1){
     if ((order_takeprofit < ask_76 + TakeProfit * point) && bid_84 - OrderOpenPrice() > VALL&&Time0!=iTime(Symbol(),0,0)){
     order_stoploss  =( bid_84 - StopLoss - AddPriceGap);
     order_takeprofit=( ask_76 + TakeProfit * point);
      int ticket=-1;
      ticket=OrderSend(Symbol(),OP_BUY,Lots,price,Slippage*Q,0,0,"",MagicNumber,0,Blue);
      if(ticket>-1)
      {
       bool select=OrderSelect(ticket,SELECT_BY_TICKET);
       bool ret=OrderModify(OrderTicket(),OrderOpenPrice(),order_stoploss,order_takeprofit,0,Red);
      }  
      if(UseSound)PlaySound("Alert.wav");
      Time0=iTime(Symbol(),0,0);
      }
     }
    }
    //+---------------------------------------------------------------------------------+
    void Sell()
    {
     double ask_76 = MarketInfo(Symbol(), MODE_ASK);
     double bid_84 = MarketInfo(Symbol(), MODE_BID);
     double price=NormalizeDouble(Bid,digits);
      if ((order_takeprofit > bid_84 - TakeProfit * point) && OrderOpenPrice() - ask_76 > VALL &&Time0!=iTime(Symbol(),0,0)) {
      order_stoploss =(ask_76 + StopLoss + AddPriceGap);
      order_takeprofit =(bid_84 - TakeProfit * point);
      if(orderscnt(OP_SELL)<1){
      int ticket=-1;
      ticket= OrderSend(Symbol(),OP_SELL,Lots,price,Slippage*Q,0,0,"",MagicNumber,0,Red);
      if(ticket>-1)
      {
       bool select=OrderSelect(ticket,SELECT_BY_TICKET);
       bool ret=OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,Red);
      }  
      if(UseSound)PlaySound("Alert.wav");
      Time0=iTime(Symbol(),0,0); 
     } 
    }
    }

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة sahrawi مشاهدة المشاركة
    السلام عليكم ورحمة الله وبركاته
    كيف الحال إخواني إن شاء الله الكل بألف خير
    عندي تساؤل حول Static variable كيف يمكن جعلها تحافظ على قيمتها رغم تغير الفريم .. أحتاج هذه الخاصية لجعل المؤشر يحتفظ بالشكل الخاص بالفريم الذي هو عليه عندما يتم تغيير الفريم .. هل توجد طريقة تشتغل بدون استخدام Global Variables ؟ لأن هذه الأخيرة تحتفظ بقيمتها لمدة 4 اسابيع ثم يتم مسحها اوتوماتيكيا .. واذا لم تكن هناك طريقة غيرها فهل يمكن توضيح كيفية عمل Global Variables.
    أعتقد أن الحل له في OnDeinit بواسطة REASON_CHARTCHANGE لمنع البرنامج من initialization عند تغير الفريم .. والله أعلم هذا مجرد تخمين!!!
    وعليكم السلام ورحمة الله وبركاته
    أفضل طريقة هي إستخدام global variables أخي الكريم
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  7. #9307
    الصورة الرمزية mohamed2012
    mohamed2012 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Feb 2016
    الإقامة
    مصر
    المشاركات
    66

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة mohamed2012 مشاهدة المشاركة
    السلام عليكم ورحمة الله وبركاتة
    الأستاذ الفاضل أسامة بعد التحية .
    لقد قمت بعمل أكسبرت يعمل بعد أخذ صفقة لها هدف وأستوب يدوى ولكن لا ينفذ الشروط أرجوا الأطلاع على الكود وتعرفنى اين الخطأ
    والفكرة هى: عندما يتحقق التيك بروفت يفتح مباشرة صفقة جديدة سواء كانت بيع أو شراء
    وعندما يضرب الستوب لوز يفتح صففقة مباشرة جديدة ,بمعنى اذا كانت الصفقة شراء وضربت استوب يأخذ شراء ايضا وكذلك للبيع
    كود:
      int orderscnt(int type)
     {
     int cnt=0;
       for(int i =0;i<OrdersTotal();i++){
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
           if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()==type){
             cnt++;
           }
         }
       }
        return(cnt);
      }
    double LastOrder(string info,int type=-1)
    { 
     for(int i=OrdersHistoryTotal();i>=0;i--) 
     { 
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); 
      string sy=OrderSymbol(); 
      int    ot=OrderType(), 
             mn=OrderMagicNumber(); 
      double pt=OrderProfit(); 
      double sl=OrderStopLoss();        
      if(sy==Symbol()&&mn==MagicNumber&&(ot==type||type==-1)) 
      { 
       if(info=="Type")return(ot); 
      if(info=="Profit")return(pt);  
       else  if(info=="LOSS")return(sl);  
      } 
     } 
     return(0); 
    }        
     double order_stoploss = OrderStopLoss();
     double order_takeprofit = OrderTakeProfit();
    //+------------------------------------------------------------------+
    //| Expert tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
    { 
      if(LastOrder("Type")==OP_BUY&&LastOrder("Profit",OP_BUY)>0)Buy(); 
      if(LastOrder("Type")==OP_BUY&&LastOrder("LOSS",OP_BUY)>0)Buy(); 
      if(LastOrder("Type")==OP_SELL&&LastOrder("Profit",OP_SELL)>0)Sell();
      if(LastOrder("Type")==OP_SELL&&LastOrder("LOSS",OP_SELL)>0)Sell();
    }    
    void Buy()
    {
       double ask_76 = MarketInfo(Symbol(), MODE_ASK);
       double bid_84 = MarketInfo(Symbol(), MODE_BID);
     double price=NormalizeDouble(Ask,digits);
     if(orderscnt(OP_BUY)<1){
     if ((order_takeprofit < ask_76 + TakeProfit * point) && bid_84 - OrderOpenPrice() > VALL&&Time0!=iTime(Symbol(),0,0)){
     order_stoploss  =( bid_84 - StopLoss - AddPriceGap);
     order_takeprofit=( ask_76 + TakeProfit * point);
      int ticket=-1;
      ticket=OrderSend(Symbol(),OP_BUY,Lots,price,Slippage*Q,0,0,"",MagicNumber,0,Blue);
      if(ticket>-1)
      {
       bool select=OrderSelect(ticket,SELECT_BY_TICKET);
       bool ret=OrderModify(OrderTicket(),OrderOpenPrice(),order_stoploss,order_takeprofit,0,Red);
      }  
      if(UseSound)PlaySound("Alert.wav");
      Time0=iTime(Symbol(),0,0);
      }
     }
    }
    //+---------------------------------------------------------------------------------+
    void Sell()
    {
     double ask_76 = MarketInfo(Symbol(), MODE_ASK);
     double bid_84 = MarketInfo(Symbol(), MODE_BID);
     double price=NormalizeDouble(Bid,digits);
      if ((order_takeprofit > bid_84 - TakeProfit * point) && OrderOpenPrice() - ask_76 > VALL &&Time0!=iTime(Symbol(),0,0)) {
      order_stoploss =(ask_76 + StopLoss + AddPriceGap);
      order_takeprofit =(bid_84 - TakeProfit * point);
      if(orderscnt(OP_SELL)<1){
      int ticket=-1;
      ticket= OrderSend(Symbol(),OP_SELL,Lots,price,Slippage*Q,0,0,"",MagicNumber,0,Red);
      if(ticket>-1)
      {
       bool select=OrderSelect(ticket,SELECT_BY_TICKET);
       bool ret=OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,Red);
      }  
      if(UseSound)PlaySound("Alert.wav");
      Time0=iTime(Symbol(),0,0); 
     } 
    }
    }
    اعتذر لك استاذ اسامة ارسلت الكود بية بعض الأخطاء البسيطة ونم نعديلها
    اعتقد ان المشكلة فى دوال معرفة الربح او نوع اخر صفقة مغلقة
    تحياتى لشخصك الكريم
    الكود الجدبد
    كود:
     int orderscnt(int type)
     {
     int cnt=0;
       for(int i =0;i<OrdersTotal();i++){
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
           if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()==type){
             cnt++;
           }
         }
       }
        return(cnt);
      }
    double LastOrder(string info,int type=-1)
    { 
     for(int i=OrdersHistoryTotal();i>=0;i--) 
     { 
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); 
      string sy=OrderSymbol(); 
      int    ot=OrderType(), 
             mn=OrderMagicNumber(); 
      double pt=OrderProfit(); 
      double sl=OrderStopLoss();        
      if(sy==Symbol()&&mn==MagicNumber&&(ot==type||type==-1)) 
      { 
       if(info=="Type")return(ot); 
      if(info=="Profit")return(pt);  
       else  if(info=="LOSS")return(sl);  
      } 
     } 
     return(0); 
    }        
     double order_stoploss = OrderStopLoss();
     double order_takeprofit = OrderTakeProfit();
    //+------------------------------------------------------------------+
    //| Expert tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
    { 
      if(LastOrder("Type")==OP_BUY&&LastOrder("Profit",OP_BUY)>0)Buy(); 
      if(LastOrder("Type")==OP_BUY&&LastOrder("LOSS",OP_BUY)>0)Buy(); 
      if(LastOrder("Type")==OP_SELL&&LastOrder("Profit",OP_SELL)>0)Sell();
      if(LastOrder("Type")==OP_SELL&&LastOrder("LOSS",OP_SELL)>0)Sell();
    }    
    void Buy()
    {
       double ask_76 = MarketInfo(Symbol(), MODE_ASK);
       double bid_84 = MarketInfo(Symbol(), MODE_BID);
     double price=NormalizeDouble(Ask,digits);
     if(orderscnt(OP_BUY)<1){
     if ((order_takeprofit < ask_76 + TakeProfit * point) && bid_84 - OrderOpenPrice() > VALL&&Time0!=iTime(Symbol(),0,0)){
     SL  =( bid_84 - StopLoss* point - AddPriceGap);
     TP=( ask_76 + TakeProfit * point);
      int ticket=-1;
      ticket=OrderSend(Symbol(),OP_BUY,Lots,price,Slippage*Q,0,0,"",MagicNumber,0,Blue);
      if(ticket>-1)
      {
       bool select=OrderSelect(ticket,SELECT_BY_TICKET);
       bool ret=OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,Red);
      }  
      if(UseSound)PlaySound("Alert.wav");
      Time0=iTime(Symbol(),0,0);
      }
     }
    }
    //+---------------------------------------------------------------------------------+
    void Sell()
    {
     double ask_76 = MarketInfo(Symbol(), MODE_ASK);
     double bid_84 = MarketInfo(Symbol(), MODE_BID);
     double price=NormalizeDouble(Bid,digits);
      if ((order_takeprofit > bid_84 - TakeProfit * point) && OrderOpenPrice() - ask_76 > VALL &&Time0!=iTime(Symbol(),0,0)) {
      SL =(ask_76 + StopLoss * point+ AddPriceGap);
      TP =(bid_84 - TakeProfit * point);
      if(orderscnt(OP_SELL)<1){
      int ticket=-1;
      ticket= OrderSend(Symbol(),OP_SELL,Lots,price,Slippage*Q,0,0,"",MagicNumber,0,Red);
      if(ticket>-1)
      {
       bool select=OrderSelect(ticket,SELECT_BY_TICKET);
       bool ret=OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,Red);
      }  
      if(UseSound)PlaySound("Alert.wav");
      Time0=iTime(Symbol(),0,0); 
     } 
    }
    }

  8. #9308
    الصورة الرمزية ابواحمد222
    ابواحمد222 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jun 2010
    المشاركات
    414

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    نعم وهذا منطقي لأن شمعة ساعة جديده تكونت في هذه الحاله يجب أن تستخدم الشمعة رقم 2 بدلا من الشمعة رقم 1 في المقارنه
    جزاك الله كل خير اخي مستر دولار
    لكن المشكله عند وضع رتبه 2 يصبح هناك صفقات لا اريدها لذلك فكرت في وضع الخيارين معا لكن ذلك زاد عدد الصفقات
    سافكر في حل ذلك وقد يكون ذلك من اسباب جعلي اعتمد اليدوي والتقني معا بتصفيه الاشاره يدويا
    وتقبل مني كل الود والاحترام

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

    افتراضي

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

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة mohamed2012 مشاهدة المشاركة
    اعتذر لك استاذ اسامة ارسلت الكود بية بعض الأخطاء البسيطة ونم نعديلها
    اعتقد ان المشكلة فى دوال معرفة الربح او نوع اخر صفقة مغلقة
    تحياتى لشخصك الكريم
    الكود الجدبد
    كود:
     int orderscnt(int type)
     {
     int cnt=0;
       for(int i =0;i<OrdersTotal();i++){
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
           if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()==type){
             cnt++;
           }
         }
       }
        return(cnt);
      }
    double LastOrder(string info,int type=-1)
    { 
     for(int i=OrdersHistoryTotal();i>=0;i--) 
     { 
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); 
      string sy=OrderSymbol(); 
      int    ot=OrderType(), 
             mn=OrderMagicNumber(); 
      double pt=OrderProfit(); 
      double sl=OrderStopLoss();        
      if(sy==Symbol()&&mn==MagicNumber&&(ot==type||type==-1)) 
      { 
       if(info=="Type")return(ot); 
      if(info=="Profit")return(pt);  
       else  if(info=="LOSS")return(sl);  
      } 
     } 
     return(0); 
    }        
     double order_stoploss = OrderStopLoss();
     double order_takeprofit = OrderTakeProfit();
    //+------------------------------------------------------------------+
    //| Expert tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
    { 
      if(LastOrder("Type")==OP_BUY&&LastOrder("Profit",OP_BUY)>0)Buy(); 
      if(LastOrder("Type")==OP_BUY&&LastOrder("LOSS",OP_BUY)>0)Buy(); 
      if(LastOrder("Type")==OP_SELL&&LastOrder("Profit",OP_SELL)>0)Sell();
      if(LastOrder("Type")==OP_SELL&&LastOrder("LOSS",OP_SELL)>0)Sell();
    }    
    void Buy()
    {
       double ask_76 = MarketInfo(Symbol(), MODE_ASK);
       double bid_84 = MarketInfo(Symbol(), MODE_BID);
     double price=NormalizeDouble(Ask,digits);
     if(orderscnt(OP_BUY)<1){
     if ((order_takeprofit < ask_76 + TakeProfit * point) && bid_84 - OrderOpenPrice() > VALL&&Time0!=iTime(Symbol(),0,0)){
     SL  =( bid_84 - StopLoss* point - AddPriceGap);
     TP=( ask_76 + TakeProfit * point);
      int ticket=-1;
      ticket=OrderSend(Symbol(),OP_BUY,Lots,price,Slippage*Q,0,0,"",MagicNumber,0,Blue);
      if(ticket>-1)
      {
       bool select=OrderSelect(ticket,SELECT_BY_TICKET);
       bool ret=OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,Red);
      }  
      if(UseSound)PlaySound("Alert.wav");
      Time0=iTime(Symbol(),0,0);
      }
     }
    }
    //+---------------------------------------------------------------------------------+
    void Sell()
    {
     double ask_76 = MarketInfo(Symbol(), MODE_ASK);
     double bid_84 = MarketInfo(Symbol(), MODE_BID);
     double price=NormalizeDouble(Bid,digits);
      if ((order_takeprofit > bid_84 - TakeProfit * point) && OrderOpenPrice() - ask_76 > VALL &&Time0!=iTime(Symbol(),0,0)) {
      SL =(ask_76 + StopLoss * point+ AddPriceGap);
      TP =(bid_84 - TakeProfit * point);
      if(orderscnt(OP_SELL)<1){
      int ticket=-1;
      ticket= OrderSend(Symbol(),OP_SELL,Lots,price,Slippage*Q,0,0,"",MagicNumber,0,Red);
      if(ticket>-1)
      {
       bool select=OrderSelect(ticket,SELECT_BY_TICKET);
       bool ret=OrderModify(OrderTicket(),OrderOpenPrice(),SL,TP,0,Red);
      }  
      if(UseSound)PlaySound("Alert.wav");
      Time0=iTime(Symbol(),0,0); 
     } 
    }
    }
    الخطأ لديك في هذا الجزء
    كود PHP:
    double LastOrder(string info,int type=-1)

     for(
    int i=OrdersHistoryTotal();i>=0;i--) 
     { 
      
    bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); 
      
    string sy=OrderSymbol(); 
      
    int    ot=OrderType(), 
             
    mn=OrderMagicNumber(); 
      
    double pt=OrderProfit(); 
      
    double sl=OrderStopLoss();        
      if(
    sy==Symbol()&&mn==MagicNumber&&(ot==type||type==-1)) 
      { 
       if(
    info=="Type")return(ot); 
      if(
    info=="Profit")return(pt);  
      } 
     } 
     return(
    0); 
    }        
     
    double order_stoploss OrderStopLoss();
     
    double order_takeprofit OrderTakeProfit();
    //+------------------------------------------------------------------+
    //| Expert tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()

      if(
    LastOrder("Type")==OP_BUY&&LastOrder("Profit",OP_BUY)>0)Buy(); 
      if(
    LastOrder("Type")==OP_BUY&&LastOrder("Profit",OP_BUY)>0)Buy(); 
      if(
    LastOrder("Type")==OP_SELL&&LastOrder("Profit",OP_SELL)>0)Sell();
      if(
    LastOrder("Type")==OP_SELL&&LastOrder("Profit",OP_SELL)>0)Sell();

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

  11. #9311
    الصورة الرمزية mohamed2012
    mohamed2012 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Feb 2016
    الإقامة
    مصر
    المشاركات
    66

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    الخطأ لديك في هذا الجزء
    كود PHP:
    double LastOrder(string info,int type=-1)

     for(
    int i=OrdersHistoryTotal();i>=0;i--) 
     { 
      
    bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); 
      
    string sy=OrderSymbol(); 
      
    int    ot=OrderType(), 
             
    mn=OrderMagicNumber(); 
      
    double pt=OrderProfit(); 
      
    double sl=OrderStopLoss();        
      if(
    sy==Symbol()&&mn==MagicNumber&&(ot==type||type==-1)) 
      { 
       if(
    info=="Type")return(ot); 
      if(
    info=="Profit")return(pt);  
      } 
     } 
     return(
    0); 
    }        
     
    double order_stoploss OrderStopLoss();
     
    double order_takeprofit OrderTakeProfit();
    //+------------------------------------------------------------------+
    //| Expert tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()

      if(
    LastOrder("Type")==OP_BUY&&LastOrder("Profit",OP_BUY)>0)Buy(); 
      if(
    LastOrder("Type")==OP_BUY&&LastOrder("Profit",OP_BUY)>0)Buy(); 
      if(
    LastOrder("Type")==OP_SELL&&LastOrder("Profit",OP_SELL)>0)Sell();
      if(
    LastOrder("Type")==OP_SELL&&LastOrder("Profit",OP_SELL)>0)Sell();

    أشكرك أستاذ اسامة
    اعتقد ان حضرتك نسيت ان تضيف التعريف للخسارة ()OrderStopLoss وايضا تعرفها داخل دالة ()void OnTick لأن كلها Profit وهى للمكسب فقط
    لأنى اريد فى حالة الخسارة أذا كانت الصفقة شراء وضربت استوب يأخذ شراء أخر مباشرة ونفس الشىء للبيع

    هناك أستفسار مهم أستاذ أسامة : ()OrderProfit وهى لمعرفة الصفقة الرابحة التى أقفلت -- و() OrderTakeProfit هى معرفة قيمة السعر الموجود حاليا على الشارت لأخذ
    الربح
    () OrderStopLoss هل هى لمعرفة قيمة السعر الموجود على الشارت لوقف الخسارة أم لمعرفة الصفقة الخاسرة التى اقفلت
    () OrderOpenPrice وهى قيمة السعر للصفقة المفتوحة حاليا

    أعتذر لحضرتك لكثرة أسئلتى
    الكود بعد ما اضفت تعريف الصفقات الخاسرة هل صحيح
    كود:
     int orderscnt(int type)
     {
     int cnt=0;
       for(int i =0;i<OrdersTotal();i++){
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
           if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()==type){
             cnt++;
           }
         }
       }
        return(cnt);
      }
    double LastOrder(string info,int type=-1)
    { 
     for(int i=OrdersHistoryTotal();i>=0;i--) 
     { 
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); 
      string sy=OrderSymbol(); 
      int    ot=OrderType(), 
             mn=OrderMagicNumber(); 
      double pt=OrderProfit(); 
      double sl=OrderStopLoss();        
      if(sy==Symbol()&&mn==MagicNumber&&(ot==type||type==-1)) 
      { 
       if(info=="Type")return(ot); 
      if(info=="Profit")return(pt);  
       if(info=="LOSS")return(sl);    // هذا ما تم أضافتة
      } 
     } 
     return(0); 
    }        
     
     double order_takeprofit = OrderTakeProfit();
    //+------------------------------------------------------------------+
    //| Expert tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
    { 
      if(LastOrder("Type")==OP_BUY&&LastOrder("Profit",OP_BUY)>0)Buy(); 
      if(LastOrder("Type")==OP_BUY&&LastOrder("LOSS",OP_BUY)>0)Buy();      //    وهنا ايضا
      if(LastOrder("Type")==OP_SELL&&LastOrder("Profit",OP_SELL)>0)Sell();
      if(LastOrder("Type")==OP_SELL&&LastOrder("LOSS",OP_SELL)>0)Sell();    //  وهنا ايضا
    }

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

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة mohamed2012 مشاهدة المشاركة
    أشكرك أستاذ اسامة
    اعتقد ان حضرتك نسيت ان تضيف التعريف للخسارة ()OrderStopLoss وايضا تعرفها داخل دالة ()void OnTick لأن كلها Profit وهى للمكسب فقط
    لأنى اريد فى حالة الخسارة أذا كانت الصفقة شراء وضربت استوب يأخذ شراء أخر مباشرة ونفس الشىء للبيع

    هناك أستفسار مهم أستاذ أسامة : ()OrderProfit وهى لمعرفة الصفقة الرابحة التى أقفلت -- و() OrderTakeProfit هى معرفة قيمة السعر الموجود حاليا على الشارت لأخذ
    الربح
    () OrderStopLoss هل هى لمعرفة قيمة السعر الموجود على الشارت لوقف الخسارة أم لمعرفة الصفقة الخاسرة التى اقفلت
    () OrderOpenPrice وهى قيمة السعر للصفقة المفتوحة حاليا

    أعتذر لحضرتك لكثرة أسئلتى
    الكود بعد ما اضفت تعريف الصفقات الخاسرة هل صحيح
    كود:
     int orderscnt(int type)
     {
     int cnt=0;
       for(int i =0;i<OrdersTotal();i++){
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
           if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()==type){
             cnt++;
           }
         }
       }
        return(cnt);
      }
    double LastOrder(string info,int type=-1)
    { 
     for(int i=OrdersHistoryTotal();i>=0;i--) 
     { 
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); 
      string sy=OrderSymbol(); 
      int    ot=OrderType(), 
             mn=OrderMagicNumber(); 
      double pt=OrderProfit(); 
      double sl=OrderStopLoss();        
      if(sy==Symbol()&&mn==MagicNumber&&(ot==type||type==-1)) 
      { 
       if(info=="Type")return(ot); 
      if(info=="Profit")return(pt);  
       if(info=="LOSS")return(sl);    // هذا ما تم أضافتة
      } 
     } 
     return(0); 
    }        
     
     double order_takeprofit = OrderTakeProfit();
    //+------------------------------------------------------------------+
    //| Expert tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
    { 
      if(LastOrder("Type")==OP_BUY&&LastOrder("Profit",OP_BUY)>0)Buy(); 
      if(LastOrder("Type")==OP_BUY&&LastOrder("LOSS",OP_BUY)>0)Buy();      //    وهنا ايضا
      if(LastOrder("Type")==OP_SELL&&LastOrder("Profit",OP_SELL)>0)Sell();
      if(LastOrder("Type")==OP_SELL&&LastOrder("LOSS",OP_SELL)>0)Sell();    //  وهنا ايضا
    }
    هذا هو اللبس عندك أخي الكريم
    OrderProfit تعود بناتج الصفقه بالدولار سواء كان مكسب أو خساره وليس المكسب فقط
    OrderStopLoss تعود بسعر وقف الخساره للصفقه
    توقيع العضو
    بناء أنظمة تداول آلي ويدوي لفحص سوق العملات ودمجها مع التحليل الفني لإتخاذ القرارات

  13. #9313
    الصورة الرمزية mohamed2012
    mohamed2012 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Feb 2016
    الإقامة
    مصر
    المشاركات
    66

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة MR.dollar مشاهدة المشاركة
    هذا هو اللبس عندك أخي الكريم
    OrderProfit تعود بناتج الصفقه بالدولار سواء كان مكسب أو خساره وليس المكسب فقط
    OrderStopLoss تعود بسعر وقف الخساره للصفقه
    شكرا لك استاذ اسامة
    استاذن حضرتك ان تكتب لى الكود الصحيح وشروطة موضحة فى المشاركة السابقة وايضا الشروط فى دالة start
    ولك جزيل الشكر
    آخر تعديل بواسطة mohamed2012 ، 03-09-2018 الساعة 06:21 PM

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

    افتراضي

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

  15. #9315
    الصورة الرمزية تساهيل
    تساهيل غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Aug 2012
    الإقامة
    الكويت
    المشاركات
    166

    افتراضي حل مشكلة التكرار

    السلام عليكم
    لدي اكسبريت بسيط
    يعطيني اشارة اذا كان الفرق بين الهاي واللو اليومي اكبر 38 نقطة على فريم اليومي
    والمسافة ما بين الموفنغ والسعر الحالي اكبر من 20 نقطة على فريم الربع ساعة
    المشكلة ان الاكسبريت يرسل تنبيهات مع كل حركة للسعر
    والمطلوب ان التنبيه يكون مره واحده فقط في اليوم
    مع اني وضعت دالة Time[ ] ولكنها لا تعمل
    اعتقد وجود خطأ في فاصله او قوس أو ما شابه
    اذا تفضل أحد الاخوة بالتعديل ليكون التنبيه مره واحده فقط خلال اليوم الواحد
    وشكرا جزيلا
    مرفق الاكسبريت والكود
    كود PHP:
     double iHigh[];
     
    double iLow[] ;
     
    extern datetime onetime 0;
     
    extern datetime Time0 0;
     
    bool SendNotification ;
     
    extern double EMA1 100;



    //+------------------------------------------------------------------+
    //| Expert initialization function                                   |
    //+------------------------------------------------------------------+
    int OnInit()
      {
    //---
       //---
       
    return(INIT_SUCCEEDED);
      }
    //+------------------------------------------------------------------+
    //| Expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
      {
    //---
         
    }
    //+------------------------------------------------------------------+
    //| Expert tick function                                             |
    //+------------------------------------------------------------------+
    void OnTick()
      {
           
    double  EMA1_M1=iMA(NULL,0,EMA1,0,1,2,1);
        
        
       if ( 
    iHigh(Symbol(),PERIOD_D1,0)- iLow(Symbol(),PERIOD_D1,0) > 0.00380 &&  Close[0] > (EMA1_M1+0.00200) && Time0 !=Time[0])
      {  
    Time0=Time[0];
      Print  (
    "GBPUSD>38>20");
      }
        
        
    //--SendNotification
            
          
             
             
      
      
    //---
       
      

    الصور المصغرة للصور المرفقة الصور المصغرة للصور المرفقة 21.jpg‏  
    الملفات المرفقة الملفات المرفقة
    توقيع العضو
    قناعة + صبر+ ادارة سليمة = تداول ناجح

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

  1. موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
    By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EA
    مشاركات: 11
    آخر مشاركة: 15-12-2023, 02:03 PM
  2. عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
    By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملات
    مشاركات: 280
    آخر مشاركة: 27-08-2009, 10:30 PM

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


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