PositionSelect

Elige una posición abierta para trabajar posteriormente con ella. Retorna true en caso de que la función se ejecute con éxito. Retorna false en caso de que la función no se ejecute con éxito. Para obtener la información sobre el error, hay que llamar a la función GetLastError().

bool  PositionSelect(
   string  symbol     // nombre del instrumento
   );

Parámetros

symbol

[in]  Nombre del instrumento financiero.

Valor devuelto

Valor del tipo bool.

Observación

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. En este caso, PositionSelect seleccionará la posición con el ticket menor.

La función PositionSelect() copia los datos sobre la posición en el entorno programático, y las siguientes llamadas de PositionGetDouble(), PositionGetInteger() y PositionGetString() retornarán los valores copiados anteriormente. Esto significa que la propia posición podría no existir ya (o haber modificado su volumen, dirección, etc.), pero sus datos podrían ser obtenidos todavía. Para obtener de forma garantizada datos recientes sobre una posición, se recomienda llamar a la función PositionSelect() justo antes de solicitarlos.

Ejemplo:

#define   SYMBOL_NAME   "EURUSD"
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- seleccionamos la posición en el símbolo indicado
   if(!PositionSelect(SYMBOL_NAME))
     {
      PrintFormat("PositionSelect(%s) failed. Error %d",SYMBOL_NAMEGetLastError());
      return;
     }
 
//--- si la posición ha sido seleccionada, podemos obtener sus datos utilizando PositionGetDouble(), PositionGetInteger() y PositionGetString()
//--- obtenemos el ticket de la posición seleccionada
   ResetLastError();
   long ticket=PositionGetInteger(POSITION_TICKET);
   if(ticket==0)
     {
      PrintFormat("Failed to get %s position ticket. Error %d"SYMBOL_NAMEGetLastError());
      return;
     }
     
//--- si obtenemos correctamente el ticket, imprimimos el símbolo y el ticket de la posición seleccionada en el registro
   PrintFormat("The position that is selected on the %s symbol has ticket %I64d"SYMBOL_NAMEticket);
   /*
   resultado:
   The position that is selected on the EURUSD symbol has ticket 2810846623
   */
  }

Véase también

PositionGetSymbol(), PositionsTotal(), Propiedades de las posiciones