MQL4数组处理函数详解(三)
本文将介绍一组用于数组处理的常用函数,帮助您更好地理解和运用MQL4中的数组操作。数组的最大维数为四维,每一维的索引编号从0开始,至数组大小减1。例如,在一个包含50个元素的一维数组中,第一个元素使用array[0]访问,最后一个元素使用array[49]访问。
ArrayBsearch() – 数组搜索
ArrayCopy() – 数组复制
ArrayCopyRates() – 复制柱体(K线)数据到二维数组
ArrayCopySeries() – 复制柱体(K线)数据到一维数组
ArrayDimension() – 返回数组维数
ArrayGetAsSeries() – 判断序列数组
ArrayInitialize() – 数组初始化
ArrayIsSeries() – 判断数组是否序列化
ArrayMaximum() – 返回数组中最大值的位置
ArrayMinimum() – 返回数组中最小值的位置
ArrayRange() – 获取数组元素个数
ArrayResize() – 重设数组大小
ArraySetAsSeries() – 设置为序列化数组
ArraySize() – 获取数组大小
ArraySort() – 数组排序
ArrayRange() – 获取数组元素个数
int ArrayCopy(object array[], int range_index) 返回给定数组指定维数中元素的个数。由于下标从零开始,数组的大小通常比最大下标数多1。
参数:
array[] - 需要检查的数组。 range_index - 指定的维数。 示例:
int dim_size;double num_array[10,10,10];dim_size=ArrayRange(num_array, 1);ArrayResize() – 重设数组大小
int ArrayResize(void array[], int new_size) 设定数组第一维的新大小。如果执行成功,函数将返回新数组的元素个数;否则返回-1,且数组大小保持不变。
注意:函数执行完成后,在函数内局部定义并重设大小的数组将维持原样。当函数被重新调用时,此类数组的大小可能会与定义时不同。
参数:
array[] - 需重设大小的数组。 new_size - 第一维数组大小的新值。 示例:
double array1[][4];int element_count=ArrayResize(array1, 20);// 新的大小 - 80个元素(每维20个元素,共4维)ArraySetAsSeries() – 设置为序列化数组
bool ArraySetAsSeries(void array[], bool set) 设定数组的排列方向。如果设置参数值为TRUE,数组将按逆序排列,也就是说,数组元素下标为0的值是最后的值。如果其值为FALSE,数组则按正常的排列顺序,此函数会原样返回之前的数组。
参数:
array[] - 数值型数组。 set - 数组索引顺序,true 或 false。示例:
double macd_buffer[300];double signal_buffer[300];int i,limit=ArraySize(macd_buffer);ArraySetAsSeries(macd_buffer,true); for(i=0; iArraySize() – 获取数组大小
int ArraySize(object array[]) 返回数组元素的个数。AUS GLOBAL对于一维数组,使用ArraySize()函数返回的大小与ArrayRange(array, 0)的结果相等。
参数:
array[] - 任何类型的数组。 示例:
int count=ArraySize(array1);for(int i=0; iArraySort() – 数组排序
int ArraySort(void array[], void count, void start, void sort_dir) 根据数值型数组的第一维进行排序。ArraySort() 函数不能用于排序序列数组。
参数:
array[] - 需要排序的数值型数组。 count - 参加排序的元素个数。 start - 排序的起始下标。 sort_dir - 排序方式,可以选择下面的值 MODE_ASCEND 顺序排列, MODE_DESCEND 逆序排列。示例:
double num_array[5]={4,1,6,3,9}; // 数组包含4,1,6,3,9 ArraySort(num_array); // 排序后新数组1,3,4,6,9 ArraySort(num_array,WHOLE_ARRAY,0,MODE_DESCEND);// 排序后新数组 9,6,4,3,1
