如何将Pine Script V2成交量买卖动量指标转换为V5版本
Pine Script V2转V5:成交量买卖动量(VBSM)指标转换及中文注释
转换后的V5版本代码(带中文注释)
//@version=5 indicator(title="成交量买卖动量(VBSM)", shorttitle="VBSM", overlay=false) // 输入参数:均线长度,最小值1 均线长度 = input.int(25, title="均线长度", minval=1) // 计算收盘价1周期变动率 变动率 = ta.roc(close, 1) // 缩量时累加变动率,否则延续前值 缩量动量 = ta.iff(volume < volume[1], ta.nz(缩量动量[1], 0) + 变动率, ta.nz(缩量动量[1], 0)) // 放量时累加变动率,否则延续前值 放量动量 = ta.iff(volume > volume[1], ta.nz(放量动量[1], 0) + 变动率, ta.nz(放量动量[1], 0)) // 总动量 = 缩量动量 + 放量动量 总动量 = 缩量动量 + 放量动量 // 总动量均线 = 缩量动量均线 + 放量动量均线 总动量均线 = ta.sma(缩量动量, 均线长度) + ta.sma(放量动量, 均线长度) // 绘制总动量曲线(蓝色) 总动量曲线 = plot(总动量, color=color.new(color.blue, 0), title="PVI+NVI") // 绘制总动量均线(红色) 均线曲线 = plot(总动量均线, color=color.new(color.red, 0), title="均线") // 填充颜色:总动量大于均线时蓝色,否则红色 填充颜色 = 总动量 > 总动量均线 ? color.new(color.blue, 90) : color.new(color.red, 90) fill(总动量曲线, 均线曲线, color=填充颜色)
转换说明
- 核心API适配:将V2的
study()替换为V5标准的indicator(),指定overlay=false确保指标在独立窗口显示 - 输入参数升级:用
input.int()替代原input(),符合V5类型规范 - 函数前缀统一:所有技术分析函数添加
ta.前缀(如ta.roc、ta.sma),是V5的强制要求 - 变量命名优化:将原英文变量名改为中文,更易理解
- 填充透明度调整:新增
color.new()设置填充区域透明度,提升视觉可读性
指标逻辑说明
- 缩量动量:当当日成交量小于前一日时,累加收盘价的1周期变动率,否则保持前值
- 放量动量:当当日成交量大于前一日时,累加收盘价的1周期变动率,否则保持前值
- 总动量为缩量与放量动量之和,反映整体买卖动量变化
- 总动量均线用于判断动量趋势,填充区域直观展示当前动量与趋势的相对位置
内容的提问来源于stack exchange,提问作者bhaskar
相关产品推荐
相关产品推荐

