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
1) Não creio que esteja relacionado com a questão deste tópico. A questão que recebemos é no caso de um pedido ter sido atendido com sucesso e uma vaga ser aberta. Mas esta posição é aberta no servidor comercial, o problema que encontramos é quando há um atraso mais importante como de costume e o terminal MT5 é notificado desta nova posição DEPOIS de um novo tick já ter sido processado.
2) ... na minha opinião, é uma plataforma pobre, projetada para permitir explicitamente solicitações comerciais síncronas e assíncronas ...
3) ... o ResultRetCode é síncrono, é a atualização do banco de dados MT5 sobre posição (negócio e ordem) que é assíncrono ...1) Discordo, e lamento a ignorância, mas como você está tão certo de que a posição é aberta após PositionOpen() no servidor de negociação sem verificar duas vezes o ResultRetcode()?
2) Concordo 100%.
3) Para ter certeza de que ResultRetCode() é síncrono, quero dizer que para verificar o código de resultado você (mestre) deve consultar o servidor (escravo) com várias mensagens "assíncronas".
1) Discordo, e lamento a ignorância, mas como você está tão certo de que a posição é aberta após PositionOpen() no servidor comercial sem verificar duas vezes o ResultRetcode()?
2) concordo 100%.
3) Para ter certeza de que ResultRetCode() é síncrono, quero dizer que para verificar o código de resultado você (mestre) deve consultar o servidor (escravo) com várias mensagens "assíncronas".
1) Este tópico é sobre uma entrada dupla, portanto estamos falando de uma solicitação de pedido que foi bem sucedida. Eu nunca escrevi que não é necessário verificar duas vezes o ResultRetCode(), eu escrevi exatamente o contrário. Mas isto NÃO está relacionado com a entrada dupla, por definição. Não é óbvio?
3) Provavelmente é um detalhe(incompreensão?) , mas o que você escreveu não faz sentido. Na primeira parte de sua frase você disse que ResultRetCode() é síncrono, na segunda você disse que "código de resultado" que é o mesmo que ResultRetCode() é obtido de forma assíncrona. Não há comunicação EM TUDO entre o servidor e o terminal para obter este valor (Retcode).
CTrade.PositionOpen() por padrão é síncrono, isto significa que a classe subjacente usa OrderSend(). Que envia o pedido de ordem e aguarda a resposta do servidor. O servidor retorna o resultado para o terminal, e o código EA continua (com valor retornado verdadeiro ou falso). A comunicação mestre/escravo está terminada. Depois disso, você pode verificar o ResultRetcode, que já está disponível localmente.
Há um tempo limite para a vaga em aberto?
Olá doshur, o que você quer dizer exatamente com "timeout"?
1) Este tópico é sobre uma entrada dupla, por isso estamos falando de um pedido de pedido que foi bem sucedido. Eu nunca escrevi que não é necessário verificar duas vezes o ResultRetCode(), eu escrevi exatamente o contrário. Mas isto NÃO está relacionado com a entrada dupla, por definição. Não é óbvio?
3) Provavelmente é um detalhe(incompreensão?) , mas o que você escreveu não faz sentido. Na primeira parte de sua frase você disse que ResultRetCode() é síncrono, na segunda você disse que "código de resultado" que é o mesmo que ResultRetCode() é obtido de forma assíncrona. Não há comunicação EM TUDO entre o servidor e o terminal para obter este valor (Retcode).
CTrade.PositionOpen() por padrão é síncrono, isto significa que a classe subjacente usa OrderSend(). Que envia o pedido de ordem e aguarda a resposta do servidor. O servidor retorna o resultado para o terminal, e o código EA continua (com valor retornado verdadeiro ou falso). A comunicação mestre/escravo está terminada. Depois disso, você pode verificar o ResultRetcode, que já está disponível localmente.
Alain,
Cerca de 1) Eu ainda discordo, já que para mim o código original de doshur não verifica ResultRetCode() e ele está procurando uma solução para a "entrada dupla", e para mim temos que abordar este é o código dele (como Malacarne propôs). Portanto, para mim isso não é tão óbvio.
Sobre 3) Você escreveu "Entretanto o ResultRetCode é síncrono, é a atualização do banco de dados MT5 sobre posição (negócio e ordem) que é assíncrono", então minha resposta foi sobre esta frase.
De qualquer forma,nosso debate se parece com a história sobre a meia xícara de água: alguns a verão como meio cheia e outros como meio vazia, mas é uma questão de se considerar o copo como sendo meio cheio, ou como sendo meio vazio ;-)))
Portanto, para ser honesto, não acredito que este debate seja produtivo e/ou deva continuar (pelo menos aqui neste tópico), uma vez que podemos voltar a trabalhar em soluções alternativas, portanto, por favor, lamento por criar tal controvérsia e por favor, prossiga com sua linha de pensamento, que eu acho que será mais adequada para ajudaro doshur e outros caras com o mesmo problema.
@figurelli: Parabéns por se tornar Moderador ... .
Bem, todo o trabalho de volta postado é muito bom. Agradeço e aprendo algumas idéias ao longo do caminho.
Vocês são úteis.
Meu EA parece estar mais resistente agora.
...
Portanto, para ser honesto, não acredito que este debate seja produtivo e/ou deva continuar (pelo menos aqui neste tópico), uma vez que podemos voltar a trabalhar em soluções alternativas, portanto, por favor, lamento por criar tal controvérsia e por favor, prossiga com sua linha de pensamento, que eu acho que será mais adequada para ajudaro doshur e outros caras com o mesmo problema.