Ola pessoal,
estou com uma dúvida sobre o feedback de ordens enviadas para o mercado.
Vamos supor que eu enviei algumas ordens limites de compra durante os últimos minutos (em um único ativo).
Podem ter preços/volumes distintos, ou preços/volumes iguais. Varia.
Minha dúvida é quando recebo informações na função OnTradeTransaction(trans, request, result) quando cada ordem muda de estado no mercado.
Eu preciso saber exatamente qual ordem mudou. Há alguma forma de fazer isso no MQL?
Ao ler a documentação, imaginei que o request.order serviria para isso. Mas durante a troca de estados das ordens na conta demo, os campos "order"s sempre me retornam zero.
Assim, não consigo fazer um mapeamento entre as ordens que eu enviei, e as ordens que sofrem modificações no mercado, me informando os trades executados, por exemplo.
Muito obrigado pela atenção.
Obrigado pelo feedback Malacarne.
vou tentar ser mais específico.
suponha que eu dispare 2 ordens quase ao mesmo tempo no mesmo ativo, no mesmo preço e no mesmo volume.
1) É possível, antes de disparar as ordens eu inserir um identificador único em cada uma delas para indentificar suas respectivas mudanças de estado no futuro? Ou o identificador é inserido pelo mercado e só posso acessar seu valor após a aceitação da ordem pelo mercado?
2) se for possível já identificar cada ordem antes do disparo, em qual campo adiciono este identificador único no Request e em qual campo devo "casar" este identificador no onTradeTransaction?
Obrigado mais uma vez.
Olá humbertobrandao,
respondendo suas perguntas:
1) o ticket da ordem que você está enviando pode ser definido por você ou pelo terminal MT5; caso você não especifique um ticket para a ordem, o terminal MT5 faz isso automaticamente para você; esse ticket da ordem, caso deixado para ser definido pelo próprio terminal MT5, pode ser tranquilamente retornado após o envio da ordem, bastando para tanto que você tenha a confirmação de que ela foi corretamente aceita pelo terminal de negociações da corretora; portanto, mesmo que você possa pegar o ticket durante o envio da ordem através do manipulador de eventos OTT, o ideal mesmo seria você pegar esse ticket após a confirmação de que a ordem foi corretamente aceita pelo servidor de negociações, ou seja, após o seu envio.
2) lendo o que escrevi acima, fica a teu critério determinar se seu interesse é pegar esse ticket da ordem durante ou após o envio da ordem... se não me engano você consegue essa informação através da struct MqlTradeRequest, especificamente request.order; posso estar enganado, mas sugiro verificar isso para confirmar minha suspeita.
Abraços,
Malacarne
Olá humbertobrandao,
respondendo suas perguntas:
1) o ticket da ordem que você está enviando pode ser definido por você ou pelo terminal MT5; caso você não especifique um ticket para a ordem, o terminal MT5 faz isso automaticamente para você; esse ticket da ordem, caso deixado para ser definido pelo próprio terminal MT5, pode ser tranquilamente retornado após o envio da ordem, bastando para tanto que você tenha a confirmação de que ela foi corretamente aceita pelo terminal de negociações da corretora; portanto, mesmo que você possa pegar o ticket durante o envio da ordem através do manipulador de eventos OTT, o ideal mesmo seria você pegar esse ticket após a confirmação de que a ordem foi corretamente aceita pelo servidor de negociações, ou seja, após o seu envio.
2) lendo o que escrevi acima, fica a teu critério determinar se seu interesse é pegar esse ticket da ordem durante ou após o envio da ordem... se não me engano você consegue essa informação através da struct MqlTradeRequest, especificamente request.order; posso estar enganado, mas sugiro verificar isso para confirmar minha suspeita.
Abraços,
Malacarne
Obrigado Malacarne. Vou fazer os testes em simulação e depois no mundo real aqui.
Bom fim de semana.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Ola pessoal,
estou com uma dúvida sobre o feedback de ordens enviadas para o mercado.
Vamos supor que eu enviei algumas ordens limites de compra durante os últimos minutos (em um único ativo).
Podem ter preços/volumes distintos, ou preços/volumes iguais. Varia.
Minha dúvida é quando recebo informações na função OnTradeTransaction(trans, request, result) quando cada ordem muda de estado no mercado.
Eu preciso saber exatamente qual ordem mudou. Há alguma forma de fazer isso no MQL?
Ao ler a documentação, imaginei que o request.order serviria para isso. Mas durante a troca de estados das ordens na conta demo, os campos "order"s sempre me retornam zero.
Assim, não consigo fazer um mapeamento entre as ordens que eu enviei, e as ordens que sofrem modificações no mercado, me informando os trades executados, por exemplo.
Muito obrigado pela atenção.