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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:42:03