SMA(算术移动平均)
简单移动平均线(SMA)又称“算术移动平均线”,是在投资股票时用于分析股票价格走势的一项指标。它是一个简单地将某一证券在某一时间段的收盘价之和进行算术平均的方法,并随着时间的推移将这些平均值连成一条线便可得出 SMA。
计算方法:
如求指标 X 的 N 日移动平均,M 为权重。
算法:SMA=(M*X+(N-M)*SMA[-1])/N,其中 SMA[-1] 表示上一日 SMA 值,N 必须大于 M。
例如计算浦发银行 2024 年的收盘价的 5 日算 SMA,M 取 1。
代码示例:
A | |
1 | 600000 |
2 | 2024-01-01 |
3 | 2024-12-31 |
4 | =call("adjustprice.splx", "", call("loadkday.splx", A1, A2,A3) ) |
5 | =M=1 |
6 | =N=5 |
7 | =A4.new(code,tdate,if(#>1,(M*close+(N-M)*sma[-1])/N,close):sma) |
A1-A4 读取股票数据
A5-A6 输入 M 和 N
A7 计算 N 日 sma
为了使用方便,也可以用宏封装成通用函数供调用。
函数代码:
A | B | |
1 | func sma(data,field,M,N) | =data.new(code,tdate,if(#>1,(M*${field}+(N-M)*sma[-1])/N,${field}):sma) |
此代码比较短,和前面章节的 MA 一样,可以用 func 的形式保存在 index.splx 中。
参数:
data | 某支股票的日线数据 |
field | 字段名 |
M | 权重 |
N | 移动平均周期 |
返回数据集结构:
code | 股票代码 |
tdate | 日期 |
sma | 算数移动平均 |
例如,调用脚本计算浦发银行 2024 年收盘价的 5 日 SMA
A | B | |
… | … | |
6 | =call@f("index.splx") | 登记脚本中的函数 |
7 | … | 计算出源数据 |
8 | =sma(A7,"close",1,5) | 调用函数计算 ma |
运行效果: