以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 关于数组的问题 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=84468) |
-- 作者:mamakaa -- 发布时间:2015/8/26 16:34:15 -- 关于数组的问题 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有时候有,有时候没有,请问这是什么情况啊?
|
-- 作者:jinzhe -- 发布时间:2015/8/26 16:42:40 -- http://www.weistock.com/bbs/dispbbs.asp?BoardID=10&ID=30380&replyID=&skin=1 关于数组的问题你看下这个,如果不明白就讲下想法, |
-- 作者:mamakaa -- 发布时间:2015/8/26 16:52:17 -- B1是一条斜线,我想截取一部分,比方说B1是从100到200之间的一条斜线,150之前的部分不要,这时候就用到数组,把B1导入数组M,当M[i]>150的时候把数值导入到U数组中,然后把数组U付给y,画出一条直线,但是现在问题是数组U偶尔会有值,但是大部分情况下数组U根本就没有,我用调试一步步执行的,请问是什么情况出现这种问题? |
-- 作者:mamakaa -- 发布时间:2015/8/26 16:56:13 -- 数组U无法提前定义VARIABLE:U[]=0;系统会崩溃。 |
-- 作者:jinzhe -- 发布时间:2015/8/26 17:02:02 -- B1这条线具体是什么讲清楚点,然后具体要截取多少长的线? |
-- 作者:mamakaa -- 发布时间:2015/8/26 17:05:22 -- 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是通道函数中的一条线,截取一条直线的一半
|
-- 作者:jinzhe -- 发布时间:2015/8/26 17:11:55 -- 问题正在查,请耐心等待 |
-- 作者:mamakaa -- 发布时间:2015/8/26 17:18:47 -- 可以先定义U数组VARIABLE:U[500]=0,这时候是有U的值了,然后去掉这段代码,那么程序就正确显示出U的数值,关掉程序,再次应用于图,那么数组U又没了,真的很奇怪 |
-- 作者:every -- 发布时间:2015/8/27 9:02:50 -- 在逐K线模式下对数组的转换操作,应该避免在循环语句中使用,因为可能会导致循环对数组数据积累而导致计算出错 |
-- 作者:every -- 发布时间:2015/8/27 9:06:16 -- 可像8楼说的那样定义一个大数组,如果发现大小不够了,通过函数SETUBOUND扩充 |