现货指数图表中期货指数超50K成交量高亮脚本故障排查
问题修复:现货图表中期货成交量高亮异常的Pine Script脚本
问题背景
需求:在NSE:BANKNIFTY现货指数图表中,仅显示NSE:BANKNIFTY1!期货指数里成交量超过50K的部分,并按期货合约的涨跌情况高亮成交量柱。
问题:自行编写的脚本在期货图表运行正常,但切换到现货图表时,超阈值的成交量柱无法按要求高亮。
原代码问题分析
- 阈值变量逻辑错误:原代码中
hi_vol仅在当前图表是期货合约时才赋值,现货图表中hi_vol为na,导致volume>hi_vol的判断永远不成立,无法触发高亮。 - 涨跌判断对象错误:原代码用当前图表(现货)的
open/close判断涨跌,但我们需要的是期货合约的涨跌方向,应该从security调用中获取期货的开收盘价。 - 低成交量处理缺失:未实现“仅显示超阈值部分”的需求,低成交量柱仍会显示默认色,而非隐藏。
修复后的代码
//@version=4 study("Banknifty Volume Filter", resolution="", format=format.volume) // 输入阈值:单位为K,50即代表50000 threshold_k = input(title="成交量阈值(K)", defval=50, minval=1) threshold = threshold_k * 1000 // 从期货合约获取成交量、开盘价、收盘价 [fut_vol, fut_open, fut_close] = security("NSE:BANKNIFTY1!", timeframe.period, [volume, open, close]) // 颜色配置 color_bull = input(defval=color.new(color.green, 0), title="上涨柱颜色", group="颜色设置") color_bear = input(defval=color.new(color.red, 0), title="下跌柱颜色", group="颜色设置") color_hidden = color.new(color.white, 100) // 透明色用于隐藏低成交量柱 // 判断颜色:仅当成交量超过阈值时,按期货涨跌设置颜色,否则隐藏 bar_color = fut_vol > threshold ? (fut_close > fut_open ? color_bull : color_bear) : color_hidden // 绘制成交量柱 plot(fut_vol, color=bar_color, style=plot.style_columns, title="Banknifty期货成交量")
修复说明
- 修正阈值逻辑:直接将阈值设为输入值乘以1000,不再依赖当前图表类型,现货/期货图表均能正常识别阈值。
- 获取期货涨跌数据:通过
security同时获取期货的成交量、开盘价、收盘价,确保涨跌判断基于期货合约本身。 - 实现低成交量隐藏:用全透明色处理低于阈值的成交量柱,满足“仅显示超阈值部分”的需求。
内容的提问来源于stack exchange,提问作者manjeet singh
相关产品推荐
相关产品推荐

