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) |
调用函数计算指标 |
运行效果: