EMA(指数移动平均线)
EMA(Exponential Moving Average) 指数移动平均值是以指数式递减加权的移动平均,它是一种趋势指标,要了解均价趋势快慢的时候,用 EMA 更稳定。
EMA 的计算方法是一个递归公式。
EMA= 平滑系数 * 当前价格 +(1- 平滑系数)*EMA(N-1)。
N 表示 ema 的周期,有短期、中期、长期。
平滑系数 =2/(N+1)
在没有昨日 EMA 的情况下,该日的 EMA 用当日的收盘价代替,一般用第一天的收盘价为 EMA 的初始值
显然时间越靠近当今时刻,即 N 越小,它的权重越大,说明 EMA 函数对近期的价格加强了权重比,比 MA 更能及时反映近期价格波动情况。
指标参数:
y |
指标返回的字段名。 |
x |
要计算的字段,如收盘 |
n |
时间周期,如 5 |
函数代码:
A |
B |
|
1 |
func EMA(A, $y, $x, n) |
=ema_k=2/(n+1) |
2 |
=A.run(if(#>1,ema_k*${x} + (1-ema_k)*${y}[-1],${x}):${y}) |
将函数保存在脚本 indicator.splx 中。
举例:调用脚本计算浦发银行 2024 年收盘价的 5 日 EMA,要返回的指标字段命名为 ema_5。
A |
B |
|
… |
… |
|
5 |
=call@f("indicator.splx") |
登记脚本中的函数 |
6 |
… |
计算出源数据 |
7 |
=A6.derive(:ema_5) |
增加要返回的指标字段 |
8 |
=EMA(A7,ema_5, 收盘,5) |
调用函数计算指标 |
运行效果: