如何在Pine Script中获取上一个pivot或RSI>75处的成交量样本值及数组用法
Pine Script指定K线成交量获取及数组使用指南
一、获取上一个pivot点位或RSI>75对应K线的成交量
直接用内置ta.valuewhen()函数即可快速实现,不需要手动调用数组也能完成需求,示例代码如下:
//@version=5 indicator("指定条件成交量查询", overlay=false) // 参数配置 rsi_length = input.int(14, title="RSI计算周期") pivot_left = input.int(5, title="Pivot左确认K数") pivot_right = input.int(5, title="Pivot右确认K数") // 计算指标 rsi_val = ta.rsi(close, rsi_length) rsi_overbought = rsi_val > 75 pivot_high_val = ta.pivothigh(pivot_left, pivot_right) is_pivot_high = not na(pivot_high_val) // 取上一次满足条件的成交量 vol_rsi_overbought = ta.valuewhen(rsi_overbought, volume, 0) vol_last_pivot = ta.valuewhen(is_pivot_high, volume, 0) // 绘图输出 plot(vol_rsi_overbought, color=color.new(color.red, 0), title="RSI>75对应成交量") plot(vol_last_pivot, color=color.new(color.blue, 0), title="上一个Pivot对应成交量")
ta.valuewhen(condition, source, occurrence)参数说明:
- condition:触发条件
- source:条件触发时要返回的数值
- occurrence:取第几次触发的结果,0为最近一次,1为上上次,以此类推
二、Pine Script数组使用方法
如果你需要手动用数组实现历史数据的存储和查询,以下是核心用法和常见踩坑点:
核心操作
- 数组声明:用
array.new_类型(初始长度, 默认值)创建,常用类型有float、int、bool,比如array.new_float(0, na)表示创建一个空的浮点数数组 - 必须加
var关键字修饰数组声明:如果不加var,每根K线运行时数组都会被重置清空,这是多数人数组实现失败的核心原因 - 添加元素:
array.push(数组名, 元素值)往数组末尾新增元素 - 读取元素:
array.get(数组名, 索引)读取指定位置的元素,索引从0开始,array.size(数组名)-1对应最后一个(最近添加的)元素 - 获取长度:
array.size(数组名)返回数组中存储的元素总数 - 删除元素:
array.pop(数组名)删除末尾元素并返回该值,array.remove(数组名, 索引)删除指定位置元素
数组实现需求的完整示例
//@version=5 indicator("数组实现指定条件成交量查询", overlay=false) rsi_val = ta.rsi(close, 14) rsi_overbought = rsi_val > 75 pivot_high_val = ta.pivothigh(5,5) is_pivot_high = not na(pivot_high_val) // 声明存储成交量的数组,加var保证只初始化一次 var arr_rsi_vol = array.new_float(0, na) var arr_pivot_vol = array.new_float(0, na) // 满足条件时存入当前K线成交量 if rsi_overbought array.push(arr_rsi_vol, volume) if is_pivot_high array.push(arr_pivot_vol, volume) // 取最近一次的数值,数组为空时返回na last_rsi_vol = array.size(arr_rsi_vol) > 0 ? array.get(arr_rsi_vol, array.size(arr_rsi_vol) - 1) : na last_pivot_vol = array.size(arr_pivot_vol) > 0 ? array.get(arr_pivot_vol, array.size(arr_pivot_vol) - 1) : na plot(last_rsi_vol, color=color.red, title="RSI>75对应成交量") plot(last_pivot_vol, color=color.blue, title="上一个Pivot对应成交量")
内容的提问来源于stack exchange,提问作者sloan.rily
相关产品推荐
相关产品推荐

