MathMax

Функция возвращает максимальное из двух числовых значений.

double  MathMax(
   double  value1,     // первое число
   double  value2      // второе число
   );

Параметры

value1

[in]  Первое числовое значение.

value2

[in]  Второе числовое значение.

Возвращаемое значение

Большее из двух чисел.

Примечание

Вместо функции MathMax() можно использовать функцию fmax(). Функции fmax(), fmin(), MathMax(), MathMin() могут работать с целыми типами без преобразования к типу double.

Если в функцию передаются параметры разных типов, то параметр младшего типа автоматически приводится к старшему типу. Тип возвращаемого значения соответствует старшему типу.

Если передаются данные одного типа, то никакого преобразования не производится.

 

Пример:

//--- input parameters
input int                  InpPeriod = 10;            // Период расчёта скользящей средней
input ENUM_MA_METHOD       InpMethod = MODE_SMA;      // Метод расчёта скользящей средней
input ENUM_APPLIED_PRICE   InpPrice  = PRICE_CLOSE;   // Цена расчёта скользящей средней
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- если для периода скользящей средней задано значение меньше 1, то использоваться будет значение по умолчанию (10)
   int period=(InpPeriod<1 ? 10 : InpPeriod);
//--- создаём хэндл индикатора Moving Average
   int handle=iMA(Symbol(),Period(),period,0,InpMethod,InpPrice);
   if(handle==INVALID_HANDLE)
     {
      Print("Не удалось создать хэндл индикатора Moving Average. Ошибка ",GetLastError());
      return;
     }
//--- получаем текущую цену Bid
   double bid=0;
   ResetLastError();
   if(!SymbolInfoDouble(Symbol(),SYMBOL_BID,bid))
     {
      Print("Не удалось получить цену Bid. Ошибка ",GetLastError());
      return;
     }
//--- получаем значение скользящей средней на текущем баре
   double array[1];
   int    copied=CopyBuffer(handle,0,0,1,array);
   if(copied!=1)
     {
      Print("Не удалось получить данные Moving Average. Ошибка ",GetLastError());
      return;
     }
//--- получаем наибольшую цену из двух (цена Bid и значение Moving Average) и выводим результирующшие данные в журнал
   double max_price=MathMax(bid,array[0]);
   PrintFormat("Bid: %.*f, Moving Average: %.*f, наибольшая цена из двух: %.*f",_Digits,bid,_Digits,array[0],_Digits,max_price);
   PrintFormat("Цена Bid %s скользящей средней",(bid>array[0] ? "выше" : bid<array[0] ? "ниже" : "равна значению"));
  }