Watch how to download trading robots for free
Find us on Twitter!
Join our fan page
Interesting script?
So post a link to it -
let others appraise it
You liked the script? Try it in the MetaTrader 5 terminal
Libraries

CPairedDealInfo Class - library for MetaTrader 5

Views:
4294
Rating:
(25)
Published:
2019.04.06 23:11
Updated:
2021.10.24 23:14
\MQL5\Include\ \MQL5\Scripts\
Need a robot or indicator based on this code? Order it on Freelance Go to Freelance

CPairedDealInfo is a class to reconstruct closed trades (paired in/out deals) from history sorted by close time.

The class has a similar interface to CDealInfo class of the standard library.

class CPairedDealInfo : public CObject
  {
public:
                     CPairedDealInfo(void);
                    ~CPairedDealInfo(void);
   //--- methods of access to protected data
   ulong             TicketOpen(void)       const { return(m_curr_ticket_in); }
   ulong             TicketClose(void)      const { return(m_curr_ticket_out); }
   //--- fast access methods to the integer deal properties
   datetime          TimeOpen(void) const;
   ulong             TimeOpenMsc(void) const;
   datetime          TimeClose(void) const;
   ulong             TimeCloseMsc(void) const;
   ENUM_DEAL_TYPE    DealType(void) const;
   string            TypeDescription(void) const;
   long              Magic(void) const;
   long              PositionId(void) const;
   long              OrderOpen(void) const;
   long              OrderClose(void) const;
   ENUM_DEAL_REASON  OpenReason(void) const;
   ENUM_DEAL_REASON  CloseReason(void) const;
   //--- fast access methods to the double deal properties
   double            Volume(void) const;
   double            PriceOpen(void) const;
   double            StopLoss(void) const;
   double            TakeProfit(void) const;
   double            PriceClose(void) const;
   double            Commission(void) const;
   double            Swap(void) const;
   double            Profit(void) const;
   //--- fast access methods to the string deal properties
   string            Symbol(void) const;
   string            OpenComment(void) const;
   string            CloseComment(void) const;
   string            OpenReasonDescription(void) const;
   string            CloseReasonDescription(void) const;
   //--- info methods
   string            FormatAction(string &str,const uint action) const;
   string            FormatReason(string &str,const uint reason) const;
   //--- method for select deals
   bool              HistorySelect(datetime from_date,datetime to_date);
   int               Total(void) const;
   bool              SelectByTicket(const ulong ticket);
   bool              SelectByIndex(const int index);
  };


Here is a sample code showing how to use the class in your code

#include <CPairedDealInfo.mqh>
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- variable to hold the paired deals info
   CPairedDealInfo trade;

//--- Reconstruct trades from the history of deals
   if(!trade.HistorySelect(0,TimeCurrent()))
     {
      Alert("CPairedDealInfo::HistorySelect() failed!");
      return;
     }

//--- now process the list of closed trades
   int total = trade.Total();
   for(int i = 0; i < total; i++)
     {
      //--- Select a trade by its position in the list
      if(trade.SelectByIndex(i))
        {
         ulong    ticket_open       = trade.TicketOpen();
         ulong    ticket_close      = trade.TicketClose();
         datetime time_open         = trade.TimeOpen();
         ulong    time_open_msc     = trade.TimeOpenMsc();
         datetime time_close        = trade.TimeClose();
         ulong    time_close_msc    = trade.TimeCloseMsc();
         long     type              = trade.DealType();
         string   type_desc         = trade.TypeDescription();
         long     magic             = trade.Magic();
         long     pos_id            = trade.PositionId();
         long     order_open        = trade.OrderOpen();
         long     order_close       = trade.OrderClose();
         double   volume            = trade.Volume();
         double   price_open        = trade.PriceOpen();
         double   price_sl          = trade.StopLoss();
         double   price_tp          = trade.TakeProfit();
         double   price_close       = trade.PriceClose();
         double   commission        = trade.Commission();
         double   swap              = trade.Swap();
         double   profit            = trade.Profit();
         string   symbol            = trade.Symbol();
         string   open_comment      = trade.OpenComment();
         string   close_comment     = trade.CloseComment();
         string   open_reason_desc  = trade.OpenReasonDescription();
         string   close_reason_desc = trade.CloseReasonDescription();
        }
     }
//---
   Print("Total closed trades = ",trade.Total());
  }
//+------------------------------------------------------------------+


Balance Graph HTML Balance Graph HTML

Display interactive HTML graph of the account balance inside the web browser.

Pan PrizMA Sin leverage 72 Pan PrizMA Sin leverage 72

Builds a sliding line with a polynomial of 4 degrees. Extrapolates as a section of a given function with a sinusoid and its axial one. One value is taken from the constructed lines on each bar and a line of extrapolated values is plotted, which does not redraw.

Lavika EURGBP/EURUSD Lavika EURGBP/EURUSD

The Expert Advisor uses four iMA (Moving Average, MA) indicators from two timeframes. Two indicators with averaging periods 1 and 8 are created on the H1 timeframe and two indicators with averaging periods 1 and 8 are also created on the H4 timeframe.

Hull moving average Hull moving average

Hull moving average