Quran 24/7 الموضوع المخصص للأسئلة البرمجية mql4 - الصفحة 246



صفحة 246 من 258 الأولىالأولى ... 146196236244245246247248256 ... الأخيرةالأخيرة
النتائج 2,451 إلى 2,460 من 2572

الموضوع: الموضوع المخصص للأسئلة البرمجية mql4

  1. #2451

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة sabil مشاهدة المشاركة
    اخي حسن
    بحاول احسب المسافة بين البيع والشراء الاول وعلى اساسها تكون المسافة المعتمدة بين صفقات البيع والشراء لاحقاً
    عن طريق الدوال التالية :
    الاول عملت متغير يحسب المسافة

    كود:
     double dis_h2=(LastOrder("Price","Aymoon-h2",OP_BUY)-LastOrder("Price","Aymoon-h2",OP_SELL));
    ثانيا في شروط الدخول عملت الاتي :

    كود:
     if(Orderscnt("Aymoon-h2")<MaxTrades) {
      if(Orderscnt("Aymoon-h2",OP_BUY)>0&&Orderscnt("Aymoon-h2",OP_SELL)>0&&LastOrder("Type","Aymoon-h2")==OP_BUY)
      {
       if(Ask<=LastOrder("Price","Aymoon-h2",OP_SELL)-dis_h2)
       {
        if(Stoploss!=0)SL=Bid+Stoploss*point;else SL=0;
        if(Takeprofit!=0)TP=Bid-Takeprofit*point;else TP=0;
        ticket=OrderSend(Symbol(),OP_SELL,NewLots2,NormalizeDouble(Bid,Digits),3*Q,SL,TP,"Aymoon-h2",MagicNo,0,Magenta);
       }
      } 
      if(Orderscnt("Aymoon-h2",OP_BUY)>0&&Orderscnt("Aymoon-h2",OP_SELL)>0&&LastOrder("Type","Aymoon-h2")==OP_SELL)
      {
       if(Bid>=LastOrder("Price","Aymoon-h2",OP_BUY)+dis_h2)
       {
        if(Stoploss!=0)SL=Ask-Stoploss*point;else SL=0;
        if(Takeprofit!=0)TP=Ask+Takeprofit*point;else TP=0;
        ticket=OrderSend(Symbol(),OP_BUY,NewLots2,NormalizeDouble(Ask,Digits),3*Q,SL,TP,"Aymoon-h2",MagicNo,0,Green);
       }
      } 
     }
    لكن الل بيحصل ايه
    الاول بيفتح بيع عادي طبقا لشروط معينة انا عاملها ولما السعر يعكس المفروض انه يفتح شراء واحد فقط طبقا لشروط معينة ايضا وعلى اساسها يحسب المسافة بين الامرين ثم يفتح شراء وبيع طبقا للمسافات دي

    لكن الل بيحصل انه بيفتح 3 اوردرات بعد البيع الاول (2 شراء وواحد بيع من نفس السعر ونفس اللوت) بعد توافق شروط الشراء

    المشكلة فين هنا؟
    السلام عليكم
    الصحيح كالتالي:
    كود:
     double dis_h2=MathAbs(FirstPrice("Aymoon-h2",OP_BUY)-FirstPrice("Aymoon-h2",OP_SELL));
     
     if(MaxTrades>0&&Orderscnt("Aymoon-h2")<MaxTrades&&Orderscnt("Aymoon-h2",OP_BUY)>0&&Orderscnt("Aymoon-h2",OP_SELL)>0) 
     {
      if(LastOrder("Type","Aymoon-h2")==OP_BUY&&Ask<=LastOrder("Price","Aymoon-h2",OP_BUY)-dis_h2)
      {
       if(Stoploss!=0)SL=Bid+Stoploss*point;else SL=0;
       if(Takeprofit!=0)TP=Bid-Takeprofit*point;else TP=0;
       ticket=OrderSend(Symbol(),OP_SELL,NewLots2,Bid,3*Q,SL,TP,"Aymoon-h2",MagicNo,0,Magenta);
      } 
      if(LastOrder("Type","Aymoon-h2")==OP_SELL&&Bid>=LastOrder("Price","Aymoon-h2",OP_SELL)+dis_h2)
      {
       if(Stoploss!=0)SL=Ask-Stoploss*point;else SL=0;
       if(Takeprofit!=0)TP=Ask+Takeprofit*point;else TP=0;
       ticket=OrderSend(Symbol(),OP_BUY,NewLots2,Ask,3*Q,SL,TP,"Aymoon-h2",MagicNo,0,Green);
      } 
     }
     
    double FirstPrice(string comment,int type) 
    {
     for(int i=0;i<OrdersTotal();i++)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      string   sy=OrderSymbol(),
               cm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   op=OrderOpenPrice();                   
      if(sy==Symbol()&&mn==MagicNo&&cm==comment)
      {
       if(ty==type)return(op);
      } 
     }
     return(0);
    }

  2. #2452
    عضو جديد
    تاريخ التسجيل
    Jul 2018
    المشاركات
    99

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة kira-h مشاهدة المشاركة


    في هذه الحالة يكفي استخدام عقد واحد عند كل مستوى، سيكون اكثر دقة في التنفيذ وسهل برمجيا
    اما إذا تريد مضاعفات التبريد فهذا موضوع آخر!



    حاولت تصحيح الأخطاء ومعظمها غير واضحة منطقيا لأني لا اعلم ما تريده من الاكسبيرت
    الكود مع بعض التعليقات
    كود:
    //+------------------------------------------------------------------+
    //|                                                     ScalperV1.mq4 |
    //|                   Copyright 2005-2014, MetaQuotes Software Corp. |
    //|                                              https://www.mql4.com |
    //+------------------------------------------------------------------+
    #property copyright   "2005-2014, MetaQuotes Software Corp."
    #property link        "https://www.mql4.com"
    #property description "ScalperV1 expert advisor"
    
    
    enum OrdersTy 
    { 
       BuyOnly=0,      
       SellOnly=1,     
       BuySellBoth=2,  
    }; 
    
    
    input OrdersTy OrdersT = 2;
    extern double  LotsBuy = 0.01;
    extern double  LotsSell = 0.01;
    extern int MaxSpread  = 4;
    input bool  CloseAtNext=false;
    extern int MaxTrades= 2; 
    extern int GapSize  = 0;
    extern int StopLoss  = 0;
    extern int TakeProfit  = 0;
    extern int TrailingStop=0;
    extern  int TrailingStep=0;
    extern int BreakEven=0;
    input int BreakEvenPips=0;
    extern int USDP=0;
    extern int USDL=0;  
    extern int MagicNumber   = 555555;
    
    
    
    
    //---------     
    
    
    
    
    double       LotsB_1=0.02,
                 LotsB_2=0.03,
                 LotsB_3=0.04,
                 LotsB_4=0.05,
                 LotsB_5=0.06,
                 LotsB_6=0.07,
                 LotsB_7=0.08,
                 LotsB_8=0.09,
                 LotsB_9=0.1,
                 LotsB_10=0.11,
                 LotsB_11=0.12,
                 LotsB_12=0.13,
                 LotsB_13=0.14,
                 LotsB_14=0.15,
                 LotsB_15=0.16,
                 LotsB_16=0.17,
                 LotsB_17=0.18,
                 LotsB_18=0.19,
                 LotsB_19=0.20,
                 LotsB_20=0.21;  
                 
                 
                 
    double       LotsS_1=1.1,
                 LotsS_2=2.0,
                 LotsS_3=3.0,
                 LotsS_4=4.0,
                 LotsS_5=5.0,
                 LotsS_6=6.0,
                 LotsS_7=7.0,
                 LotsS_8=8.0,
                 LotsS_9=9.0,
                 LotsS_10=10.0,
                 LotsS_11=11.0,
                 LotsS_12=12.0,
                 LotsS_13=13.0,
                 LotsS_14=14.0,
                 LotsS_15=15.0,
                 LotsS_16=16.0,
                 LotsS_17=17.0,
                 LotsS_18=18.0,
                 LotsS_19=19.0,
                 LotsS_20=20.0; 
                                                       
    
    
    
    
    
    
    int CheckStep = GapSize;             
                 
     int EMA1 = 50;
     int EMA2 = 100;
    ENUM_APPLIED_PRICE apply1 = PRICE_CLOSE;
    ENUM_APPLIED_PRICE apply2 = PRICE_CLOSE;
    
    
    
    
    double buyMM = 2;
    double sellMM = 2;
    
    
    
    
    string commentSell, commentBuy, NewLotsSell, NewLotsBuy;
    double p,SL,TP,NewLots;
    int    LimitBuy, LimitSell;
    double lotaB,lotaS,LB,LS;
    double UT1, DW1,point;
    int      Q,digits;
    
    
    
    
    datetime time=0;
    datetime BarTime;
    
    
     double chain[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};  
     double chain2[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};  
     
    
    
    void OnInit()
    {
     
     
     
      if(Digits==4 || Digits<=2) point=Point;
       if(Digits==5 || Digits==3) point=Point*10;
       
         
    
    
    }
    
    
    
    
    //+------------------------------------------------------------------+
    //| OnTick function                                                  |
    //+------------------------------------------------------------------+
    void OnTick()
    {
           
    
    
     if(TrailingStop>0)MoveTrailingStop();
       if(BreakEven>0)MoveBreakEven();
               if((USDP!=0&&Profit_By_USD()>=USDP)
                   ||(USDL!=0&&Profit_By_USD()<=-USDL)){CloseOrders();} 
                              
    
    
       if(Bars<100 || IsTradeAllowed()==false) return;
          
    double Fast_1=iMA(NULL,0,EMA1,50,MODE_SMMA,apply1,0);
    double Fast_2=iMA(NULL,0,EMA2,200,MODE_SMMA,apply2,0);
       
       
     chain[1]=LotsB_1; 
     chain[2]=LotsB_2; 
     chain[3]=LotsB_3; 
     chain[4]=LotsB_4; 
     chain[5]=LotsB_5; 
     chain[6]=LotsB_6; 
     chain[7]=LotsB_7; 
     chain[8]=LotsB_8; 
     chain[9]=LotsB_9;
     chain[10]=LotsB_10; 
     chain[11]=LotsB_11; 
     chain[12]=LotsB_12; 
     chain[13]=LotsB_13; 
     chain[14]=LotsB_14; 
     chain[15]=LotsB_15; 
     chain[16]=LotsB_16; 
     chain[17]=LotsB_17; 
     chain[18]=LotsB_18; 
     chain[19]=LotsB_19; 
     chain[20]=LotsB_20;
    
    
     chain2[1]=LotsS_1; 
     chain2[2]=LotsS_2; 
     chain2[3]=LotsS_3; 
     chain2[4]=LotsS_4; 
     chain2[5]=LotsS_5; 
     chain2[6]=LotsS_6; 
     chain2[7]=LotsS_7; 
     chain2[8]=LotsS_8; 
     chain2[9]=LotsS_9;
     chain2[10]=LotsS_10; 
     chain2[11]=LotsS_11; 
     chain2[12]=LotsS_12; 
     chain2[13]=LotsS_13; 
     chain2[14]=LotsS_14; 
     chain2[15]=LotsS_15; 
     chain2[16]=LotsS_16; 
     chain2[17]=LotsS_17; 
     chain2[18]=LotsS_18; 
     chain2[19]=LotsS_19; 
     chain2[20]=LotsS_20;
     
    if(Orderscnt(OP_BUY)>0&&Ask<=LastPrice(OP_BUY)-CheckStep*point)
    if(Orderscnt(OP_SELL)>0&&Bid>=LastPrice(OP_SELL)+CheckStep*point)
    
    
     /// كل شروط المضاعفات خاطئة تماما ليس لها منطق 
     //لأنك تستخدم التبريدات وهنا مضاعفات الصفقة المغلقة!!!
     
     if(LastPrice(OP_BUY)/*<==شرط ليس له معنى*/&&(Closed("Profit")<=0))
     if(Closed("Profit")>=0&&(HistoryOrders()==0||(HistoryOrders()>0)))NewLots=LotsBuy;///<==?? جواب الشرط يليه جواب اخر بالاسفل لن يعمل بهذه الطريقة
     {
      NewLotsBuy=chain[LEVEL()+1];
      commentBuy=DoubleToStr(LEVEL()+1,0);
     }
     if(LastOrder("Profit")>=0){NewLotsBuy=LotsBuy;commentBuy="0";} 
    
    
    
    
     if(LastPrice(OP_SELL)/*<==شرط ليس له معنى*/&&(Closed("Profit")<=0))
     {
      NewLotsSell=chain2[LEVEL2()+1];
      commentSell=DoubleToStr(LEVEL2()+1,0);
     }
     if(LastOrder("Profit")>=0){NewLotsSell=LotsSell;commentSell="0";} 
     
     
       //شروط التبريد 
     
         if((OrdersT==BuyOnly||OrdersT==BuySellBoth)&&TotalOrders(OP_BUY)<MaxTrades
         &&Orderscnt(OP_BUY)>0&&Ask<=LastPrice(OP_BUY)-CheckStep*point)
         {   
          if(StopLoss!=0){SL=Ask-StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Ask+TakeProfit*point;}else TP=0;             
          int rBuy2=OrderSend(Symbol(),OP_BUY,LotsBuy/*استخدمت اللوت الأساسي لأن شروط المضاعفات خاطئة*/,Ask,3*Q,SL,TP,commentBuy,MagicNumber,0,Blue); 
         } 
       
       
       if((OrdersT==SellOnly||OrdersT==BuySellBoth)&&TotalOrders(OP_SELL)<MaxTrades
         &&Orderscnt(OP_SELL)>0&&Bid>=LastPrice(OP_SELL)+CheckStep*point)
         {
          if(StopLoss!=0){SL=Bid+StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Bid-TakeProfit*point;}else TP=0;
          int rSell2=OrderSend(Symbol(),OP_SELL,LotsSell,Bid,3*Q,SL,TP,commentSell,MagicNumber,0,Red);
         }
           
       //buy
     
       if(Ask >= (DW1 + buyMM * GapSize * point)) 
       {    
          UT1 = Fast_2;
          sellMM = 2;
          buyMM++; 
         if(CloseAtNext)CloseDeleteOrders(OP_SELL);
         
         if((OrdersT==BuyOnly||OrdersT==BuySellBoth)
         &&(Ask-Bid)<=MaxSpread*point&&Orderscnt(OP_BUY)==0&&time!=Time[0])
         {   
          if(StopLoss!=0){SL=Ask-StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Ask+TakeProfit*point;}else TP=0;             
          int rBuy1=OrderSend(Symbol(),OP_BUY,LotsBuy/*استخدمت اللوت الأساسي لأن شروط المضاعفات خاطئة*/,Ask,3*Q,SL,TP,commentBuy,MagicNumber,0,Blue); 
          if(rBuy1>0)time=Time[0]; 
         } 
        }      
     
       
       
       
       //sell
       
       if (Bid <= (UT1 - sellMM * GapSize * point))    
       {
          DW1 = Fast_1; 
          buyMM = 2;
          sellMM++;
    
    
          
         if((OrdersT==SellOnly||OrdersT==BuySellBoth)&&TotalOrders(OP_SELL)<MaxTrades
         &&(Ask-Bid)<=MaxSpread*point&&Orderscnt(OP_SELL)==0&&time!=Time[0])
         {
          if(StopLoss!=0){SL=Bid+StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Bid-TakeProfit*point;}else TP=0;
          int rSell1=OrderSend(Symbol(),OP_SELL,LotsSell,Bid,3*Q,SL,TP,commentSell,MagicNumber,0,Red);
          if(rSell1>0)time=Time[0]; 
         }
        }
    
    
    }
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS                                             |
    //+------------------------------------------------------------------+ 
    
    
    
    
    void line(string name, double pr1,color clrr, int style)
    {
       if(ObjectFind(name) != 0)
       {
          ObjectCreate(name, OBJ_HLINE, 0, 0,pr1);
          ObjectSet(name, OBJPROP_COLOR, clrr);
          ObjectSet(name, OBJPROP_STYLE, style);
       } 
       else if(ObjectGet(name,OBJPROP_PRICE1)!=pr1)
       {
          ObjectDelete(name);
       }
    }
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS           Trailing Stop                     |
    //+------------------------------------------------------------------+ 
    
    
    
    
    void MoveTrailingStop()
    {
       
       for(int cnt=0;cnt<OrdersTotal();cnt++)
       {
          if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
          if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
          {
             if(OrderType()==OP_BUY)
             {
                if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,Digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*point,Digits))  
                {                 
                   if((NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(Bid-TrailingStop*point,Digits))||(OrderStopLoss()==0))
                   {
                      bool mm=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,Digits),OrderTakeProfit(),0,Blue);
                    
                   }
                }
             }
             else 
             {
                if(TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,Digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,Digits))  
                {                 
                   if((NormalizeDouble(OrderStopLoss(),Digits)>(NormalizeDouble(Ask+TrailingStop*point,Digits)))||(OrderStopLoss()==0))
                   {
                      bool mnm=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,Digits),OrderTakeProfit(),0,Red);
                    
                   }
                }
             }
          }
       }
    }
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS          Break Even                         |
    //+------------------------------------------------------------------+ 
    
    
    
    
    void MoveBreakEven() 
    {
       int cnt,total=OrdersTotal();
       for(cnt=0;cnt<total;cnt++)
       {
          if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
          if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
          {
             if(OrderType()==OP_BUY)
             {
                if(BreakEven>0)
                {
                   if(NormalizeDouble((Bid-OrderOpenPrice()),Digits)>BreakEven*point)
                   {
                      if(NormalizeDouble((OrderStopLoss()-OrderOpenPrice()),Digits)<0||(OrderStopLoss()==0))
                      {
                         bool mm=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+BreakEvenPips*point,Digits),OrderTakeProfit(),0,Blue);
                      
                      }
                   }
                }
             }
             else
             {
                if(BreakEven>0)
                {
                   if(NormalizeDouble((OrderOpenPrice()-Ask),Digits)>BreakEven*point)
                   {
                      if(NormalizeDouble((OrderOpenPrice()-OrderStopLoss()),Digits)<0||(OrderStopLoss()==0))
                      {
                         bool nn=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-BreakEvenPips*point,Digits),OrderTakeProfit(),0,Red);
                   
                      }
                   }
                }
             }
          }
       }
    }
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS  To Know The Profit Of Open Positions       |
    //+------------------------------------------------------------------+ 
    
    
    
    
    double Profit_By_USD(int type=-1)  
    {
     double pts;
     for(int i=0;i<OrdersTotal();i++) 
     {
      bool s=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ot=OrderType();
      double pt=OrderProfit(),
             sw=OrderSwap(),
             cm=OrderCommission();  
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ot==type||type==-1)
       {
        pts+=pt+sw+cm;
       }
      }
     }  
     return(pts);
    }  
    
    
     
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS         Closing Trades Together             |
    //+------------------------------------------------------------------+ 
    
    
    
    
    void CloseOrders(int type=-1) 
    {
     bool select,close,del;
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrdersTotal()>0&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
      {
       if(OrderType()==type||type==-1)
       {
        if(OrderType()==OP_BUY){close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5*Q);}
        if(OrderType()==OP_SELL){close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),5*Q);}
        if(OrderType()>OP_SELL){del=OrderDelete(OrderTicket());}
       } 
      }
     }
    }  
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS         To Know Total Orders                |
    //+------------------------------------------------------------------+ 
     
     
    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()&&MagicNumber==OrderMagicNumber()&&OrderType()==type)
       {
        cnt++;
       }
      }
     }
     return(cnt);
    }  
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS       Close Delete Orders                   |
    //+------------------------------------------------------------------+ 
    
    
    void CloseDeleteOrders(int type)
    {
     bool select,close;
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrdersTotal()>0&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
       if(OrderType()==type)
       {
        if(OrderType()==OP_BUY)  
        {
         close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5*Q);      
        }
        if(OrderType()==OP_SELL)  
        {
         close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),5*Q);
        }
        if(OrderType()>OP_SELL)   
        {
         close=OrderDelete(OrderTicket());
        }
       } 
      }
     }
    
    
    
    
    //دالة تعود بسعر آخر صفقة مفتوحة بدلالة نوعها
    double LastPrice(int type)
    {
     int cnt;
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
      {
       cnt++;
       if(cnt>=2)
       return(OrderOpenPrice());
      }
     }
     return(0);
    }  
    
    
    
    
    
    
    /*
    //دالة اغلاق الصفقات بدلالة النوع
    void CloseOrders(int type=-1)
    {
     bool select,close;
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      string sy=OrderSymbol();
      int    tt=OrdersTotal(),
             tk=OrderTicket(),
             ot=OrderType(),
             mn=OrderMagicNumber();
      double lo=OrderLots();
      if(tt>0&&sy==Symbol()&&mn==MagicNumber)
      {
       if(ot==type||type==-1)
       {
        if(ot==OP_BUY){close=OrderClose(tk,lo,NormalizeDouble(Bid,Digits),5*Q);}
        if(ot==OP_SELL){close=OrderClose(tk,lo,NormalizeDouble(Ask,Digits),5*Q);}
        if(ot>OP_SELL){close=OrderDelete(tk);}
       } 
      }
     }
    }
    */
    
    
    //دالة لمعرفة نوع آخر صفقة مغلقة
    int LastType()
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ty=OrderType();      
      if(sy==Symbol()&&mn==MagicNumber)
      {
       return(ty); 
      }
     }
     return(0);
    }
    
    
    
    
    
    
    //دالة لمعرفة توقيت اغلاق آخر صفقة بدلالة نوعها
    
    
    datetime LastTime(int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ty=OrderType();
      double pt=OrderProfit();
      datetime ct=OrderCloseTime();         
      if(sy==Symbol()&&mn==MagicNumber&&(ty==type||type==-1))
      {
       return(ct); 
      }
     }
     return(0);
    }
    
    
    
    
    
    
    //دالة لمعرفة ربح آخر صفقة مغلقة بدلالة نوعها
    
    
    double LastProfit(string info,int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ty=OrderType();
      double pt=OrderProfit();
      datetime ct=OrderCloseTime();         
      if(sy==Symbol()&&mn==MagicNumber&&(ty==type||type==-1))
      {
      if(info=="Profit")return(pt);
       
      }
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    datetime FirstClose()
    {
      for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool     select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots();
      datetime om=OrderOpenTime();    
      if(sy==Symbol()&&mn==MagicNumber&&lo==LotsBuy)
        if(sy==Symbol()&&mn==MagicNumber&&lo==LotsSell)
      {
       return(om);
      }
     }
     return(0);
    }
    
    
    
    
    
    
    double TotalProfit() 
    {
     double pts=0;
     for(int i=0;i<OrdersHistoryTotal();i++) 
     {
      bool     s=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol();
      int      mn=OrderMagicNumber();
      double   pt=OrderProfit(),
               sw=OrderSwap(),
               cm=OrderCommission();  
      datetime om=OrderCloseTime();
             
      if(sy==Symbol()&&mn==MagicNumber&&om>FirstClose())
      {
       pts+=pt+sw+cm;
      }
     }  
     return(pts);
    }
    
    
    
    
    
    
    double LastOrder(string info,int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol(),
               mm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots(),
               op=OrderOpenPrice(),
               cp=OrderClosePrice(),
               pt=OrderProfit(),
               tp=OrderTakeProfit(),
               sl=OrderStopLoss();  
      datetime om=OrderOpenTime(),
               cm=OrderCloseTime();
                        
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ty==type||type==-1)
       {
        if(info=="Lots")return(lo);
        else if(info=="OpenPrice")return(op);
        else if(info=="ClosePrice")return(cp);
        else if(info=="Profit")return(pt);
        else if(info=="Type")return(ty);
        else if(info=="TP")return(tp);
        else if(info=="SL")return(sl);
        else if(info=="OpenTime")return(om);
        else if(info=="CloseTime")return(cm);
        else if(info=="Comment")return(mm);
       }
      } 
     }
     return(0);
    }  
    
    
     
     
     int TotalOrders(int type=-1)
    {
     int cnt=0;
     for(int i =0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()&&(OrderType()==type||type==-1))
       {
        cnt++;
       }
      }
     }
     return(cnt);
    }
    
    
    
    
      
      
      
    double Closed(string info,int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol(),
               mm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots(),
               pt=OrderProfit(),
               op=OrderOpenPrice(),
               cp=OrderClosePrice(),
               tp=OrderTakeProfit(),
               sl=OrderStopLoss();   
                        
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ty==type||type==-1)
       {
        if(info=="Lots")return(lo);
        else if(info=="Profit")return(pt);
        else if(info=="Type")return(ty);
        else if(info=="OpenPrice")return(op);
        else if(info=="ClosePrice")return(cp);
        else if(info=="TP")return(tp);
        else if(info=="SL")return(sl);
       }
      } 
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    double CurrentLots(int type=-1)
    {
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      string   sy=OrderSymbol(),
               mm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots();  
                        
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ty==type||type==-1)
       {
        return(lo);
       }
      } 
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    int HistoryOrders(int type=-1)
    {
     int cnt=0;
     for(int i =0;i<OrdersHistoryTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
       if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()&&(OrderType()==type||type==-1))
       {
        cnt++;
       }
      }
     }
     return(cnt);
    }
    
    
    
    
    
    
    double LastCurrent(string info,int type=-1)//دالة لمعرفة كل تفاصيل الصفقة المفعلة بدلالة النوع
    {
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&(OrderType()==type||type==-1))
      {
       if(info=="Type")return(OrderType());
       else if(info=="Lots")return(OrderLots());
       else if(info=="Price")return(OrderOpenPrice());
       else if(info=="TP")return(OrderTakeProfit());
       else if(info=="SL")return(OrderStopLoss());
       else if(info=="Profit")return(OrderProfit());
       else if(info=="Time")return(OrderOpenTime());
      }
     }
     return(0);
    }
    
    
    
    
    double LastOrderClosed(string info)//نتيجة آخر صفقة مغلقة والاكبر من حيث توقيت الفتح
    {
     double c=0;
     for(int i=OrdersHistoryTotal()-1;i>=0;i--) 
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()<=OP_SELL) 
      {                        
       if(OrderOpenTime()>c)c=OrderOpenTime();
       if(OrderOpenTime()==c)
       {
        if(info=="Profit")return(OrderProfit());
        else if(info=="Lots")return(OrderLots());
       }
      }  
     }
     return(0);
    }
    
    
    
    
    int Orderscnt()//دالة عدد الصفقات المفتوحة
    {
     int cnt=0;
     for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
       {
        cnt++;//عد الصفقات 
       }
      }
     }
     return(cnt);
    }
    
    
    
    
    
    
    
    
     void CloseAllOrders(int type=-1)
            {
             bool select,close,del;
             for(int i=OrdersTotal()-1;i>=0;i--)
             {
              select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
              string sy=OrderSymbol();
              int    tt=OrdersTotal(),
                     tk=OrderTicket(),
                     ot=OrderType(),
                     mn=OrderMagicNumber();
              double lo=OrderLots();
              if(tt>0)
              {
               if(ot==type||type==-1)
               {
                if(ot==OP_BUY){close=OrderClose(tk,lo,MarketInfo(sy,MODE_BID),50);}  
                if(ot==OP_SELL){close=OrderClose(tk,lo,MarketInfo(sy,MODE_ASK),50);}
                if(ot>OP_SELL){del=OrderDelete(tk);}
               } 
              }
             }
            }
    
    
    
    
    
    
    
    
    int LEVEL()
    { 
     int c; 
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      commentBuy=OrderComment();
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)  
      {              
       StringReplace(commentBuy,"[sl]","");                         
       c=StrToInteger(commentBuy); 
       
       
       return(c);
      }  
     } 
     return(c); 
    }  
    
    
    
    
    
    
    
    
    int LEVEL2()
    { 
     int c; 
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      commentSell=OrderComment(); 
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)  
      {              
        StringReplace(commentSell,"[sl]","");                         
       c=StrToInteger(commentSell); 
       
       
       return(c);
      }  
     } 
     return(c); 
    }

    طيب انا مسحت المضاعفات وبردو الاكسبيرت مش بيشتغل على الطريقه المطلوبه ؟



    الاكسبيرت بيعمل على لوت واحد بس ومش بيفتح صفقات التبريد



    كود:
    //+------------------------------------------------------------------+
    //|                                                     ScalperV1.mq4 |
    //|                   Copyright 2005-2014, MetaQuotes Software Corp. |
    //|                                              https://www.mql4.com |
    //+------------------------------------------------------------------+
    #property copyright   "2005-2014, MetaQuotes Software Corp."
    #property link        "https://www.mql4.com"
    #property description "ScalperV1 expert advisor"
    
    
    enum OrdersTy 
    { 
       BuyOnly=0,      
       SellOnly=1,     
       BuySellBoth=2,  
    }; 
    
    
    input OrdersTy OrdersT = 2;
    extern double  LotsBuy = 0.01;
    extern double  LotsSell = 0.01;
    extern int MaxSpread  = 4;
    input bool  CloseAtNext=false;
    extern int MaxTrades= 2; 
    extern int GapSize  = 0;
    extern int StopLoss  = 0;
    extern int TakeProfit  = 0;
    extern int TrailingStop=0;
    extern  int TrailingStep=0;
    extern int BreakEven=0;
    input int BreakEvenPips=0;
    extern int USDP=0;
    extern int USDL=0;  
    extern int MagicNumber   = 555555;
    
    
    
    
    //---------     
    
    
    
    
    int CheckStep = GapSize;             
                 
     int EMA1 = 50;
     int EMA2 = 100;
    ENUM_APPLIED_PRICE apply1 = PRICE_CLOSE;
    ENUM_APPLIED_PRICE apply2 = PRICE_CLOSE;
    
    
    
    
    double buyMM = 2;
    double sellMM = 2;
    
    
    
    
    string commentSell, commentBuy, NewLotsSell, NewLotsBuy;
    double p,SL,TP,NewLots;
    int    LimitBuy, LimitSell;
    double lotaB,lotaS,LB,LS;
    double UT1, DW1,point;
    int      Q,digits;
    
    
    
    
    datetime time=0;
    datetime BarTime;
    
    
     double chain[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};  
     double chain2[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};  
     
    
    
    void OnInit()
    {
     
     
     
      if(Digits==4 || Digits<=2) point=Point;
       if(Digits==5 || Digits==3) point=Point*10;
       
         
    
    
    }
    
    
    
    
    //+------------------------------------------------------------------+
    //| OnTick function                                                  |
    //+------------------------------------------------------------------+
    void OnTick()
    {
           
    
    
     if(TrailingStop>0)MoveTrailingStop();
       if(BreakEven>0)MoveBreakEven();
               if((USDP!=0&&Profit_By_USD()>=USDP)
                   ||(USDL!=0&&Profit_By_USD()<=-USDL)){CloseOrders();} 
                              
    
    
       if(Bars<100 || IsTradeAllowed()==false) return;
          
    double Fast_1=iMA(NULL,0,EMA1,50,MODE_SMMA,apply1,0);
    double Fast_2=iMA(NULL,0,EMA2,200,MODE_SMMA,apply2,0);
       
     
    if(Orderscnt(OP_BUY)>0&&Ask<=LastPrice(OP_BUY)-CheckStep*point)
    if(Orderscnt(OP_SELL)>0&&Bid>=LastPrice(OP_SELL)+CheckStep*point)
    
     
       //شروط التبريد 
     
         if((OrdersT==BuyOnly||OrdersT==BuySellBoth)&&TotalOrders(OP_BUY)<MaxTrades
         &&Orderscnt(OP_BUY)>0&&Ask<=LastPrice(OP_BUY)-CheckStep*point)
         {   
          if(StopLoss!=0){SL=Ask-StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Ask+TakeProfit*point;}else TP=0;             
          int rBuy2=OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,3*Q,SL,TP,commentBuy,MagicNumber,0,Blue); 
         } 
       
       
       if((OrdersT==SellOnly||OrdersT==BuySellBoth)&&TotalOrders(OP_SELL)<MaxTrades
         &&Orderscnt(OP_SELL)>0&&Bid>=LastPrice(OP_SELL)+CheckStep*point)
         {
          if(StopLoss!=0){SL=Bid+StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Bid-TakeProfit*point;}else TP=0;
          int rSell2=OrderSend(Symbol(),OP_SELL,LotsSell,Bid,3*Q,SL,TP,"",MagicNumber,0,Red);
         }
           
       //buy
     
       if(Ask >= (DW1 + buyMM * GapSize * point)) 
       {    
          UT1 = Fast_2;
          sellMM = 2;
          buyMM++; 
         if(CloseAtNext)CloseDeleteOrders(OP_SELL);
         
         if((OrdersT==BuyOnly||OrdersT==BuySellBoth)
         &&(Ask-Bid)<=MaxSpread*point&&Orderscnt(OP_BUY)==0&&time!=Time[0])
         {   
          if(StopLoss!=0){SL=Ask-StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Ask+TakeProfit*point;}else TP=0;             
          int rBuy1=OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,3*Q,SL,TP,"",MagicNumber,0,Blue); 
          if(rBuy1>0)time=Time[0]; 
         } 
        }      
     
       
       
       
       //sell
       
       if (Bid <= (UT1 - sellMM * GapSize * point))    
       {
          DW1 = Fast_1; 
          buyMM = 2;
          sellMM++;
    
    
          
         if((OrdersT==SellOnly||OrdersT==BuySellBoth)&&TotalOrders(OP_SELL)<MaxTrades
         &&(Ask-Bid)<=MaxSpread*point&&Orderscnt(OP_SELL)==0&&time!=Time[0])
         {
          if(StopLoss!=0){SL=Bid+StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Bid-TakeProfit*point;}else TP=0;
          int rSell1=OrderSend(Symbol(),OP_SELL,LotsSell,Bid,3*Q,SL,TP,"",MagicNumber,0,Red);
          if(rSell1>0)time=Time[0]; 
         }
        }
    
    
    }
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS                                             |
    //+------------------------------------------------------------------+ 
    
    
    
    
    void line(string name, double pr1,color clrr, int style)
    {
       if(ObjectFind(name) != 0)
       {
          ObjectCreate(name, OBJ_HLINE, 0, 0,pr1);
          ObjectSet(name, OBJPROP_COLOR, clrr);
          ObjectSet(name, OBJPROP_STYLE, style);
       } 
       else if(ObjectGet(name,OBJPROP_PRICE1)!=pr1)
       {
          ObjectDelete(name);
       }
    }
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS           Trailing Stop                     |
    //+------------------------------------------------------------------+ 
    
    
    
    
    void MoveTrailingStop()
    {
       
       for(int cnt=0;cnt<OrdersTotal();cnt++)
       {
          if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
          if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
          {
             if(OrderType()==OP_BUY)
             {
                if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,Digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*point,Digits))  
                {                 
                   if((NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(Bid-TrailingStop*point,Digits))||(OrderStopLoss()==0))
                   {
                      bool mm=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,Digits),OrderTakeProfit(),0,Blue);
                    
                   }
                }
             }
             else 
             {
                if(TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,Digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,Digits))  
                {                 
                   if((NormalizeDouble(OrderStopLoss(),Digits)>(NormalizeDouble(Ask+TrailingStop*point,Digits)))||(OrderStopLoss()==0))
                   {
                      bool mnm=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,Digits),OrderTakeProfit(),0,Red);
                    
                   }
                }
             }
          }
       }
    }
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS          Break Even                         |
    //+------------------------------------------------------------------+ 
    
    
    
    
    void MoveBreakEven() 
    {
       int cnt,total=OrdersTotal();
       for(cnt=0;cnt<total;cnt++)
       {
          if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
          if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
          {
             if(OrderType()==OP_BUY)
             {
                if(BreakEven>0)
                {
                   if(NormalizeDouble((Bid-OrderOpenPrice()),Digits)>BreakEven*point)
                   {
                      if(NormalizeDouble((OrderStopLoss()-OrderOpenPrice()),Digits)<0||(OrderStopLoss()==0))
                      {
                         bool mm=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+BreakEvenPips*point,Digits),OrderTakeProfit(),0,Blue);
                      
                      }
                   }
                }
             }
             else
             {
                if(BreakEven>0)
                {
                   if(NormalizeDouble((OrderOpenPrice()-Ask),Digits)>BreakEven*point)
                   {
                      if(NormalizeDouble((OrderOpenPrice()-OrderStopLoss()),Digits)<0||(OrderStopLoss()==0))
                      {
                         bool nn=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-BreakEvenPips*point,Digits),OrderTakeProfit(),0,Red);
                   
                      }
                   }
                }
             }
          }
       }
    }
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS  To Know The Profit Of Open Positions       |
    //+------------------------------------------------------------------+ 
    
    
    
    
    double Profit_By_USD(int type=-1)  
    {
     double pts;
     for(int i=0;i<OrdersTotal();i++) 
     {
      bool s=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ot=OrderType();
      double pt=OrderProfit(),
             sw=OrderSwap(),
             cm=OrderCommission();  
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ot==type||type==-1)
       {
        pts+=pt+sw+cm;
       }
      }
     }  
     return(pts);
    }  
    
    
     
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS         Closing Trades Together             |
    //+------------------------------------------------------------------+ 
    
    
    
    
    void CloseOrders(int type=-1) 
    {
     bool select,close,del;
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrdersTotal()>0&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
      {
       if(OrderType()==type||type==-1)
       {
        if(OrderType()==OP_BUY){close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5*Q);}
        if(OrderType()==OP_SELL){close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),5*Q);}
        if(OrderType()>OP_SELL){del=OrderDelete(OrderTicket());}
       } 
      }
     }
    }  
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS         To Know Total Orders                |
    //+------------------------------------------------------------------+ 
     
     
    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()&&MagicNumber==OrderMagicNumber()&&OrderType()==type)
       {
        cnt++;
       }
      }
     }
     return(cnt);
    }  
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS       Close Delete Orders                   |
    //+------------------------------------------------------------------+ 
    
    
    void CloseDeleteOrders(int type)
    {
     bool select,close;
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrdersTotal()>0&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
       if(OrderType()==type)
       {
        if(OrderType()==OP_BUY)  
        {
         close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5*Q);      
        }
        if(OrderType()==OP_SELL)  
        {
         close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),5*Q);
        }
        if(OrderType()>OP_SELL)   
        {
         close=OrderDelete(OrderTicket());
        }
       } 
      }
     }
    
    
    
    
    //دالة تعود بسعر آخر صفقة مفتوحة بدلالة نوعها
    double LastPrice(int type)
    {
     int cnt;
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
      {
       cnt++;
       if(cnt>=2)
       return(OrderOpenPrice());
      }
     }
     return(0);
    }  
    
    
    
    
    
    
    /*
    //دالة اغلاق الصفقات بدلالة النوع
    void CloseOrders(int type=-1)
    {
     bool select,close;
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      string sy=OrderSymbol();
      int    tt=OrdersTotal(),
             tk=OrderTicket(),
             ot=OrderType(),
             mn=OrderMagicNumber();
      double lo=OrderLots();
      if(tt>0&&sy==Symbol()&&mn==MagicNumber)
      {
       if(ot==type||type==-1)
       {
        if(ot==OP_BUY){close=OrderClose(tk,lo,NormalizeDouble(Bid,Digits),5*Q);}
        if(ot==OP_SELL){close=OrderClose(tk,lo,NormalizeDouble(Ask,Digits),5*Q);}
        if(ot>OP_SELL){close=OrderDelete(tk);}
       } 
      }
     }
    }
    */
    
    
    //دالة لمعرفة نوع آخر صفقة مغلقة
    int LastType()
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ty=OrderType();      
      if(sy==Symbol()&&mn==MagicNumber)
      {
       return(ty); 
      }
     }
     return(0);
    }
    
    
    
    
    
    
    //دالة لمعرفة توقيت اغلاق آخر صفقة بدلالة نوعها
    
    
    datetime LastTime(int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ty=OrderType();
      double pt=OrderProfit();
      datetime ct=OrderCloseTime();         
      if(sy==Symbol()&&mn==MagicNumber&&(ty==type||type==-1))
      {
       return(ct); 
      }
     }
     return(0);
    }
    
    
    
    
    
    
    //دالة لمعرفة ربح آخر صفقة مغلقة بدلالة نوعها
    
    
    double LastProfit(string info,int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ty=OrderType();
      double pt=OrderProfit();
      datetime ct=OrderCloseTime();         
      if(sy==Symbol()&&mn==MagicNumber&&(ty==type||type==-1))
      {
      if(info=="Profit")return(pt);
       
      }
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    datetime FirstClose()
    {
      for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool     select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots();
      datetime om=OrderOpenTime();    
      if(sy==Symbol()&&mn==MagicNumber&&lo==LotsBuy)
        if(sy==Symbol()&&mn==MagicNumber&&lo==LotsSell)
      {
       return(om);
      }
     }
     return(0);
    }
    
    
    
    
    
    
    double TotalProfit() 
    {
     double pts=0;
     for(int i=0;i<OrdersHistoryTotal();i++) 
     {
      bool     s=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol();
      int      mn=OrderMagicNumber();
      double   pt=OrderProfit(),
               sw=OrderSwap(),
               cm=OrderCommission();  
      datetime om=OrderCloseTime();
             
      if(sy==Symbol()&&mn==MagicNumber&&om>FirstClose())
      {
       pts+=pt+sw+cm;
      }
     }  
     return(pts);
    }
    
    
    
    
    
    
    double LastOrder(string info,int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol(),
               mm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots(),
               op=OrderOpenPrice(),
               cp=OrderClosePrice(),
               pt=OrderProfit(),
               tp=OrderTakeProfit(),
               sl=OrderStopLoss();  
      datetime om=OrderOpenTime(),
               cm=OrderCloseTime();
                        
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ty==type||type==-1)
       {
        if(info=="Lots")return(lo);
        else if(info=="OpenPrice")return(op);
        else if(info=="ClosePrice")return(cp);
        else if(info=="Profit")return(pt);
        else if(info=="Type")return(ty);
        else if(info=="TP")return(tp);
        else if(info=="SL")return(sl);
        else if(info=="OpenTime")return(om);
        else if(info=="CloseTime")return(cm);
        else if(info=="Comment")return(mm);
       }
      } 
     }
     return(0);
    }  
    
    
     
     
     int TotalOrders(int type=-1)
    {
     int cnt=0;
     for(int i =0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()&&(OrderType()==type||type==-1))
       {
        cnt++;
       }
      }
     }
     return(cnt);
    }
    
    
    
    
      
      
      
    double Closed(string info,int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol(),
               mm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots(),
               pt=OrderProfit(),
               op=OrderOpenPrice(),
               cp=OrderClosePrice(),
               tp=OrderTakeProfit(),
               sl=OrderStopLoss();   
                        
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ty==type||type==-1)
       {
        if(info=="Lots")return(lo);
        else if(info=="Profit")return(pt);
        else if(info=="Type")return(ty);
        else if(info=="OpenPrice")return(op);
        else if(info=="ClosePrice")return(cp);
        else if(info=="TP")return(tp);
        else if(info=="SL")return(sl);
       }
      } 
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    double CurrentLots(int type=-1)
    {
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      string   sy=OrderSymbol(),
               mm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots();  
                        
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ty==type||type==-1)
       {
        return(lo);
       }
      } 
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    int HistoryOrders(int type=-1)
    {
     int cnt=0;
     for(int i =0;i<OrdersHistoryTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
       if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()&&(OrderType()==type||type==-1))
       {
        cnt++;
       }
      }
     }
     return(cnt);
    }
    
    
    
    
    
    
    double LastCurrent(string info,int type=-1)//دالة لمعرفة كل تفاصيل الصفقة المفعلة بدلالة النوع
    {
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&(OrderType()==type||type==-1))
      {
       if(info=="Type")return(OrderType());
       else if(info=="Lots")return(OrderLots());
       else if(info=="Price")return(OrderOpenPrice());
       else if(info=="TP")return(OrderTakeProfit());
       else if(info=="SL")return(OrderStopLoss());
       else if(info=="Profit")return(OrderProfit());
       else if(info=="Time")return(OrderOpenTime());
      }
     }
     return(0);
    }
    
    
    
    
    double LastOrderClosed(string info)//نتيجة آخر صفقة مغلقة والاكبر من حيث توقيت الفتح
    {
     double c=0;
     for(int i=OrdersHistoryTotal()-1;i>=0;i--) 
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()<=OP_SELL) 
      {                        
       if(OrderOpenTime()>c)c=OrderOpenTime();
       if(OrderOpenTime()==c)
       {
        if(info=="Profit")return(OrderProfit());
        else if(info=="Lots")return(OrderLots());
       }
      }  
     }
     return(0);
    }
    
    
    
    
    int Orderscnt()//دالة عدد الصفقات المفتوحة
    {
     int cnt=0;
     for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
       {
        cnt++;//عد الصفقات 
       }
      }
     }
     return(cnt);
    }
    
    
    
    
    
    
    
    
     void CloseAllOrders(int type=-1)
            {
             bool select,close,del;
             for(int i=OrdersTotal()-1;i>=0;i--)
             {
              select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
              string sy=OrderSymbol();
              int    tt=OrdersTotal(),
                     tk=OrderTicket(),
                     ot=OrderType(),
                     mn=OrderMagicNumber();
              double lo=OrderLots();
              if(tt>0)
              {
               if(ot==type||type==-1)
               {
                if(ot==OP_BUY){close=OrderClose(tk,lo,MarketInfo(sy,MODE_BID),50);}  
                if(ot==OP_SELL){close=OrderClose(tk,lo,MarketInfo(sy,MODE_ASK),50);}
                if(ot>OP_SELL){del=OrderDelete(tk);}
               } 
              }
             }
            }
    التعديل الأخير تم بواسطة aut ; 23-07-2019 الساعة 03:20 AM

  3. #2453
    عضو
    تاريخ التسجيل
    Apr 2017
    المشاركات
    262

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة kira-h مشاهدة المشاركة
    السلام عليكم
    الصحيح كالتالي:
    كود:
     double dis_h2=MathAbs(FirstPrice("Aymoon-h2",OP_BUY)-FirstPrice("Aymoon-h2",OP_SELL));
     
     if(MaxTrades>0&&Orderscnt("Aymoon-h2")<MaxTrades&&Orderscnt("Aymoon-h2",OP_BUY)>0&&Orderscnt("Aymoon-h2",OP_SELL)>0) 
     {
      if(LastOrder("Type","Aymoon-h2")==OP_BUY&&Ask<=LastOrder("Price","Aymoon-h2",OP_BUY)-dis_h2)
      {
       if(Stoploss!=0)SL=Bid+Stoploss*point;else SL=0;
       if(Takeprofit!=0)TP=Bid-Takeprofit*point;else TP=0;
       ticket=OrderSend(Symbol(),OP_SELL,NewLots2,Bid,3*Q,SL,TP,"Aymoon-h2",MagicNo,0,Magenta);
      } 
      if(LastOrder("Type","Aymoon-h2")==OP_SELL&&Bid>=LastOrder("Price","Aymoon-h2",OP_SELL)+dis_h2)
      {
       if(Stoploss!=0)SL=Ask-Stoploss*point;else SL=0;
       if(Takeprofit!=0)TP=Ask+Takeprofit*point;else TP=0;
       ticket=OrderSend(Symbol(),OP_BUY,NewLots2,Ask,3*Q,SL,TP,"Aymoon-h2",MagicNo,0,Green);
      } 
     }
     
    double FirstPrice(string comment,int type) 
    {
     for(int i=0;i<OrdersTotal();i++)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      string   sy=OrderSymbol(),
               cm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   op=OrderOpenPrice();                   
      if(sy==Symbol()&&mn==MagicNo&&cm==comment)
      {
       if(ty==type)return(op);
      } 
     }
     return(0);
    }
    يا اخي والله عايز ابوس راسك
    مش عارف من غيرك كنا عملنا ايه

    جربته تيست ومبدئيا شغال مظبوط
    جاري التجربة لايف

    شكرا جدا ياغالي ومنتحرمش منك

  4. #2454

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة aut مشاهدة المشاركة
    طيب انا مسحت المضاعفات وبردو الاكسبيرت مش بيشتغل على الطريقه المطلوبه ؟



    الاكسبيرت بيعمل على لوت واحد بس ومش بيفتح صفقات التبريد



    كود:
    //+------------------------------------------------------------------+
    //|                                                     ScalperV1.mq4 |
    //|                   Copyright 2005-2014, MetaQuotes Software Corp. |
    //|                                              https://www.mql4.com |
    //+------------------------------------------------------------------+
    #property copyright   "2005-2014, MetaQuotes Software Corp."
    #property link        "https://www.mql4.com"
    #property description "ScalperV1 expert advisor"
    
    
    enum OrdersTy 
    { 
       BuyOnly=0,      
       SellOnly=1,     
       BuySellBoth=2,  
    }; 
    
    
    input OrdersTy OrdersT = 2;
    extern double  LotsBuy = 0.01;
    extern double  LotsSell = 0.01;
    extern int MaxSpread  = 4;
    input bool  CloseAtNext=false;
    extern int MaxTrades= 2; 
    extern int GapSize  = 0;
    extern int StopLoss  = 0;
    extern int TakeProfit  = 0;
    extern int TrailingStop=0;
    extern  int TrailingStep=0;
    extern int BreakEven=0;
    input int BreakEvenPips=0;
    extern int USDP=0;
    extern int USDL=0;  
    extern int MagicNumber   = 555555;
    
    
    
    
    //---------     
    
    
    
    
    int CheckStep = GapSize;             
                 
     int EMA1 = 50;
     int EMA2 = 100;
    ENUM_APPLIED_PRICE apply1 = PRICE_CLOSE;
    ENUM_APPLIED_PRICE apply2 = PRICE_CLOSE;
    
    
    
    
    double buyMM = 2;
    double sellMM = 2;
    
    
    
    
    string commentSell, commentBuy, NewLotsSell, NewLotsBuy;
    double p,SL,TP,NewLots;
    int    LimitBuy, LimitSell;
    double lotaB,lotaS,LB,LS;
    double UT1, DW1,point;
    int      Q,digits;
    
    
    
    
    datetime time=0;
    datetime BarTime;
    
    
     double chain[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};  
     double chain2[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};  
     
    
    
    void OnInit()
    {
     
     
     
      if(Digits==4 || Digits<=2) point=Point;
       if(Digits==5 || Digits==3) point=Point*10;
       
         
    
    
    }
    
    
    
    
    //+------------------------------------------------------------------+
    //| OnTick function                                                  |
    //+------------------------------------------------------------------+
    void OnTick()
    {
           
    
    
     if(TrailingStop>0)MoveTrailingStop();
       if(BreakEven>0)MoveBreakEven();
               if((USDP!=0&&Profit_By_USD()>=USDP)
                   ||(USDL!=0&&Profit_By_USD()<=-USDL)){CloseOrders();} 
                              
    
    
       if(Bars<100 || IsTradeAllowed()==false) return;
          
    double Fast_1=iMA(NULL,0,EMA1,50,MODE_SMMA,apply1,0);
    double Fast_2=iMA(NULL,0,EMA2,200,MODE_SMMA,apply2,0);
       
     
    if(Orderscnt(OP_BUY)>0&&Ask<=LastPrice(OP_BUY)-CheckStep*point)
    if(Orderscnt(OP_SELL)>0&&Bid>=LastPrice(OP_SELL)+CheckStep*point)
    
     
       //شروط التبريد 
     
         if((OrdersT==BuyOnly||OrdersT==BuySellBoth)&&TotalOrders(OP_BUY)<MaxTrades
         &&Orderscnt(OP_BUY)>0&&Ask<=LastPrice(OP_BUY)-CheckStep*point)
         {   
          if(StopLoss!=0){SL=Ask-StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Ask+TakeProfit*point;}else TP=0;             
          int rBuy2=OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,3*Q,SL,TP,commentBuy,MagicNumber,0,Blue); 
         } 
       
       
       if((OrdersT==SellOnly||OrdersT==BuySellBoth)&&TotalOrders(OP_SELL)<MaxTrades
         &&Orderscnt(OP_SELL)>0&&Bid>=LastPrice(OP_SELL)+CheckStep*point)
         {
          if(StopLoss!=0){SL=Bid+StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Bid-TakeProfit*point;}else TP=0;
          int rSell2=OrderSend(Symbol(),OP_SELL,LotsSell,Bid,3*Q,SL,TP,"",MagicNumber,0,Red);
         }
           
       //buy
     
       if(Ask >= (DW1 + buyMM * GapSize * point)) 
       {    
          UT1 = Fast_2;
          sellMM = 2;
          buyMM++; 
         if(CloseAtNext)CloseDeleteOrders(OP_SELL);
         
         if((OrdersT==BuyOnly||OrdersT==BuySellBoth)
         &&(Ask-Bid)<=MaxSpread*point&&Orderscnt(OP_BUY)==0&&time!=Time[0])
         {   
          if(StopLoss!=0){SL=Ask-StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Ask+TakeProfit*point;}else TP=0;             
          int rBuy1=OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,3*Q,SL,TP,"",MagicNumber,0,Blue); 
          if(rBuy1>0)time=Time[0]; 
         } 
        }      
     
       
       
       
       //sell
       
       if (Bid <= (UT1 - sellMM * GapSize * point))    
       {
          DW1 = Fast_1; 
          buyMM = 2;
          sellMM++;
    
    
          
         if((OrdersT==SellOnly||OrdersT==BuySellBoth)&&TotalOrders(OP_SELL)<MaxTrades
         &&(Ask-Bid)<=MaxSpread*point&&Orderscnt(OP_SELL)==0&&time!=Time[0])
         {
          if(StopLoss!=0){SL=Bid+StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Bid-TakeProfit*point;}else TP=0;
          int rSell1=OrderSend(Symbol(),OP_SELL,LotsSell,Bid,3*Q,SL,TP,"",MagicNumber,0,Red);
          if(rSell1>0)time=Time[0]; 
         }
        }
    
    
    }
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS                                             |
    //+------------------------------------------------------------------+ 
    
    
    
    
    void line(string name, double pr1,color clrr, int style)
    {
       if(ObjectFind(name) != 0)
       {
          ObjectCreate(name, OBJ_HLINE, 0, 0,pr1);
          ObjectSet(name, OBJPROP_COLOR, clrr);
          ObjectSet(name, OBJPROP_STYLE, style);
       } 
       else if(ObjectGet(name,OBJPROP_PRICE1)!=pr1)
       {
          ObjectDelete(name);
       }
    }
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS           Trailing Stop                     |
    //+------------------------------------------------------------------+ 
    
    
    
    
    void MoveTrailingStop()
    {
       
       for(int cnt=0;cnt<OrdersTotal();cnt++)
       {
          if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
          if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
          {
             if(OrderType()==OP_BUY)
             {
                if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,Digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*point,Digits))  
                {                 
                   if((NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(Bid-TrailingStop*point,Digits))||(OrderStopLoss()==0))
                   {
                      bool mm=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,Digits),OrderTakeProfit(),0,Blue);
                    
                   }
                }
             }
             else 
             {
                if(TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,Digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,Digits))  
                {                 
                   if((NormalizeDouble(OrderStopLoss(),Digits)>(NormalizeDouble(Ask+TrailingStop*point,Digits)))||(OrderStopLoss()==0))
                   {
                      bool mnm=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,Digits),OrderTakeProfit(),0,Red);
                    
                   }
                }
             }
          }
       }
    }
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS          Break Even                         |
    //+------------------------------------------------------------------+ 
    
    
    
    
    void MoveBreakEven() 
    {
       int cnt,total=OrdersTotal();
       for(cnt=0;cnt<total;cnt++)
       {
          if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
          if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
          {
             if(OrderType()==OP_BUY)
             {
                if(BreakEven>0)
                {
                   if(NormalizeDouble((Bid-OrderOpenPrice()),Digits)>BreakEven*point)
                   {
                      if(NormalizeDouble((OrderStopLoss()-OrderOpenPrice()),Digits)<0||(OrderStopLoss()==0))
                      {
                         bool mm=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+BreakEvenPips*point,Digits),OrderTakeProfit(),0,Blue);
                      
                      }
                   }
                }
             }
             else
             {
                if(BreakEven>0)
                {
                   if(NormalizeDouble((OrderOpenPrice()-Ask),Digits)>BreakEven*point)
                   {
                      if(NormalizeDouble((OrderOpenPrice()-OrderStopLoss()),Digits)<0||(OrderStopLoss()==0))
                      {
                         bool nn=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-BreakEvenPips*point,Digits),OrderTakeProfit(),0,Red);
                   
                      }
                   }
                }
             }
          }
       }
    }
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS  To Know The Profit Of Open Positions       |
    //+------------------------------------------------------------------+ 
    
    
    
    
    double Profit_By_USD(int type=-1)  
    {
     double pts;
     for(int i=0;i<OrdersTotal();i++) 
     {
      bool s=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ot=OrderType();
      double pt=OrderProfit(),
             sw=OrderSwap(),
             cm=OrderCommission();  
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ot==type||type==-1)
       {
        pts+=pt+sw+cm;
       }
      }
     }  
     return(pts);
    }  
    
    
     
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS         Closing Trades Together             |
    //+------------------------------------------------------------------+ 
    
    
    
    
    void CloseOrders(int type=-1) 
    {
     bool select,close,del;
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrdersTotal()>0&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
      {
       if(OrderType()==type||type==-1)
       {
        if(OrderType()==OP_BUY){close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5*Q);}
        if(OrderType()==OP_SELL){close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),5*Q);}
        if(OrderType()>OP_SELL){del=OrderDelete(OrderTicket());}
       } 
      }
     }
    }  
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS         To Know Total Orders                |
    //+------------------------------------------------------------------+ 
     
     
    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()&&MagicNumber==OrderMagicNumber()&&OrderType()==type)
       {
        cnt++;
       }
      }
     }
     return(cnt);
    }  
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS       Close Delete Orders                   |
    //+------------------------------------------------------------------+ 
    
    
    void CloseDeleteOrders(int type)
    {
     bool select,close;
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrdersTotal()>0&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
       if(OrderType()==type)
       {
        if(OrderType()==OP_BUY)  
        {
         close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5*Q);      
        }
        if(OrderType()==OP_SELL)  
        {
         close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),5*Q);
        }
        if(OrderType()>OP_SELL)   
        {
         close=OrderDelete(OrderTicket());
        }
       } 
      }
     }
    
    
    
    
    //دالة تعود بسعر آخر صفقة مفتوحة بدلالة نوعها
    double LastPrice(int type)
    {
     int cnt;
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
      {
       cnt++;
       if(cnt>=2)
       return(OrderOpenPrice());
      }
     }
     return(0);
    }  
    
    
    
    
    
    
    /*
    //دالة اغلاق الصفقات بدلالة النوع
    void CloseOrders(int type=-1)
    {
     bool select,close;
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      string sy=OrderSymbol();
      int    tt=OrdersTotal(),
             tk=OrderTicket(),
             ot=OrderType(),
             mn=OrderMagicNumber();
      double lo=OrderLots();
      if(tt>0&&sy==Symbol()&&mn==MagicNumber)
      {
       if(ot==type||type==-1)
       {
        if(ot==OP_BUY){close=OrderClose(tk,lo,NormalizeDouble(Bid,Digits),5*Q);}
        if(ot==OP_SELL){close=OrderClose(tk,lo,NormalizeDouble(Ask,Digits),5*Q);}
        if(ot>OP_SELL){close=OrderDelete(tk);}
       } 
      }
     }
    }
    */
    
    
    //دالة لمعرفة نوع آخر صفقة مغلقة
    int LastType()
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ty=OrderType();      
      if(sy==Symbol()&&mn==MagicNumber)
      {
       return(ty); 
      }
     }
     return(0);
    }
    
    
    
    
    
    
    //دالة لمعرفة توقيت اغلاق آخر صفقة بدلالة نوعها
    
    
    datetime LastTime(int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ty=OrderType();
      double pt=OrderProfit();
      datetime ct=OrderCloseTime();         
      if(sy==Symbol()&&mn==MagicNumber&&(ty==type||type==-1))
      {
       return(ct); 
      }
     }
     return(0);
    }
    
    
    
    
    
    
    //دالة لمعرفة ربح آخر صفقة مغلقة بدلالة نوعها
    
    
    double LastProfit(string info,int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ty=OrderType();
      double pt=OrderProfit();
      datetime ct=OrderCloseTime();         
      if(sy==Symbol()&&mn==MagicNumber&&(ty==type||type==-1))
      {
      if(info=="Profit")return(pt);
       
      }
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    datetime FirstClose()
    {
      for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool     select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots();
      datetime om=OrderOpenTime();    
      if(sy==Symbol()&&mn==MagicNumber&&lo==LotsBuy)
        if(sy==Symbol()&&mn==MagicNumber&&lo==LotsSell)
      {
       return(om);
      }
     }
     return(0);
    }
    
    
    
    
    
    
    double TotalProfit() 
    {
     double pts=0;
     for(int i=0;i<OrdersHistoryTotal();i++) 
     {
      bool     s=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol();
      int      mn=OrderMagicNumber();
      double   pt=OrderProfit(),
               sw=OrderSwap(),
               cm=OrderCommission();  
      datetime om=OrderCloseTime();
             
      if(sy==Symbol()&&mn==MagicNumber&&om>FirstClose())
      {
       pts+=pt+sw+cm;
      }
     }  
     return(pts);
    }
    
    
    
    
    
    
    double LastOrder(string info,int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol(),
               mm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots(),
               op=OrderOpenPrice(),
               cp=OrderClosePrice(),
               pt=OrderProfit(),
               tp=OrderTakeProfit(),
               sl=OrderStopLoss();  
      datetime om=OrderOpenTime(),
               cm=OrderCloseTime();
                        
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ty==type||type==-1)
       {
        if(info=="Lots")return(lo);
        else if(info=="OpenPrice")return(op);
        else if(info=="ClosePrice")return(cp);
        else if(info=="Profit")return(pt);
        else if(info=="Type")return(ty);
        else if(info=="TP")return(tp);
        else if(info=="SL")return(sl);
        else if(info=="OpenTime")return(om);
        else if(info=="CloseTime")return(cm);
        else if(info=="Comment")return(mm);
       }
      } 
     }
     return(0);
    }  
    
    
     
     
     int TotalOrders(int type=-1)
    {
     int cnt=0;
     for(int i =0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()&&(OrderType()==type||type==-1))
       {
        cnt++;
       }
      }
     }
     return(cnt);
    }
    
    
    
    
      
      
      
    double Closed(string info,int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol(),
               mm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots(),
               pt=OrderProfit(),
               op=OrderOpenPrice(),
               cp=OrderClosePrice(),
               tp=OrderTakeProfit(),
               sl=OrderStopLoss();   
                        
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ty==type||type==-1)
       {
        if(info=="Lots")return(lo);
        else if(info=="Profit")return(pt);
        else if(info=="Type")return(ty);
        else if(info=="OpenPrice")return(op);
        else if(info=="ClosePrice")return(cp);
        else if(info=="TP")return(tp);
        else if(info=="SL")return(sl);
       }
      } 
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    double CurrentLots(int type=-1)
    {
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      string   sy=OrderSymbol(),
               mm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots();  
                        
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ty==type||type==-1)
       {
        return(lo);
       }
      } 
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    int HistoryOrders(int type=-1)
    {
     int cnt=0;
     for(int i =0;i<OrdersHistoryTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
       if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()&&(OrderType()==type||type==-1))
       {
        cnt++;
       }
      }
     }
     return(cnt);
    }
    
    
    
    
    
    
    double LastCurrent(string info,int type=-1)//دالة لمعرفة كل تفاصيل الصفقة المفعلة بدلالة النوع
    {
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&(OrderType()==type||type==-1))
      {
       if(info=="Type")return(OrderType());
       else if(info=="Lots")return(OrderLots());
       else if(info=="Price")return(OrderOpenPrice());
       else if(info=="TP")return(OrderTakeProfit());
       else if(info=="SL")return(OrderStopLoss());
       else if(info=="Profit")return(OrderProfit());
       else if(info=="Time")return(OrderOpenTime());
      }
     }
     return(0);
    }
    
    
    
    
    double LastOrderClosed(string info)//نتيجة آخر صفقة مغلقة والاكبر من حيث توقيت الفتح
    {
     double c=0;
     for(int i=OrdersHistoryTotal()-1;i>=0;i--) 
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()<=OP_SELL) 
      {                        
       if(OrderOpenTime()>c)c=OrderOpenTime();
       if(OrderOpenTime()==c)
       {
        if(info=="Profit")return(OrderProfit());
        else if(info=="Lots")return(OrderLots());
       }
      }  
     }
     return(0);
    }
    
    
    
    
    int Orderscnt()//دالة عدد الصفقات المفتوحة
    {
     int cnt=0;
     for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
       {
        cnt++;//عد الصفقات 
       }
      }
     }
     return(cnt);
    }
    
    
    
    
    
    
    
    
     void CloseAllOrders(int type=-1)
            {
             bool select,close,del;
             for(int i=OrdersTotal()-1;i>=0;i--)
             {
              select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
              string sy=OrderSymbol();
              int    tt=OrdersTotal(),
                     tk=OrderTicket(),
                     ot=OrderType(),
                     mn=OrderMagicNumber();
              double lo=OrderLots();
              if(tt>0)
              {
               if(ot==type||type==-1)
               {
                if(ot==OP_BUY){close=OrderClose(tk,lo,MarketInfo(sy,MODE_BID),50);}  
                if(ot==OP_SELL){close=OrderClose(tk,lo,MarketInfo(sy,MODE_ASK),50);}
                if(ot>OP_SELL){del=OrderDelete(tk);}
               } 
              }
             }
            }
    لديك خطأ في الدالة LastPrice
    والصحيح كالتالي:
    كود:
    //+------------------------------------------------------------------+
    //|                                                     ScalperV1.mq4 |
    //|                   Copyright 2005-2014, MetaQuotes Software Corp. |
    //|                                              https://www.mql4.com |
    //+------------------------------------------------------------------+
    #property copyright   "2005-2014, MetaQuotes Software Corp."
    #property link        "https://www.mql4.com"
    #property description "ScalperV1 expert advisor"
    
    
    
    
    enum OrdersTy 
    { 
       BuyOnly=0,      
       SellOnly=1,     
       BuySellBoth=2,  
    }; 
    
    
    
    
    input OrdersTy OrdersT = 2;
    extern double  LotsBuy = 0.01;
    extern double  LotsSell = 0.01;
    extern int MaxSpread  = 4;
    input bool  CloseAtNext=false;
    extern int MaxTrades= 2; 
    extern int GapSize  = 0;
    extern int StopLoss  = 0;
    extern int TakeProfit  = 0;
    extern int TrailingStop=0;
    extern  int TrailingStep=0;
    extern int BreakEven=0;
    input int BreakEvenPips=0;
    extern int USDP=0;
    extern int USDL=0;  
    extern int MagicNumber   = 555555;
    
    
    
    
    
    
    
    
    //---------     
     int EMA1 = 50;
     int EMA2 = 100;
    ENUM_APPLIED_PRICE apply1 = PRICE_CLOSE;
    ENUM_APPLIED_PRICE apply2 = PRICE_CLOSE;
    
    
    
    
    
    
    
    
    double buyMM = 2;
    double sellMM = 2;
    
    
    
    
    
    
    
    
    string commentSell, commentBuy, NewLotsSell, NewLotsBuy;
    double p,SL,TP,NewLots;
    int    LimitBuy, LimitSell;
    double lotaB,lotaS,LB,LS;
    double UT1, DW1,point;
    int      Q,digits;
    
    
    
    
    
    
    
    
    datetime time=0;
    datetime BarTime;
    
    
    
    
     double chain[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};  
     double chain2[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};  
     
    
    
    
    
    void OnInit()
    {
     
     
     
      if(Digits==4 || Digits<=2) point=Point;
       if(Digits==5 || Digits==3) point=Point*10;
       
         
    
    
    
    
    }
    
    
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| OnTick function                                                  |
    //+------------------------------------------------------------------+
    void OnTick()
    {
           
    
    
    
    
     if(TrailingStop>0)MoveTrailingStop();
       if(BreakEven>0)MoveBreakEven();
               if((USDP!=0&&Profit_By_USD()>=USDP)
                   ||(USDL!=0&&Profit_By_USD()<=-USDL)){CloseOrders();} 
                              
    
    
    
    
       if(Bars<100 || IsTradeAllowed()==false) return;
          
    double Fast_1=iMA(NULL,0,EMA1,50,MODE_SMMA,apply1,0);
    double Fast_2=iMA(NULL,0,EMA2,200,MODE_SMMA,apply2,0);
    
    
     
       //شروط التبريد 
     
         if(((MaxTrades>0&&TotalOrders(OP_BUY)<MaxTrades)||MaxTrades==0)
         &&Orderscnt(OP_BUY)>0&&Ask<=LastPrice(OP_BUY)-GapSize*point)
         {   
          if(StopLoss!=0){SL=Ask-StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Ask+TakeProfit*point;}else TP=0;             
          int rBuy2=OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,3*Q,SL,TP,"",MagicNumber,0,Blue); 
         } 
       
       
         if(((MaxTrades>0&&TotalOrders(OP_SELL)<MaxTrades)||MaxTrades==0)
         &&Orderscnt(OP_SELL)>0&&Bid>=LastPrice(OP_SELL)+GapSize*point)
         {
          if(StopLoss!=0){SL=Bid+StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Bid-TakeProfit*point;}else TP=0;
          int rSell2=OrderSend(Symbol(),OP_SELL,LotsSell,Bid,3*Q,SL,TP,"",MagicNumber,0,Red);
         }
           
       //buy
     
       if(Ask >= (DW1 + buyMM * GapSize * point)) 
       {    
          UT1 = Fast_2;
          sellMM = 2;
          buyMM++; 
          
         if(CloseAtNext)CloseDeleteOrders(OP_SELL);
         
         if((OrdersT==BuyOnly||OrdersT==BuySellBoth)
         &&(Ask-Bid)<=MaxSpread*point&&Orderscnt(OP_BUY)==0&&time!=Time[0])
         {   
          if(StopLoss!=0){SL=Ask-StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Ask+TakeProfit*point;}else TP=0;             
          int rBuy1=OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,3*Q,SL,TP,"",MagicNumber,0,Blue); 
          if(rBuy1>0)time=Time[0]; 
         } 
        }      
     
       
       
       
       //sell
       
       if(Bid <= (UT1 - sellMM * GapSize * point))    
       {
          DW1 = Fast_1; 
          buyMM = 2;
          sellMM++;
         
         if(CloseAtNext)CloseDeleteOrders(OP_BUY);
         
         if((OrdersT==SellOnly||OrdersT==BuySellBoth)&&TotalOrders(OP_SELL)<MaxTrades
         &&(Ask-Bid)<=MaxSpread*point&&Orderscnt(OP_SELL)==0&&time!=Time[0])
         {
          if(StopLoss!=0){SL=Bid+StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Bid-TakeProfit*point;}else TP=0;
          int rSell1=OrderSend(Symbol(),OP_SELL,LotsSell,Bid,3*Q,SL,TP,"",MagicNumber,0,Red);
          if(rSell1>0)time=Time[0]; 
         }
        }
    
    
    
    
    }
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS                                             |
    //+------------------------------------------------------------------+ 
    
    
    
    
    
    
    
    
    void line(string name, double pr1,color clrr, int style)
    {
       if(ObjectFind(name) != 0)
       {
          ObjectCreate(name, OBJ_HLINE, 0, 0,pr1);
          ObjectSet(name, OBJPROP_COLOR, clrr);
          ObjectSet(name, OBJPROP_STYLE, style);
       } 
       else if(ObjectGet(name,OBJPROP_PRICE1)!=pr1)
       {
          ObjectDelete(name);
       }
    }
    
    
    
    
    
    
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS           Trailing Stop                     |
    //+------------------------------------------------------------------+ 
    
    
    
    
    
    
    
    
    void MoveTrailingStop()
    {
       
       for(int cnt=0;cnt<OrdersTotal();cnt++)
       {
          if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
          if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
          {
             if(OrderType()==OP_BUY)
             {
                if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,Digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*point,Digits))  
                {                 
                   if((NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(Bid-TrailingStop*point,Digits))||(OrderStopLoss()==0))
                   {
                      bool mm=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,Digits),OrderTakeProfit(),0,Blue);
                    
                   }
                }
             }
             else 
             {
                if(TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,Digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,Digits))  
                {                 
                   if((NormalizeDouble(OrderStopLoss(),Digits)>(NormalizeDouble(Ask+TrailingStop*point,Digits)))||(OrderStopLoss()==0))
                   {
                      bool mnm=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,Digits),OrderTakeProfit(),0,Red);
                    
                   }
                }
             }
          }
       }
    }
    
    
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS          Break Even                         |
    //+------------------------------------------------------------------+ 
    
    
    
    
    
    
    
    
    void MoveBreakEven() 
    {
       int cnt,total=OrdersTotal();
       for(cnt=0;cnt<total;cnt++)
       {
          if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
          if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
          {
             if(OrderType()==OP_BUY)
             {
                if(BreakEven>0)
                {
                   if(NormalizeDouble((Bid-OrderOpenPrice()),Digits)>BreakEven*point)
                   {
                      if(NormalizeDouble((OrderStopLoss()-OrderOpenPrice()),Digits)<0||(OrderStopLoss()==0))
                      {
                         bool mm=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+BreakEvenPips*point,Digits),OrderTakeProfit(),0,Blue);
                      
                      }
                   }
                }
             }
             else
             {
                if(BreakEven>0)
                {
                   if(NormalizeDouble((OrderOpenPrice()-Ask),Digits)>BreakEven*point)
                   {
                      if(NormalizeDouble((OrderOpenPrice()-OrderStopLoss()),Digits)<0||(OrderStopLoss()==0))
                      {
                         bool nn=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-BreakEvenPips*point,Digits),OrderTakeProfit(),0,Red);
                   
                      }
                   }
                }
             }
          }
       }
    }
    
    
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS  To Know The Profit Of Open Positions       |
    //+------------------------------------------------------------------+ 
    
    
    
    
    
    
    
    
    double Profit_By_USD(int type=-1)  
    {
     double pts;
     for(int i=0;i<OrdersTotal();i++) 
     {
      bool s=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ot=OrderType();
      double pt=OrderProfit(),
             sw=OrderSwap(),
             cm=OrderCommission();  
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ot==type||type==-1)
       {
        pts+=pt+sw+cm;
       }
      }
     }  
     return(pts);
    }  
    
    
    
    
     
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS         Closing Trades Together             |
    //+------------------------------------------------------------------+ 
    
    
    
    
    
    
    
    
    void CloseOrders(int type=-1) 
    {
     bool select,close,del;
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrdersTotal()>0&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
      {
       if(OrderType()==type||type==-1)
       {
        if(OrderType()==OP_BUY){close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5*Q);}
        if(OrderType()==OP_SELL){close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),5*Q);}
        if(OrderType()>OP_SELL){del=OrderDelete(OrderTicket());}
       } 
      }
     }
    }  
    
    
    
    
    
    
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS         To Know Total Orders                |
    //+------------------------------------------------------------------+ 
     
     
    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()&&MagicNumber==OrderMagicNumber()&&OrderType()==type)
       {
        cnt++;
       }
      }
     }
     return(cnt);
    }  
    
    
    
    
    
    
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS       Close Delete Orders                   |
    //+------------------------------------------------------------------+ 
    
    
    
    
    void CloseDeleteOrders(int type)
    {
     bool select,close;
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrdersTotal()>0&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
       if(OrderType()==type)
       {
        if(OrderType()==OP_BUY)  
        {
         close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5*Q);      
        }
        if(OrderType()==OP_SELL)  
        {
         close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),5*Q);
        }
        if(OrderType()>OP_SELL)   
        {
         close=OrderDelete(OrderTicket());
        }
       } 
      }
     }
    
    
    
    
    
    
    
    
    //دالة تعود بسعر آخر صفقة مفتوحة بدلالة نوعها
    double LastPrice(int type)
    {
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
      {
       return(OrderOpenPrice());
      }
     }
     return(0);
    }  
    
    
    
    
    
    
    
    
    
    
    
    
    /*
    //دالة اغلاق الصفقات بدلالة النوع
    void CloseOrders(int type=-1)
    {
     bool select,close;
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      string sy=OrderSymbol();
      int    tt=OrdersTotal(),
             tk=OrderTicket(),
             ot=OrderType(),
             mn=OrderMagicNumber();
      double lo=OrderLots();
      if(tt>0&&sy==Symbol()&&mn==MagicNumber)
      {
       if(ot==type||type==-1)
       {
        if(ot==OP_BUY){close=OrderClose(tk,lo,NormalizeDouble(Bid,Digits),5*Q);}
        if(ot==OP_SELL){close=OrderClose(tk,lo,NormalizeDouble(Ask,Digits),5*Q);}
        if(ot>OP_SELL){close=OrderDelete(tk);}
       } 
      }
     }
    }
    */
    
    
    
    
    //دالة لمعرفة نوع آخر صفقة مغلقة
    int LastType()
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ty=OrderType();      
      if(sy==Symbol()&&mn==MagicNumber)
      {
       return(ty); 
      }
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    //دالة لمعرفة توقيت اغلاق آخر صفقة بدلالة نوعها
    
    
    
    
    datetime LastTime(int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ty=OrderType();
      double pt=OrderProfit();
      datetime ct=OrderCloseTime();         
      if(sy==Symbol()&&mn==MagicNumber&&(ty==type||type==-1))
      {
       return(ct); 
      }
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    //دالة لمعرفة ربح آخر صفقة مغلقة بدلالة نوعها
    
    
    
    
    double LastProfit(string info,int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ty=OrderType();
      double pt=OrderProfit();
      datetime ct=OrderCloseTime();         
      if(sy==Symbol()&&mn==MagicNumber&&(ty==type||type==-1))
      {
      if(info=="Profit")return(pt);
       
      }
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    datetime FirstClose()
    {
      for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool     select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots();
      datetime om=OrderOpenTime();    
      if(sy==Symbol()&&mn==MagicNumber&&lo==LotsBuy)
        if(sy==Symbol()&&mn==MagicNumber&&lo==LotsSell)
      {
       return(om);
      }
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    double TotalProfit() 
    {
     double pts=0;
     for(int i=0;i<OrdersHistoryTotal();i++) 
     {
      bool     s=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol();
      int      mn=OrderMagicNumber();
      double   pt=OrderProfit(),
               sw=OrderSwap(),
               cm=OrderCommission();  
      datetime om=OrderCloseTime();
             
      if(sy==Symbol()&&mn==MagicNumber&&om>FirstClose())
      {
       pts+=pt+sw+cm;
      }
     }  
     return(pts);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    double LastOrder(string info,int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol(),
               mm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots(),
               op=OrderOpenPrice(),
               cp=OrderClosePrice(),
               pt=OrderProfit(),
               tp=OrderTakeProfit(),
               sl=OrderStopLoss();  
      datetime om=OrderOpenTime(),
               cm=OrderCloseTime();
                        
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ty==type||type==-1)
       {
        if(info=="Lots")return(lo);
        else if(info=="OpenPrice")return(op);
        else if(info=="ClosePrice")return(cp);
        else if(info=="Profit")return(pt);
        else if(info=="Type")return(ty);
        else if(info=="TP")return(tp);
        else if(info=="SL")return(sl);
        else if(info=="OpenTime")return(om);
        else if(info=="CloseTime")return(cm);
        else if(info=="Comment")return(mm);
       }
      } 
     }
     return(0);
    }  
    
    
    
    
     
     
     int TotalOrders(int type=-1)
    {
     int cnt=0;
     for(int i =0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()&&(OrderType()==type||type==-1))
       {
        cnt++;
       }
      }
     }
     return(cnt);
    }
    
    
    
    
    
    
    
    
      
      
      
    double Closed(string info,int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol(),
               mm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots(),
               pt=OrderProfit(),
               op=OrderOpenPrice(),
               cp=OrderClosePrice(),
               tp=OrderTakeProfit(),
               sl=OrderStopLoss();   
                        
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ty==type||type==-1)
       {
        if(info=="Lots")return(lo);
        else if(info=="Profit")return(pt);
        else if(info=="Type")return(ty);
        else if(info=="OpenPrice")return(op);
        else if(info=="ClosePrice")return(cp);
        else if(info=="TP")return(tp);
        else if(info=="SL")return(sl);
       }
      } 
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    double CurrentLots(int type=-1)
    {
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      string   sy=OrderSymbol(),
               mm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots();  
                        
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ty==type||type==-1)
       {
        return(lo);
       }
      } 
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    int HistoryOrders(int type=-1)
    {
     int cnt=0;
     for(int i =0;i<OrdersHistoryTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
       if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()&&(OrderType()==type||type==-1))
       {
        cnt++;
       }
      }
     }
     return(cnt);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    double LastCurrent(string info,int type=-1)//دالة لمعرفة كل تفاصيل الصفقة المفعلة بدلالة النوع
    {
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&(OrderType()==type||type==-1))
      {
       if(info=="Type")return(OrderType());
       else if(info=="Lots")return(OrderLots());
       else if(info=="Price")return(OrderOpenPrice());
       else if(info=="TP")return(OrderTakeProfit());
       else if(info=="SL")return(OrderStopLoss());
       else if(info=="Profit")return(OrderProfit());
       else if(info=="Time")return(OrderOpenTime());
      }
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    double LastOrderClosed(string info)//نتيجة آخر صفقة مغلقة والاكبر من حيث توقيت الفتح
    {
     double c=0;
     for(int i=OrdersHistoryTotal()-1;i>=0;i--) 
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()<=OP_SELL) 
      {                        
       if(OrderOpenTime()>c)c=OrderOpenTime();
       if(OrderOpenTime()==c)
       {
        if(info=="Profit")return(OrderProfit());
        else if(info=="Lots")return(OrderLots());
       }
      }  
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    int Orderscnt()//دالة عدد الصفقات المفتوحة
    {
     int cnt=0;
     for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
       {
        cnt++;//عد الصفقات 
       }
      }
     }
     return(cnt);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
     void CloseAllOrders(int type=-1)
            {
             bool select,close,del;
             for(int i=OrdersTotal()-1;i>=0;i--)
             {
              select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
              string sy=OrderSymbol();
              int    tt=OrdersTotal(),
                     tk=OrderTicket(),
                     ot=OrderType(),
                     mn=OrderMagicNumber();
              double lo=OrderLots();
              if(tt>0)
              {
               if(ot==type||type==-1)
               {
                if(ot==OP_BUY){close=OrderClose(tk,lo,MarketInfo(sy,MODE_BID),50);}  
                if(ot==OP_SELL){close=OrderClose(tk,lo,MarketInfo(sy,MODE_ASK),50);}
                if(ot>OP_SELL){del=OrderDelete(tk);}
               } 
              }
             }
            }

  5. #2455

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة sabil مشاهدة المشاركة
    يا اخي والله عايز ابوس راسك
    مش عارف من غيرك كنا عملنا ايه

    جربته تيست ومبدئيا شغال مظبوط
    جاري التجربة لايف

    شكرا جدا ياغالي ومنتحرمش منك
    العفو أخي الكريم
    والله الموفق

  6. #2456
    عضو جديد
    تاريخ التسجيل
    Jul 2018
    المشاركات
    99

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة kira-h مشاهدة المشاركة
    لديك خطأ في الدالة LastPrice
    والصحيح كالتالي:
    كود:
    //+------------------------------------------------------------------+
    //|                                                     ScalperV1.mq4 |
    //|                   Copyright 2005-2014, MetaQuotes Software Corp. |
    //|                                              https://www.mql4.com |
    //+------------------------------------------------------------------+
    #property copyright   "2005-2014, MetaQuotes Software Corp."
    #property link        "https://www.mql4.com"
    #property description "ScalperV1 expert advisor"
    
    
    
    
    enum OrdersTy 
    { 
       BuyOnly=0,      
       SellOnly=1,     
       BuySellBoth=2,  
    }; 
    
    
    
    
    input OrdersTy OrdersT = 2;
    extern double  LotsBuy = 0.01;
    extern double  LotsSell = 0.01;
    extern int MaxSpread  = 4;
    input bool  CloseAtNext=false;
    extern int MaxTrades= 2; 
    extern int GapSize  = 0;
    extern int StopLoss  = 0;
    extern int TakeProfit  = 0;
    extern int TrailingStop=0;
    extern  int TrailingStep=0;
    extern int BreakEven=0;
    input int BreakEvenPips=0;
    extern int USDP=0;
    extern int USDL=0;  
    extern int MagicNumber   = 555555;
    
    
    
    
    
    
    
    
    //---------     
     int EMA1 = 50;
     int EMA2 = 100;
    ENUM_APPLIED_PRICE apply1 = PRICE_CLOSE;
    ENUM_APPLIED_PRICE apply2 = PRICE_CLOSE;
    
    
    
    
    
    
    
    
    double buyMM = 2;
    double sellMM = 2;
    
    
    
    
    
    
    
    
    string commentSell, commentBuy, NewLotsSell, NewLotsBuy;
    double p,SL,TP,NewLots;
    int    LimitBuy, LimitSell;
    double lotaB,lotaS,LB,LS;
    double UT1, DW1,point;
    int      Q,digits;
    
    
    
    
    
    
    
    
    datetime time=0;
    datetime BarTime;
    
    
    
    
     double chain[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};  
     double chain2[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};  
     
    
    
    
    
    void OnInit()
    {
     
     
     
      if(Digits==4 || Digits<=2) point=Point;
       if(Digits==5 || Digits==3) point=Point*10;
       
         
    
    
    
    
    }
    
    
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| OnTick function                                                  |
    //+------------------------------------------------------------------+
    void OnTick()
    {
           
    
    
    
    
     if(TrailingStop>0)MoveTrailingStop();
       if(BreakEven>0)MoveBreakEven();
               if((USDP!=0&&Profit_By_USD()>=USDP)
                   ||(USDL!=0&&Profit_By_USD()<=-USDL)){CloseOrders();} 
                              
    
    
    
    
       if(Bars<100 || IsTradeAllowed()==false) return;
          
    double Fast_1=iMA(NULL,0,EMA1,50,MODE_SMMA,apply1,0);
    double Fast_2=iMA(NULL,0,EMA2,200,MODE_SMMA,apply2,0);
    
    
     
       //شروط التبريد 
     
         if(((MaxTrades>0&&TotalOrders(OP_BUY)<MaxTrades)||MaxTrades==0)
         &&Orderscnt(OP_BUY)>0&&Ask<=LastPrice(OP_BUY)-GapSize*point)
         {   
          if(StopLoss!=0){SL=Ask-StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Ask+TakeProfit*point;}else TP=0;             
          int rBuy2=OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,3*Q,SL,TP,"",MagicNumber,0,Blue); 
         } 
       
       
         if(((MaxTrades>0&&TotalOrders(OP_SELL)<MaxTrades)||MaxTrades==0)
         &&Orderscnt(OP_SELL)>0&&Bid>=LastPrice(OP_SELL)+GapSize*point)
         {
          if(StopLoss!=0){SL=Bid+StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Bid-TakeProfit*point;}else TP=0;
          int rSell2=OrderSend(Symbol(),OP_SELL,LotsSell,Bid,3*Q,SL,TP,"",MagicNumber,0,Red);
         }
           
       //buy
     
       if(Ask >= (DW1 + buyMM * GapSize * point)) 
       {    
          UT1 = Fast_2;
          sellMM = 2;
          buyMM++; 
          
         if(CloseAtNext)CloseDeleteOrders(OP_SELL);
         
         if((OrdersT==BuyOnly||OrdersT==BuySellBoth)
         &&(Ask-Bid)<=MaxSpread*point&&Orderscnt(OP_BUY)==0&&time!=Time[0])
         {   
          if(StopLoss!=0){SL=Ask-StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Ask+TakeProfit*point;}else TP=0;             
          int rBuy1=OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,3*Q,SL,TP,"",MagicNumber,0,Blue); 
          if(rBuy1>0)time=Time[0]; 
         } 
        }      
     
       
       
       
       //sell
       
       if(Bid <= (UT1 - sellMM * GapSize * point))    
       {
          DW1 = Fast_1; 
          buyMM = 2;
          sellMM++;
         
         if(CloseAtNext)CloseDeleteOrders(OP_BUY);
         
         if((OrdersT==SellOnly||OrdersT==BuySellBoth)&&TotalOrders(OP_SELL)<MaxTrades
         &&(Ask-Bid)<=MaxSpread*point&&Orderscnt(OP_SELL)==0&&time!=Time[0])
         {
          if(StopLoss!=0){SL=Bid+StopLoss*point;}else SL=0;
          if(TakeProfit!=0){TP=Bid-TakeProfit*point;}else TP=0;
          int rSell1=OrderSend(Symbol(),OP_SELL,LotsSell,Bid,3*Q,SL,TP,"",MagicNumber,0,Red);
          if(rSell1>0)time=Time[0]; 
         }
        }
    
    
    
    
    }
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS                                             |
    //+------------------------------------------------------------------+ 
    
    
    
    
    
    
    
    
    void line(string name, double pr1,color clrr, int style)
    {
       if(ObjectFind(name) != 0)
       {
          ObjectCreate(name, OBJ_HLINE, 0, 0,pr1);
          ObjectSet(name, OBJPROP_COLOR, clrr);
          ObjectSet(name, OBJPROP_STYLE, style);
       } 
       else if(ObjectGet(name,OBJPROP_PRICE1)!=pr1)
       {
          ObjectDelete(name);
       }
    }
    
    
    
    
    
    
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS           Trailing Stop                     |
    //+------------------------------------------------------------------+ 
    
    
    
    
    
    
    
    
    void MoveTrailingStop()
    {
       
       for(int cnt=0;cnt<OrdersTotal();cnt++)
       {
          if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
          if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
          {
             if(OrderType()==OP_BUY)
             {
                 if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,Digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*point,Digits))   
                {                 
                    if((NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(Bid-TrailingStop*point,Digits))||(OrderStopLoss()==0))
                   {
                      bool  mm=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*point,Digits),OrderTakeProfit(),0,Blue);
                    
                   }
                }
             }
             else 
             {
                 if(TrailingStop>0&&NormalizeDouble(Bid+TrailingStep*point,Digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,Digits))   
                {                 
                    if((NormalizeDouble(OrderStopLoss(),Digits)>(NormalizeDouble(Ask+TrailingStop*point,Digits)))||(OrderStopLoss()==0))
                   {
                      bool  mnm=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+TrailingStop*point,Digits),OrderTakeProfit(),0,Red);
                    
                   }
                }
             }
          }
       }
    }
    
    
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS          Break Even                         |
    //+------------------------------------------------------------------+ 
    
    
    
    
    
    
    
    
    void MoveBreakEven() 
    {
       int cnt,total=OrdersTotal();
       for(cnt=0;cnt<total;cnt++)
       {
          if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
          if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
          {
             if(OrderType()==OP_BUY)
             {
                if(BreakEven>0)
                {
                   if(NormalizeDouble((Bid-OrderOpenPrice()),Digits)>BreakEven*point)
                   {
                      if(NormalizeDouble((OrderStopLoss()-OrderOpenPrice()),Digits)<0||(OrderStopLoss()==0))
                      {
                         bool  mm=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+BreakEvenPips*point,Digits),OrderTakeProfit(),0,Blue);
                      
                      }
                   }
                }
             }
             else
             {
                if(BreakEven>0)
                {
                   if(NormalizeDouble((OrderOpenPrice()-Ask),Digits)>BreakEven*point)
                   {
                      if(NormalizeDouble((OrderOpenPrice()-OrderStopLoss()),Digits)<0||(OrderStopLoss()==0))
                      {
                         bool  nn=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-BreakEvenPips*point,Digits),OrderTakeProfit(),0,Red);
                   
                      }
                   }
                }
             }
          }
       }
    }
    
    
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS  To Know The Profit Of Open Positions       |
    //+------------------------------------------------------------------+ 
    
    
    
    
    
    
    
    
    double Profit_By_USD(int type=-1)  
    {
     double pts;
     for(int i=0;i<OrdersTotal();i++) 
     {
      bool s=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ot=OrderType();
      double pt=OrderProfit(),
             sw=OrderSwap(),
             cm=OrderCommission();  
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ot==type||type==-1)
       {
        pts+=pt+sw+cm;
       }
      }
     }  
     return(pts);
    }  
    
    
    
    
     
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS         Closing Trades Together             |
    //+------------------------------------------------------------------+ 
    
    
    
    
    
    
    
    
    void CloseOrders(int type=-1) 
    {
     bool select,close,del;
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrdersTotal()>0&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
      {
       if(OrderType()==type||type==-1)
       {
        if(OrderType()==OP_BUY){close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5*Q);}
        if(OrderType()==OP_SELL){close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),5*Q);}
        if(OrderType()>OP_SELL){del=OrderDelete(OrderTicket());}
       } 
      }
     }
    }  
    
    
    
    
    
    
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS         To Know Total Orders                |
    //+------------------------------------------------------------------+ 
     
     
    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()&&MagicNumber==OrderMagicNumber()&&OrderType()==type)
       {
        cnt++;
       }
      }
     }
     return(cnt);
    }  
    
    
    
    
    
    
    
    
    
    
    
    
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS       Close Delete Orders                   |
    //+------------------------------------------------------------------+ 
    
    
    
    
    void CloseDeleteOrders(int type)
    {
     bool select,close;
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrdersTotal()>0&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
       if(OrderType()==type)
       {
        if(OrderType()==OP_BUY)  
        {
         close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5*Q);      
        }
        if(OrderType()==OP_SELL)  
        {
         close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),5*Q);
        }
        if(OrderType()>OP_SELL)   
        {
         close=OrderDelete(OrderTicket());
        }
       } 
      }
     }
    
    
    
    
    
    
    
    
    //دالة تعود بسعر آخر صفقة مفتوحة بدلالة نوعها
    double LastPrice(int type)
    {
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
      {
       return(OrderOpenPrice());
      }
     }
     return(0);
    }  
    
    
    
    
    
    
    
    
    
    
    
    
    /*
    //دالة اغلاق الصفقات بدلالة النوع
    void CloseOrders(int type=-1)
    {
     bool select,close;
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      string sy=OrderSymbol();
      int    tt=OrdersTotal(),
             tk=OrderTicket(),
             ot=OrderType(),
             mn=OrderMagicNumber();
      double lo=OrderLots();
      if(tt>0&&sy==Symbol()&&mn==MagicNumber)
      {
       if(ot==type||type==-1)
       {
        if(ot==OP_BUY){close=OrderClose(tk,lo,NormalizeDouble(Bid,Digits),5*Q);}
        if(ot==OP_SELL){close=OrderClose(tk,lo,NormalizeDouble(Ask,Digits),5*Q);}
        if(ot>OP_SELL){close=OrderDelete(tk);}
       } 
      }
     }
    }
    */
    
    
    
    
    //دالة لمعرفة نوع آخر صفقة مغلقة
    int LastType()
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ty=OrderType();      
      if(sy==Symbol()&&mn==MagicNumber)
      {
       return(ty); 
      }
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    //دالة لمعرفة توقيت اغلاق آخر صفقة بدلالة نوعها
    
    
    
    
    datetime LastTime(int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ty=OrderType();
      double pt=OrderProfit();
      datetime ct=OrderCloseTime();         
      if(sy==Symbol()&&mn==MagicNumber&&(ty==type||type==-1))
      {
       return(ct); 
      }
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    //دالة لمعرفة ربح آخر صفقة مغلقة بدلالة نوعها
    
    
    
    
    double LastProfit(string info,int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool   select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string sy=OrderSymbol();
      int    mn=OrderMagicNumber(),
             ty=OrderType();
      double pt=OrderProfit();
      datetime ct=OrderCloseTime();         
      if(sy==Symbol()&&mn==MagicNumber&&(ty==type||type==-1))
      {
      if(info=="Profit")return(pt);
       
      }
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    datetime FirstClose()
    {
      for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool     select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots();
      datetime om=OrderOpenTime();    
      if(sy==Symbol()&&mn==MagicNumber&&lo==LotsBuy)
        if(sy==Symbol()&&mn==MagicNumber&&lo==LotsSell)
      {
       return(om);
      }
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    double TotalProfit() 
    {
     double pts=0;
     for(int i=0;i<OrdersHistoryTotal();i++) 
     {
      bool     s=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol();
      int      mn=OrderMagicNumber();
      double   pt=OrderProfit(),
               sw=OrderSwap(),
               cm=OrderCommission();  
      datetime om=OrderCloseTime();
             
      if(sy==Symbol()&&mn==MagicNumber&&om>FirstClose())
      {
       pts+=pt+sw+cm;
      }
     }  
     return(pts);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    double LastOrder(string info,int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol(),
               mm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots(),
               op=OrderOpenPrice(),
               cp=OrderClosePrice(),
               pt=OrderProfit(),
               tp=OrderTakeProfit(),
               sl=OrderStopLoss();  
      datetime om=OrderOpenTime(),
               cm=OrderCloseTime();
                        
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ty==type||type==-1)
       {
        if(info=="Lots")return(lo);
        else if(info=="OpenPrice")return(op);
        else if(info=="ClosePrice")return(cp);
        else if(info=="Profit")return(pt);
        else if(info=="Type")return(ty);
        else if(info=="TP")return(tp);
        else if(info=="SL")return(sl);
        else if(info=="OpenTime")return(om);
        else if(info=="CloseTime")return(cm);
        else if(info=="Comment")return(mm);
       }
      } 
     }
     return(0);
    }  
    
    
    
    
     
     
     int TotalOrders(int type=-1)
    {
     int cnt=0;
     for(int i =0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()&&(OrderType()==type||type==-1))
       {
        cnt++;
       }
      }
     }
     return(cnt);
    }
    
    
    
    
    
    
    
    
      
      
      
    double Closed(string info,int type=-1)
    {
     for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      string   sy=OrderSymbol(),
               mm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots(),
               pt=OrderProfit(),
               op=OrderOpenPrice(),
               cp=OrderClosePrice(),
               tp=OrderTakeProfit(),
               sl=OrderStopLoss();   
                        
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ty==type||type==-1)
       {
        if(info=="Lots")return(lo);
        else if(info=="Profit")return(pt);
        else if(info=="Type")return(ty);
        else if(info=="OpenPrice")return(op);
        else if(info=="ClosePrice")return(cp);
        else if(info=="TP")return(tp);
        else if(info=="SL")return(sl);
       }
      } 
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    double CurrentLots(int type=-1)
    {
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      string   sy=OrderSymbol(),
               mm=OrderComment();
      int      mn=OrderMagicNumber(),
               ty=OrderType();
      double   lo=OrderLots();  
                        
      if(sy==Symbol()&&mn==MagicNumber)
      {
       if(ty==type||type==-1)
       {
        return(lo);
       }
      } 
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    int HistoryOrders(int type=-1)
    {
     int cnt=0;
     for(int i =0;i<OrdersHistoryTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
       if(OrderSymbol()==Symbol()&&MagicNumber==OrderMagicNumber()&&(OrderType()==type||type==-1))
       {
        cnt++;
       }
      }
     }
     return(cnt);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    double LastCurrent(string info,int type=-1)//دالة لمعرفة كل تفاصيل الصفقة المفعلة بدلالة النوع
    {
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&(OrderType()==type||type==-1))
      {
       if(info=="Type")return(OrderType());
       else if(info=="Lots")return(OrderLots());
       else if(info=="Price")return(OrderOpenPrice());
       else if(info=="TP")return(OrderTakeProfit());
       else if(info=="SL")return(OrderStopLoss());
       else if(info=="Profit")return(OrderProfit());
       else if(info=="Time")return(OrderOpenTime());
      }
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    double LastOrderClosed(string info)//نتيجة آخر صفقة مغلقة والاكبر من حيث توقيت الفتح
    {
     double c=0;
     for(int i=OrdersHistoryTotal()-1;i>=0;i--) 
     {
      bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()<=OP_SELL) 
      {                        
       if(OrderOpenTime()>c)c=OrderOpenTime();
       if(OrderOpenTime()==c)
       {
        if(info=="Profit")return(OrderProfit());
        else if(info=="Lots")return(OrderLots());
       }
      }  
     }
     return(0);
    }
    
    
    
    
    
    
    
    
    int Orderscnt()//دالة عدد الصفقات المفتوحة
    {
     int cnt=0;
     for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
       if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
       {
        cnt++;//عد الصفقات 
       }
      }
     }
     return(cnt);
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
     void CloseAllOrders(int type=-1)
            {
             bool select,close,del;
             for(int i=OrdersTotal()-1;i>=0;i--)
             {
              select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
              string sy=OrderSymbol();
              int    tt=OrdersTotal(),
                     tk=OrderTicket(),
                     ot=OrderType(),
                     mn=OrderMagicNumber();
              double lo=OrderLots();
              if(tt>0)
              {
               if(ot==type||type==-1)
               {
                if(ot==OP_BUY){close=OrderClose(tk,lo,MarketInfo(sy,MODE_BID),50);}  
                if(ot==OP_SELL){close=OrderClose(tk,lo,MarketInfo(sy,MODE_ASK),50);}
                if(ot>OP_SELL){del=OrderDelete(tk);}
               } 
              }
             }
            }


    اخى حسن صفقات التبريد شغاله بس اذا ماكس تريد = 5

    والاكسبيرت فتح صفقه شراء وعكس بيفتح تبريد بس المشكله ان لو انا عامل ماكس تريد = 1
    التبريد مش هيشتغل

    وانا عايز ان اعمل ماكس تريد لكل استيب يعنى ماكس تريد = 1 واتفتح صفقه يبقا الاكسبيرت ينتظر انعكاس السعر وتحقيق مسافة الاستيب واثناء الانتظار اى فرصه شراء هتتحق الاكسبيرت ميدخلهاش

    يعنى كل 100 نقطه انعكاس على صفقه شراء اذا تحقق شروط شراء يشترى
    كل 100 نقطه انعكاس على صفقه بيع اذا تحقق شروط بيع يبيع

    ومتحدد يشترى او يبيع بعد انعكاس الاستيب كام صفقه اللى هيا ماكس تريد من جديد


    ووقت ما اتحقق مسافة الاستيب يفتح صفقه وينتظر انعكاس مسافة الاستيب مره اخرى ويعمل بنفس الطريقه كده



    لان الوقتى لازم يكون عندى ماكس تريد = 5 او 10 وبيأخد اى فرصه بتظهر التبريد او الفرص الرئيسية اللى الاكسبيرت بيشتغل عليها وانا عايز اعمل حد لعدد الصفقات للسبب ده
    التعديل الأخير تم بواسطة aut ; 24-07-2019 الساعة 01:32 AM

  7. #2457

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة aut مشاهدة المشاركة
    اخى حسن صفقات التبريد شغاله بس اذا ماكس تريد = 5

    والاكسبيرت فتح صفقه شراء وعكس بيفتح تبريد بس المشكله ان لو انا عامل ماكس تريد = 1
    التبريد مش هيشتغل

    وانا عايز ان اعمل ماكس تريد لكل استيب يعنى ماكس تريد = 1 واتفتح صفقه يبقا الاكسبيرت ينتظر انعكاس السعر وتحقيق مسافة الاستيب واثناء الانتظار اى فرصه شراء هتتحق الاكسبيرت ميدخلهاش

    يعنى كل 100 نقطه انعكاس على صفقه شراء اذا تحقق شروط شراء يشترى
    كل 100 نقطه انعكاس على صفقه بيع اذا تحقق شروط بيع يبيع

    ومتحدد يشترى او يبيع بعد انعكاس الاستيب كام صفقه اللى هيا ماكس تريد من جديد


    ووقت ما اتحقق مسافة الاستيب يفتح صفقه وينتظر انعكاس مسافة الاستيب مره اخرى ويعمل بنفس الطريقه كدهl

    لان الوقتى لازم يكون عندى ماكس تريد = 5 او 10 وبيأخد اى فرصه بتظهر التبريد او الفرص الرئيسية اللى الاكسبيرت بيشتغل عليها وانا عايز اعمل حد لعدد الصفقات للسبب ده
    اخي الكريم هذه شروطك ولا اعلم شيء عن الاستراتيحية واقوم فقط بتصحيح الاخطاء البرمجية هنا
    عموما لا يمكن للاكسبيرت فتح اكثر من صفقة رئيسية من نفس النوع يعني لن تجد اكثر من شراء رئيسي او بيع رئيسي
    اما الماكس تريد مرتبط فقط بالتبريدات بحيث البيع منفصل عن الشراء
    التعديل الأخير تم بواسطة kira-h ; 24-07-2019 الساعة 04:53 AM

  8. #2458
    عضو جديد
    تاريخ التسجيل
    Jul 2018
    المشاركات
    99

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة kira-h مشاهدة المشاركة
    اخي الكريم هذه شروطك ولا اعلم شيء عن الاستراتيحية واقوم فقط بتصحيح الاخطاء البرمجية هنا
    عموما لا يمكن للاكسبيرت فتح اكثر من صفقة رئيسية من نفس النوع يعني لن تجد اكثر من شراء رئيسي او بيع رئيسي
    اما الماكس تريد مرتبط فقط بالتبريدات بحيث البيع منفصل عن الشراء


    طيب اتحملنى بس اخى حسن

    انا عايز الصفقات اللى تتفتح بعد انعكاس مسافة الاستيب تكون هيا الصفقات الرئيسيه


    مفيش اي حل برمجى مثلاً
    اذا ماكس تريد = 2 واذا فى صفقين شراء مفتوحين والسعر عكس عليهم 100 نقطه = ماكس تريد متاح من جديد لصفقتين واذا تحقق شروط الشراء يشترى

    البيع لوحده والشراء لوحده

    اتحملنى اخى او اى افضل حل لو عايز الاكسبيرت يعمل على الشكل ده
    الصور المرفقة الصور المرفقة  
    التعديل الأخير تم بواسطة aut ; 24-07-2019 الساعة 05:30 AM

  9. #2459

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة aut مشاهدة المشاركة
    طيب اتحملنى بس اخى حسن

    انا عايز الصفقات اللى تتفتح بعد انعكاس مسافة الاستيب تكون هيا الصفقات الرئيسيه


    مفيش اي حل برمجى مثلاً
    اذا ماكس تريد = 2 واذا فى صفقين شراء مفتوحين والسعر عكس عليهم 100 نقطه = ماكس تريد متاح من جديد لصفقتين واذا تحقق شروط الشراء يشترى

    البيع لوحده والشراء لوحده

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

  10. #2460
    عضو جديد
    تاريخ التسجيل
    Jul 2018
    المشاركات
    99

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة kira-h مشاهدة المشاركة
    اشرح الاستراتيجية كاملة حتى افهم المطلوب فالشروط الخاصة بالصفقة الرئيسية غير واضحة برمجيا
    اما مسالة فتح عدد معين من الصفقات كل ستيب قلنا انها مسالة معقدة برمجيا فيها مصفوفات ودوال في غنا عنها لانه يمكنك بدل هذا التعقيد فتح صفقة واحدة كل ستيب بعقد موحد
    الاكسبيرت بيشترى او يبيع كل استيب محدد كل ما تحقق بيشترى او يبيع دى الاستراتيجية اللى بيشتغل عليها

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

    والبيع والشراء كل نوعه لوحده

صفحة 246 من 258 الأولىالأولى ... 146196236244245246247248256 ... الأخيرةالأخيرة

العلامات المرجعية

العلامات المرجعية

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •