MathMax

La función devuelve el valor máximo de dos valores numéricos.

double  MathMax(
   double  value1,     // primer número
   double  value2      // segundo número
   );

Parámetros

value1

[in]  Primer valor numérico.

value2

[in]  Segundo valor numérico.

Valor devuelto

El número más grande de los dos.

Nota

En vez de la función MathMax() se puede usar la función fmax(). Las funciones fmax(), fmin(), MathMax(), MathMin() pueden trabajar con tipos enteros sin conversión al tipo double.

Si los parámetros de diferentes tipos se pasan a la función, el parámetro del tipo menor automáticamente se convierte al tipo mayor. El tipo de valor devuelto corresponde al tipo mayor.

Si se pasan los datos del mismo tipo, no se realiza ninguna conversión.

 

Ejemplo:

//--- input parameters
input int                  InpPeriod = 10;            // Periodo de cálculo de la media móvil
input ENUM_MA_METHOD       InpMethod = MODE_SMA;      // Método de cálculo de la media móvil
input ENUM_APPLIED_PRICE   InpPrice  = PRICE_CLOSE;   // Precio de cálculo de la media móvil
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- si para el periodo de la media móvil se ha establecido un valor inferior a 1, se utilizará el valor por defecto (10).
   int period=(InpPeriod<1 ? 10 : InpPeriod);
//--- creamos el manejador del indicador Moving Average
   int handle=iMA(Symbol(),Period(),period,0,InpMethod,InpPrice);
   if(handle==INVALID_HANDLE)
     {
      Print("No se ha podido crear el manejador del indicador Moving Average. Error ",GetLastError());
      return;
     }
//--- obtenemos el precio Bid actual
   double bid=0;
   ResetLastError();
   if(!SymbolInfoDouble(Symbol(),SYMBOL_BID,bid))
     {
      Print("No se ha podido obtener el precio Bid. Error ",GetLastError());
      return;
     }
//--- obtenemos el valor de la media móvil en la barra actual
   double array[1];
   int    copied=CopyBuffer(handle,0,0,1,array);
   if(copied!=1)
     {
      Print("No se ha podido obtener los datos de Moving Average. Error ",GetLastError());
      return;
     }
//--- obtenemos el precio más alto de los dos (precio Bid y valor de Moving Average) y enviamos los datos resultantes al diario de registro
   double max_price=MathMax(bid,array[0]);
   PrintFormat("Bid: %.*f, Moving Average: %.*f, es el mayor precio de los dos: %.*f",_Digits,bid,_Digits,array[0],_Digits,max_price);
   PrintFormat("El precio Bid %s de la media móvil",(bid>array[0] ? "más alto" : bid<array[0] ? "más bajo" : "es igual al valor"));
  }