Boa noite.
- MathRound(pValueToRound * 10) / 10 - para 1 dígito após o ponto decimal;
- MathRound(pValueToRound * 100) / 100 - para 2 dígitos após o ponto decimal;
- ou apenas a função NormalizeDouble().
Pessoal estou tentando deixar os valores enviados compra e venda, no dolar, na escala de 0.5.
Uso a função: MathRound((pValueToRound / 0.5) * 0.5)
Funciona, ele arredonda o valor e deixa na escala de 0.5.
Porem, quando se realiza um preço médio e o valor fica em 3172,50, essa função o arredonda para 3173 sendo que deveria manter o valor como estava.
Podem me ajudar nesse quesito?
Muito Obrigado.
Olá
você também pode usar método NormalizePrice( ) da classe CSymbol.
#include <Trade\SymbolInfo.mqh>
CSymbolInfo m_symbol;
..
..
..
m_symbol.Name(DOLJ18);
..
..
preco=m_symbol.NormalizePrice(preco);
Olá
você também pode usar método NormalizePrice( ) da classe CSymbol.
... complementando:
No caso de utilizar preco= NormalizeDouble(pValueToRound, _Digits)
Obrigado Pessoal,
Resolvi o problema com o código abaixo, não é o melhor, porem resolveu meu problema.
Agora quando o preço chega como 3245.50 ele mantem assim, antes ele arredondava para 3246.
vRoundTemp = (MathRound(pValueToRound) - 1);
if (vRoundTemp < (pValueToRound - 0.5))
{
vRoundFive = MathRound((pValueToRound / Escala_Ativo) * Escala_Ativo);
}
else
vRoundFive = pValueToRound;
Olá
você também pode usar método NormalizePrice( ) da classe CSymbol.
Rogerio obrigado pela dica, ficou muito bom.
Essa classe CSymbol sempre vem junto com o Metatrader?
Precisa enviar junto com o .ex em caso de distribuição?
Rogerio obrigado pela dica, ficou muito bom.
Essa classe CSymbol sempre vem junto com o Metatrader?
Precisa enviar junto com o .ex em caso de distribuição?
Olá boa tarde,
sim está na biblioteca do mql5. Basta você ler o material no manual de referência do mql5. Tem também esse artigo https://www.mql5.com/pt/articles/138 que vai te ajudar a entender as classes da biblioteca padrão.

- 2014.02.05
- Samuel Olowoyo
- www.mql5.com
Olá
você também pode usar método NormalizePrice( ) da classe CSymbol.
um dos posts mais uteis desse forum.
parabens!

- 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 estou tentando deixar os valores enviados compra e venda, no dolar, na escala de 0.5.
Uso a função: MathRound((pValueToRound / 0.5) * 0.5)
Funciona, ele arredonda o valor e deixa na escala de 0.5.
Porem, quando se realiza um preço médio e o valor fica em 3172,50, essa função o arredonda para 3173 sendo que deveria manter o valor como estava.
Podem me ajudar nesse quesito?
Muito Obrigado.