PositionGetInteger

La función devuelve la propiedad solicitada de una posición abierta que previamente ha sido elegida a través de la función PositionGetSymbol o PositionSelect.  La propiedad de la posición tiene que ser del tipo datetime, int. Existen 2 variantes de la función.

1. Inmediatamente devuelve el valor de la propiedad.

long  PositionGetInteger(
   ENUM_POSITION_PROPERTY_INTEGER  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  PositionGetInteger(
   ENUM_POSITION_PROPERTY_INTEGER  property_id,     // identificador de la propiedad
   long&                           long_var         // aquí recibimos el valor de la propiedad
   );

Parámetros

property_id

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

long_var

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

Valor devuelto

Valor del tipo long. En caso de ejecución fallida devuelve 0.

Nota

En el registro de posiciones con "compensación" (ACCOUNT_MARGIN_MODE_RETAIL_NETTING y ACCOUNT_MARGIN_MODE_EXCHANGE) de cada símbolo en cualquier momento solo puede abrirse una posición, que es el resultado de una o más operaciones. Es mejor no confundir las posiciones con las órdenes pendientes en activo, que también se muestran en la pestaña "Trading" en el panel "Herramientas".

En el caso de que las posiciones se representen independientemente (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING), de cada símbolo pueden abrirse a la vez varias posiciones.

Para garantizar la recepción de datos recientes sobre una posición, se recomienda llamar a la función PositionSelect() justamente antes de solicitarlos.

Ejemplo:

//+------------------------------------------------------------------+
//| Trade function                                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
//--- comprobamos si la posición está presente y mostramos el tiempo de su cambio
   if(PositionSelect(_Symbol))
     {     
//--- obtenemos el identificador de la posición para poder seguir trabajando con ella
      ulong position_ID=PositionGetInteger(POSITION_IDENTIFIER);
      Print(_Symbol," position #",position_ID);
//--- obtenemos el tiempo de formación de la posición en milisegundos pasados desde el 01.01.1970
      long create_time_msc=PositionGetInteger(POSITION_TIME_MSC);
      PrintFormat("Position #%d  POSITION_TIME_MSC = %i64 milliseconds => %s",position_ID,
                  create_time_msc,TimeToString(create_time_msc/1000));
//--- obtenemos el tiempo del último cambio de la posición en segundos desde el 01.01.1970
      long update_time_sec=PositionGetInteger(POSITION_TIME_UPDATE);
      PrintFormat("Position #%d  POSITION_TIME_UPDATE = %i64 seconds => %s",
                  position_ID,update_time_sec,TimeToString(update_time_sec));
//--- obtenemos el tiempo del último cambio de la posición en milisegundos desde el 01.01.1970
      long update_time_msc=PositionGetInteger(POSITION_TIME_UPDATE_MSC);
      PrintFormat("Position #%d  POSITION_TIME_UPDATE_MSC = %i64 milliseconds => %s",
                  position_ID,update_time_msc,TimeToString(update_time_msc/1000));
     }
//---
  }

Véase también

PositionGetSymbol(), PositionSelect(), Propiedades de posiciones