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)

调用函数计算指标

运行效果:

..