SPL做量化—-VMA(变异平均线)
变异平均线(VMA)与移动平均线的计算方法是一样的,区别在于移动平均线是以每日收盘价计算的,而变异平均线则是用每日的开盘价、收盘价、最高价和最低价相加后除以 4 得出的数据计算平均线。
计算方法:
VV=(开盘价 + 收盘价 + 最高价 + 最低价)/4
VMA=VV 的移动平均
VMA 通常有 4 条线,分别取 VV 的 Nx 日移动平均
例如计算浦发银行 2024 年的 VMV 指标,N1、N2、N3、N4 分别取 6、12、30、72。
代码示例:
A | |
1 | 600000 |
2 | 2024-01-01 |
3 | 2024-12-31 |
4 | =call("adjustprice.splx", "", call("loadkday.splx", A1, A2,A3) ) |
5 | 6 |
6 | 12 |
7 | 30 |
8 | 72 |
9 | =A4.new(code,tdate,( open + close + high + low)/4:VV) |
10 | =A9.new(code,tdate,avg(VV[1-A5:0]):VMA1,avg(VV[1-A6:0]):VMA2,avg(VV[1-A7:0]):VMA3,avg(VV[1-A8:0]):VMA4) |
A1-A4 读取股票数据
A5-A8 输入 N1、N2、N3、N4
A9 计算 VV
A10 计算 VMA 指标
为了使用方便,可以用宏封装成通用函数供调用。
函数代码:
A | B | |
1 | func vma(data,N) | =data.new(code,tdate,(open+close+high+low)/4:VV) |
2 | =B27.new(code,tdate,avg(VV[1-N(1):0]):VMA1,avg(VV[1-N(2):0]):VMA2,avg(VV[1-N(3):0]):VMA3,avg(VV[1-N(4):0]):VMA4) |
此代码比较短,和前面章节的 MA 一样,可以用 func 的形式保存在 index.splx 中。
参数:
data | 序表,某支股票的日线数据 |
N | 序列,N1、N2、N3、N4 如[6,12,30,72] |
返回数据集结构:
code | 股票代码 |
tdate | 日期 |
VMA1 | N1 日成本均价线 |
VMA 2 | N2 日成本均价线 |
VMA 3 | N3 日成本均价线 |
VMA 4 | N4 日成本均价线 |
例如,调用脚本计算浦发银行 2024 年的 VMA 指标,N 取[6,12,30,72]。
A | B | |
… | … | |
6 | =call@f("index.splx") | 登记脚本中的函数 |
7 | … | 计算出源数据 |
8 | =vma(A7,[6,12,30,72]) | 调用函数 |
运行效果:
SPL 可以在这里下载:免费下载。使用免费的桌面版就可以了,直接安装即可使用。专业程序员也可以使用这里的开源版,但需要自行配置部署。
SPL 配有系统的教程,这里有面向新手的课程(含视频):SPL程序设计语言 · 乾学院VIP课程 ,乾学院 也有更多学习资料。