Fiz um Expert Advisor MQL5 para trabalhar com um volume de valor 1
Para isso, carreguei uma variável global:
input double Lot=1; // Lots to Trade
E na seção OnTick() preparo a ordem com a sequinte instrução:
mrequest.volume = Lot; // number of lots to trade
Em uma das operações a ordem foi executada com volume=2
Isso pode acontecer ?
Que devo fazer para evitar esse erro?
Antecipadamente agradeço.
Olá Sergio Gelli,
Acredito que haja algum pequeno problema no seu código... Se na requisição consta o valor da variável global, então o mesmo certamente será respeitado.
Tem certeza que não existem duas variáveis / dois setups onde são enviadas as ordens em seu código, e, em um desses setups o volume informado é eventualmente 2 ou Lote*2?
Seria interessante revisar seu código, pois acredito que possa ser um pequeno erro no mesmo.
Abraços,
Malacarne
Olá Sergio Gelli,
Acredito que haja algum pequeno problema no seu código... Se na requisição consta o valor da variável global, então o mesmo certamente será respeitado.
Tem certeza que não existem duas variáveis / dois setups onde são enviadas as ordens em seu código, e, em um desses setups o volume informado é eventualmente 2 ou Lote*2?
Seria interessante revisar seu código, pois acredito que possa ser um pequeno erro no mesmo.
Abraços,
Malacarne
Examinei cuidadosamente e não encontrei nada que pudesse provocar essa troca de valor. Inclusive, mantive o expert funcionando e o valor "2" não apareceu novamente.
Isso é uma temeridade, né? Estamos lidando com dinheiro....Imaginou as consequências?
Examinei cuidadosamente e não encontrei nada que pudesse provocar essa troca de valor. Inclusive, mantive o expert funcionando e o valor "2" não apareceu novamente.
Isso é uma temeridade, né? Estamos lidando com dinheiro....Imaginou as consequências?
Olá Sergio Gelli,
Nesse caso pode ser um problema de duplicidade de ordens.
É um problema mais comum do que se imagina, ainda mais junto a novos usuários do MT5.
Nesse caso, se já ocorreu uma vez, e caso seja esse o motivo do erro, seria altamente recomendável revisar todo o código para que isso não voltasse a ocorrer.
Abraços,
Malacarne
Examinei cuidadosamente e não encontrei nada que pudesse provocar essa troca de valor. Inclusive, mantive o expert funcionando e o valor "2" não apareceu novamente.
Isso é uma temeridade, né? Estamos lidando com dinheiro....Imaginou as consequências?
Olá Sergio Gelli,
Nesse caso pode ser um problema de duplicidade de ordens.
É um problema mais comum do que se imagina, ainda mais junto a novos usuários do MT5.
Nesse caso, se já ocorreu uma vez, e caso seja esse o motivo do erro, seria altamente recomendável revisar todo o código para que isso não voltasse a ocorrer.
Abraços,
Malacarne
Está com aquele "jeitão" de duplicidade mesmo.
Por favor, dá uma olhada e ve se confirma que é duplicidade.
Topei com um erro parecido:
Criei um expert simples com base no wizard+sinal de bollinger (disponível aqui).
E após uma entrada perfeita, ele manda uma ordem inversa com o dobro do volume.
Aparentemente, apesar de implementar apenas as funções OpenLongCondition() e Short(), o sistema do expert manda a ordem para reverter quando aparece
sinal contrário (daí o tal volume "errado", porque dobra para reverter com o mesmo lote fixo). Resolvi com uma função para ele "pular" N
barras seguintes, embora não seja o ideal.
Olá,
tente executar numa conta modo Netting.
Oi!
Obrigado pela atenção. Minha conta demo é netting, acho que esse comportamento é do Wizard mesmo.
Deve ter um jeito de informar para não reverter, mas apenas fechar a posição quando aparece sinal contrário.
Ah sim agora entendi, ajuste o fonte gerado pelo WIZARD para não reverter a posição, somente fechar.
Então, esse é o problema :)
O fonte gerado pelo wizard deixa tudo encapsulado nos métodos da classe (ExtExpert.OnTick(), .OnTrade(), etc) e acho que não dá pra mexer sem zoar as bibliotecas base.
Ao invés de usar direto o LongCondition, pelo jeito tenho que fazer a verificação de posição aberta pelo CheckOpenLong
Vou fazer umas experiências com o módulo de sinais e depois posto aqui o resultado ;)
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- 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
Fiz um Expert Advisor MQL5 para trabalhar com um volume de valor 1
Para isso, carreguei uma variável global:
input double Lot=1; // Lots to Trade
E na seção OnTick() preparo a ordem com a sequinte instrução:
mrequest.volume = Lot; // number of lots to trade
Em uma das operações a ordem foi executada com volume=2
Isso pode acontecer ?
Que devo fazer para evitar esse erro?
Antecipadamente agradeço.