Как получить прибыль/убыток по открытому ордеру?

 

Интересует как в коде я могу получить  прибыль/убыток в валюте депозита (выделено красной стрелкой) по еще не исполненному ордеру? 


 
0x41:

Интересует как в коде я могу получить  прибыль/убыток в валюте депозита (выделено красной стрелкой) по еще не исполненному ордеру? 


На рисунке нет никакого ОТЛОЖЕННОГО ордера. Есть открытая ПОЗИЦИЯ.

Чтобы получить данные по ПОЗИЦИЯМ нужно в цикле пройтись по списку ПОЗИЦИЙ и получить свойства. Вот пример обхода позиций -  ListPositions с распечаткой некоторых свойств позиций

ListPositions
ListPositions
  • www.mql5.com
Список всех позиций. Пример работы с CPositionInfo.
 
0x41:

Интересует как в коде я могу получить  прибыль/убыток в валюте депозита (выделено красной стрелкой) по еще не исполненному ордеру? 


Так как речь об МТ5, то начнем с того, что на рисунке показана позиция, а не ордер (ордер не может быть в прибыли или убытке). Позиция не может быть исполненной или не исполненной, она попросту открыта.

Для получения свойств позиции ее нужно выбрать при помощи функций PostitionSelect() или PositionSelectByTicket(), а затем получить нужное свойство при помощи функций PositionGetInteger(), PositionGetDouble() или PositionGetString(). В данном случае требуется использовать PositionGetDouble() с аргументом POSITION_PROFIT.

 
Извините, но вопрос был о получении прибыли/убытка открытой позиции, по моему, надо просто закрыть позицию, что то типа ClosePosition ;)
 
VVT:
Извините, но вопрос был о получении прибыли/убытка открытой позиции, по моему, надо просто закрыть позицию, что то типа ClosePosition ;)

Вопрос был именно посмотреть  прибыль/убыток по открытым позициям/позиции. Так ответили ему правильно.

 
Konstantin Nikitin:

Вопрос был именно посмотреть  прибыль/убыток по открытым позициям/позиции. Так ответили ему правильно.

Посмотреть и получить это разные глаголы, получить не закрыв позицию очень сложно)

 
0x41:

Интересует как в коде я могу получить  прибыль/убыток в валюте депозита (выделено красной стрелкой) по еще не исполненному ордеру? 


вот 

//+------------------------------------------------------------------+
//|                                            AccountInfoDouble.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
string   txt;                                //
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   ObjectsDeleteAll(0,"cm");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   StringConcatenate(txt,"Прибыль=",DoubleToString(AccountInfoDouble(ACCOUNT_PROFIT),2));
   DrawLABEL(3,"cm 6",txt,5,25,clrLime,ANCHOR_RIGHT);
  }
//+------------------------------------------------------------------+
//|   DrawLABEL                                                      |
//+------------------------------------------------------------------+
void DrawLABEL(int c,string name,string text,int X,int Y,color clr,int ANCHOR=ANCHOR_LEFT,int FONTSIZE=8)
  {
   if(ObjectFind(0,name)==-1)
     {
      ObjectCreate(0,name,OBJ_LABEL,0,0,0);
      ObjectSetInteger(0,name,OBJPROP_CORNER,c);
      ObjectSetInteger(0,name,OBJPROP_XDISTANCE,X);
      ObjectSetInteger(0,name,OBJPROP_YDISTANCE,Y);
      ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
      ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
      ObjectSetInteger(0,name,OBJPROP_FONTSIZE,FONTSIZE);
      ObjectSetString(0,name,OBJPROP_FONT,"Arial");
      ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR);
     }
   ObjectSetString(0,name,OBJPROP_TEXT,text);
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
  }
//+------------------------------------------------------------------+

Снимок

 

Ребята всем большое спасибо за столь подробные разъяснения, я вам очень благодарен за помощь в этом вопросе, собственно вопрос решен.

 

вот ещё 

//+------------------------------------------------------------------+
//|                                            AccountInfoDouble.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#define   InpMagic  131749285
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
CPositionInfo  m_position; // trade position object
CTrade         m_trade;    // trading object
CSymbolInfo    m_symbol;   // symbol info object
//---
input double   InpPoints = 10000; // :Gold=0.133/:JPY=100/:USD=10000
//---
double   m_Point = 0.0;    //
string   txt;              //
double   m_adjusted_point; // point value adjusted for 3 or 5 points
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(!m_symbol.Name(Symbol())) // sets symbol name
      return(INIT_FAILED);;
//---
   m_trade.SetExpertMagicNumber(InpMagic);
   m_trade.SetMarginMode();
   m_trade.SetTypeFillingBySymbol(m_symbol.Name());
//--- tuning for 3 or 5 digits
   int digits_adjust=1;
   if(m_symbol.Digits()==3 || m_symbol.Digits()==5)
      digits_adjust=10;
   m_adjusted_point=m_symbol.Point()*digits_adjust;
//--- set default deviation for trading in adjusted points
   m_Point               = InpPoints*m_adjusted_point;
//--- set default deviation for trading in adjusted points
   m_trade.SetDeviationInPoints(3*digits_adjust);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   ObjectsDeleteAll(0,"cm");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   Optimized();
  }
//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
void Optimized(void)
  {
   double PROFIT_BUY=0.00;
   double PROFIT_SELL=0.00;
   double PROFIT_BUY_1=0.00;
   double PROFIT_SELL_1=0.00;
   for(int i=PositionsTotal()-1; i>=0; i--) // returns the number of open positions
     {
      string   position_GetSymbol=PositionGetSymbol(i); // GetSymbol позиции
      if(position_GetSymbol==m_symbol.Name())
        {
         if(m_position.PositionType()==POSITION_TYPE_BUY)
           {
            PROFIT_BUY=PROFIT_BUY+PositionGetDouble(POSITION_PROFIT);
           }
         else
           {
            PROFIT_SELL=PROFIT_SELL+PositionGetDouble(POSITION_PROFIT);
           }
         if(m_position.PositionType()==POSITION_TYPE_BUY)
           {
            PROFIT_BUY_1=PROFIT_BUY_1+(PositionGetDouble(POSITION_PROFIT)/PositionGetDouble(POSITION_VOLUME)/
                                       SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE)*m_Point);
           }
         else
           {
            PROFIT_SELL_1=PROFIT_SELL_1+(PositionGetDouble(POSITION_PROFIT)/PositionGetDouble(POSITION_VOLUME)/
                                         SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE)*m_Point);
           }
        }
     }
   StringConcatenate(txt,"SELL в пунктах=",DoubleToString(PROFIT_SELL_1,2));
   DrawLABEL(2,"cm 2",txt,5,30,clrDarkOrange,ANCHOR_RIGHT);
   StringConcatenate(txt,"SELL в валюте=",DoubleToString(PROFIT_SELL,2));
   DrawLABEL(2,"cm 3",txt,5,45,clrDarkOrange,ANCHOR_RIGHT);
   StringConcatenate(txt,"BUY в пунктах=",DoubleToString(PROFIT_BUY_1,2));
   DrawLABEL(2,"cm 4",txt,5,75,clrMediumSeaGreen,ANCHOR_RIGHT);
   StringConcatenate(txt,"BUY в валюте=",DoubleToString(PROFIT_BUY,2));
   DrawLABEL(2,"cm 5",txt,5,90,clrMediumSeaGreen,ANCHOR_RIGHT);
   StringConcatenate(txt,"Прибыль=",DoubleToString(AccountInfoDouble(ACCOUNT_PROFIT),2));
   DrawLABEL(3,"cm 6",txt,5,25,clrLime,ANCHOR_RIGHT);
  }
//+------------------------------------------------------------------+
//|   DrawLABEL                                                      |
//+------------------------------------------------------------------+
void DrawLABEL(int c,string name,string text,int X,int Y,color clr,int ANCHOR=ANCHOR_LEFT,int FONTSIZE=8)
  {
   if(ObjectFind(0,name)==-1)
     {
      ObjectCreate(0,name,OBJ_LABEL,0,0,0);
      ObjectSetInteger(0,name,OBJPROP_CORNER,c);
      ObjectSetInteger(0,name,OBJPROP_XDISTANCE,X);
      ObjectSetInteger(0,name,OBJPROP_YDISTANCE,Y);
      ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
      ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
      ObjectSetInteger(0,name,OBJPROP_FONTSIZE,FONTSIZE);
      ObjectSetString(0,name,OBJPROP_FONT,"Arial");
      ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR);
     }
   ObjectSetString(0,name,OBJPROP_TEXT,text);
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
  }
//+------------------------------------------------------------------+

Снимок9