在MQL4语言的数组函数中,有ArrayMaximum()和ArrayMinimum()两个函数,分别是用来在一维数字数组中搜索最大/最小的那个元素。通俗点说,就是在一维数字数组中找最大值/最小值所对应的序号。数组排序规则是第一个0,接下来1、2、3、4……。
ArrayMaximum()函数结构:
int ArrayMaximum(
const void& array[], // 用来搜索的数字数组
int count=WHOLE_ARRAY, // 搜索元素的数量,默认WHOLE_ARRAY表示整个数组
int start=0 // 开始搜索序号,0表示从第一个
);
ArrayMinimum()函数结构:
int ArrayMinimum(
const void& array[], // 用来搜索的数字数组
int count=WHOLE_ARRAY, // 搜索元素的数量,默认WHOLE_ARRAY表示整个数组
int start=0 // 开始搜索序号,0表示从第一个
);
假如现在有一组欧元兑美元USD的订单,在获取它们的开仓价格并写入自定义 tkop 数组。
double tkop[8] = {1.16058,1.13058,1.11058,1.14058,1.17058,1.19058,1.11758,1.10358};
接下来就用 ArrayMaximum() 和 ArrayMinimum() 来获取它们中的最大值和最小值,参考代码:
double tkop[8] = {1.16058,1.13058,1.11058,1.14058,1.17058,1.19058,1.11758,1.10358};
int H_index = ArrayMaximum(tkop, WHOLE_ARRAY, 0);
int L_index = ArrayMinimum(tkop, WHOLE_ARRAY, 0);
Comment("数组 tkop 中:" + IntegerToString(H_index)+" 值最大/最大值 = "+ DoubleToStr(tkop[H_index],5) + "\n" +
"数组 tkop 中:" + IntegerToString(L_index)+" 值最小/最小值 = "+ DoubleToStr(tkop[L_index],5));

上图是用注释的形式将结果显示在图表左上角,从结果中可以看出,用 ArrayMaximum() 和ArrayMinimum() 函数就可以找出一个数字数组中的最大值和最小值。在参考代码中可以看出,ArrayMaximum() 和ArrayMinimum() 并不是直接找最大值和最小值,而是搜索最大值/最小值在数组中的位置,当然,知道位置了,那最大值/最小值也就自然知道了。
在很多智能交易EA或指标编程中,都有需要获取某组数值中的最大值或最小值,那就先将对应数值写入自定义数组,然后用ArrayMaximum() 和ArrayMinimum()两个函数就可以了。