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

Pine Script如何为绘制的指标线设置固定0-100波动范围

实现方案

要让指标线始终在0-100区间波动,且历史最低值为0、最高值为100,直接用min-max线性归一化对原始计算的n值做缩放即可,不会改变原指标的走势形态,只会等比例调整数值范围。

核心逻辑

  • 先按原规则逐根K线计算涨跌累加的原始n值
  • 统计当前加载的全部历史K线范围内,n值的全局最小值、全局最大值
  • 通过线性映射公式把原始n值等比例转换到0-100区间,映射后原始最小值对应0,原始最大值对应100
  • 增加异常判断,避免全局最大最小值相等时出现除以0的运行错误

修改后可直接运行的完整代码

//@version=5
indicator("0-100 Normalized Up/Down Count", shorttitle="NormN", overlay=false)

// 按原规则计算原始n值
var int n = 0
if close > close[1]
    n += 1
else
    n -= 1

// 获取全历史周期n的最小、最大值
float nAllMin = ta.lowest(n, bar_index + 1)
float nAllMax = ta.highest(n, bar_index + 1)

// 归一化映射到0-100区间
float nNormalized = na
if nAllMax != nAllMin
    nNormalized := (n - nAllMin) / (nAllMax - nAllMin) * 100
else
    // 全周期n无波动时固定在中位值50
    nNormalized := 50

// 绘制指标线和区间边界参考线
plot(nNormalized, color=color.new(color.blue, 0), linewidth=2, title="Normalized N")
hline(0, "0 Bound", color=color.gray, linestyle=hline.style_dashed)
hline(100, "100 Bound", color=color.gray, linestyle=hline.style_dashed)

注意事项

该归一化的计算基准是当前图表加载的全部K线数据:如果你调整K线周期、增减加载的历史K线数量,全局最小/最大值会发生变化,归一化后的数值也会同步更新,始终保证当前加载的历史区间内指标最低点为0、最高点为100。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:25:03