HistoryDealGetString

La función devuelve la propiedad solicitada de una transacción. La propiedad de la transacción tiene que ser del tipo string. Existen 2 variantes de la función.

1. Devuelve el valor de la propiedad directamente.

string  HistoryDealGetString(
   ulong                      ticket_number,     // ticket
   ENUM_DEAL_PROPERTY_STRING  property_id        // identificador de la propiedad
   );

2. Devuelve true o false dependiendo del éxito de ejecución de la función. En caso del éxito el valor de la propiedad se coloca en una variable receptora que el último parámetro pasa por referencia.

bool  HistoryDealGetString(
   ulong                      ticket_number,     // ticket
   ENUM_DEAL_PROPERTY_STRING  property_id,       // identificador de la propiedad
   string&                    string_var         // aquí recibimos el valor de la propiedad
   );

Parámetros

ticket_number

[in]  Ticket de transacción.

property_id

[in]  Identificador de la propiedad de transacción. Su valor puede ser uno de los valores de la enumeración ENUM_DEAL_PROPERTY_STRING.

string_var

[out]  Variable del tipo string que recibe el valor de la propiedad requerida.

Valor devuelto

Valor del tipo string.

Nota

No se puede confundir las órdenes, transacciones y posiciones. Cada transacción es el resultado de la ejecución de una orden, mientras que cada posición es el resultado final de una o más transacciones.

Ejemplo:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- solicitamos la historia de transacciones y órdenes
   if(!HistorySelect(0TimeCurrent()))
     {
      Print("HistorySelect() failed. Error "GetLastError());
      return;
     }
 
//--- en un ciclo por la lista de transacciones en la historia de la cuenta
   int total=HistoryDealsTotal();
   for(int i=0i<totali++)
     {
      //--- obtenemos un ticket para la siguiente transacción (la transacción se selecciona automáticamente para obtener sus propiedades)
      ulong ticket=HistoryDealGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- obtenemos el tipo y la dirección de la transacción y mostramos el encabezado de la lista de propiedades reales de la transacción seleccionada
      string type=DealTypeDescription((ENUM_DEAL_TYPE)HistoryDealGetInteger(ticketDEAL_TYPE));
      string entry=DealEntryDescription((ENUM_DEAL_ENTRY)HistoryDealGetInteger(ticketDEAL_ENTRY));
      PrintFormat("String properties of an deal %s entry %s #%I64u:"typeentryticket);
      
      //--- imprimimos bajo el encabezado todas las propiedades reales de la transacción seleccionada
      HistoryDealPropertiesStringPrint(ticket13);
     }
   /*
   resultado:
   String properties of an deal Buy entry In #2785021084:
   Symbol:      EURUSD
   Comment:     Test PositionGetString
   Extarnal ID:
   String properties of an deal Buy entry Out #2497993663:
   Symbol:      EURUSD
   Comment:     [tp 1.08639]
   Extarnal ID
   */
  }
//+------------------------------------------------------------------+
//| Muestra en el registro las propiedades string  de la transacción elegida           
//+------------------------------------------------------------------+
void HistoryDealPropertiesStringPrint(const ulong ticketconst uint header_width=0)
  {
   uint   w=0;
   string header="";
   string value ="";
   
//--- definimos el texto del encabezado y la anchura del campo del encabezado
//--- si la anchura del encabezado se ha transmitido a la función como igual a cero, entonces la anchura será el tamaño de la línea del encabezado + 1
   header="Symbol:";
   w=(header_width==0 ? header.Length()+1 : header_width);
//--- obtenemos y mostramos en el registro el símbolo de la transacción con un encabezado de la anchura establecida
   if(!HistoryDealGetString(ticketDEAL_SYMBOLvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- mostramos en el registro los comentarios a la transacción
   header="Comment:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryDealGetString(ticketDEAL_COMMENTvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- mostramos en el registro el identificador de la transacción en el sistema comercial externo
   header="Extarnal ID:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryDealGetString(ticketDEAL_EXTERNAL_IDvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
  }
//+------------------------------------------------------------------+
//| Retorna la descripción del tipo de transacción                   |
//+------------------------------------------------------------------+
string DealTypeDescription(const ENUM_DEAL_TYPE type)
  {
   switch(type)
     {
      case DEAL_TYPE_BUY                     :  return("Buy");
      case DEAL_TYPE_SELL                    :  return("Sell");
      case DEAL_TYPE_BALANCE                 :  return("Balance");
      case DEAL_TYPE_CREDIT                  :  return("Credit");
      case DEAL_TYPE_CHARGE                  :  return("Additional charge");
      case DEAL_TYPE_CORRECTION              :  return("Correction");
      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            :  return("Canceled buy deal");
      case DEAL_TYPE_SELL_CANCELED           :  return("Canceled sell deal");
      case DEAL_DIVIDEND                     :  return("Dividend operations");
      case DEAL_DIVIDEND_FRANKED             :  return("Franked (non-taxable) dividend operations");
      case DEAL_TAX                          :  return("Tax charges");
      default                                :  return("Unknown deal type: "+(string)type);
     }
  }
//+------------------------------------------------------------------+
//| Retorna la descripción del método de cambio de posición          |
//+------------------------------------------------------------------+
string DealEntryDescription(const ENUM_DEAL_ENTRY entry)
  {
   switch(entry)
     {
      case DEAL_ENTRY_IN      :  return("In");
      case DEAL_ENTRY_OUT     :  return("Out");
      case DEAL_ENTRY_INOUT   :  return("Reverce");
      case DEAL_ENTRY_OUT_BY  :  return("Out by");
      case DEAL_ENTRY_STATE   :  return("Status record");
      default                 :  return("Unknown deal entry: "+(string)entry);
     }
  }

Véase también

HistoryDealsTotal(), HistorySelect(), HistoryDealGetTicket(), Propiedades de transacciones