HistorySelectByPosition

Author: Copyright © 2017, Vladimir Karputov
0 Views
0 Downloads
0 Favorites
HistorySelectByPosition
ÿþ//+------------------------------------------------------------------+

//|                                      HistorySelectByPosition.mq5 |

//|                              Copyright © 2017, Vladimir Karputov |

//|                                           http://wmua.ru/slesar/ |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2017, Vladimir Karputov"

#property link      "http://wmua.ru/slesar/"

#property version   "1.000"

#property script_show_inputs

//---

input long position_id=0;                    // 845=B8D8:0B>@ ?>78F88 - POSITION_IDENTIFIER 

//+------------------------------------------------------------------+

//| Script program start function                                    |

//+------------------------------------------------------------------+

void OnStart()

  {

//--- request trade history 

   if(!HistorySelectByPosition(position_id))

     {

      Print("Error HistorySelectByPosition");

      return;

     }

   uint     total=HistoryDealsTotal();

//--- for all deals 

   for(uint i=0;i<total;i++)

     {

      ulong deal_ticket          = HistoryDealGetTicket(i);

      double volume              = HistoryDealGetDouble(deal_ticket,DEAL_VOLUME);

      datetime transaction_time  = (datetime)HistoryDealGetInteger(deal_ticket,DEAL_TIME);

      ulong order_ticket         = HistoryDealGetInteger(deal_ticket,DEAL_ORDER);

      long deal_type             = HistoryDealGetInteger(deal_ticket,DEAL_TYPE);

      long deal_entry            = HistoryDealGetInteger(deal_ticket,DEAL_ENTRY);

      string symbol              = HistoryDealGetString(deal_ticket,DEAL_SYMBOL);

      long position_ID           = HistoryDealGetInteger(deal_ticket,DEAL_POSITION_ID);

      string deal_description    = GetDealDescription(deal_entry,deal_type,volume,symbol,order_ticket,position_ID);

      //--- A45;05< :@0A82>5 D>@<0B8@>20=85 4;O =><5@0 A45;:8 

      string print_index=StringFormat("% 3d",i);

      //--- 2K2545< 8=D>@<0F8N ?> A45;:5 

      Print(print_index+": deal #",deal_ticket," at ",transaction_time," ",deal_description);

     }

  }

//+------------------------------------------------------------------+ 

//| >72@0I05B AB@>:>2>5 >?8A0=85 >?5@0F88                           | 

//+------------------------------------------------------------------+ 

string GetDealDescription(long deal_entry,long deal_type,double volume,string symbol,long ticket,long pos_ID)

  {

   string descr;

//---

   switch((int)deal_entry)

     {

      case DEAL_ENTRY_IN:     descr="E>4 2 @K=>:, "; break;

      case DEAL_ENTRY_OUT:    descr="KE>4 87 @K=:0, "; break;

      case DEAL_ENTRY_INOUT:  descr=" 072>@>B, "; break;

      case DEAL_ENTRY_OUT_BY: descr="0:@KB85 2AB@5G=>9 ?>78F859, "; break;

     }

//--- 

   switch((int)deal_type)

     {

      case DEAL_TYPE_BALANCE:                  return ("balance");

      case DEAL_TYPE_CREDIT:                   return ("credit");

      case DEAL_TYPE_CHARGE:                   return ("charge");

      case DEAL_TYPE_CORRECTION:               return ("correction");

      case DEAL_TYPE_BUY:                      descr+="buy"; break;

      case DEAL_TYPE_SELL:                     descr+="sell"; break;

      case DEAL_TYPE_BONUS:                    return ("bonus");

      case DEAL_TYPE_COMMISSION:               return ("additional commission");

      case DEAL_TYPE_COMMISSION_DAILY:         return ("daily commission");

      case DEAL_TYPE_COMMISSION_MONTHLY:       return ("monthly commission");

      case DEAL_TYPE_COMMISSION_AGENT_DAILY:   return ("daily agent commission");

      case DEAL_TYPE_COMMISSION_AGENT_MONTHLY: return ("monthly agent commission");

      case DEAL_TYPE_INTEREST:                 return ("interest rate");

      case DEAL_TYPE_BUY_CANCELED:             descr+="cancelled buy deal"; break;

      case DEAL_TYPE_SELL_CANCELED:            descr+="cancelled sell deal"; break;

     }

   descr=StringFormat("%s %G %s (order #%d, position ID %d)",

                      descr,  // B5:CI55 >?8A0=85 

                      volume, // >1J5< A45;:8 

                      symbol, // 8=AB@C<5=B A45;:8 

                      ticket, // B8:5B >@45@0,2K7202H53> A45;:C 

                      pos_ID  // ID ?>78F88, 2 :>B>@>9 CG0AB2>20;0 A45;:0 

                      );

   return(descr);

//--- 

  }

//+------------------------------------------------------------------+

Comments