Olá pessoal.
Por favor estou tendo um problema com uma rotina em meu EA, em depuração funciona normal mas quando coloco para rodar da erro, segue o inicio da rotina.
O erro ocorre aqui diz que não pode fazer divisão por zero, concordo porém a variável margem é carregada com o retorno do OrderCalcMargin
o que pode ocasionar este erro? a conta é demo e tem margem de sobra
Olá Leprechau,
Sempre que postar trechos de código no site MQL5.com, por favor lembre-se de clicar no botão SRC.
Desta vez eu farei isso pra você... :-)
Abraços,
Malacarne
Olá pessoal.
Por favor estou tendo um problema com uma rotina em meu EA, em depuração funciona normal mas quando coloco para rodar da erro, segue o inicio da rotina.
O erro ocorre aqui diz que não pode fazer divisão por zero, concordo porém a variável margem é carregada com o retorno do OrderCalcMargin
o que pode ocasionar este erro? a conta é demo e tem margem de sobra
Obrigado abraço a todos.
Pelo que parece, o erro está no cálculo da variável "contrato", pois a mesma utiliza como denominador a variável "margem", que, aparentemente, é igual a zero ...
Pelo menos no trecho de código que você postou, a variável margem não é alterada em nenhum local, permanecendo seu valor igual a zero.
Obviamente não é possível fazer divisão por zero, e essa é exatamente a mensagem de erro que o terminal MetaTrader está te retornando ...
Abraços,
Malacarne
é isso mesmo q ta causando o erro, calcule o margem corretamente, e pra ficar redondo,
troque o:
if (margem<0.0)
por
if(margem <= 0.0)
é isso mesmo q ta causando o erro, calcule o margem corretamente, e pra ficar redondo,
troque o:
por
vlw rodrixl pela dica, vou alterar.
Abraço.
Olá Leprechau,
Sempre que postar trechos de código no site MQL5.com, por favor lembre-se de clicar no botão SRC.
Desta vez eu farei isso pra você... :-)
Abraços,
Malacarne
obrigado pela dica, novato na comunidade, aos poucos vou me enquadrando. :-)
Olá Leprechau,
Além de tudo que já foi comentado eu faria o seguinte para ter um código protegido para o futuro:
double contrato=0; if (margem>0) contrato=NormalizeDouble(AccountInfoDouble(ACCOUNT_FREEMARGIN)*riscoMaximo/margem,0);
Na área de trading e finanças quantitativas, todo cuidado é pouco, e assim você não fica dependente de possíveis bugs anteriores.
Olá Leprechau,
Além de tudo que já foi comentado eu faria o seguinte para ter um código protegido para o futuro:
Na área de trading e finanças quantitativas, todo cuidado é pouco, e assim você não fica dependente de possíveis bugs anteriores.
Obrigado figurelli, vc tem toda razão. vou colocar no EA sua dica
Abraço obrigado.
Obrigado figurelli, vc tem toda razão. vou colocar no EA sua dica
Abraço obrigado.
Perfeitamente, abraço!
- 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
Olá pessoal.
Por favor estou tendo um problema com uma rotina em meu EA, em depuração funciona normal mas quando coloco para rodar da erro, segue o inicio da rotina.
O erro ocorre aqui diz que não pode fazer divisão por zero, concordo porém a variável margem é carregada com o retorno do OrderCalcMargin
o que pode ocasionar este erro? a conta é demo e tem margem de sobra
Obrigado abraço a todos.