如何在Pine Script中获取最近1000天的最小值?
Pine Script获取最近1000天最小值的替代方案
方法1:使用ta.lowest()(最简便直接)
ta.lowest()是Pine Script专门用于计算指定周期内序列最小值的函数,完全匹配你的需求。如果当前图表是日线周期,直接传入长度1000即可获取最近1000天的最小值:
//@version=5 indicator("1000天最小值示例", overlay=true) // 获取最近1000天收盘价的最小值 lowest1000 = ta.lowest(close, 1000) // 也可替换为low、open等其他价格序列 // lowest1000 = ta.lowest(low, 1000) plot(lowest1000, color=color.red, title="1000天最小值")
如果图表是其他周期(比如4小时),需要先将1000天转换为对应周期的K线数量(比如1000天=4800根4小时K线),再传入长度参数。
方法2:手动循环维护最小值
如果你想手动实现逻辑(比如学习或自定义扩展),可以用循环遍历最近1000个数据点,逐步更新最小值:
//@version=5 indicator("手动计算1000天最小值", overlay=true) // 初始化变量存储最小值,var关键字确保变量在脚本运行中保持状态 var float currentMin = close // 循环遍历最近1000个数据点 for i = 0 to 999 currentMin := math.min(currentMin, close[i]) plot(currentMin, color=color.blue, title="手动计算最小值")
注意:这种方法效率略低于ta.lowest(),但逻辑直观,适合需要自定义筛选条件的场景。
方法3:使用数组存储滚动窗口数据
通过数组维护最近1000天的价格数据,再调用array.min()获取最小值,适合需要对窗口内数据进行额外操作的场景:
//@version=5 indicator("数组实现1000天最小值", overlay=true) // 初始化固定长度为1000的数组 var array<float> priceWindow = array.new_float(1000) // 每次新K线生成时,移除数组最旧的元素,添加最新收盘价 array.shift(priceWindow) array.push(priceWindow, close) // 计算数组内的最小值 lowest1000 = array.min(priceWindow) plot(lowest1000, color=color.green, title="数组计算最小值")
这种方法灵活性高,你可以在数组中存储任意自定义数据,再进行统计计算。
内容的提问来源于stack exchange,提问作者KarlEs
相关产品推荐
相关产品推荐

