INPUT:N(240,0,999);
VARIABLE:i=0,j=0;
VARIABLE:M[]=0;
ll:=llv(l,N);
lll:=l;
a3:=BARSLAST(l=ll[datacount]);
b3:=datacount-a3;
j3:=1;
tm3:=999999;
for i3=b3[datacount]+1 to datacount do begin
k3:=(lll[i3]-ll[datacount])/j3;
if k3<tm3 then begin
tm3:=k3;
ts3:=J3;
end;
j3:=j3+1;
end;
B1:LINEVALUE(l=ll[datacount] and a3=0,l,BARPOS=datacount-a3[datacount]+ts3,l,0,0),color5454ff;
M:=B1;
q:=UBOUND(B1);//a3的下标
for i=1 to q do BEGIN
if M[i]>500 THEN BEGIN//数组被赋值的时候不要声明数组,要不然就会报错
U[j]:=M[i];//数组用大写
j:=j+1;
end;
end;
y:U+5;
这段程序是通道函数,其中B1是趋势线的一条斜线,我用数组把符合条件的内容付给y,但是数组U有时候有,有时候没有,请问这是什么情况啊?
B1是一条斜线,我想截取一部分,比方说B1是从100到200之间的一条斜线,150之前的部分不要,这时候就用到数组,把B1导入数组M,当M[i]>150的时候把数值导入到U数组中,然后把数组U付给y,画出一条直线,但是现在问题是数组U偶尔会有值,但是大部分情况下数组U根本就没有,我用调试一步步执行的,请问是什么情况出现这种问题?
数组U无法提前定义VARIABLE:U[]=0;系统会崩溃。
B1这条线具体是什么讲清楚点,然后具体要截取多少长的线?
INPUT:N(240,0,999);
hh:=hhv(h,N);
hhh:=h;
aa1:datacount,NODRAW;//返回当前k线数
aa:BARSLAST(h=hh[datacount]),NODRAW;
ba:datacount-aa,LINETHICK0;
ja:=1;
tm1:=999999;
for i1=ba[datacount]+1 to datacount do begin
k1:=(hh[datacount]-hhh[i1])/ja;
if k1<tm1 then begin
tm1:=k1;
ts1:=ja;
end;
ja:=ja+1;
end;
A1:LINEVALUE(h=hh[datacount] and aa=0,h,BARPOS=datacount-aa[datacount]+ts1,h,0,0),colorffff54;
cha:=hhv(abs(l-a1),aa);
A2:a1-cha[datacount],colorffff54;
AI:a1-cha[datacount]/2,colorffff54,LINEDASH;
ll:=llv(l,N);
lll:=l;
a3:=BARSLAST(l=ll[datacount]);
b3:=datacount-a3;
j3:=1;
tm3:=999999;
for i3=b3[datacount]+1 to datacount do begin
k3:=(lll[i3]-ll[datacount])/j3;
if k3<tm3 then begin
tm3:=k3;
ts3:=J3;
end;
j3:=j3+1;
end;
B1:LINEVALUE(l=ll[datacount] and a3=0,l,BARPOS=datacount-a3[datacount]+ts3,l,0,0),color5454ff;
chb:=hhv(abs(h-b1),a3);
b2:b1+chb[datacount],color5454ff;
bi:b1+chb[datacount]/2,color5454ff,LINEDASH;
B1是通道函数中的一条线,截取一条直线的一半
可以先定义U数组VARIABLE:U[500]=0,这时候是有U的值了,然后去掉这段代码,那么程序就正确显示出U的数值,关掉程序,再次应用于图,那么数组U又没了,真的很奇怪
在逐K线模式下对数组的转换操作,应该避免在循环语句中使用,因为可能会导致循环对数组数据积累而导致计算出错
可像8楼说的那样定义一个大数组,如果发现大小不够了,通过函数SETUBOUND扩充