ASI(震动升降指标)

震动升降指标 ASI 以开盘、最高、最低、收盘价与前一交易日的各种价格相比较作为计算因子,研判市场的方向性。

ASI 计算方式:
AA=| 今日最高价 - 昨日收盘价 |
BB=| 今日最低价 - 昨日收盘价 |
CC=| 今日最高价 - 昨日最低价 |
DD=| 昨日收盘价 - 昨日开盘价 |
E= 今日收盘价 - 昨日收盘价
F= 今日收盘价 - 今日开盘价
G= 昨日收盘价 - 昨日开盘价
X=E+0.5F+G
比较 AA、BB、CC
若 AA 最大,则 R=AA+0.5BB+0.25DD
若 BB 最大,则 R=BB+0.5AA+0.25DD
若 CC 最大,则 R=CC+0.25DD
SI=16×X/R×K K 取 AA 和 BB 的最大值
ASI:累计 N1 日内每日的 SI 值
ASIT:计算 N2 日内 ASI 的移动平均

指标参数:

y1

ASI输出列

y2

ASIT输出列

n1

周期 1,如 26

n2

周期 2,如 10


函数代码:


A

B

1

func ASI(A,$y1,$y2,n1,n2)

=A.derive@o(:asi_aa,:asi_bb,:asi_cc,:asi_dd,:asi_x,:asi_r,:asi_si)

2


=A.run(abs( 最高 - 收盘 [-1]):asi_aa, abs(最低 - 收盘 [-1]):asi_bb, abs(最高 - 最低 [-1]):asi_cc, abs(收盘 [-1]- 开盘 [-1]):asi_dd, (收盘 - 收盘 [-1]+(收盘 - 开盘)/2+ 收盘 [-1]- 开盘 [-1]):asi_x)

3


=A.run(if(asi_aa>asi_bb && asi_aa>asi_cc,asi_aa+asi_bb/2+asi_dd/4,if(asi_bb>asi_cc && asi_bb>asi_aa,asi_bb+asi_aa/2+asi_dd/4,asi_cc+asi_dd/4)):asi_r, 16*asi_x/asi_r*max(asi_aa,asi_bb):asi_si)

4


=A.run(sum(asi_si[1-n1:0]):${y1}, avg(${y1}[1-n2:0]):${y2})

5


=A.alter(;asi_aa,asi_bb,asi_cc,asi_dd,asi_x,asi_r,asi_si)

函数保存到 indicator.splx。

举例:

调用脚本计算浦发银行 2024 年的 ASI 指标,n 分别取 26 和 10。


A

B

5

=call@f("indicator.splx")

登记脚本中的函数

6

计算出源数据

7

=A6.derive(:ASI,:ASIT)

增加要返回的指标字段

8

=ASI(A7,ASI,ASIT,26,10)

调用函数计算指标

运行效果:

..