在通达信的公式脚本中没有专门的控制语句,一切都是变量(仅有输出与不输出的区别),所以要实现应用于多种情况的脚本也要依靠变量来控制。
系统函数中有几个重要的函数就是IF,IFF,IFN,TESTSKIP.请大家注意的是通达信的函数的参数都是先计算出结果然后将参数传给函数的。因此对于TESTSKIP,最好作为一条单独的语句来使用。
# 公式脚本1:同1.2中的JBSJ公式
{用于引用股票的基本数据。}
1
# 公式脚本2:FZMN分钟模拟
{用于通过几种分钟周期的数据模拟出当天对应于改周期的各项数据}
N:=IF(PERIOD=0,1,
IF(PERIOD=1,5,
IF(PERIOD=2,15,
IF(PERIOD=3,30,
IF(PERIOD=4,60,0)))));
CTRL:=TESTSKIP(N=0);{仅用于分钟周期}
TTIME1:=(TIME/100);
TTIME2:=IF(TTIME1<1000,TTIME1-930,
IF(TTIME1<1100,TTIME1-1000+30,
IF(TTIME1<1131,TTIME1-1100+90,
IF(TTIME1<1300,120,
IF(TTIME1<1400,TTIME1-1300+120,
IF(TTIME1<1500,TTIME1-1400+180,
240))))));
TTIME:=TTIME2/N;
YTC:="JBSJ.JYC#DAY";
YTDPC:="399300$CLOSE#DAY";
ZFS:=(C*1000/YTC)-1000;
AC:="399300$CLOSE";
ZFA:=(AC*1000/YTDPC)-1000;
DJC:(ZFS-ZFA)*YTC/1000+YTC;
DJH:IF(TTIME<2,DJC,HHV(DJC,TTIME-1));
DJL:IF(TTIME<2,DJC,LLV(DJC,TTIME-1));
DJO:REFV(DJC,TTIME-1);
{DRAWKLINE(DJH,DJO,DJL,DJC);};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 公式脚本3:
在日线周期下,引用公式2中的数据(通过引用指标设置周期的方法来获得分钟周期的数据),通过K线绘制的函数就可以画出模拟 的K线了。
JH:="FZMN.DJH#MIN5";
JO:=" FZMN.DJO#MIN5";
JLC:=" FZMN.DJL#MIN5";
JC:=" FZMN.DJC#MIN5";
DRAWKLINE(JH,JO,JLC,JC);
1
2
3
4
5
2
3
4
5