如何在Pine Script 5中计算简单移动平均线的一阶和二阶导数?
Pine Script 5 计算简单移动平均线(SMA)的一阶和二阶导数
核心逻辑
在技术分析中,我们可以用相邻周期指标值的差值来近似计算导数:
- 一阶导数:反映SMA的变化速率(斜率),即当前周期SMA与上一周期SMA的差值
- 二阶导数:反映一阶导数的变化速率,即当前一阶导数与上一周期一阶导数的差值
完整代码实现
//@version=5 indicator("SMA 一阶&二阶导数", overlay=false) // 输入参数 sma_length = input.int(20, title="SMA周期") // 计算基础SMA sma_value = ta.sma(close, sma_length) // 计算一阶导数(SMA的斜率) first_derivative = ta.change(sma_value) // 等价写法:first_derivative = sma_value - sma_value[1] // 计算二阶导数(斜率的变化率) second_derivative = ta.change(first_derivative) // 等价写法:second_derivative = first_derivative - first_derivative[1] // 绘制指标 plot(sma_value, title="SMA", color=color.blue) plot(first_derivative, title="一阶导数", color=color.red, display=display.data_window) plot(second_derivative, title="二阶导数", color=color.green, display=display.data_window) // 可选:添加背景色标记趋势变化 bgcolor(first_derivative > 0 ? color.new(color.green, 90) : color.new(color.red, 90), title="一阶导数趋势背景")
代码说明
ta.change()是Pine Script 5内置函数,用于计算当前值与上一周期值的差值,等价于手动做减法- 一阶导数的正负代表SMA的趋势方向:
- 正值:SMA处于上升趋势
- 负值:SMA处于下降趋势
- 二阶导数的正负代表趋势的加速/减速:
- 正值:上升趋势在加速,或下降趋势在减速
- 负值:上升趋势在减速,或下降趋势在加速
内容的提问来源于stack exchange,提问作者Acoustic Death
相关产品推荐
相关产品推荐

