PositionGetSymbol

Devuelve el símbolo de una posición correspondiente abierta y automáticamente elige una posición para gestionarla después usando las funciones PositionGetDouble,PositionGetInteger, PositionGetString.

string  PositionGetSymbol(
   int  index      // número en la lista de posiciones
   );

Parámetros

index

[in]  Número de posición en la lista de posiciones abiertas. Si la posición no ha sido encontrada, se devolverá la cadena vacía. Para obtener el código del error, hay que llamar a la función GetLastError().

Valor devuelto

Valor del tipo string. Si la posición no se ha encontrado, entonces se retornará una línea vacía. Para obtener el código de error es necesario llamar a la función GetLastError().

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.

Ejemplo:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- obtenemos el número de posiciones abiertas en la cuenta
   int total=PositionsTotal();
   for(int i=0i<totali++)
     {
      //--- obtenemos el símbolo de la posición según el índice del ciclo i
      ResetLastError();
      string symbol=PositionGetSymbol(i);
      
      //--- si hemos obtenido el símbolo de la posición correctamente, seleccionaremos automáticamente la posición en el índice i
      //--- y podemos obtener sus propiedades con la ayuda de PositionGetDouble, PositionGetInteger, PositionGetString
      if(symbol!="")
        {
         ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
         PrintFormat("Position symbol at index %d: %s, position type: %s"isymbolStringSubstr(EnumToString(type), 14));
        }
      else
        {
         PrintFormat("PositionGetSymbol(%d) failed. Error %d"iGetLastError());
         continue;
        }
     }
   /*
   resultado:
   Position symbol at index 0GBPUSDposition typeSELL
   Position symbol at index 1EURUSDposition typeBUY
   */
  }

Véase también

PositionsTotal(), PositionSelect(), Propiedades de posiciones