MathMax

Funktion gibt den größeren von zwei numerischen Werten zurück.

double  MathMax(
   double  value1,     // erster Wert
   double  value2      // zweiter Wert
   );

Parameter

value1

[in]  Der erste numerische Wert.

value2

[in]  Der zweite numerische Wert.

Rückgabewert

Die größere der beiden Zahlen.

Hinweis

Statt der Funktion MathMax()kann die Funktion fmax() verwendet werden. Funktionen fmax(), fmin(), MathMax(), MathMin() können mit ganzzahligen Typen arbeiten, ohne sie in den Typ double umzuwandeln.

Wenn Werte verschiedener Typen der Funktion übergeben werden, wird der Wert des niedrigen Types automatisch in den des höheren konvertiert. Der Typ des Rückgabewerts entspricht dem des höheren Typs.

Bei der Übergabe desselben Typs wird keine Typenumwandlung durchgeführt.

 

Beispiel:

//--- Eingabeparameter
input int                  InpPeriod = 10;            // Periodenlänge des gleitenden Durchschnitts
input ENUM_MA_METHOD       InpMethod = MODE_SMA;      // Glättungsverfahren des gleitenden Durchschnitts
input ENUM_APPLIED_PRICE   InpPrice  = PRICE_CLOSE;   // Berechnung des gleitenden Durchschnitts
 
//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- wenn die Periodenlänge des gleitenden Durchschnitts auf einen Wert kleiner als 1 eingestellt ist, wird der Standardwert (10) verwendet
   int period=(InpPeriod<1 ? 10 : InpPeriod);
//--- Erstellen des Handles für den Indikator Gleitender Durchschnitt
   int handle=iMA(Symbol(),Period(),period,0,InpMethod,InpPrice);
   if(handle==INVALID_HANDLE)
     {
      Print("Failed to create the Moving Average indicator handle. Fehler: ",GetLastError());
      return;
     }
//--- Ermitteln des aktuellen Bid-Preises
   double bid=0;
   ResetLastError();
   if(!SymbolInfoDouble(Symbol(),SYMBOL_BID,bid))
     {
      Print("Failed to get Bid price. Fehler: ",GetLastError());
      return;
     }
//--- Ermitteln des gleitenden Durchschnittswerts für den aktuellen Balken
   double array[1];
   int    copied=CopyBuffer(handle,0,0,1,array);
   if(copied!=1)
     {
      Print("Failed to get Moving Average data. Fehler: ",GetLastError());
      return;
     }
//--- Ermitteln des höheren Preises der beiden (Bid-Preis und Wert des gleitenden Durchschnitts) und Anzeigen der resultierenden Daten im 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"));
  }