PositionSelect

Escolhe uma posição aberta para posteriormente trabalhar com ela. Retorna true se a função for concluída com êxito. Retorna false em caso de falha. Para obter informações sobre o erro, chame GetLastError().

bool  PositionSelect(
   string  symbol      // Nome do símbolo
   );

Parâmetros

symbol

[in]  Nome do ativo.

Valor retornado

Valor do tipo bool.

Observação

Ao usar o registro de posições com "cobertura" (ACCOUNT_MARGIN_MODE_RETAIL_NETTING e ACCOUNT_MARGIN_MODE_EXCHANGE), para cada símbolo, em qualquer momento, pode estar aberta apenas a posição que resulte de uma ou mais operações. Não confunda as posições com as ordens pendentes ativas que aparecem na aba "Negociação" da janela "Caixa de ferramentas".

Ao usar a exibição independente de posições (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING), pode haver várias posições abertas ao mesmo tempo para cada símbolo. Neste caso, a PositionSelect escolhe a posição com o menor ticket.

A função PositionSelect() copia os dados da posição para o ambiente do programa, e chamadas subsequentes de PositionGetDouble(), PositionGetInteger() e PositionGetString() retornam esses dados copiados anteriormente. Isso significa que a posição em si pode já não existir (ou seu volume, direção, etc. pode ter mudado), mas ainda assim os dados dessa posição podem ser obtidos. Para garantir que os dados da posição estejam atualizados, é recomendado chamar PositionSelect() logo antes de acessá-los.

Exemplo:

#define   SYMBOL_NAME   "EURUSD"
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- selecionamos a posição no símbolo especificado
   if(!PositionSelect(SYMBOL_NAME))
     {
      PrintFormat("PositionSelect(%s) failed. Error %d",SYMBOL_NAMEGetLastError());
      return;
     }
 
//--- se a posição for selecionada, é possível acessar seus dados com PositionGetDouble(), PositionGetInteger() e PositionGetString()
//--- obtemos o ticket da posição selecionada
   ResetLastError();
   long ticket=PositionGetInteger(POSITION_TICKET);
   if(ticket==0)
     {
      PrintFormat("Failed to get %s position ticket. Error %d"SYMBOL_NAMEGetLastError());
      return;
     }
     
//--- ao obter o ticket com sucesso, imprimimos no log o símbolo e o ticket da posição selecionada
   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
   */
  }

Também Veja

PositionGetSymbol(), PositionsTotal(), Propriedades de uma Posição