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

关于Pine Script中KAMA指标ER计算的代码验证问询

考夫曼自适应移动平均线(KAMA)效率比率(ER)代码验证

正在编写考夫曼自适应移动平均线(KAMA)时,对效率比率(ER)的代码实现存在疑问。ER的计算公式为 ER = Change/Volatility,具体定义:

  • Change = 当前收盘价与10周期前收盘价差值的绝对值
  • Volatility = 最近10期内每期收盘价与前一期收盘价差值绝对值的总和

编写的Pine Script代码如下:

indicator('KAMA', shorttitle='KAMA', overlay=true)
length = input(title='周期长度', defval=10)
fastLength = input(title='快速EMA常数', defval=2) // 平滑常数
slowLength = input(title='慢速EMA长度', defval=30) // 平滑常数
source = input(title='数据源', defval=close)

change = math.abs(ta.change(source, length)) 
volatility = math.sum(math.abs(ta.change(source)), length)
ER = change/volatility

问题与解答

问题1

代码行 change = math.abs(ta.change(source, length)) 是否会返回当前收盘价与10周期前收盘价差值的绝对值?

解答:是的。ta.change(source, length) 会计算当前周期source值与length周期前的source值的差值,math.abs() 对该差值取绝对值,完全符合Change的定义。

问题2

代码行 volatility = math.sum(math.abs(ta.change(source)), length) 的返回值是以下哪一种:

  • 2.1 最近10期内每期当前收盘价与前一期收盘价差值绝对值的总和?
  • 2.2 当前收盘价与10周期前收盘价差值的绝对值?

解答:返回值对应2.1。ta.change(source) 默认计算当前周期与上一周期source值的差值,经math.abs()取绝对值后,math.sum(..., length)会对最近10期的该绝对值结果求和,与Volatility的定义一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:35:20