MT4数组函数

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[]:目标数组

    • flagtrue(时间序列模式)或 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[]:待比较数组

    • start1start2:起始索引(默认0)

    • count:比较的元素数量(默认全部)

  • 返回值

    • 0:数组相同

    • 非0:第一个不同元素的差值(array1[i] - array2[i]


注意事项

  1. 动态数组 vs 静态数组ArrayResize() 仅适用于动态数组(声明时未指定大小)。

  2. 越界错误:访问数组时需确保索引有效,避免 ERR_ARRAY_INDEX_OUT_OF_RANGE 错误。

  3. 性能优化:频繁调整数组大小时,使用 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]);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值