SRDM(动向速度比率)
计算方法:
DMZ=if((最高价 + 最低价)<=(最高价 [-1]+ 最低价 [-1]),0,max(abs( 最高价 - 最高价 [-1]),abs(最低价 - 最低价 [-1])))
DMF= if((最高价 + 最低价)>=(最高价 [-1]+ 最低价 [-1]),0,max(abs( 最高价 - 最高价 [-1]),abs(最低价 - 最低价 [-1])))
ADMZ=DMZ 的 10 日 MA
ADMF= DMF 的 10 日 MA
SRDM=if(ADMZ>ADMF,(ADMZ-ADMF)/ADMZ,if(ADMZ==ADMF,0,(ADMZ-ADMF)/ADMF))
ASRDM= SRDM 的 N 日 SMA
指标参数:
y1 |
SRDM输出列 |
y2 |
ASRDM输出列 |
n |
数字,时间周期,如 30 |
函数代码:
A |
B |
|
1 |
func SRDM(A,$y1,$y2,n) |
=A.derive@o(:srdm_dmz,:srdm_dmf,:srdm_admz,:srdm_admf) |
2 |
=A.run(if(( 最高 + 最低)<=(最高 [-1]+ 最低 [-1]),0,max(abs( 最高 - 最高 [-1]),abs(最低 - 最低 [-1]))):srdm_dmz, if((最高 + 最低)>=(最高 [-1]+ 最低 [-1]),0,max(abs( 最高 - 最高 [-1]),abs(最低 - 最低 [-1]))):srdm_dmf) |
|
3 |
=A.run(avg(srdm_dmz[-9:0]):srdm_admz, avg(srdm_dmf[-9:0]):srdm_admf) |
|
4 |
=A.run(if(srdm_admz>srdm_admf,(srdm_admz-srdm_admf)/srdm_admz,if(srdm_admz==srdm_admf,0,(srdm_admz-srdm_admf)/srdm_admf)):${y1}, (${y1}+(n-1)*${y2}[-1])/n:${y2}) |
|
5 |
=A.alter(;srdm_dmz,srdm_dmf,srdm_admz,srdm_admf) |
将函数保存到 indicator.splx。
例如,调用脚本计算浦发银行 2024 年的中性化股票振幅。
A |
B |
|
… |
… |
… |
5 |
=call@f("indicator.splx") |
登记脚本中的函数 |
6 |
… |
计算出源数据 |
7 |
=A6.derive(:SRDM,:ASRDM) |
增加要返回的指标字段 |
8 |
=SRDM(A7,SRDM,ASRDM,30) |
调用函数计算指标 |
运行效果: