Ordem Stop executada durante o leilão de abertura e fechamento sem atingir o preço.

 

Bom dia.

Estou desenvolvendo um EA que está funcionando bem, porém eventualmente ele executa uma ordem Stop durante o leilão de abertura ou fechamento, sem que o preço alcance tal valor.
Inclusive verifiquei no Times and Trades para me assegurar que não chegou lá, mesmo tendo certeza que não teria dado um pulo de 15%!

Alguém sabe como colocar algum filtro para que execute a ordem Stop somente caso o preço realmente atinja tal valor, ou outra forma de bloquear para que isso não aconteça?
Sei que uma opção seria testar na conta real, mas o EA ainda está em desenvolvimento! 

Obrigado desde já!


 
Marco Antonio Colognese:

Bom dia.

Estou desenvolvendo um EA que está funcionando bem, porém eventualmente ele executa uma ordem Stop durante o leilão de abertura ou fechamento, sem que o preço alcance tal valor.
Inclusive verifiquei no Times and Trades para me assegurar que não chegou lá, mesmo tendo certeza que não teria dado um pulo de 15%!

Alguém sabe como colocar algum filtro para que execute a ordem Stop somente caso o preço realmente atinja tal valor, ou outra forma de bloquear para que isso não aconteça?
Sei que uma opção seria testar na conta real, mas o EA ainda está em desenvolvimento! 

Obrigado desde já!


Olá Marco

isso é um é um bug do ambiente DEMO, pode acontecer esporadicamente.  Respondendo a sua pergunta, como é uma ordem stop SL/TP a única forma de intervir é modificando os stops para 0(zero) enquanto estiver entrar em leilão, mas isso vai gerar problemas. 

 
Rogerio Giannetti Torres #:

Olá Marco

isso é um é um bug do ambiente DEMO, pode acontecer esporadicamente.  Respondendo a sua pergunta, como é uma ordem stop SL/TP a única forma de intervir é modificando os stops para 0(zero) enquanto estiver entrar em leilão, mas isso vai gerar problemas. 

Entendo. E será que tem como o EA verificar se é conta demo, para fora do horário de operação não operar caso esteja nesse tipo de conta? 
Pois dessa forma posso ter um relatório mais real, tendo em vista que é melhor deixar de sair de uma operação real no preço certo, do que sair no preço errado! 😅
 
Marco Antonio Colognese #:
Entendo. E será que tem como o EA verificar se é conta demo, para fora do horário de operação não operar caso esteja nesse tipo de conta? 
Pois dessa forma posso ter um relatório mais real, tendo em vista que é melhor deixar de sair de uma operação real no preço certo, do que sair no preço errado! 😅

Sim tem, use o ACCOUNT_TRADE_MODE, mas não tem como evitar a execução do STOP SL/TP pois a ordem é emitida pelo servidor MT5 e não pelo terminal MT5. Sugiro você testar se EA  com outro TICKER.

 
Rogerio Giannetti Torres #:

Sim tem, use o ACCOUNT_TRADE_MODE, mas não tem como evitar a execução do STOP SL/TP pois a ordem é emitida pelo servidor MT5 e não pelo terminal MT5. Sugiro você testar se EA  com outro TICKER.

Sim. Mas na conta demo posso colocar uma função que remove os alvos após o fechamento do mercado, e só coloca novamente as ordens quando entrar o novo preço de abertura. Para fins de testes resolve o problema, eu imagino.
 
Marco Antonio Colognese #:
Sim. Mas na conta demo posso colocar uma função que remove os alvos após o fechamento do mercado, e só coloca novamente as ordens quando entrar o novo preço de abertura. Para fins de testes resolve o problema, eu imagino.

Nunca fazer uma tentei fazer uma operação após o fechamento do mercado... acho que não rola. Mas durante o leilão é possível.

Inté e bons trades.

 

Então @Marco Antonio Colognese,

Eu tive problemas assim quando realizei teste e notei que o problema estava relacionado a ausência de ticks que não vinham quando eu os puxava do histórico junto a corretora. 

Neste seu caso, apesar de não ser um teste e sim uma execução em conta DEMO acredito que há ainda aí alguma relação pois, como é um leilão e a EA continua em operação, suponho que o servidor vai enviar para a plataforma as oscilações que ocorrerão durante o leilão e, encontrando sua ordem na faixa de preço a execute. 

Sua ideia de remover as ordens parece ser um bom caminho e, para acrescentar sugiro que armazene todas as informações numa struct para, após a abertura fique mais fácil recolocá-las no lugar. 

Acrescento também uma situação que ocorreu comigo quando, uma ordem foi abertura numa derrapagem de preço imensa. 

Hoje tenho uma função que previamente processa as informações que eu decidi colocar a posição e se, estiver dentro de uma margem que eu também defino, ela confirma a posição. 

Do contrário, caso aconteça uma distância muito grande entre o que originou minha entrada e o novo preço ( a derrapagem ) ele nega a operação.

Razão: