Интересует как в коде я могу получить прибыль/убыток в валюте депозита (выделено красной стрелкой) по еще не исполненному ордеру?
На рисунке нет никакого ОТЛОЖЕННОГО ордера. Есть открытая ПОЗИЦИЯ.
Чтобы получить данные по ПОЗИЦИЯМ нужно в цикле пройтись по списку ПОЗИЦИЙ и получить свойства. Вот пример обхода позиций - ListPositions с распечаткой некоторых свойств позиций
![ListPositions ListPositions](https://c.mql5.com/36/44/listpositions.jpg)
Интересует как в коде я могу получить прибыль/убыток в валюте депозита (выделено красной стрелкой) по еще не исполненному ордеру?
Так как речь об МТ5, то начнем с того, что на рисунке показана позиция, а не ордер (ордер не может быть в прибыли или убытке). Позиция не может быть исполненной или не исполненной, она попросту открыта.
Для получения свойств позиции ее нужно выбрать при помощи функций PostitionSelect() или PositionSelectByTicket(), а затем получить нужное свойство при помощи функций PositionGetInteger(), PositionGetDouble() или PositionGetString(). В данном случае требуется использовать PositionGetDouble() с аргументом POSITION_PROFIT.
Извините, но вопрос был о получении прибыли/убытка открытой позиции, по моему, надо просто закрыть позицию, что то типа ClosePosition ;)
Вопрос был именно посмотреть прибыль/убыток по открытым позициям/позиции. Так ответили ему правильно.
Вопрос был именно посмотреть прибыль/убыток по открытым позициям/позиции. Так ответили ему правильно.
Посмотреть и получить это разные глаголы, получить не закрыв позицию очень сложно)
Интересует как в коде я могу получить прибыль/убыток в валюте депозита (выделено красной стрелкой) по еще не исполненному ордеру?
вот
//+------------------------------------------------------------------+ //| 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); } //+------------------------------------------------------------------+
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Интересует как в коде я могу получить прибыль/убыток в валюте депозита (выделено красной стрелкой) по еще не исполненному ордеру?