上一讲,介绍了序列变量、数组等概念,这一讲介绍循环语句。 1、FOR递增循环: 先从一个的实例开始,求当前股票收盘价的2日算术平均价,为了方便起见,以刚上市不久的600340国祥股价来说明,首先定义序列变量fc为收盘价,根据上一讲我们知道,fc可以看成是一个数组,因此,数组fc的每一个元素如下表所示: 600340 国祥股份 时间 收盘 fc[1] 2003/12/30 8.92 fc[2] 2003/12/31 8.96 fc[3] 2004/01/02 9.25 fc[4] 2004/01/05 9.64 fc[5] 2004/01/06 9.92 fc[6] 2004/01/07 9.74 fc[7] 2004/01/08 10.44 fc[8] 2004/01/09 9.99 显然, 2日平均收盘价必须是从第2根K线即上市后第2日开始,到最后一天结束,设2日平均股价用序列变量ma2来表示,由于2日平均收盘价等于当日收盘价加昨收盘除以2,如果手工一行一行来写代码计算,则: ma2[2]:=(fc[1]+fc[2])/2; //今收盘与昨收盘之和除以2,等于今2日平均收盘价 ma2[3]:=(fc[2]+fc[3])/2; ma2[4]:=(fc[3]+fc[4])/2; ma2[5]:=(fc[4]+fc[5])/2; ma2[6]:=(fc[5]+fc[6])/2; ma2[7]:=(fc[6]+fc[7])/2; ma2[8]:=(fc[7]+fc[8])/2; 分析上面代码,2日平均价的计算特点是: ①从第2根K线开始计算的 ②每天的均价都等于(今收盘+昨收盘)/2 ③直到最后1根K线结束 容易知道,如果有1000根K线,则要写999行代码,显然效率太低了。 我们来找找规律,如果是中间的某天即第i天,则上面的表达式可以写为ma2[i]:=(fc[i-1]+fc[i])/2,这个i是从第2根K线开始直到最后1根K线。这些计算都是重复同样的计算,只不过i不同罢了。如果有一种方法,可以自动重复计算这些表达式,并且每重复一次,i自动增加1,就可以达到目的了。由此我们定义一种循环语句,可以自动循环重复运行某一行代码。在飞狐中,循环语句有2种,下面先介绍FOR循环语句 语法:FOR var=n1 TO n2 DO expr; 从 var=n1 开始到 var=n2 开始循环执行 expr 语句,每执行一次var加1。这里,var称之为循环变量。 用循环语句表达上面计算2日平均收盘价,公式代码如下: fc:=close; //定义序列变量为收盘价 for i=2 to datacount do ma2[i] : (fc[i-1]+fc[i])/2; //从i=2到i=datacount循环执行ma2[i] : (fc[i-1]+fc[i])/2 在飞狐中新建一个主图叠加公式,如下图所示,正是我们所需要的结果: |
|