Pessoal, o método OrderProfitCheck(), da classe CAccountInfo simula o lucro/prejuízo de uma operação de acordo com os parâmetros, preço de abertura e fechamento, volume, símbolo e tipo (compra ou venda).
Alguém tem alguma sugestão de um método similar, mas que eu obtenha o volume que fique mais próximo de um determinado lucro/prejuízo da função? Algo do tipo OrderVolumeCheck():
Olá Rodolfo,
Não conheço uma função nativa que faça isso no MT5, a mais próxima que já utilizei é a CheckOpenLong()/Short(), mas nesse caso você calcula o volume a partir do preço e SL.
Nesse artigo tem um exemplo (ver abaixo) próximo do que você quer fazer, mas para um lote fixo usando a função OrderCalcProfit() que é a mesma chamada pela OrderProfitCheck() dessa classe.
//+------------------------------------------------------------------+ //| Calcular o potencial de lucro/prejuízo para a compra de 1 lote | //+------------------------------------------------------------------+ double CalculateProfitOneLot(double entry_price,double exit_price) { //--- receber o valor de lucro para esta variável double profit=0; if(!OrderCalcProfit(ORDER_TYPE_BUY,Symbol(),1.0,entry_price,exit_price,profit)) { Print(__FUNCTION__," Falhou em calcular OrderCalcProfit(). Erro ",GetLastError()); } //--- return(profit); }
Uma forma de resolver o problema por força bruta seria você definir uma faixa de valor de lote e chamar a mesma função fazendo uma varredura de vários lotes.
Mas o elegante e mais eficaz seria examinar o funcionamento interno da OrderCalcProfit() que é a função original chamada pela classe que estás utilizando.
- 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
Pessoal, o método OrderProfitCheck(), da classe CAccountInfo simula o lucro/prejuízo de uma operação de acordo com os parâmetros, preço de abertura e fechamento, volume, símbolo e tipo (compra ou venda).
Alguém tem alguma sugestão de um método similar, mas que eu obtenha o volume que fique mais próximo de um determinado lucro/prejuízo da função? Algo do tipo OrderVolumeCheck():