الأسئلة البرمجية MT5 & MT4

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • #91
    المشاركة الأصلية بواسطة zooz1o مشاهدة المشاركة
    يعني كمثال اقول :
    اذا كان وقت ظهور الاشارة اكبر من وقت ظهور الاشارة السابقة افتح بلوت مضاعف

    فكيف اصيغها؟
    او كيف استخرج وقت كل اشارة؟
    اخي العزيز

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

    كود PHP:
    //+------------------------------------------------------------------+
    //| |
    //+------------------------------------------------------------------+
    double LastOrderInfo(string N, int type = -1)
    {
    
    for(int i = OrdersTotal() - 1; i >= 0 ; i--)
    {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    if(OrderSymbol() == Symbol()
    && OrderMagicNumber() == MagicNumber
    && (OrderType() == type || type == -1))
    {
    if (N == "Type") return (OrderType());
    else if (N == "SL") return (OrderStopLoss());
    else if (N == "TP") return (OrderTakeProfit());
    else if (N == "Lots") return (OrderLots());
    else if (N == "Price") return (OrderOpenPrice());
    else if (N == "Profit") return (OrderProfit());
    else if (N == "Time") return (OrderOpenTime());
    else if (N == "Ticket") return (OrderTicket());
    
    }
    }
    return(0);
    }
    لاآن لديك آخر عملية وكل المعلومات المتعلقة بها كل ماعليك الآن استخراج قيمة اللوت وضربه بمعامل المضاعفة واذا اردت عكس العملية يعني لوكانت آخر عملية شراء وتريد العملية الجديد بيع كل ماعليك استخراج نوع آخر عملية وتنفيذ عملية جديدة معاكسة

    تعليق


    • #92
      المشاركة الأصلية بواسطة Turkm مشاهدة المشاركة

      اخي العزيز

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

      كود PHP:
      //+------------------------------------------------------------------+
      //| |
      //+------------------------------------------------------------------+
      double LastOrderInfo(string N, int type = -1)
      {
      
      for(int i = OrdersTotal() - 1; i >= 0 ; i--)
      {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      if(OrderSymbol() == Symbol()
      && OrderMagicNumber() == MagicNumber
      && (OrderType() == type || type == -1))
      {
      if (N == "Type") return (OrderType());
      else if (N == "SL") return (OrderStopLoss());
      else if (N == "TP") return (OrderTakeProfit());
      else if (N == "Lots") return (OrderLots());
      else if (N == "Price") return (OrderOpenPrice());
      else if (N == "Profit") return (OrderProfit());
      else if (N == "Time") return (OrderOpenTime());
      else if (N == "Ticket") return (OrderTicket());
      
      }
      }
      return(0);
      }
      لاآن لديك آخر عملية وكل المعلومات المتعلقة بها كل ماعليك الآن استخراج قيمة اللوت وضربه بمعامل المضاعفة واذا اردت عكس العملية يعني لوكانت آخر عملية شراء وتريد العملية الجديد بيع كل ماعليك استخراج نوع آخر عملية وتنفيذ عملية جديدة معاكسة
      بناءا على التعليمات التي ذكرتها لي؛
      وفي هذا الكود المطلوب فتح صفقة شراء بلوت مضاعف:
      كود PHP:
      if(IndicatorBuffer1!=EMPTY_VALUE
      && IndicatorBuffer1>0
      && LastOrderInfo("Lots")==Lots
      && LastOrderInfo("Type")==0
      )
      
           {
              if(lastTime != iTime(Symbol(), 0, 1)) {lastTime = iTime(Symbol(), 0, 1);}else{return 0;}
              result=OrderSend(Symbol(),OP_BUY,Lots2,Ask,Slippage,0,0,"Comment",MagicNumber,0,Blue);
              if(result>0)
              {
               if(TakeProfit2>0) TheTakeProfit=Ask+TakeProfit2*MyPoint;
               if(StopLoss2>0) TheStopLoss=Ask-StopLoss2*MyPoint;
               if ( ! OrderSelect(result,SELECT_BY_TICKET)){return(0);}
               if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green)){return(0);}
              }
              return(0);
           }
      ورغم ذلك لم يحدث!
      أين خطأي؟

      تعليق


      • #93
        المشاركة الأصلية بواسطة zooz1o مشاهدة المشاركة

        بناءا على التعليمات التي ذكرتها لي؛
        وفي هذا الكود المطلوب فتح صفقة شراء بلوت مضاعف:
        كود PHP:
        if(IndicatorBuffer1!=EMPTY_VALUE
        && IndicatorBuffer1>0
        && LastOrderInfo("Lots")==Lots
        && LastOrderInfo("Type")==0
        )
        
        {
        if(lastTime != iTime(Symbol(), 0, 1)) {lastTime = iTime(Symbol(), 0, 1);}else{return 0;}
        result=OrderSend(Symbol(),OP_BUY,Lots2,Ask,Slippage,0,0,"Comment",MagicNumber,0,Blue);
        if(result>0)
        {
        if(TakeProfit2>0) TheTakeProfit=Ask+TakeProfit2*MyPoint;
        if(StopLoss2>0) TheStopLoss=Ask-StopLoss2*MyPoint;
        if ( ! OrderSelect(result,SELECT_BY_TICKET)){return(0);}
        if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green)){return(0);}
        }
        return(0);
        }
        ورغم ذلك لم يحدث!
        أين خطأي؟
        هل تاكدت اولا ان هذا الشرط يتم تحقيه:

        كود PHP:
        if(IndicatorBuffer1!=EMPTY_VALUE
        && IndicatorBuffer1>0
        && LastOrderInfo("Lots")==Lots
        && LastOrderInfo("Type")==0
        )
        ويتم الدخول لداخل الشرط ثم لايحدث التنفيذ

        يجب ان تحدد من اين تحدث المشكلة اولا

        تعليق


        • #94
          هل يمكن كود لوظيفة استظهار اخر صفقة بيع و اخر صفقة شراء بناءا على نمبر مجيك على الميتاتريدر 5

          تعليق


          • #95
            المشاركة الأصلية بواسطة kellahd مشاهدة المشاركة
            هل يمكن كود لوظيفة استظهار اخر صفقة بيع و اخر صفقة شراء بناءا على نمبر مجيك على الميتاتريدر 5
            تفضل


            كود PHP:
            void GetastOrder(long order_magic, string type)
            {
            //--- variables for returning values from order properties
            ulong ticket;
            double open_price;
            double initial_volume;
            datetime time_setup;
            string symbol;
            long positionID;
            //--- number of current pending orders
            uint total=OrdersTotal();
            //--- go through orders in a loop
            for(uint i=0;i<total;i++)
            {
            //--- return order ticket by its position in the list
            if((ticket=OrderGetTicket(i))>0)
            {
            if(OrderGetInteger(ORDER_MAGIC) == order_magic && EnumToString(ENUM_ORDER_TYPE(OrderGetInteger(ORDER _TYPE))) == type)
            {
            //--- return order properties
            open_price =OrderGetDouble(ORDER_PRICE_OPEN);
            time_setup =(datetime)OrderGetInteger(ORDER_TIME_SETUP);
            symbol =OrderGetString(ORDER_SYMBOL);
            positionID =OrderGetInteger(ORDER_POSITION_ID);
            initial_volume=OrderGetDouble(ORDER_VOLUME_INITIAL );
            //--- prepare and show information about the order
            printf("#ticket %d %s %G %s at %G was set up at %s",
            ticket, // order ticket
            type, // type
            initial_volume, // placed volume
            symbol, // symbol
            open_price, // specified open price
            TimeToString(time_setup)// time of order placing
            );
            
            }
            }
            }
            //---
            }

            تعليق


            • #96
              كود PHP:
              if(Buffer1!=EMPTY_VALUE
              && Buffer1>0
              ) // Here is your open buy rule
              
                   {
                      
                      result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"Comment",MagicNumber,0,Blue);
                      if(result>0)
                      {
                       if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
                       if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
                       if ( ! OrderSelect(result, SELECT_BY_TICKET)){return(0);}
                       if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green)){return(0);}
                      }
                      return(0);
                   }
              //-----------------------------------------------------------------------------------------------1
              if(Buffer1!=EMPTY_VALUE
              && Buffer1>0
              && LastOrderInfo("Lots")==Lot
              ) // Here is your open buy2 rule
              
                   {
                      
                      result=OrderSend(Symbol(),OP_BUY,Lots2,Ask,Slippage,0,0,"Comment",MagicNumber,0,Blue);
                      if(result>0)
                      {
                       if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
                       if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
                       if ( ! OrderSelect(result,SELECT_BY_TICKET)){return(0);}
                       if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green)){return(0);}
                      }
                      return(0);
                   }
              أخي في هذا الكود محاولة مني لفتح:
              1- صفقة بلوت 1 للسهم الاول
              2- صفقة بلوت 2 للسهم الثاني

              لكن مع الاسف يتم فتح الصفقتين لنفس السهم!
              مع العلم انني لا اريد استخدام هذه الوظيفة:
              كود PHP:
              if(lastTime != iTime(Symbol(), 0, 1)) {lastTime = iTime(Symbol(), 0, 1);}else{return 0;} 
              
              لأنها تمنع صفقات أريد حدوثها

              فهل بالامكان حل هذه المشكلة بدون الاعتماد على الوظيفة السابقة
              مثلا أقوم بتحديد وقت كل سهم يتكون ومقارنته بالوقت للسهم الحالي

              أي أن يكون الشرط كالتالي:
              - اذا كان وقت الاشارة السابقة لا يساوي وقت الاشارة الحالية النتيجة يفتح ب 2 لوت

              أو اذا كان عندك حلول اخرى اسهل قلها رجاءا

              تعليق


              • #97
                المشاركة الأصلية بواسطة zooz1o مشاهدة المشاركة
                كود PHP:
                if(Buffer1!=EMPTY_VALUE
                && Buffer1>0
                ) // Here is your open buy rule
                
                {
                
                result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"Comment",MagicNumber,0,Blue);
                if(result>0)
                {
                if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
                if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
                if ( ! OrderSelect(result, SELECT_BY_TICKET)){return(0);}
                if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green)){return(0);}
                }
                return(0);
                }
                //-----------------------------------------------------------------------------------------------1
                if(Buffer1!=EMPTY_VALUE
                && Buffer1>0
                && LastOrderInfo("Lots")==Lot
                ) // Here is your open buy2 rule
                
                {
                
                result=OrderSend(Symbol(),OP_BUY,Lots2,Ask,Slippage,0,0,"Comment",MagicNumber,0,Blue);
                if(result>0)
                {
                if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
                if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
                if ( ! OrderSelect(result,SELECT_BY_TICKET)){return(0);}
                if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green)){return(0);}
                }
                return(0);
                }
                أخي في هذا الكود محاولة مني لفتح:
                1- صفقة بلوت 1 للسهم الاول
                2- صفقة بلوت 2 للسهم الثاني

                لكن مع الاسف يتم فتح الصفقتين لنفس السهم!
                مع العلم انني لا اريد استخدام هذه الوظيفة:
                كود PHP:
                if(lastTime != iTime(Symbol(), 0, 1)) {lastTime = iTime(Symbol(), 0, 1);}else{return 0;} 
                
                لأنها تمنع صفقات أريد حدوثها

                فهل بالامكان حل هذه المشكلة بدون الاعتماد على الوظيفة السابقة
                مثلا أقوم بتحديد وقت كل سهم يتكون ومقارنته بالوقت للسهم الحالي

                أي أن يكون الشرط كالتالي:
                - اذا كان وقت الاشارة السابقة لا يساوي وقت الاشارة الحالية النتيجة يفتح ب 2 لوت

                أو اذا كان عندك حلول اخرى اسهل قلها رجاءا

                ارفقلي الملف لو سمحت

                تعليق


                • #98
                  المشاركة الأصلية بواسطة Turkm مشاهدة المشاركة


                  ارفقلي الملف لو سمحت
                  كود PHP:
                  extern int MagicNumber=10001;
                  extern int MagicNumber2=10002;
                  extern int MagicNumber3=10003;
                  extern int MagicNumber4=10004;
                  extern double Lots =0.1;
                  extern double Lots2 =0.2;
                  
                   double StopLoss=0;
                   double StopLoss2=0;
                   
                  extern double TakeProfit=10;
                  extern double TakeProfit2=20;
                  
                  extern double ADX_Period=14;
                  
                   int TrailingStop=0;
                   int Slippage=3;
                  //+------------------------------------------------------------------+
                  //    expert start function
                  //+------------------------------------------------------------------+
                  int start()
                  {
                  
                    double Arrow_UP=iCustom(Symbol(),0,"ADX Signals",ADX_Period,0,1);
                    double Arrow_DOWN=iCustom(Symbol(),0,"ADX Signals",ADX_Period,1,1);
                    
                    double MyPoint=Point;
                    if(Digits==1 || Digits==2 || Digits==3 || Digits==4 || Digits==5 || Digits==6 || Digits==7) MyPoint=Point*10;
                  
                    double TheStopLoss=0;
                    double TheTakeProfit=0;
                  
                    {
                       int result=0;
                  
                  if(Arrow_UP!=EMPTY_VALUE
                  && Arrow_UP>0
                  && TotalOrdersCount()==0
                  ) // Here is your open buy rule
                  
                       {
                          
                          result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"Comment",MagicNumber,0,Blue);
                          if(result>0)
                          {
                           if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
                           if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
                           if ( ! OrderSelect(result, SELECT_BY_TICKET)){return(0);}
                           if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green)){return(0);}
                          }
                          return(0);
                       }
                  
                  if(Arrow_DOWN!=EMPTY_VALUE
                  && Arrow_DOWN>0
                  && TotalOrdersCount2()==0
                  ) // Here is your open Sell rule
                  
                       {
                          
                          result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"Comment2",MagicNumber2,0,Red);
                          if(result>0)
                          {
                           if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint;
                           if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint;
                           if ( ! OrderSelect(result, SELECT_BY_TICKET)){return(0);}
                           if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green)){return(0);}
                          }
                          return(0);
                       }
                  //-----------------------------------------------------------------------------------------------1
                  if(Arrow_UP!=EMPTY_VALUE
                  && Arrow_UP>0
                  && LastOrderInfo("Lots")==Lots
                  && TotalOrdersCount3()==0
                  ) // Here is your open buy rule
                  
                       {
                          
                          result=OrderSend(Symbol(),OP_BUY,Lots2,Ask,Slippage,0,0,"Comment3",MagicNumber3,0,Blue);
                          if(result>0)
                          {
                           if(TakeProfit2>0) TheTakeProfit=Ask+TakeProfit2*MyPoint;
                           if(StopLoss2>0) TheStopLoss=Ask-StopLoss2*MyPoint;
                           if ( ! OrderSelect(result, SELECT_BY_TICKET)){return(0);}
                           if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green)){return(0);}
                          }
                          return(0);
                       }
                  
                  if(Arrow_DOWN!=EMPTY_VALUE
                  && Arrow_DOWN>0
                  && LastOrderInfo2("Lots")==Lots
                  && TotalOrdersCount4()==0
                  ) // Here is your open Sell rule
                  
                       {
                          
                          result=OrderSend(Symbol(),OP_SELL,Lots2,Bid,Slippage,0,0,"Comment4",MagicNumber4,0,Red);
                          if(result>0)
                          {
                           if(TakeProfit2>0) TheTakeProfit=Bid-TakeProfit2*MyPoint;
                           if(StopLoss2>0) TheStopLoss=Bid+StopLoss2*MyPoint;
                           if ( ! OrderSelect(result, SELECT_BY_TICKET)){return(0);}
                           if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green)){return(0);}
                          }
                          return(0);
                       }
                  //-----------------------------------------------------------------------------------------------2
                  }
                    
                    for(int cnt=0;cnt<OrdersTotal();cnt++)
                       {
                        if ( ! OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)){return(0);}
                        if(OrderType()<=OP_SELL &&  
                           OrderSymbol()==Symbol()
                           &&((OrderMagicNumber()==MagicNumber)||(OrderMagicNumber()==MagicNumber2))
                           )  
                          {
                           if(OrderType()==OP_BUY)  
                             {
                                if(iHigh(_Symbol, PERIOD_CURRENT,1)>iHigh(_Symbol, PERIOD_CURRENT,1)
                                
                                )    //here is your close buy rule
                                {
                                     if ( ! OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red)){return(0);}
                                }
                              if(TrailingStop>0)  
                                {                
                                 if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)
                                   {
                                    if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
                                      {
                                       if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green)){return(0);}
                                       return(0);
                                      }
                                   }
                                }
                             }
                           else
                             {
                                if(iHigh(_Symbol, PERIOD_CURRENT,1)>iHigh(_Symbol, PERIOD_CURRENT,1)
                                  
                                )    // here is your close sell rule
                                  {
                                     if ( ! OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red)){return(0);}
                                  }
                              if(TrailingStop>0)  
                                {                
                                 if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))
                                   {
                                    if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
                                      {
                                       if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red)){return(0);}
                                       return(0);
                                      }
                                   }
                                }
                             }
                          }
                       }
                     return(0);
                  }
                  //======================================================================
                  int TotalOrdersCount()
                  {
                    int result=0;
                    for(int i=0;i<OrdersTotal();i++)
                    {
                       if ( ! OrderSelect(i,SELECT_BY_POS ,MODE_TRADES)){return(0);}
                       if (OrderMagicNumber()==MagicNumber) result++;
                     }
                    return (result);
                  }
                  //================================================================================
                  int TotalOrdersCount2()
                  {
                    int result=0;
                    for(int i=0;i<OrdersTotal();i++)
                    {
                       if ( ! OrderSelect(i,SELECT_BY_POS ,MODE_TRADES)){return(0);}
                       if (OrderMagicNumber()==MagicNumber2) result++;
                     }
                    return (result);
                  }
                  //================================================================================
                  int TotalOrdersCount3()
                  {
                    int result=0;
                    for(int i=0;i<OrdersTotal();i++)
                    {
                       if ( ! OrderSelect(i,SELECT_BY_POS ,MODE_TRADES)){return(0);}
                       if (OrderMagicNumber()==MagicNumber3) result++;
                     }
                    return (result);
                  }
                  //================================================================================
                  int TotalOrdersCount4()
                  {
                    int result=0;
                    for(int i=0;i<OrdersTotal();i++)
                    {
                       if ( ! OrderSelect(i,SELECT_BY_POS ,MODE_TRADES)){return(0);}
                       if (OrderMagicNumber()==MagicNumber4) result++;
                     }
                    return (result);
                  }
                  //================================================================================
                  double LastOrderInfo(string N, int type = -1)
                  {
                  
                  for(int i = OrdersTotal() - 1; i >= 0 ; i--)
                  {
                  if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
                  if(OrderSymbol() == Symbol()
                  && OrderMagicNumber() == MagicNumber
                  && (OrderType() == type || type == -1))
                  {
                  if (N == "Type") return (OrderType());
                  else if (N == "SL") return (OrderStopLoss());
                  else if (N == "TP") return (OrderTakeProfit());
                  else if (N == "Lots") return (OrderLots());
                  else if (N == "Price") return (OrderOpenPrice());
                  else if (N == "Profit") return (OrderProfit());
                  else if (N == "Time") return (OrderOpenTime());
                  else if (N == "Ticket") return (OrderTicket());
                  else if (N == "Comment") return (OrderComment());
                  else if (N == "MagicNumber") return (OrderMagicNumber());
                  }
                  }
                  return(0);
                  }
                  //======================================================================
                  double LastOrderInfo2(string N, int type = -1)
                  {
                  
                  for(int i = OrdersTotal() - 1; i >= 0 ; i--)
                  {
                  if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
                  if(OrderSymbol() == Symbol()
                  && OrderMagicNumber() == MagicNumber2
                  && (OrderType() == type || type == -1))
                  {
                  if (N == "Type") return (OrderType());
                  else if (N == "SL") return (OrderStopLoss());
                  else if (N == "TP") return (OrderTakeProfit());
                  else if (N == "Lots") return (OrderLots());
                  else if (N == "Price") return (OrderOpenPrice());
                  else if (N == "Profit") return (OrderProfit());
                  else if (N == "Time") return (OrderOpenTime());
                  else if (N == "Ticket") return (OrderTicket());
                  else if (N == "Comment") return (OrderComment());
                  else if (N == "MagicNumber") return (OrderMagicNumber());
                  }
                  }
                  return(0);
                  }
                  //======================================================================
                  double LastClosedInfo(string S, int type = -1)
                  {
                  for(int i = OrdersHistoryTotal() - 1; i >= 0; i--)
                  if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
                  if(OrderSymbol() == Symbol()
                  && OrderMagicNumber() == MagicNumber
                  && (OrderType() == type || type == -1))
                  {
                  if(S == "Lots") return(OrderLots());
                  else if(S == "OpenPrice") return(OrderOpenPrice());
                  else if(S == "ClosePrice") return(OrderClosePrice());
                  else if(S == "OpenPrice") return(OrderOpenPrice());
                  else if(S == "TP") return(OrderTakeProfit());
                  else if(S == "SL") return(OrderStopLoss());
                  else if(S == "Type") return(OrderType());
                  else if(S == "Profit") return(OrderProfit());
                  else if(S == "OpenTime") return(OrderOpenTime());
                  else if(S == "CloseTime") return(OrderCloseTime());
                  else if(S == "Com") return(OrderCommission());
                  else if(S == "Swap") return(OrderSwap());
                  else if(S == "Comment") return(OrderComment());
                  else if(S == "MagicNumber") return(OrderMagicNumber());
                  }
                  return(0);
                  }
                  //======================================================================
                  double LastClosedInfo2(string S, int type = -1)
                  {
                  for(int i = OrdersHistoryTotal() - 1; i >= 0; i--)
                  if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
                  if(OrderSymbol() == Symbol()
                  && OrderMagicNumber() == MagicNumber2
                  && (OrderType() == type || type == -1))
                  {
                  if(S == "Lots") return(OrderLots());
                  else if(S == "OpenPrice") return(OrderOpenPrice());
                  else if(S == "ClosePrice") return(OrderClosePrice());
                  else if(S == "OpenPrice") return(OrderOpenPrice());
                  else if(S == "TP") return(OrderTakeProfit());
                  else if(S == "SL") return(OrderStopLoss());
                  else if(S == "Type") return(OrderType());
                  else if(S == "Profit") return(OrderProfit());
                  else if(S == "OpenTime") return(OrderOpenTime());
                  else if(S == "CloseTime") return(OrderCloseTime());
                  else if(S == "Com") return(OrderCommission());
                  else if(S == "Swap") return(OrderSwap());
                  else if(S == "Comment") return(OrderComment());
                  else if(S == "MagicNumber") return(OrderMagicNumber());
                  }
                  return(0);
                  }
                  
                  الملف مرفق:
                  الملفات المرفقة

                  تعليق


                  • #99
                    المشاركة الأصلية بواسطة zooz1o مشاهدة المشاركة

                    كود PHP:
                    extern int MagicNumber=10001;
                    extern int MagicNumber2=10002;
                    extern int MagicNumber3=10003;
                    extern int MagicNumber4=10004;
                    extern double Lots =0.1;
                    extern double Lots2 =0.2;
                    
                    double StopLoss=0;
                    double StopLoss2=0;
                    
                    extern double TakeProfit=10;
                    extern double TakeProfit2=20;
                    
                    extern double ADX_Period=14;
                    
                    int TrailingStop=0;
                    int Slippage=3;
                    //+------------------------------------------------------------------+
                    // expert start function
                    //+------------------------------------------------------------------+
                    int start()
                    {
                    
                    double Arrow_UP=iCustom(Symbol(),0,"ADX Signals",ADX_Period,0,1);
                    double Arrow_DOWN=iCustom(Symbol(),0,"ADX Signals",ADX_Period,1,1);
                    
                    double MyPoint=Point;
                    if(Digits==1 || Digits==2 || Digits==3 || Digits==4 || Digits==5 || Digits==6 || Digits==7) MyPoint=Point*10;
                    
                    double TheStopLoss=0;
                    double TheTakeProfit=0;
                    
                    {
                    int result=0;
                    
                    if(Arrow_UP!=EMPTY_VALUE
                    && Arrow_UP>0
                    && TotalOrdersCount()==0
                    ) // Here is your open buy rule
                    
                    {
                    
                    result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"Comment",MagicNumber,0,Blue);
                    if(result>0)
                    {
                    if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
                    if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
                    if ( ! OrderSelect(result, SELECT_BY_TICKET)){return(0);}
                    if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green)){return(0);}
                    }
                    return(0);
                    }
                    
                    if(Arrow_DOWN!=EMPTY_VALUE
                    && Arrow_DOWN>0
                    && TotalOrdersCount2()==0
                    ) // Here is your open Sell rule
                    
                    {
                    
                    result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"Comment2",MagicNumber2,0,Red);
                    if(result>0)
                    {
                    if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint;
                    if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint;
                    if ( ! OrderSelect(result, SELECT_BY_TICKET)){return(0);}
                    if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green)){return(0);}
                    }
                    return(0);
                    }
                    //-----------------------------------------------------------------------------------------------1
                    if(Arrow_UP!=EMPTY_VALUE
                    && Arrow_UP>0
                    && LastOrderInfo("Lots")==Lots
                    && TotalOrdersCount3()==0
                    ) // Here is your open buy rule
                    
                    {
                    
                    result=OrderSend(Symbol(),OP_BUY,Lots2,Ask,Slippage,0,0,"Comment3",MagicNumber3,0,Blue);
                    if(result>0)
                    {
                    if(TakeProfit2>0) TheTakeProfit=Ask+TakeProfit2*MyPoint;
                    if(StopLoss2>0) TheStopLoss=Ask-StopLoss2*MyPoint;
                    if ( ! OrderSelect(result, SELECT_BY_TICKET)){return(0);}
                    if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green)){return(0);}
                    }
                    return(0);
                    }
                    
                    if(Arrow_DOWN!=EMPTY_VALUE
                    && Arrow_DOWN>0
                    && LastOrderInfo2("Lots")==Lots
                    && TotalOrdersCount4()==0
                    ) // Here is your open Sell rule
                    
                    {
                    
                    result=OrderSend(Symbol(),OP_SELL,Lots2,Bid,Slippage,0,0,"Comment4",MagicNumber4,0,Red);
                    if(result>0)
                    {
                    if(TakeProfit2>0) TheTakeProfit=Bid-TakeProfit2*MyPoint;
                    if(StopLoss2>0) TheStopLoss=Bid+StopLoss2*MyPoint;
                    if ( ! OrderSelect(result, SELECT_BY_TICKET)){return(0);}
                    if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green)){return(0);}
                    }
                    return(0);
                    }
                    //-----------------------------------------------------------------------------------------------2
                    }
                    
                    for(int cnt=0;cnt<OrdersTotal();cnt++)
                    {
                    if ( ! OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)){return(0);}
                    if(OrderType()<=OP_SELL &&
                    OrderSymbol()==Symbol()
                    &&((OrderMagicNumber()==MagicNumber)||(OrderMagicNumber()==MagicNumber2))
                    )
                    {
                    if(OrderType()==OP_BUY)
                    {
                    if(iHigh(_Symbol, PERIOD_CURRENT,1)>iHigh(_Symbol, PERIOD_CURRENT,1)
                    
                    ) //here is your close buy rule
                    {
                    if ( ! OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red)){return(0);}
                    }
                    if(TrailingStop>0)
                    {
                    if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)
                    {
                    if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
                    {
                    if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green)){return(0);}
                    return(0);
                    }
                    }
                    }
                    }
                    else
                    {
                    if(iHigh(_Symbol, PERIOD_CURRENT,1)>iHigh(_Symbol, PERIOD_CURRENT,1)
                    
                    ) // here is your close sell rule
                    {
                    if ( ! OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red)){return(0);}
                    }
                    if(TrailingStop>0)
                    {
                    if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))
                    {
                    if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
                    {
                    if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red)){return(0);}
                    return(0);
                    }
                    }
                    }
                    }
                    }
                    }
                    return(0);
                    }
                    //======================================================================
                    int TotalOrdersCount()
                    {
                    int result=0;
                    for(int i=0;i<OrdersTotal();i++)
                    {
                    if ( ! OrderSelect(i,SELECT_BY_POS ,MODE_TRADES)){return(0);}
                    if (OrderMagicNumber()==MagicNumber) result++;
                    }
                    return (result);
                    }
                    //================================================================================
                    int TotalOrdersCount2()
                    {
                    int result=0;
                    for(int i=0;i<OrdersTotal();i++)
                    {
                    if ( ! OrderSelect(i,SELECT_BY_POS ,MODE_TRADES)){return(0);}
                    if (OrderMagicNumber()==MagicNumber2) result++;
                    }
                    return (result);
                    }
                    //================================================================================
                    int TotalOrdersCount3()
                    {
                    int result=0;
                    for(int i=0;i<OrdersTotal();i++)
                    {
                    if ( ! OrderSelect(i,SELECT_BY_POS ,MODE_TRADES)){return(0);}
                    if (OrderMagicNumber()==MagicNumber3) result++;
                    }
                    return (result);
                    }
                    //================================================================================
                    int TotalOrdersCount4()
                    {
                    int result=0;
                    for(int i=0;i<OrdersTotal();i++)
                    {
                    if ( ! OrderSelect(i,SELECT_BY_POS ,MODE_TRADES)){return(0);}
                    if (OrderMagicNumber()==MagicNumber4) result++;
                    }
                    return (result);
                    }
                    //================================================================================
                    double LastOrderInfo(string N, int type = -1)
                    {
                    
                    for(int i = OrdersTotal() - 1; i >= 0 ; i--)
                    {
                    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
                    if(OrderSymbol() == Symbol()
                    && OrderMagicNumber() == MagicNumber
                    && (OrderType() == type || type == -1))
                    {
                    if (N == "Type") return (OrderType());
                    else if (N == "SL") return (OrderStopLoss());
                    else if (N == "TP") return (OrderTakeProfit());
                    else if (N == "Lots") return (OrderLots());
                    else if (N == "Price") return (OrderOpenPrice());
                    else if (N == "Profit") return (OrderProfit());
                    else if (N == "Time") return (OrderOpenTime());
                    else if (N == "Ticket") return (OrderTicket());
                    else if (N == "Comment") return (OrderComment());
                    else if (N == "MagicNumber") return (OrderMagicNumber());
                    }
                    }
                    return(0);
                    }
                    //======================================================================
                    double LastOrderInfo2(string N, int type = -1)
                    {
                    
                    for(int i = OrdersTotal() - 1; i >= 0 ; i--)
                    {
                    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
                    if(OrderSymbol() == Symbol()
                    && OrderMagicNumber() == MagicNumber2
                    && (OrderType() == type || type == -1))
                    {
                    if (N == "Type") return (OrderType());
                    else if (N == "SL") return (OrderStopLoss());
                    else if (N == "TP") return (OrderTakeProfit());
                    else if (N == "Lots") return (OrderLots());
                    else if (N == "Price") return (OrderOpenPrice());
                    else if (N == "Profit") return (OrderProfit());
                    else if (N == "Time") return (OrderOpenTime());
                    else if (N == "Ticket") return (OrderTicket());
                    else if (N == "Comment") return (OrderComment());
                    else if (N == "MagicNumber") return (OrderMagicNumber());
                    }
                    }
                    return(0);
                    }
                    //======================================================================
                    double LastClosedInfo(string S, int type = -1)
                    {
                    for(int i = OrdersHistoryTotal() - 1; i >= 0; i--)
                    if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
                    if(OrderSymbol() == Symbol()
                    && OrderMagicNumber() == MagicNumber
                    && (OrderType() == type || type == -1))
                    {
                    if(S == "Lots") return(OrderLots());
                    else if(S == "OpenPrice") return(OrderOpenPrice());
                    else if(S == "ClosePrice") return(OrderClosePrice());
                    else if(S == "OpenPrice") return(OrderOpenPrice());
                    else if(S == "TP") return(OrderTakeProfit());
                    else if(S == "SL") return(OrderStopLoss());
                    else if(S == "Type") return(OrderType());
                    else if(S == "Profit") return(OrderProfit());
                    else if(S == "OpenTime") return(OrderOpenTime());
                    else if(S == "CloseTime") return(OrderCloseTime());
                    else if(S == "Com") return(OrderCommission());
                    else if(S == "Swap") return(OrderSwap());
                    else if(S == "Comment") return(OrderComment());
                    else if(S == "MagicNumber") return(OrderMagicNumber());
                    }
                    return(0);
                    }
                    //======================================================================
                    double LastClosedInfo2(string S, int type = -1)
                    {
                    for(int i = OrdersHistoryTotal() - 1; i >= 0; i--)
                    if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
                    if(OrderSymbol() == Symbol()
                    && OrderMagicNumber() == MagicNumber2
                    && (OrderType() == type || type == -1))
                    {
                    if(S == "Lots") return(OrderLots());
                    else if(S == "OpenPrice") return(OrderOpenPrice());
                    else if(S == "ClosePrice") return(OrderClosePrice());
                    else if(S == "OpenPrice") return(OrderOpenPrice());
                    else if(S == "TP") return(OrderTakeProfit());
                    else if(S == "SL") return(OrderStopLoss());
                    else if(S == "Type") return(OrderType());
                    else if(S == "Profit") return(OrderProfit());
                    else if(S == "OpenTime") return(OrderOpenTime());
                    else if(S == "CloseTime") return(OrderCloseTime());
                    else if(S == "Com") return(OrderCommission());
                    else if(S == "Swap") return(OrderSwap());
                    else if(S == "Comment") return(OrderComment());
                    else if(S == "MagicNumber") return(OrderMagicNumber());
                    }
                    return(0);
                    }
                    
                    الملف مرفق:
                    تمام
                    ولكن اصبر علي كم يوم لاني مضغوط شوي

                    تعليق


                    • المشاركة الأصلية بواسطة Turkm مشاهدة المشاركة

                      تمام
                      ولكن اصبر علي كم يوم لاني مضغوط شوي
                      خذ وقتك أخي كان الله في عونك
                      لكن المهم لا تنساني بإذن الله ومشكور مقدما

                      تعليق


                      • المشاركة الأصلية بواسطة zooz1o مشاهدة المشاركة

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

                        تعليق


                        • السلام عليكم
                          قومت باجراء تعديل على أوامر الشراء والبيع في الاكسبيرت السابق
                          اضافت هذا الشرط:
                          كود PHP:
                          && TimeCurrent()>LastOrderInfo("Time")+299 
                          
                          ومعناه ان يكون الوقت الحالي اكبر من سعر الفتح للصفقة السابقة ب 300 ثانية
                          لأني اقوم بتشغيل الاكسبيرت على فريم ال5 دقائق
                          فهنا المفترض ان اضمن ان يفتح الاكسبيرت صفقة جديدة مضاعفة في السهم التالي
                          وهذا الشرط يعمل جيدا ويعطيني كل اشارة صفقة كما ارادت

                          ولكن في حالة تحقق الهدف في نفس الدقيقة يقوم فورا الاكسبيرت بدخول صفقة مضاعفة في نفس اشارة السهم
                          ولا اعرف اي سبب منطقي لحدوث ذلك
                          فالشرط واضح انني اطلب من الاكسبيرت فتح صفقة فقط عندما يكون الوقت الحالي اكبر من وقت فتح الصفقة السابقة ب 300 ثانية او بشمعة
                          ولكنه يفتح في نفس الشمعة

                          هذه هي التعديلات:
                          كود PHP:
                          extern int MagicNumber=10001;
                          extern int MagicNumber2=10002;
                          extern int MagicNumber3=10003;
                          extern int MagicNumber4=10004;
                          extern double Lots =0.1;
                          extern double Lots2 =0.2;
                          
                          double StopLoss=0;
                          double StopLoss2=0;
                          
                          extern double TakeProfit=1;
                          extern double TakeProfit2=2;
                          
                          extern double ADX_Period=14;
                          
                          int TrailingStop=0;
                          int Slippage=3;
                          //+------------------------------------------------------------------+
                          // expert start function
                          //+------------------------------------------------------------------+
                          int start()
                          {
                          
                          double Arrow_UP=iCustom(Symbol(),0,"ADX Signals",ADX_Period,0,1);
                          double Arrow_DOWN=iCustom(Symbol(),0,"ADX Signals",ADX_Period,1,1);
                          
                          double MyPoint=Point;
                          if(Digits==1 || Digits==2 || Digits==3 || Digits==4 || Digits==5 || Digits==6 || Digits==7) MyPoint=Point*10;
                          
                          double TheStopLoss=0;
                          double TheTakeProfit=0;
                          
                          {
                          int result=0;
                          
                          if(Arrow_UP!=EMPTY_VALUE
                          && Arrow_UP>0
                          && LastClosedInfo("Profit")==0
                          && TotalOrdersCount()==0
                          ) // Here is your open buy rule
                          
                          {
                          
                          result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"Comment",MagicNumber,0,Blue);
                          if(result>0)
                          {
                          if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
                          if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
                          if ( ! OrderSelect(result, SELECT_BY_TICKET)){return(0);}
                          if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green)){return(0);}
                          }
                          return(0);
                          }
                          
                          if(Arrow_DOWN!=EMPTY_VALUE
                          && Arrow_DOWN>0
                          && LastClosedInfo2("Profit")==0
                          && TotalOrdersCount2()==0
                          ) // Here is your open Sell rule
                          
                          {
                          
                          result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"Comment2",MagicNumber2,0,Red);
                          if(result>0)
                          {
                          if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint;
                          if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint;
                          if ( ! OrderSelect(result, SELECT_BY_TICKET)){return(0);}
                          if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green)){return(0);}
                          }
                          return(0);
                          }
                          //-----------------------------------------------------------------------------------------------1
                          if(Arrow_UP!=EMPTY_VALUE
                          && Arrow_UP>0
                          && LastClosedInfo("Lots")==Lots
                          && TotalOrdersCount3()==0
                          && TimeCurrent()>LastOrderInfo("Time")+299
                          ) // Here is your open buy rule
                          
                          {
                          
                          result=OrderSend(Symbol(),OP_BUY,Lots2,Ask,Slippage,0,0,"Comment3",MagicNumber3,0,Blue);
                          if(result>0)
                          {
                          if(TakeProfit2>0) TheTakeProfit=Ask+TakeProfit2*MyPoint;
                          if(StopLoss2>0) TheStopLoss=Ask-StopLoss2*MyPoint;
                          if ( ! OrderSelect(result, SELECT_BY_TICKET)){return(0);}
                          if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green)){return(0);}
                          }
                          return(0);
                          }
                          
                          if(Arrow_DOWN!=EMPTY_VALUE
                          && Arrow_DOWN>0
                          && LastClosedInfo2("Lots")==Lots
                          && TotalOrdersCount4()==0
                          && TimeCurrent()>LastOrderInfo2("Time")+299
                          ) // Here is your open Sell rule
                          
                          {
                          
                          result=OrderSend(Symbol(),OP_SELL,Lots2,Bid,Slippage,0,0,"Comment4",MagicNumber4,0,Red);
                          if(result>0)
                          {
                          if(TakeProfit2>0) TheTakeProfit=Bid-TakeProfit2*MyPoint;
                          if(StopLoss2>0) TheStopLoss=Bid+StopLoss2*MyPoint;
                          if ( ! OrderSelect(result, SELECT_BY_TICKET)){return(0);}
                          if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green)){return(0);}
                          }
                          return(0);
                          }
                          //-----------------------------------------------------------------------------------------------2
                          }
                          
                          for(int cnt=0;cnt<OrdersTotal();cnt++)
                          {
                          if ( ! OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)){return(0);}
                          if(OrderType()<=OP_SELL &&
                          OrderSymbol()==Symbol()
                          &&((OrderMagicNumber()==MagicNumber)||(OrderMagicNumber()==MagicNumber2))
                          )
                          {
                          if(OrderType()==OP_BUY)
                          {
                          if(iHigh(_Symbol, PERIOD_CURRENT,1)>iHigh(_Symbol, PERIOD_CURRENT,1)
                          
                          ) //here is your close buy rule
                          {
                          if ( ! OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red)){return(0);}
                          }
                          if(TrailingStop>0)
                          {
                          if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)
                          {
                          if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
                          {
                          if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green)){return(0);}
                          return(0);
                          }
                          }
                          }
                          }
                          else
                          {
                          if(iHigh(_Symbol, PERIOD_CURRENT,1)>iHigh(_Symbol, PERIOD_CURRENT,1)
                          
                          ) // here is your close sell rule
                          {
                          if ( ! OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red)){return(0);}
                          }
                          if(TrailingStop>0)
                          {
                          if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))
                          {
                          if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
                          {
                          if ( ! OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red)){return(0);}
                          return(0);
                          }
                          }
                          }
                          }
                          }
                          }
                          return(0);
                          }
                          //======================================================================
                          int TotalOrdersCount()
                          {
                          int result=0;
                          for(int i=0;i<OrdersTotal();i++)
                          {
                          if ( ! OrderSelect(i,SELECT_BY_POS ,MODE_TRADES)){return(0);}
                          if (OrderMagicNumber()==MagicNumber) result++;
                          }
                          return (result);
                          }
                          //================================================================================
                          int TotalOrdersCount2()
                          {
                          int result=0;
                          for(int i=0;i<OrdersTotal();i++)
                          {
                          if ( ! OrderSelect(i,SELECT_BY_POS ,MODE_TRADES)){return(0);}
                          if (OrderMagicNumber()==MagicNumber2) result++;
                          }
                          return (result);
                          }
                          //================================================================================
                          int TotalOrdersCount3()
                          {
                          int result=0;
                          for(int i=0;i<OrdersTotal();i++)
                          {
                          if ( ! OrderSelect(i,SELECT_BY_POS ,MODE_TRADES)){return(0);}
                          if (OrderMagicNumber()==MagicNumber3) result++;
                          }
                          return (result);
                          }
                          //================================================================================
                          int TotalOrdersCount4()
                          {
                          int result=0;
                          for(int i=0;i<OrdersTotal();i++)
                          {
                          if ( ! OrderSelect(i,SELECT_BY_POS ,MODE_TRADES)){return(0);}
                          if (OrderMagicNumber()==MagicNumber4) result++;
                          }
                          return (result);
                          }
                          //================================================================================
                          double LastOrderInfo(string N, int type = -1)
                          {
                          
                          for(int i = OrdersTotal() - 1; i >= 0 ; i--)
                          {
                          if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
                          if(OrderSymbol() == Symbol()
                          && OrderMagicNumber() == MagicNumber
                          && (OrderType() == type || type == -1))
                          {
                          if (N == "Type") return (OrderType());
                          else if (N == "SL") return (OrderStopLoss());
                          else if (N == "TP") return (OrderTakeProfit());
                          else if (N == "Lots") return (OrderLots());
                          else if (N == "Price") return (OrderOpenPrice());
                          else if (N == "Profit") return (OrderProfit());
                          else if (N == "Time") return (OrderOpenTime());
                          else if (N == "Ticket") return (OrderTicket());
                          else if (N == "Comment") return (OrderComment());
                          else if (N == "MagicNumber") return (OrderMagicNumber());
                          }
                          }
                          return(0);
                          }
                          //======================================================================
                          double LastOrderInfo2(string N, int type = -1)
                          {
                          
                          for(int i = OrdersTotal() - 1; i >= 0 ; i--)
                          {
                          if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
                          if(OrderSymbol() == Symbol()
                          && OrderMagicNumber() == MagicNumber2
                          && (OrderType() == type || type == -1))
                          {
                          if (N == "Type") return (OrderType());
                          else if (N == "SL") return (OrderStopLoss());
                          else if (N == "TP") return (OrderTakeProfit());
                          else if (N == "Lots") return (OrderLots());
                          else if (N == "Price") return (OrderOpenPrice());
                          else if (N == "Profit") return (OrderProfit());
                          else if (N == "Time") return (OrderOpenTime());
                          else if (N == "Ticket") return (OrderTicket());
                          else if (N == "Comment") return (OrderComment());
                          else if (N == "MagicNumber") return (OrderMagicNumber());
                          }
                          }
                          return(0);
                          }
                          //======================================================================
                          double LastClosedInfo(string S, int type = -1)
                          {
                          for(int i = OrdersHistoryTotal() - 1; i >= 0; i--)
                          if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
                          if(OrderSymbol() == Symbol()
                          && OrderMagicNumber() == MagicNumber
                          && (OrderType() == type || type == -1))
                          {
                          if(S == "Lots") return(OrderLots());
                          else if(S == "OpenPrice") return(OrderOpenPrice());
                          else if(S == "ClosePrice") return(OrderClosePrice());
                          else if(S == "OpenPrice") return(OrderOpenPrice());
                          else if(S == "TP") return(OrderTakeProfit());
                          else if(S == "SL") return(OrderStopLoss());
                          else if(S == "Type") return(OrderType());
                          else if(S == "Profit") return(OrderProfit());
                          else if(S == "OpenTime") return(OrderOpenTime());
                          else if(S == "CloseTime") return(OrderCloseTime());
                          else if(S == "Com") return(OrderCommission());
                          else if(S == "Swap") return(OrderSwap());
                          else if(S == "Comment") return(OrderComment());
                          else if(S == "MagicNumber") return(OrderMagicNumber());
                          }
                          return(0);
                          }
                          //======================================================================
                          double LastClosedInfo2(string S, int type = -1)
                          {
                          for(int i = OrdersHistoryTotal() - 1; i >= 0; i--)
                          if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
                          if(OrderSymbol() == Symbol()
                          && OrderMagicNumber() == MagicNumber2
                          && (OrderType() == type || type == -1))
                          {
                          if(S == "Lots") return(OrderLots());
                          else if(S == "OpenPrice") return(OrderOpenPrice());
                          else if(S == "ClosePrice") return(OrderClosePrice());
                          else if(S == "OpenPrice") return(OrderOpenPrice());
                          else if(S == "TP") return(OrderTakeProfit());
                          else if(S == "SL") return(OrderStopLoss());
                          else if(S == "Type") return(OrderType());
                          else if(S == "Profit") return(OrderProfit());
                          else if(S == "OpenTime") return(OrderOpenTime());
                          else if(S == "CloseTime") return(OrderCloseTime());
                          else if(S == "Com") return(OrderCommission());
                          else if(S == "Swap") return(OrderSwap());
                          else if(S == "Comment") return(OrderComment());
                          else if(S == "MagicNumber") return(OrderMagicNumber());
                          }
                          return(0);
                          }
                          وهذا هو الملف
                          الملفات المرفقة

                          تعليق


                          • السلام عليكم
                            الحمد لله تغلبت على المشكلة
                            بهذان الشرطان:

                            كود PHP:
                            && TimeCurrent()>LastOrderInfo10("Time")+299
                            && TimeCurrent()>LastClosedInfo10("Time")+299​ 
                            
                            لكن لو هناك وسيلة أخرى اكثر منطقية لفتح كل سهم صفقة رجاء قلها لي

                            تعليق


                            • السلام عليكم

                              في الميتاتريدر 4
                              اذا ارادت الخروج من صفقة لها ماجيك نمبر محدد
                              فكود اغلاق الصفقة هو :
                              كود PHP:
                              if (!OrderClose(OrderTicket(),OrderLots(),OrderCloseP rice(),Slippage,Red)){return(0);}
                              
                              لكن أريد استخدام الماجيك نمبر بدلا من التيكيت
                              يعني أريد أغلاق صفقة محددة بالماجيك نمبر
                              فكيف يتم ذلك؟

                              تعليق


                              • المشاركة الأصلية بواسطة zooz1o مشاهدة المشاركة
                                السلام عليكم

                                في الميتاتريدر 4
                                اذا ارادت الخروج من صفقة لها ماجيك نمبر محدد
                                فكود اغلاق الصفقة هو :
                                كود PHP:
                                if (!OrderClose(OrderTicket(),OrderLots(),OrderCloseP rice(),Slippage,Red)){return(0);}
                                
                                لكن أريد استخدام الماجيك نمبر بدلا من التيكيت
                                يعني أريد أغلاق صفقة محددة بالماجيك نمبر
                                فكيف يتم ذلك؟
                                بسيطة ابحث عن الاممر الذي له نفس الماجيك نمبر ثم استرجع من هذا الامر فقط التيكت ثم قم باغلاق الامر الذي له نفس التيكت المسترجع:

                                كود PHP:
                                int OrderTicketInfo(int Mgic_Number)
                                {
                                for(int i = OrdersTotal() - 1; i >= 0 ; i--)
                                {
                                if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
                                if(OrderSymbol() == Symbol()
                                && OrderMagicNumber() == Mgic_Number)
                                {
                                return (OrderTicket());
                                }
                                }
                                return(0);
                                }

                                تعليق

                                يعمل...
                                X