MathMax

A função retorna o valor máximo entre dois valores.

double  MathMax(
   double  value1,     // primeiro valor
   double  value2      // segundo valor
   );

Parâmetros

value1

[in]  Primeiro valor numérico.

value2

[in]  Segundo valor numérico.

Valor do Retorno

O maior dos dois valores.

Observação

Ao invés de MathMax(), você pode usar fmax(). As funções fmax(), fmin(), MathMax(), MathMin() podem trabalhar com tipos inteiros sem convertê-los para o tipo double.

Se parâmetros de diferentes tipos são passados para um função, o parâmetro do menor tipo é automaticamente convertido para o maior tipo. O tipo do valor de retorno corresponde ao do maior tipo.

Se dados de mesmo tipo são passados, nenhuma conversão é realizada.

 

Exemplo:

//--- input parameters
input int                  InpPeriod = 10;            // Período de cálculo da média móvel
input ENUM_MA_METHOD       InpMethod = MODE_SMA;      // Método de cálculo de média móvel
input ENUM_APPLIED_PRICE   InpPrice  = PRICE_CLOSE;   // Preço de cálculo da média móvel
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- se o período da média móvel for definido como um valor menor que 1, será usado o valor padrão (10)
   int period=(InpPeriod<1 ? 10 : InpPeriod);
//--- criamos um handle do indicador Moving Average
   int handle=iMA(Symbol(),Period(),period,0,InpMethod,InpPrice);
   if(handle==INVALID_HANDLE)
     {
      Print("Falha ao criar o handle do indicador Moving Average. Erro ",GetLastError());
      return;
     }
//--- obtemos o preço Bid atual
   double bid=0;
   ResetLastError();
   if(!SymbolInfoDouble(Symbol(),SYMBOL_BID,bid))
     {
      Print("Falha ao obter o preço Bid. Erro ",GetLastError());
      return;
     }
//--- obtemos o valor da média móvel na barra atual
   double array[1];
   int    copied=CopyBuffer(handle,0,0,1,array);
   if(copied!=1)
     {
      Print("Falha ao obter dos dados do Moving Average. Erro ",GetLastError());
      return;
     }
//--- obtemos o preço mais alto dos dois (preço Bid e valor do Moving Average) e registramos no log os dados resultantes
   double max_price=MathMax(bid,array[0]);
   PrintFormat("Bid: %.*f, Moving Average: %.*f, preço mais alto dos dois: %.*f",_Digits,bid,_Digits,array[0],_Digits,max_price);
   PrintFormat("Preço Bid %s da média móvel",(bid>array[0] ? "mais alto" : bid<array[0] ? "mais baixo" : "igual ao valor"));
  }