欢迎来到天天文库
浏览记录
ID:33973189
大小:50.50 KB
页数:9页
时间:2019-03-03
《大智慧股票公式之循环语句》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、大智慧股票公式之循环语句 1.为什么要循环 循环是计算机程序中一个最重要的概念,它使计算机能够按照用户的意志重复执行某个任务,我们前面所提到的公式系统中存在的隐含循环也是一种沿时间变化的循环。其实我们的函数中也大量包含了循环的概念,比如SUM、MA等等。我们来看看循环的概念。 如果我们计算从1加到100,写成公式: 1+2+3+4+5…+100; 这个公式很长,而且写起来容易出错,如果我们是计算从1加到10000怎么办?这就需要用到循环,我们让计算机循环计算,总共循环10000次,其中第N次循环加N即
2、可解决这个问题: FORI=1TO10000DO SU:=SU+I; 等一会儿我们再来解释它。我们看到,有了循环以后,许多繁杂的事情都可以轻松解决了。由于以前没有循环,我们必须在函数内部来实现一些循环,现在有了它,我们可以省去好多函数。例如,SUM表示计算N天数值的总和,写成公式 C+REF(C,1)+REF(C,2)+…+REF(C,N-1); 由于书写困难而且不灵活,我们引入SUM函数来计算。但是如果我们使用循环: SU:=0; FORI=0TON-1DO SU:=SU+REF(C,I);
3、 FOR循环表示,循环执行SU:=SU+REF(C,I)这条语句,第一次循环变量I等于0,每次循环I递增1,直到大于N-1时循环结束。也就是说,REF(C,I)在每次循环中表示今天、昨天、前天…N-1天前的收盘价,将它们累加到SU变量中,完成了累加的功能。 我们需要注意的是,此时的循环与公式中的隐含循环是不一样的,隐含循环不需要书写而且是不可避免的,而循环需要用循环语句写出来。循环语句所描述的循环,是针对某一根K线执行的,整个循环过程中其计算位置是不变的。因此,在整个隐含循环中,每进行一次隐含循环,就要执行一
4、轮循环语句。因此,大量使用循环语句,尤其是嵌套循环语句将大大降低运算速度。我们可以来看看,如果某股票有3000根K线,我们在公式中包含一个100次的循环,则循环将执行3000*100=30万次,如果还存在循环嵌套,也就是循环套循环,如果内外均是100次的循环,则循环次数为3000*100*100=3000万次,其执行速度将非常缓慢。分析家系统限制总的循环次数要小于1亿次,否则不能得到计算结果。 循环分为WHILE和FOR循环两种。 2.WHILE循环 WHILE循环语法:WHILE[条件]DO[语句]
5、它表示,如果条件成立则循环执行语句,直到条件不成立为止。例如我们计算最近多少天完成100%换手: HR:=VOL; ND:=0; WHILEHR ND:=ND+1; HR:=HR+REF(VOL,ND); END ND就是结果。HR表示最近成交量累加,设初始值为当日成交量,然后循环直到它大于流通盘为止。循环体中,ND每次循环加1,HR每次循环加上ND天前的成交量,也就是说最近ND天的成交量累加。 在循环中必须注意的是,循环条件在循环过程中一定要发生变化,并且会变成条件不成立,否则会形成死循环,也
6、就是说循环条件永远成立,计算机不断地进行循环计算。 在上例中,HR每次递增,当它增大到流通盘以上时,条件变成不成立,从而终止循环。另外一个我们没有注意到的问题是,如果今天是上市第一天,而且换手率没有达到100,则这个循环会出现问题,因为不论ND怎样增大,REF(VOL,ND)总是返回没有数值,也就是说HR的不到递增,也就永远无法破坏循环条件而终止循环,它也是一个死循环。因此我们需要改成: HR:=VOL; ND:=1; WHILEHR HR:=HR+REF(VOL,ND); ND:=ND+1; E
7、ND 增加一个ND 从这些例子中我们看到,自己使用循环来实现算法,其功能是强大的,但是需要十分小心,避免死循环的发生。因此,我们能够使用函数来实现的功能,还是尽量使用函数来实现,避免不必要的复杂性。 3.FOR循环 我们大多数的循环是指定循环次数的循环,而且我们证券计算也大量使用向前引用若干天的数据,因此FOR循环将更加实用。 FOR[变量]=[初值]TO[终值]DO[语句] 它表示使用变量来控制执行循环语句,首先给变量赋初值,然后判断变量是否小于或等于终值,若满足条件则执行语句,然后将变量加1,循
8、环判断变量是否小于等于终值并循环执行,直到条件不满足为止。例如 FORI=1TONDO… 表示循环N次,循环变量从1到N,类似的 FORI=0TON-1DO… 也表示循环N次,但是循环变量从0到N-1。 循环变量还可以从大循环到小,可以使用 FOR[变量]=[初值]DOWNTO[终值]DO[语句] 此时变量将从大到小变化,直到小于终值为止。 我们在使用中需要注意递增还是
此文档下载收益归作者所有