Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Twitter!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Bibliotecas

Math Utils - biblioteca para MetaTrader 5

Visualizações:
850
Avaliação:
(19)
Publicado:
2018.10.04 10:47
\MQL5\Include\ \MQL5\Scripts\
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 Support Resistance WPR Support Resistance

WPR (Williams Percent Range) baseado em suporte/resistência.

Rocket RSI Rocket RSI

O indicador "RocketRSI", de John F. Ehlers. Usado para indicar fortes probabilidades de reversões cíclicas.

Executor Candles Executor Candles

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 WMA Rainbow WMA

Baseado no Rainbow Width de Mel Widner (que é similar ao Guppy MMA), este é um tipo de versão generalizada com algumas extensões.