1. ArrayCopy()
-
功能:复制数组内容到另一个数组。
-
参数:
-
dest_array
:目标数组 -
src_array
:源数组 -
start_dest
:目标起始位置(默认 0) -
start_src
:源起始位置(默认 0) -
count
:复制的元素数量(默认全部)
-
-
返回值:复制的元素总数。
-
示例:
cpp
复制
double src[5] = {1.1, 2.2, 3.3, 4.4, 5.5}; double dest[3]; ArrayCopy(dest, src, 0, 2, 3); // 从src[2]开始复制3个元素到dest // dest结果为 {3.3, 4.4, 5.5}
2. ArraySort()
-
功能:对数组进行升序排序。
-
参数:
-
array[]
:待排序数组 -
count
:排序元素数量(默认全部) -
start
:起始索引(默认 0) -
mode
:排序模式(0=升序,1=降序,需自定义实现降序)
-
-
示例:
cpp
复制
double prices[5] = {5.5, 3.3, 4.4, 1.1, 2.2}; ArraySort(prices); // 升序排序后为 {1.1, 2.2, 3.3, 4.4, 5.5}
3. ArrayResize()
-
功能:调整动态数组的大小。
-
参数:
-
array[]
:目标数组(必须为动态数组) -
new_size
:新的大小 -
reserve_size
:预留的额外空间(可选)
-
-
返回值:调整后的数组大小。
-
示例:
cpp
复制
double dynamicArray[]; ArrayResize(dynamicArray, 10); // 将数组大小调整为10
4. ArraySize()
-
功能:返回数组的元素总数。
-
参数:
array[]
-
示例:
cpp
复制
double arr[5]; int size = ArraySize(arr); // size = 5
5. ArrayInitialize()
-
功能:用指定值初始化数组。
-
参数:
-
array[]
:目标数组 -
value
:初始化的值
-
-
示例:
cpp
复制
double data[10]; ArrayInitialize(data, 0.0); // 所有元素设为0.0
6. ArrayMaximum()
和 ArrayMinimum()
-
功能:
-
ArrayMaximum()
:返回数组中最大值的索引。 -
ArrayMinimum()
:返回数组中最小值的索引。
-
-
参数:
-
array[]
:目标数组 -
count
:检查的元素数量(默认全部) -
start
:起始索引(默认 0)
-
-
示例:
cpp
复制
double values[5] = {10, 20, 5, 35, 15}; int max_idx = ArrayMaximum(values); // 返回3(对应35) int min_idx = ArrayMinimum(values); // 返回2(对应5)
7. ArrayBsearch()
-
功能:在已排序的数组中使用二分查找法搜索值。
-
参数:
-
array[]
:已排序的数组 -
value
:要搜索的值 -
count
:搜索的元素数量(默认全部) -
start
:起始索引(默认 0) -
direction
:未找到时的返回策略(MODE_ASCEND
或MODE_DESCEND
)
-
-
返回值:找到的索引或最接近的位置。
-
示例:
cpp
复制
double sorted[5] = {1.1, 2.2, 3.3, 4.4, 5.5}; int idx = ArrayBsearch(sorted, 3.3); // 返回2
8. ArraySetAsSeries()
-
功能:设置数组为时间序列模式(倒序索引,最新数据在索引0)。
-
参数:
-
array[]
:目标数组 -
flag
:true
(时间序列模式)或false
(正常模式)
-
-
示例:
cpp
复制
double closePrices[10]; ArraySetAsSeries(closePrices, true); // 最新收盘价为 closePrices[0]
9. ArrayFree()
-
功能:释放动态数组的内存。
-
参数:
array[]
-
示例:
cpp
复制
double tempData[]; ArrayResize(tempData, 100); // 使用后释放内存 ArrayFree(tempData);
10. ArrayCompare()
-
功能:比较两个数组的内容。
-
参数:
-
array1[]
,array2[]
:待比较数组 -
start1
,start2
:起始索引(默认0) -
count
:比较的元素数量(默认全部)
-
-
返回值:
-
0:数组相同
-
非0:第一个不同元素的差值(
array1[i] - array2[i]
)
-
注意事项
-
动态数组 vs 静态数组:
ArrayResize()
仅适用于动态数组(声明时未指定大小)。 -
越界错误:访问数组时需确保索引有效,避免
ERR_ARRAY_INDEX_OUT_OF_RANGE
错误。 -
性能优化:频繁调整数组大小时,使用
ArrayResize()
的reserve_size
参数减少内存分配次数。
实际应用示例
cpp
复制
// 计算最近10根K线的最高价和最低价 double highs[10], lows[10]; ArraySetAsSeries(highs, true); ArraySetAsSeries(lows, true); CopyHigh(Symbol(), PERIOD_CURRENT, 0, 10, highs); CopyLow(Symbol(), PERIOD_CURRENT, 0, 10, lows); int max_idx = ArrayMaximum(highs); int min_idx = ArrayMinimum(lows); Print("最高价位置:", max_idx, " 值:", highs[max_idx]); Print("最低价位置:", min_idx, " 值:", lows[min_idx]);