ORDER_POSITION_ID - página 2

 
Precisa de mais contexto (código). De onde vem este bilhete e o que ele iguala antes que este código seja executado?
 
Rosh:

Talvez isto se deva ao fato de o ORDER_POSITION_ID ser solicitado imediatamente após a execução do pedido, quando o servidor da empresa ainda não teve tempo de enviar informações sobre a transação.

Leia o artigo Eventos comerciais no MetaTrader 5


Eu dei um trecho de código como exemplo, mas na verdade a função para obter a identificação se parece com isto:

//+------------------------------------------------------------------+
//| Get order position ID function                                   |
//+------------------------------------------------------------------+
long GetOrderPosId( const ulong ticket )
{
  long pos_id = 0;
  
  if ( OrderSelect( ticket ) )
  {
    string pos_symbol = OrderGetString( ORDER_SYMBOL );
    
    if ( PositionSelect( pos_symbol ) )
    {
      return( long( OrderGetInteger( ORDER_POSITION_ID ) ) );
    }
  }
  
  return( pos_id );
}

P/S Rosh, por favor, não me mande embora para ler artigos.

Acredite, já li muito, e o fato de que estou pedindo muito de

Perguntas, é porque há muita ambigüidade na documentação.

 
marketeer:
Precisamos de mais contexto (código). De onde vem este bilhete e o que ele iguala antes que este código seja executado?

Se o pedido for selecionado, o que você acha que era o bilhete?

E o bilhete foi retirado da Internet como resposta à ordem sendo aceita pelo servidor comercial.

 
Mikalas:

Se o pedido for selecionado, o que você acha que era o bilhete?

E o bilhete foi retirado da Internet como resposta à ordem sendo aceita pelo servidor comercial.

E como você acha que sabemos o quê e de onde você está tirando isso? Você ainda mostra código que não diz nada sobre o conteúdo do bilhete, sobre como o pedido foi executado, e você não usa, por exemplo, impressão de depuração ou outros meios para verificar se a variável não contém um número canhoto (para começar, então request.action é igual a quê?). Um inseto pode se infiltrar em qualquer lugar.
 
marketeer:
Como você acha que sabemos o que você está recebendo e de onde está vindo? Você ainda mostra código que não diz nada sobre o conteúdo do bilhete, sobre como o pedido foi executado, e você não usa, por exemplo, impressão de depuração ou outros meios para ter certeza de que a variável não é um número canhoto (para começar, então request.action é igual a quê?). Um inseto pode se infiltrar em qualquer lugar.
Obrigado, entendo seu ponto de vista.
 
Mikalas:
Obrigado, eu entendo seu ponto de vista.
Seja bem-vindo. Não entendo seu ponto de vista. Você já foi insinuado sobre a execução assíncrona do pedido e o recebimento do bilhete. Até que você mostre o código como e quando você processa este material, a pergunta acaba sendo dirigida aos telepatas.
 
marketeer:
Seja bem-vindo. E eu não entendo seu ponto de vista. Você já foi insinuado sobre a execução assíncrona do pedido e o recebimento do bilhete. Até que você mostre o código, como e quando você processa este material, a pergunta acaba sendo dirigida aos telepatas.

Deixe-me explicar.

A partir do código acima, tudo é óbvio.

Não importa qual bilhete (o pedido é feito sozinho). Veja com cuidado (ordem por bilhete e símbolo de posição por ordem aberta parcialmente executada por esta ordem).

Além da impressão, há também uma execução passo a passo do programa e

quando eu chegar a

return( long( OrderGetInteger( ORDER_POSITION_ID ) ) );

Ele retorna "0".

A questão não é se posso ou não posso programar na MQL5 (assim como rastrear o programa), mas

A questão é se ela diz uma coisa na documentação e implementa outra (o Service Desk é silencioso como de costume).

Ou posso ter interpretado corretamente a descrição dada na documentação sobre oORDER_POSITION_ID

(leia meus 3 posts).

 
Mikalas:

Deixe-me explicar.

A partir do código acima, tudo é óbvio.

Não importa qual bilhete (o pedido é feito sozinho). Veja com cuidado (ordem por bilhete e símbolo de posição por ordem aberta parcialmente executada por esta ordem).

Além da impressão, há também uma execução passo a passo do programa e

quando eu chegar a

Ele retorna "0".

A questão não é se posso ou não posso programar na MQL5 (assim como rastrear o programa), mas

A questão é se ela diz uma coisa na documentação e outra aparece na realidade (o Service Desk é silencioso como de costume).

Ou posso ter interpretado corretamente a descrição dada na documentação sobre oORDER_POSITION_ID

(Leia meus 3 posts).

Novamente 25. É IMPORTANTE qual ordem e como você a coloca. Talvez, por exemplo (hipoteticamente, porque tudo ainda é um mistério), você tenha um pêndulo, então qual pode ser a identificação da posição?

O código acima não faz nenhum sentido.

 
marketeer:

25 novamente. É IMPORTANTE qual ordem e como você a coloca. Talvez você tenha, por exemplo (hipoteticamente, porque tudo ainda é um mistério), um pêndulo, então qual pode ser a identificação da posição?

O código acima não faz nenhum sentido.

Desculpe, mas falamos línguas "diferentes", ou você lê do outro lado da linha.

A ordem pendente é UMA e a posição foi parcialmente aberta por estaordem que ainda está em vigor,

Ao rastrear o programa, eu possoretornar( long( OrderGetInteger( ORDER_POSITION_ID ) ) );

 
Mikalas:

Desculpe, mas você e eu estamos falando em línguas "diferentes", ou você está lendo do outro lado da linha.

A ordem pendente é UMA e a posição foi parcialmente aberta por estaordem, que ainda está em vigor,

Ao rastrear o programa, eu possoretornar( long( OrderGetInteger( ORDER_POSITION_ID ) ) );

Você observa esta ordem parcialmente executada. Onde está? Na lista de negócios ou nas ordens executadas?