以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  为什么老提示数组越界?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=67693)

--  作者:qq代人发帖
--  发布时间:2014/7/22 15:51:10
--  为什么老提示数组越界?
 为什么老提示数组越界?
 
HH:=H;
LL:=L;
FOR I=2 TO DATACOUNT DO BEGIN


N1:=HH[I]>HH[I-1] AND LL[I]>LL[I-1];
N2:=HH[I]<HH[I-1] AND LL[I]<LL[I-1];
N3:=(HH[I]>=HH[I-1] AND LL[I]<=LL[I-1]) OR (HH[I]<=HH[I-1] AND LL[I]>=LL[I-1]);
IF N1 THEN BEGIN A[I]:=1;AA[I]:=1;END;
IF N2 THEN BEGIN A[I]:=2;AA[I]:=2;END;
IF N3 THEN BEGIN A[I]:=3;AA[I]:AA[I-1];END;

IF N3 THEN BEGIN 
IF AA[I-1]=1 THEN BEGIN 
HH[I]:=MAX(HH[I],HH[I-1]);
LL[I]:=MAX(LL[I],LL[I-1]);
END;
IF AA[I-1]=2 THEN BEGIN
HH[I]:=MIN(HH[I],HH[I-1]);
LL[I]:=MIN(LL[I],LL[I-1]);
END;
END;
END;

--  作者:心心之火
--  发布时间:2014/7/22 15:57:15
--  
有无老师给出一个正确的答案?
--  作者:FexTel
--  发布时间:2014/7/22 16:00:12
--  
AA[I-1]; 当I为2时,aa[1]没有定义
--  作者:心心之火
--  发布时间:2014/7/22 16:03:41
--  
请放大K线或者缩小K线,就有问题了,就是多读取些历史数据,就会有这个问题
--  作者:FexTel
--  发布时间:2014/7/22 16:04:39
--  
以下是引用FexTel在2014/7/22 16:00:12的发言:
AA[I-1]; 当I为2时,aa[1]没有定义

对AA[1]定义下,或者直接自行赋值


--  作者:心心之火
--  发布时间:2014/7/22 16:07:35
--  
我知道,自动赋值就不会有这个问题,但是我要表达的就是条件满足N3时,AA[I]自动返回前一个K线
--  作者:FexTel
--  发布时间:2014/7/22 16:13:35
--  

IF N1 THEN BEGIN A[I]:=1;AA[I]:=1;END;
IF N2 THEN BEGIN A[I]:=2;AA[I]:=2;END;
IF N3 THEN BEGIN A[I]:=3;AA[I]:AA[I-1];END;

 

您这个赋值根本无法定义AA[1]这一项,让你对AA[1]定义。aa数组中的第一个元素

[此贴子已经被作者于2014/7/22 16:16:15编辑过]