ORDER_POSITION_ID

 

Boa tarde!

Alguém usa

 if ( OrderSelect( ticket ) )
 {
  long pos_id = long( OrderGetInteger( ORDER_POSITION_ID ) );

  if ( pos_id > 0 )
  {
  }
}

Eu, quando uma ordem é parcialmente executada pos_id sempre = 0

Por quê?

Da ajuda da MQ:

ORDER_POSITION_ID

O identificador de posição que é colocado na ordem quando ela é executada. Cada ordem executada gera uma negociação, que abre uma nova posição ou modifica uma posição existente. O identificador desta posição é definido para a ordem executada neste ponto.

 
Será que ninguém sabe?
 
Eu uso :) como mágica quando é preciso ligar os pedidos a uma posição.
 
Yurich:
Eu o uso :) Como mágica, quando é necessário ligar uma ordem a uma posição.

Então por que eu tenho 0?

Porque se tivesse sido escrito na ajuda, teria dito:

Identificação da posição, que é colocada na ordem quando é executada.

Então talvez devesse ser zero.

Mas diz:

Cada ordem executada gerauma negociação que abre uma novaposição ou modifica umaposição existente. O identificador desta posição é definido para a ordem executada naquele momento.

E uma ordem parcialmente executada também gera um acordo.

O que você quer dizer?

 
Mikalas:

Então por que eu tenho 0?

Está em servicedesk.

Eu estava respondendo a pergunta"Alguém usa" e estava impreciso, eu uso aidentificação da posição.

 
Yurich:

Está em servicedesk.

Eu estava respondendo a pergunta"Alguém usa" e estava impreciso, eu uso aidentificação da posição.

Estou vendo, obrigado.

Mas é o identificador da posição, mas somente na ordem.

 
Mikalas:

Comigo, quando uma ordem é parcialmente executada pos_id sempre = 0

Por quê?

Eu não uso pos_id, provavelmente porque não entendo para que serve.

Que identificação uma ordem deve ter se ela fechou uma posição anterior e abriu uma nova (flip)?

p.s. A idéia é que deve haver apenas uma posição comercial civil (não importa de que forma: comprar, vender, hedge). Se não parece haver posição, é temporário).

 
Serj_Che:

Eu não uso pos_id, provavelmente porque não entendo para que serve.

Que identificação uma ordem deve ter se ela fechou uma posição anterior e abriu uma nova (flip)?

p.s. A idéia é que deve haver apenas uma posição comercial civil (não importa de que forma: comprar, vender, hedge). Se não parece haver posição, é temporário).

A confusão surge porque a referência dá uma descrição ambígua,

o que pode ser interpretado de forma diferente. Porque uma ordem parcialmente executada também cria um

Portanto, a ordem deve receber um ORDER_POSITION_ID

 
Mikalas:

Boa tarde!

Alguém usa

Eu sempre tenho pos_id = 0 quando uma ordem é parcialmente executada.

Por quê?

Talvez porque o ORDER_POSITION_ID é solicitado logo após a execução do pedido, quando o servidor comercial ainda não teve tempo de enviar informações sobre a transação.

Leia o artigo Eventos comerciais no MetaTrader 5


 
Rosh:

Isto pode ser porque o ORDER_POSITION_ID é 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


Não tem certeza sobre sua resposta?
 
Rosh:

Talvez porque o ORDER_POSITION_ID é solicitado imediatamente após a execução da ordem, quando o servidor comercial ainda não teve tempo de enviar informações sobre a transação.

Leia o artigo Eventos comerciais no MetaTrader 5


Não está claro. Se houver um bilhete, a transação é executada, e recebemos uma resposta do servidor.

Como assim, temos um bilhete, mas o servidor não recebeu a resposta?