TradingView Pine编辑器脚本开发咨询:如何排除过去10天的上涨成交量交易日以实现口袋支点指标
解决口袋支点指标中筛选下跌日成交量最大值的问题
我来帮你搞定这个问题——核心就是要把过去10天里的下跌日成交量单独拎出来计算最大值,排除上涨日的干扰。咱们一步步来:
首先得明确下跌交易日的判断标准:当日收盘价低于前一交易日的收盘价,用代码表示就是close < close[1]。接下来,我们要在计算过去10天的成交量最大值时,只保留下跌日的成交量,上涨日的成交量用na(无效值)过滤掉,这样Pine Script的highest()函数会自动忽略这些无效值,只计算下跌日的最大成交量。
下面是修改后的完整代码,我给你加了详细注释:
study(title="Pocket Pivot", shorttitle="PP", precision=0, overlay=true) // 标记下跌交易日:当日收盘价低于前一日收盘价时为true downDay = close < close[1] // 计算过去10个交易日(不含当前日)中下跌日的最大成交量 // 对前10天的每个交易日,是下跌日就取成交量,否则用na过滤 maxDownVolume = highest(downDay[1] ? volume[1] : na, 10) // 口袋支点判断条件:当日成交量 > 过去10天下跌日的最大成交量 pp = volume > maxDownVolume // 绘制口袋支点信号(和你原来的绘图逻辑一致) plotshape(series=pp, title="Pocket Pivot", style=shape.triangleup, location=location.belowbar, color=color.navy, transp=0, size=size.tiny)
关键逻辑说明:
downDay[1] ? volume[1] : na:这里的[1]是取前一个交易日的数据,确保我们对比的是过去的10个交易日(不含当前正在判断的口袋支点日)。如果前一天是下跌日,就用它的成交量;否则用na,让highest()函数自动跳过这个值。highest(..., 10):指定长度为10,刚好覆盖过去10个交易日的范围,精准计算其中下跌日的成交量最大值。
这样修改后,你的口袋支点指标就完全符合要求了,只会在当日成交量超过过去10天里下跌日的最大成交量时触发信号。
内容的提问来源于stack exchange,提问作者finallynitin
相关产品推荐
相关产品推荐

