fc:=close;//定义一个序列变量,相当于是一个数组
fl:=low;
fh:=high;
fo:=open;
r:=0;
for i=datacount downto datacount-30 do //遍历可能的所有K线
BEGIN
my_low:=fl[i];
my_open:=fo[i];
my_close:=fc[i];
my_high:=fh[i];
if my_close>my_open then
BEGIN
kk[r]:=fc[i];
r:=r+1;
END;
END;
kk_1:kk[0];
kk_2:kk[1];
kk_3:kk[2];
kk_4:kk[3];
kk_5:kk[4];
问题:为什么kk_1的数值和kk_2是一样的,直观看,KK_1应该有另外一个数值,却没有显示
fc:=close;//定义一个序列变量,相当于是一个数组
fl:=low;
fh:=high;
fo:=open;
r:=0;
for i=datacount downto datacount do //只计算第一根K线
BEGIN
my_low:=fl[i];
my_open:=fo[i];
my_close:=fc[i];
my_high:=fh[i];
if my_close>my_open then
BEGIN
kk[r]:=fc[i];
r:=r+1;
END;
END;
kk_1:kk[0];
//这个kk[0]就没问题,确实是最近一根收盘大于开盘的K线
fc:=close;//定义一个序列变量,相当于是一个数组
fl:=low;
fh:=high;
fo:=open;
r:=0;
for i=datacount downto datacount-30 do //遍历前30根K线
BEGIN
my_low:=fl[i];
my_open:=fo[i];
my_close:=fc[i];
my_high:=fh[i];
if my_close>my_open then
BEGIN
kk[r]:=fc[i];
r:=r+1;
END;
END;
kk_1:kk[0];
kk_2:kk[1];
//此时,kk[0]的值不是最近一根收盘大于开盘的K线的收盘价,而是与kk[1]一样,这是怎么回事?
初步看了一下,你的数组使用存在问题,金字塔的数组下标有效值是从1开始的,而你是从0开始使用。
序列模式下对数组的这样的使用默认会执行从1开始,因此用0和1下标效果是一样的。
帮你这样改好了
VARIABLE:kk[30]=0; //你应该有个良好的使用习惯,数组在使用前先初始化
fc:=close;//定义一个序列变量,相当于是一个数组
fl:=low;
fh:=high;
fo:=open;
r:=1;
for i=datacount downto datacount-30 do //遍历前30根K线
BEGIN
my_low:=fl[i];
my_open:=fo[i];
my_close:=fc[i];
my_high:=fh[i];
if my_close>my_open then
BEGIN
kk[r]:=fc[i];
r:=r+1;
END;
END;
kk_1:kk[1];
kk_2:kk[2];