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课程 ,乾学院 也有更多学习资料。
