You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pine Script对象数组上执行排序、取最小值等操作?

关于Pine Script自定义对象数组的排序与极值操作解答

1. 基于lowValue对数组排序

可以实现,不过因为是自定义对象类型,需要通过自定义比较函数配合array.sort()来完成。示例代码如下:

// 定义比较函数:按lowValue升序排序
int compareLowValue(pivotPoint a, pivotPoint b) =>
    a.lowValue - b.lowValue

// 调用排序,传入自定义比较器
array.sort(MyArray, compareLowValue)

如果需要降序,只需把a.lowValue - b.lowValue改成b.lowValue - a.lowValue即可。

2. 获取lowValue的最小值

Pine Script没有直接针对对象数组属性的极值内置函数,不过可以通过两种方式实现:

  • 遍历数组手动比较:
float getMinLowValue() =>
    if array.size(MyArray) == 0
        na
    else
        minVal = array.get(MyArray, 0).lowValue
        for i = 1 to array.size(MyArray) - 1
            currentVal = array.get(MyArray, i).lowValue
            if currentVal < minVal
                minVal := currentVal
        minVal
  • 用array.reduce()简化实现:
float getMinLowValue() =>
    array.reduce(MyArray, na, (acc, item) =>
        na(acc) ? item.lowValue : math.min(acc, item.lowValue)
    )

3. 关于自定义对象(UDT)功能的完善情况

目前Pine Script的自定义对象类型功能已经趋于稳定,能够满足结构化数据存储、自定义逻辑操作等核心需求。虽然部分针对对象属性的数组操作需要手动实现自定义逻辑,但官方一直在迭代优化该功能,后续大概率会推出更便捷的内置方法,值得期待。

内容的提问来源于stack exchange,提问作者sey eeet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:35:25