Чт. Ноя 21st, 2024

Профит последнего открытого ордера в пунктах

Профит или убыток последнего открытого ордера (который еще в рынке и не закрыт) в пунктах можно узнать с помощью нижеприведенной mql4-функции.

Здесь:

  • Sy — символ;
  • op — тип ордера OP_BUY или OP_SELL;
  • mn — магик.

double ProfitPointLastOrder(string sy,int op,int mn)
  {
   datetime t;
   double   ocp,osl;
   int      dg,i,j=-1,k=OrdersTotal();

   if(sy=="0") sy=Symbol();
   for(i=0; i<k; i++)
      //+——————————————————————+
      //|                                                                  |
      //+——————————————————————+
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==sy) // || sy=="")
           {
            if(op<0 || OrderType()==op)
              {
               if(mn<0 || OrderMagicNumber()==mn)
                 {
                  if(t<OrderOpenTime())
                    {
                     t=OrderOpenTime();
                     j=i;
                    }
                 }
              }
           }
        }
     }
//+——————————————————————+
//|                                                                  |
//+——————————————————————+
   if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES))
     {
      double pr=0;
      double p=MarketInfo(OrderSymbol(),MODE_POINT);
      if(p==0) if(StringFind(OrderSymbol(),"JPY")<0) p=0.0001; else p=0.01;
      if(OrderType()==OP_BUY)
        {
         pr+=(MarketInfo(OrderSymbol(),MODE_BID)-OrderOpenPrice())/p;
        }
      if(OrderType()==OP_SELL)
        {
         pr+=(OrderOpenPrice()-MarketInfo(OrderSymbol(),MODE_ASK))/p;
        }
      return(pr);
     }
   return(-1);
  }

от drivermql

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.