MathMax

 

   Retourne la valeur maximale des deux valeurs numériques données.

double  MathMax(
   double  value1,     // première valeur
   double  value2      // deuxième valeur
   );

Paramètres

value1

[in]  La première valeur numérique.

value2

[in]  La deuxième valeur numérique.

Valeur de Retour

Le plus grand de deux nombres.

Note

On peut utiliser la fonction fmax()au lieu de la fonction MathMax(). Les fonctions fmax(), fmin(), MathMax(), MathMin() peuvent travailler avec les types entiers sans transformation au type double.

Si des paramètres de types différents sont donnés, le paramètre du type le plus bas est converti automatiquement vers le type principal. Le type de la valeur retournée correspond au type principal.

Si les paramètres donnés sont de même type, aucune conversion n'est effectuée.

 

Exemple :

//--- paramètres d'entrée
input int                  InpPeriod = 10;            // période de calcul de la moyenne mobile
input ENUM_MA_METHOD       InpMethod = MODE_SMA;      // méthode de calcul de la moyenne mobile
input ENUM_APPLIED_PRICE   InpPrice  = PRICE_CLOSE;   // prix de calcul de la moyenne mobile
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- si la période de moyenne mobile est inférieure à 1, alors la valeur par défaut (10) est utilisée
   int period=(InpPeriod<1 ? 10 : InpPeriod);
//--- crée le handle de l'indicateur de moyenne mobile
   int handle=iMA(Symbol(),Period(),period,0,InpMethod,InpPrice);
   if(handle==INVALID_HANDLE)
     {
      Print("Failed to create the Moving Average indicator handle. Error ",GetLastError());
      return;
     }
//--- récupère le prix Bid (Offre) actuel
   double bid=0;
   ResetLastError();
   if(!SymbolInfoDouble(Symbol(),SYMBOL_BID,bid))
     {
      Print("Failed to get Bid price. Error ",GetLastError());
      return;
     }
//--- récupère la valeur de la moyenne mobile de la barre actuelle
   double array[1];
   int    copied=CopyBuffer(handle,0,0,1,array);
   if(copied!=1)
     {
      Print("Failed to get Moving Average data. Error ",GetLastError());
      return;
     }
//--- récupère le prix le plus élevé des deux (prix Bid et valeur de la moyenne mobile) et affiche les données résultantes dans le journal
   double max_price=MathMax(bid,array[0]);
   PrintFormat("Bid: %.*f, Moving Average: %.*f, highest price of the two: %.*f",_Digits,bid,_Digits,array[0],_Digits,max_price);
   PrintFormat("Bid price %s moving average",(bid>array[0] ? "higher" : bid<array[0] ? "lower" : "equal to"));
  }