Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
Math Utils - biblioteca para MetaTrader 5
- Visualizações:
- 867
- Avaliação:
- Publicado:
- 2018.10.04 10:47
- Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Funções úteis para comparação de números de ponto flutuante
bool EQ(double a, double b, int digits = 8); bool GT(double a, double b, int digits = 8); bool LT(double a, double b, int digits = 8); bool NE(double a, double b, int digits = 8); bool GE(double a, double b, int digits = 8); bool LE(double a, double b, int digits = 8);
Funções úteis para arredondamento de números de ponto flutuante
double RoundToDigit(double number, int digits); double RoundToDigitUp(double number, int digits); double RoundToDigitDown(double number, int digits); double RoundToStep(double number, double step); double RoundToStepUp(double number, double step); double RoundToStepDown(double number, double step); double RoundPrice(double pPrice, string pSymbol = NULL); double RoundVolume(double pVolume, string pSymbol = NULL);
Comparação exata de valores do tipo double
Às vezes, ao comparar dois números do tipo double que supostamente são iguais, mas atingidos por meio de cálculos diferentes, a comparação dá errado. Na verdade, A pode diferir de B em uma quantidade pequena (na décima sexta casa decimal) devido aos erros de arredondamento binários, portanto as comparações exatas com os operadores (==, !=, >, >=, <, <=) podem falhar.
Situações reais de onde a comparação exata de tipos double podem falhar
-
Experts com função de trailing stop:
if (new_sl > OrderStopLoss()) if (new_sl < OrderStopLoss())
-
Experts com função de lucro oculto:
if (Bid >= HiddenTakeProfit) if (Ask <= HiddenTakeProfit)
-
Comparação dos níveis de preços em uma estratégia de grade:
if (Ask < virtual_stopLoss) if (Bid > virtual_stopLoss)
Comparação frouxa
Para evitar resultados inesperados, é melhor substituir as comparações exatas (==, !=, >, >=, <, <=), com comparações frouxas para superar a imprecisão do ponto flutuante. Esta pequena biblioteca fornece as funções necessárias.
//--- as comparações exatas podem falhar if (Ask < virtual_stopLoss) if (Bid > virtual_stopLoss) //--- usando as funções da biblioteca if (LT(Ask, virtual_stopLoss)) if (GT(Bid, virtual_stopLoss))
Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/20822
WPR (Williams Percent Range) baseado em suporte/resistência.
Rocket RSIO indicador "RocketRSI", de John F. Ehlers. Usado para indicar fortes probabilidades de reversões cíclicas.
Negociação em vários padrões de velas. Os níveis de Take Profit, Stop Loss e Trailing são separados para COMPRA e VENDA.
Rainbow WMABaseado no Rainbow Width de Mel Widner (que é similar ao Guppy MMA), este é um tipo de versão generalizada com algumas extensões.