Boa noite a todos,
não achei nada sobre o que estou procurando, então abri esse topico, vou tentar ser breve, desenvolvi um robo e a abertura de ordem depende de um calculo que ele faz com os preços, assim sendo, quando o resultado do calculo apresenta o preço dentro do padrão de variação do ativo, ele executa normal, mas quando o resultado fica fora do padrão ele não executa a ordem.
Tentei usar a função NormalizeDouble, para tentar arredondar o valor para o intervalo da variação mas não deu certo. alguém poderia me ajudar ? O ativo em questão é o Mini Indice (B3).
A parte do código que faz a validação e execução da ordem.
Anexo as imagens, minha primeira postagem, então não sabia muito bem como fazer.
Bom dia!
A função abaixo está disponível também na classe SymbolInfo. Utilize essa função em vez de NormalizeDouble()...
//+--------------------------------------------------------------------------------------------------------------------+ //| This function normalizes and adjusts the price to the TICK SIZE | //+--------------------------------------------------------------------------------------------------------------------+ double NormalizePrice(double price) { //--- Get the minimal price change double tick_size = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE); //--- Return the price normalized if(tick_size == 0.0) { return(NormalizeDouble(price, _Digits)); } //--- Return the price normalized and adjusted to the TICK SIZE return(NormalizeDouble(MathRound(price / tick_size) * tick_size, _Digits)); }
- 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
Boa noite a todos,
não achei nada sobre o que estou procurando, então abri esse topico, vou tentar ser breve, desenvolvi um robo e a abertura de ordem depende de um calculo que ele faz com os preços, assim sendo, quando o resultado do calculo apresenta o preço dentro do padrão de variação do ativo, ele executa normal, mas quando o resultado fica fora do padrão ele não executa a ordem.
Tentei usar a função NormalizeDouble, para tentar arredondar o valor para o intervalo da variação mas não deu certo. alguém poderia me ajudar ? O ativo em questão é o Mini Indice (B3).
A parte do código que faz a validação e execução da ordem.
Anexo as imagens, minha primeira postagem, então não sabia muito bem como fazer.