Como trabalhar corretamente em MT5 com OrderSend - página 4

 
fxsaber:
Infelizmente, somente através de uma muleta - uma variável global do terminal.

E através de muletas adicionais para garantir que a variável principal seja apagada em caso de queda, por exemplo.

Portanto, minha variante com espera por uma transação na história é mais confiável e mais simples. Mas ainda é uma muleta.

 

Eu não verifiquei, mas talvez depois de encomendar TODOS os EAs receba o evento correspondente paraa OnTradeTransaction.

Então tudo é resolvido sem muletas e para múltiplos EAs no mesmo símbolo.

 
prostotrader:

Você quer que eu o ajude a contornar estes contratempos (a partir de experiência pessoal de negociação com robôs MT5 em uma conta real)?

Adicionado

Totalmente livre :)

Deseje-o! :)
 
prostotrader:
As pessoas não querem pensar por si mesmas, querem que outros o façam por elas. Infelizmente, isto é verdade.
Para pensar, você tem que ter informações para pensar. Como você pode pensar se não há informações de base suficientes?
 
fxsaber:

As pessoas não apenas pensam, mas também compartilham suas soluções. Infelizmente, os desenvolvedores estão em silêncio sobre isso.

Não há um único exemplo na Documentação sobre este tópico. E isso é com a função principal.

Eu apoio. Se fosse escrito em algum lugar que OrderSend() espera por uma resposta do servidor e o que acontece em seguida, não haveria necessidade de se encontrar soluções para verificar.

Há um excelente artigo sobre pedidos, acordos e posições e trabalhando com eles e seu cache que detalha tudo. No entanto, ela evita completamente os processos que ocorrem quando os pedidos são enviados por conta própria.

 
fxsaber:
Minha sugestão

prostotrader:

Use-o.

O que acontece se o evento OnTrade() for acionado antes que o processamento OnTick() tenha terminado. Às vezes o tempo é essencial. Esperar até chegar à OnTrade() pode ser problemático. Além disso, a própria função OrderSend() foi projetada para que eu possa obter informações sobre seus resultados diretamente no local. Ou não é?
 
Oleg Shenker:
E o que acontece se o evento OnTrade() for acionado antes que o processamento OnTick() seja finalizado. Às vezes o tempo é essencial. A espera até que o evento OnTrade() ocorra pode ser problemática. Além disso, a própria função OrderSend() foi projetada para que eu possa obter informações sobre seus resultados diretamente no local. Ou não é?

OrderSend() é uma função absolutamente sincronizada - se um bilhete é recebido, tudo é executado.

Abaixo está um exemplo

Adicionados, e aqui estão os logs

https://www.mql5.com/ru/forum/38456/page85#comment_2888263

ФОРТС. Вопросы по исполнению
ФОРТС. Вопросы по исполнению
  • www.mql5.com
С большими проблемами удалось это сделать (начальник отдела по работе с профессиональными клиентами ДЦ Открытие Евгений Сергеевич,.
Arquivos anexados:
TestOrders.mq5  23 kb
 
Andrey Khatimlianskii:
Não executado, mas enviado para o servidor MT5.

Não. Para a Bolsa - foi para a Bolsa (pode não ter sido cumprida :) ), para FOREX não sei

Adicionado

Ie (para a troca), se você receber um bilhete na função OrderSend((), isso significa que a ordem é aceita pela troca

Adicionado

Ver foto (houve mudanças em 1375)

 
Andrey Khatimlianskii:

Este é um caso especial de envio de uma ordem de limite para uma troca. E quanto a uma ordem de mercado em forex?

Eu disse que não sei sobre FOREX
 
Andrey Khatimlianskii:

Nem uma única vez nesta linha. Somente sobre MT5 e OrderSend synchronicity.

Portanto, a resposta não se encaixa.

Não. Para Exchange - foi para Exchange (talvez não cumprido :) ), para FOREX eu não sei

Adicionado

Ie (para a troca), se você receber um bilhete nafunção OrderSend((), isso significa que a ordem é aceita pela troca

Adicionado

Veja foto (houve mudanças em 1375)

Razão: