Ordem Pendente - página 3

 
Ricardo Rodrigues Lucca #:
Essa sua função não define o ativo, logo tendo qualquer outra ordem pendente em outro ativo será contabilizado como de interesse. Pelo manual também se deu OrderGetTicket diz lá que ele já te garantiria que estaria selecionado o ticket para uso. Então esse select poderia só trocar por um tkt > 0. O uso do magic number seria só pra deixar preciso o que eu quero, eu poderia querer deixar a pessoa colocar a ordens no ativo e eu não contabilizar. Mas não vejo muita necessidade em conta netting.
Vc tem razão vou acrescentar isso, mas amanhã vou tentarem uma conta minha pra ver se dá algum erro de não abrir as ordens
 
Gustavo Barbeiro Alonso #:
Vc tem razão vou acrescentar isso, mas amanhã vou tentarem uma conta minha pra ver se dá algum erro de não abrir as ordens
Comenta depois se teve mais coisas que sempre é interessante conhecer mais detalhes.
 
Ricardo Rodrigues Lucca #Comenta depois se teve mais coisas que sempre é interessante conhecer mais detalhes.

Descobri que o fato da função não funcionar é um bug que a XP não retorna se existe uma ordem no simbolo atual 

 PositionSelect(_Symbol)    <- sempre retorna falso, não sei o motivo.

mas resolvidor, agora uma duvida, pra fechar uma ordem com ordem pendente precisa colocar closeby? é conta Netting

 
Gustavo Barbeiro Alonso #:

Descobri que o fato da função não funcionar é um bug que a XP não retorna se existe uma ordem no simbolo atual 

 PositionSelect(_Symbol)    <- sempre retorna falso, não sei o motivo.

mas resolvidor, agora uma duvida, pra fechar uma ordem com ordem pendente precisa colocar closeby? é conta Netting

Voce claramente esta confundindo posição com ordem. PositionSelect só vai retornar quando houver posição, se tu só criar ordem está correto ela retornar falso. Ordem colocada não é posição. Outro ponto que demonstra essa confusão é que voce não "fecha" uma ordem, voce apaga a ordem. Voce só fecha posição. Closeby não é usado nessa caso porque não é conta hedging na qual voce ficaria com posições opostas. Voce "fecha" ordens, mandando delete nelas. Se voce tiver duas posições opostas (conta heging) dai sim usaria o closeby pra dizer pro servidor do metatrader "netar" ambas.

 
Ricardo Rodrigues Lucca #:

Voce claramente esta confundindo posição com ordem. PositionSelect só vai retornar quando houver posição, se tu só criar ordem está correto ela retornar falso. Ordem colocada não é posição. Outro ponto que demonstra essa confusão é que voce não "fecha" uma ordem, voce apaga a ordem. Voce só fecha posição. Closeby não é usado nessa caso porque não é conta hedging na qual voce ficaria com posições opostas. Voce "fecha" ordens, mandando delete nelas. Se voce tiver duas posições opostas (conta heging) dai sim usaria o closeby pra dizer pro servidor do metatrader "netar" ambas.

acho que eu não soube explicar direito o que aconteceu


quando havia uma ordem aberta (a mercado) o PositionSelect(_Symbol) ainda permanecia retornando falso

e era este o problema 

 
Gustavo Barbeiro Alonso #:

acho que eu não soube explicar direito o que aconteceu


quando havia uma ordem aberta (a mercado) o PositionSelect(_Symbol) ainda permanecia retornando falso

e era este o problema 

Tentar explicar de outra maneira, com um exemplo do manual (que recomendo ler o segundo paragrafo).


Na imagem acima, voce não tem ordens colocadas e o PositionSelect(eurusd) vai devolver true. Se a linha do eurusd estivesse abaixo da linha cinza ou preta, o PositionSelect(eurusd) vai devolver falso porque não tem posição somente ordens.

EDIT: esse outro link tem uma sessão Onde são exibidas as atuais posições abertas que basta passar o mouse na imagem e ler que ele explica o que eh cada coisa certinho.

Princípios gerais - Operações comerciais - Ajuda para o MetaTrader 5
  • www.metatrader5.com
Antes de começar a estudar as funções da plataforma, você deve compreender claramente todos os termos e funç...