Pine Script绘制多条随机指标线时坐标缩放错误如何修复
问题原因
你当前代码计算不同标的的随机指标时,highest()和lowest()函数默认取当前图表标的的高低价区间,而非security()调用的对应标的的高低价,导致计算出来的随机指标值可能超出[0,100]的正常范围,进而触发y轴动态缩放异常。
修复方案
建议两种方式组合使用,彻底解决问题:
- 修正随机指标的计算逻辑,每个标的的stoch计算使用自身的高低价区间
- 手动锁定指标面板的y轴范围为固定的[0,100]
修复后完整代码如下:
//@version=4 study(title="test", overlay=false, ymin=0, ymax=100) // 新增ymin、ymax参数锁定y轴范围 src = input(close, title="Index Source") Length = input (8, minval=1, title = "Stochastic Length") k = input (3, minval=1, title = "Stochastic %K") // 把stoch计算逻辑放到security()内部,取对应标的自身的高低区间计算随机值 v1_stoch = security("OANDA:EURUSD", timeframe.period, stoch(src, highest(Length), lowest(Length), Length)) v2_stoch = security("OANDA:USDJPY", timeframe.period, stoch(src, highest(Length), lowest(Length), Length)) v3_stoch = security("OANDA:GBPUSD", timeframe.period, stoch(src, highest(Length), lowest(Length), Length)) Kv1 = sma(v1_stoch, k) Kv2 = sma(v2_stoch, k) Kv3 = sma(v3_stoch, k) plot(Kv1, title ="EURUSD %K", color = color.black, linewidth=2) plot(Kv2, title ="USDJPY %K", color = color.blue, linewidth=2) plot(Kv3, title ="GBPUSD %K", color = color.red, linewidth=2)
补充说明
study()函数新增的ymin=0、ymax=100参数会强制锁定y轴的上下限,即使存在异常值也不会触发坐标自动缩放- 将
stoch()计算逻辑移入security()内部,可以保证计算随机指标时,高低价都取自对应标的自身的K线,不会出现超出0-100的无效计算结果
内容的提问来源于stack exchange,提问作者User4536124
相关产品推荐
相关产品推荐

