Максимальное и минимальное из двух чисел

Для нахождения наибольшего или наименьшего числа из двух MQL5 предлагает функции MathMax и MathMin. Их краткие псевдонимы, соответственно — fmax и fmin.

numeric MathMax(numeric value1, numeric value2) ≡ numeric fmax(numeric value1, numeric value2)

numeric MathMin(numeric value1, numeric value2) ≡ numeric fmin(numeric value1, numeric value2)

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

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

При наличии параметра типа string, он будет "старшим", то есть всё приводится к строке. Строки сравниваются лексикографически, как в функции StringCompare.

Скрипт MathMaxMin.mq5 демонстрирует функции в действии.

void OnStart()
{
   int i = 10j = 11;
   double x = 5.5y = -5.5;
   string s = "abc";
   
   // числа   
   PRT(MathMax(ij)); // 11
   PRT(MathMax(ix)); // 10
   PRT(MathMax(xy)); // 5.5
   PRT(MathMax(is)); // abc
   
   // преобразования типов
   PRT(typename(MathMax(ij))); // int, как есть
   PRT(typename(MathMax(ix))); // double
   PRT(typename(MathMax(is))); // string
}