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
Segue o log com o horário das execuções de ordem...
Amigo Patinhas, pensei nisso também: "(2) as ordens-fantasma estão sendo geradas por outro robô que esteja rodando na mesma conta-corrente, podendo esse outro robô estar no mesmo terminal ou em outro terminal (outro computador, outro lugar, etc., mas logado na sua conta-corrente)"
Uma vez por "orelhada" minha tava eu com o EA na VPS e local também, então ele ficou gerando 2x as mesmas operações.
Amigos, hoje eu fechei todos os gráficos e abri novamente.. tomei cuidado para abrir apenas um Robô...
O problema está na execução de ordens mesmo... parece ser um bug, pois a minha order está sendo enviada de compra com um SL e TK. E hoje percebi que aparece uma venda no mesmo horário porém com o mesmo TK e SL da compra. Estou achando que a execução de ordem está com problema no meu meta.
Estou usando da seguinte forma :
trade.Buy(v_contratos,_Symbol,ask,ask -v_pontos_loss, ask+v_pontos_gain,"COMPRA");
seria para comprar a mercado essa ordem...
Vi que no exemplo que você usou está usando uma função. É possível compartilhar essa função ? Creio que se eu mudar essa execução de ordem deve resolver o problema.
Obrigado !
Amigos, hoje eu fechei todos os gráficos e abri novamente.. tomei cuidado para abrir apenas um Robô...
O problema está na execução de ordens mesmo... parece ser um bug, pois a minha order está sendo enviada de compra com um SL e TK. E hoje percebi que aparece uma venda no mesmo horário porém com o mesmo TK e SL da compra. Estou achando que a execução de ordem está com problema no meu meta.
Estou usando da seguinte forma :
trade.Buy(v_contratos,_Symbol,ask,ask -v_pontos_loss, ask+v_pontos_gain,"COMPRA");
seria para comprar a mercado essa ordem...
Vi que no exemplo que você usou está usando uma função. É possível compartilhar essa função ? Creio que se eu mudar essa execução de ordem deve resolver o problema.
Obrigado !
Carlos, vou compartilhar, mas já aviso que é confuso porque meu EA possui 7 Setup´s diferentes (Fase 1 ao 7) e as Ordens são de acordo com o Setup. Por outro lado você tem ai todos os exemplos: Market, Limit e Stop. Eu uso o CTrade.
Complementando, caso você não saiba como usar o CTrade, você precisará adicionar a classe colocando antes do OnInit() do seu EA: ... e claro, vale a pena ler sobre o CTrade aqui mesmo no Buscar do MQL para saber como ele funciona e explorar mais coisas que ele faz.
Outra sugestão é meio, digamos primitiva mas pelo menos você tira a dúvida se é um problema do código ou com a plataforma, corretora, etc.
Se você criar um EA do zero, só para teste, onde não tenha setup algum, puramente carrega o EA e executa duas Ordens: abre e depois fecha sua posição, por exemplo Compra, logo a seguir Vende e por fim ExpertRemove(); para sair do EA sem fazer mais nada. Se neste caso não duplicar a ordem, é porque é um erro em seu código. E ainda digo mais, 99% de chances de ser erro no seu código, eu pelo menos ainda não houvi falar de bug desse tipo.
Só não analiso seu código porque não gosto de ler códigos, quando leio os meus é empurrado pela necessidade, senão revisaria ele para você.
Carlos, vou compartilhar, mas já aviso que é confuso porque meu EA possui 7 Setup´s diferentes (Fase 1 ao 7) e as Ordens são de acordo com o Setup. Por outro lado você tem ai todos os exemplos: Market, Limit e Stop. Eu uso o CTrade.
Complementando, caso você não saiba como usar o CTrade, você precisará adicionar a classe colocando antes do OnInit() do seu EA: ... e claro, vale a pena ler sobre o CTrade aqui mesmo no Buscar do MQL para saber como ele funciona e explorar mais coisas que ele faz.
Outra sugestão é meio, digamos primitiva mas pelo menos você tira a dúvida se é um problema do código ou com a plataforma, corretora, etc.
Se você criar um EA do zero, só para teste, onde não tenha setup algum, puramente carrega o EA e executa duas Ordens: abre e depois fecha sua posição, por exemplo Compra, logo a seguir Vende e por fim ExpertRemove(); para sair do EA sem fazer mais nada. Se neste caso não duplicar a ordem, é porque é um erro em seu código. E ainda digo mais, 99% de chances de ser erro no seu código, eu pelo menos ainda não houvi falar de bug desse tipo.
Só não analiso seu código porque não gosto de ler códigos, quando leio os meus é empurrado pela necessidade, senão revisaria ele para você.
Ruy, muito obrigado pelas informações... não tinha pensado nisso..fazer um código seco só com o envio de onders... Estou parando essa semana para verificar essas questões... E fazendo um debug hj do meu código que tem muitas condições.
Eu ainda acho que é erro na plataforma pois o meu envio de ordens está com vários preenchimentos e as fantasmas não... Talvez reinstalar o meta resolva, mas antes quero confirmar pra ter certeza. Muito obrigado pela ajuda . Como faço para te avaliar aqui na comunidade ?
abs !
Ruy, muito obrigado pelas informações... não tinha pensado nisso..fazer um código seco só com o envio de onders... Estou parando essa semana para verificar essas questões... E fazendo um debug hj do meu código que tem muitas condições.
Eu ainda acho que é erro na plataforma pois o meu envio de ordens está com vários preenchimentos e as fantasmas não... Talvez reinstalar o meta resolva, mas antes quero confirmar pra ter certeza. Muito obrigado pela ajuda . Como faço para te avaliar aqui na comunidade ?
abs !
Olá Carlos,
A melhor avaliação que você poderia me dar eu já ganhei de você: é poder ter ajudado de alguma forma. Desconheço se existe avaliação de pessoas do fórum, mas obrigado pela intenção.
Espero que consiga resolver seu problema, quando tá assim é melhor revisar tudo mesmo que achará o problema.
Depois dê notícias como conseguiu e onde estava o problema, etc.
Abraços,
Olá Carlos,
A melhor avaliação que você poderia me dar eu já ganhei de você: é poder ter ajudado de alguma forma. Desconheço se existe avaliação de pessoas do fórum, mas obrigado pela intenção.
Espero que consiga resolver seu problema, quando tá assim é melhor revisar tudo mesmo que achará o problema.
Depois dê notícias como conseguiu e onde estava o problema, etc.
Abraços,
Ruy eu descobri o problema... Realmente estava na função do metatrader que eu estava utilizando. Eu fiz um debug detalhado identifiquei os processo que ela chama e peguei apenas o objeto de envio de ordens.
Trouxe para meu código e funcionou com sucesso :
m_request.action =TRADE_ACTION_DEAL;
m_request.symbol =_Symbol;
m_request.magic =06;
m_request.volume =v_contratos;
m_request.type =ORDER_TYPE_BUY;
m_request.price =ask;
m_request.sl =(ask -v_pontos_loss);
m_request.tp =(ask+v_pontos_gain);
m_request.deviation=10;
m_request.comment="COMPRA";
OrderSend(m_request,m_result);
Pra isso funcionar precisa declarar as variáveis :
MqlTradeRequest m_request; // request data
MqlTradeResult m_result; // result data
Com isso resolveu meu problema aqui..Robô executou com sucesso hoje na conta real.
Abraço meu amigo !
Ruy eu descobri o problema... Realmente estava na função do metatrader que eu estava utilizando. Eu fiz um debug detalhado identifiquei os processo que ela chama e peguei apenas o objeto de envio de ordens.
Trouxe para meu código e funcionou com sucesso :
m_request.action =TRADE_ACTION_DEAL;
m_request.symbol =_Symbol;
m_request.magic =06;
m_request.volume =v_contratos;
m_request.type =ORDER_TYPE_BUY;
m_request.price =ask;
m_request.sl =(ask -v_pontos_loss);
m_request.tp =(ask+v_pontos_gain);
m_request.deviation=10;
m_request.comment="COMPRA";
OrderSend(m_request,m_result);
Pra isso funcionar precisa declarar as variáveis :
MqlTradeRequest m_request; // request data
MqlTradeResult m_result; // result data
Com isso resolveu meu problema aqui..Robô executou com sucesso hoje na conta real.
Abraço meu amigo !
Opa, so dando pitaco aqui!
Pq vc não usa a classe CTrade? ela abstrai todo esse processo de formatação de envio de ordem, e tem uma interface super amigável, vc so precisa se preocupar em passar preço, take e stop corretamente e pegar o retorno e mais nada!
Enfim é so um pitaco, há pessoas que eu conheço que preferem usar as estruturas de request e response pra fazer isso, mas na minha humilde opinião, VERBOSO e TRABALHOSO!
Att,
Jonathan
Ruy eu descobri o problema... Realmente estava na função do metatrader que eu estava utilizando. Eu fiz um debug detalhado identifiquei os processo que ela chama e peguei apenas o objeto de envio de ordens.
Trouxe para meu código e funcionou com sucesso :
m_request.action =TRADE_ACTION_DEAL;
m_request.symbol =_Symbol;
m_request.magic =06;
m_request.volume =v_contratos;
m_request.type =ORDER_TYPE_BUY;
m_request.price =ask;
m_request.sl =(ask -v_pontos_loss);
m_request.tp =(ask+v_pontos_gain);
m_request.deviation=10;
m_request.comment="COMPRA";
OrderSend(m_request,m_result);
Pra isso funcionar precisa declarar as variáveis :
MqlTradeRequest m_request; // request data
MqlTradeResult m_result; // result data
Com isso resolveu meu problema aqui..Robô executou com sucesso hoje na conta real.
Abraço meu amigo !
Opa Carlos! boa notícia,ótimo!
Abraços e suce$$o com o EA :)
Opa, so dando pitaco aqui!
Pq vc não usa a classe CTrade? ela abstrai todo esse processo de formatação de envio de ordem, e tem uma interface super amigável, vc so precisa se preocupar em passar preço, take e stop corretamente e pegar o retorno e mais nada!
Enfim é so um pitaco, há pessoas que eu conheço que preferem usar as estruturas de request e response pra fazer isso, mas na minha humilde opinião, VERBOSO e TRABALHOSO!
Att,
Jonathan
Fala Jonatha, blz ?
Era justamente ela que estava dando problema e duplicando o envio de ordens.. Talvez o objeto dentro do meu meta que esteja com o problema. Por isso fiz a substituição e funcionou...
Abs !