SPL做量化---PSY(心理线)
心理线(PSY)指标是研究投资者对股市涨跌产生心理波动的情绪指标,它将一定时期内投资者趋向买方或卖方的心里事实转化为数值,是研究投资者对股市涨跌产生心理波动的情绪指标。主要用于判断股价短期的未来趋势。
PSY 计算方式:
PSY=n 日内上涨天数 /n*100
MAPSY=PSY 的 m 日移动平均
例如计算浦发银行 2024 年的收盘价 12 日 PSY 和 6 日 MAPSY
代码示例:
A | |
1 | 600000 |
2 | 2024-01-01 |
3 | 2024-12-31 |
4 | =call("adjustprice.splx", "", call("loadkday.splx", A1, A2,A3) ) |
5 | 12 |
6 | 6 |
7 | =A4.derive(if(close> close[-1],1,0):n_up) |
8 | =A7.new(code,tdate,sum(n_up[1-A5:0])/A5*100:PSY,avg(PSY[1-A6:0]):MAPSY) |
A1-A4 读取股票数据
A5-A6 输入 n 和 m
A7 n_up:判断是否为股价上涨日,上涨日记为 1 反之为 0
A8 取 n 日内的 n_up 求和得到 n 日内上涨天数,带入公式计算 PSY,MAPSY
为了使用方便,可以用宏封装成通用函数供调用。
函数代码:
A | B | |
1 | func psy(data,field,N) | =data.derive(if(${field}>${field}[-1],1,0):n_up) |
2 | =B18.new(code,tdate,sum(n_up[1-N(1):0])/N(1)*100:PSY,avg(PSY[1-N(2):0]):MAPSY) |
此代码比较短,和前面章节的 MA 一样,可以用 func 的形式保存在 index.splx 中。
参数:
data | 序表,某支股票的日线数据 |
field | 字符串,字段名 |
N | 序列,n 和 m 值,如[5,20,60,120] |
返回数据集结构:
code | 股票代码 |
tdate | 日期 |
PSY | 心理线 |
MAPSY | PSY 的移动平均 |
例如计算浦发银行 2024 年的收盘价 12 日 PSY 和 6 日 MAPSY
A | B | |
… | … | |
6 | =call@f("index.splx") | 登记脚本中的函数 |
7 | … | 计算出源数据 |
8 | =psy(A7,"close",[12,6]) | 调用函数 |
运行效果:
SPL 可以在这里下载:免费下载。使用免费的桌面版就可以了,直接安装即可使用。专业程序员也可以使用这里的开源版,但需要自行配置部署。
SPL 配有系统的教程,这里有面向新手的课程(含视频):SPL程序设计语言 · 乾学院VIP课程 ,乾学院 也有更多学习资料。