以下是引用admin在2012/11/4 21:52:52的发言:
逐K线模式下数组转定义数组变量
逐K线模式下数组之间的转换与序列模式有所不同,序列模式因为是只执行一次解析返回的是序列变量,因此可以完成直接的数组拷贝,而逐K线则每根K线都回去执行一遍公式的解析,因此在数组之间的转换上也有不同,在执行相互之间转换时,金字塔采用的是只处理数组最后数据的方法,即在逐K线解析时,自动扩充累加数组元素,我们举例如下:
要求:分别计算阳线和阴线收盘价10个数字的平均价,该需求需要我们分别定义2个数组来保存各自不同的价格,逐K线模式下的这种运行机制便正好可以满足我们的这个需要
RUNMODE:0;
VARIABLE:DOWN[]=0;//定义一个空的数组,计算下跌的阳线收盘价,注意这里一定要置空数组用来保存数据
VARIABLE:UP[]=0;//定义一个空的数组,计算上涨阳线收盘价,注意这里一定要置空数组用来保存数据
IF CLOSE > OPEN THEN
UP:=CLOSE;//将上涨K线收盘价插入数组UP中
ELSE
DOWN:=CLOSE;//将下跌K线收盘价插入DOWN数组中
A:MA(UP,10);
B:MA(DOWN,10);
//下面2行调试代码
DD:UBOUND(UP),NODRAW; //显示输出UP数组数据个数
SS:UBOUND(DOWN),NODRAW; //显示输出DOWN数组数据个数
注意:
通过上述的代码我们需要注意的是,UP和DOWN数组前面我们一定要置一个空的数组,这个空数组金字塔会在逐K线执行的时候去自动的填充我们的数据.
在逐K线模式下对数组的转换操作,应该避免在循环语句中使用,因为可能会导致循环对数组数据积累而导致计算出错
[此贴子已经被作者于2012-11-15 1:22:13编辑过]
对于MA,这种处理是可以的,我试了一下EMA,发现EMA会按照k线的周期数进行计算,而不是按照实际的数组个数。麻烦解决下。
[此贴子已经被作者于2013/12/9 22:21:04编辑过]