Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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
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
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.
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
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.