-- 作者:如海
-- 发布时间:2010/9/1 8:59:58
-- 多周期k线指标,求助!飞狐公式转换
哪位高手有多周期k线指标,主要用于1-60分钟的,为了避免使用未来函数。求助!
飞狐上的源码,无法转换,求高手编写。
INPUT:周期(0,0,10),自选(1,1,1000); n:=YEAR>ref(YEAR,1)or barpos=1; j1:=cross(MONTH>=1 and MONTH<=3,0.5); j2:=cross(MONTH>=4 and MONTH<=6,0.5); j3:=cross(MONTH>=7 and MONTH<=9,0.5); j4:=cross(MONTH>=10 and MONTH<=12,0.5); j:=(j1+j2+j3+j4)or barpos=1; y:=MONTH<>ref(MONTH,1)or barpos=1; z:=datediff(ref(date,1),date)<>weekday-ref(weekday,1) or barpos=1; r:=day<>ref(day,1)or barpos=1; f:=INTPART(TIME/100)LINETHICK; fs:=sum(f>ref(f,1)or BARPOS=1,0)-1; w1:=f>ref(f,1)or BARPOS=1; lx:=DATATYPE,COLORWHITE,LINETHICK0; lx1:=DATATYPE+周期,COLORWHITE,LINETHICK0; w2:=if(自选=1,w1,cross(0.5,mod(fs,自选)=0)); s:=BARPOS; fb:=if(lx=0 and lx1=0,w1, if(lx=0 and lx1=1,cross(0.5,mod(fs,5)=0), if(lx=0 and lx1=2,cross(0.5,mod(fs,15)=0), if(lx=0 and lx1=3,cross(0.5,mod(fs,30)=0), if(lx=0 and lx1=4,cross(0.5,mod(fs,60)=0),w2))))); f1:=if(lx=1 and lx1=1,mod(s,5)=1, if(lx=1 and lx1=2,mod(s,15)=1, if(lx=1 and lx1=3,mod(s,30)=1, if(lx=1 and lx1=4,mod(s,60)=1,mod(s,自选+1)=1)))); f5:=if(lx=2 and lx1=2,mod(s,3)=1, if(lx=2 and lx1=3,mod(s,6)=1, if(lx=2 and lx1=4,mod(s,12)=1, if(lx=2 and lx1=5,r,mod(s,自选+1)=1)))); f15:=if(lx=3 and lx1=3,mod(s,2)=1, if(lx=3 and lx1=4,mod(s,4)=1, if(lx=3 and lx1=5,r, if(lx=3 and lx1=6,z,mod(s,自选+1)=1)))); f30:=if(lx=4 and lx1=4,mod(s,2)=1, if(lx=4 and lx1=5,r, if(lx=4 and lx1=6,z, if(lx=4 and lx1=7,y,mod(s,自选+1)=1)))); f60:=if(lx=5 and lx1=5,r, if(lx=5 and lx1=6,z, if(lx=5 and lx1=7,y, if(lx=5 and lx1=8,j,mod(s,自选+1)=1)))); r:=if(lx=6 and lx1=6,z, if(lx=6 and lx1=7,y, if(lx=6 and lx1=8,j, if(lx=6 and lx1=9,n,mod(s,自选+1)=1)))); z:=if(lx=7 and lx1=7,y, if(lx=7 and lx1=8,j, if(lx=7 and lx1=9,n,mod(s,自选+1)=1))); y:=if(lx=8 and lx1=8,j, if(lx=8 and lx1=9,n,mod(s,自选+1)=1)); x:=if(lx=0,fb,if(lx=1,f1,if(lx=2,f5,if(lx=3,f15,if(lx=4,f30,if(lx=5,f60, if(lx=6,r,if(lx=7,z,if(lx=8,y,0)))))))));
fba:=if(lx=0 and lx1=0,\'1分钟\', if(lx=0 and lx1=1,\'5分钟\', if(lx=0 and lx1=2,\'15分钟\', if(lx=0 and lx1=3,\'30分钟\', if(lx=0 and lx1=4,\'60分钟\',\'自选\'+NUMTOSTR(自选,0)+\'分钟\'))))); f1a:=if(lx=1 and lx1=1,\'5分钟\', if(lx=1 and lx1=2,\'15分钟\', if(lx=1 and lx1=3,\'30分钟\', if(lx=1 and lx1=4,\'60分钟\',\'自选\'+NUMTOSTR(自选+1,0)+\'分钟\')))); f5a:=if(lx=2 and lx1=2,\'15分钟\', if(lx=2 and lx1=3,\'30分钟\', if(lx=2 and lx1=4,\'60分钟\', if(lx=2 and lx1=5,\'日线\',\'自选\'+NUMTOSTR((自选+1)*5,0)+\'分钟线\')))); f15a:=if(lx=3 and lx1=3,\'30分钟\', if(lx=3 and lx1=4,\'60分钟\', if(lx=3 and lx1=5,\'日线\', if(lx=3 and lx1=6,\'周线\',\'自选\'+NUMTOSTR((自选+1)*15,0)+\'分钟线\')))); f30a:=if(lx=4 and lx1=4,\'60\', if(lx=4 and lx1=5,\'日线\', if(lx=4 and lx1=6,\'周线\', if(lx=4 and lx1=7,\'月线\',\'自选\'+NUMTOSTR((自选+1)*30,0)+\'分钟线\')))); f60a:=if(lx=5 and lx1=5,\'日线\', if(lx=5 and lx1=6,\'周线\', if(lx=5 and lx1=7,\'月线\', if(lx=5 and lx1=8,\'季线\',\'自选\'+NUMTOSTR((自选+1)*60,0)+\'分钟线\')))); ra:=if(lx=6 and lx1=6,\'周线\', if(lx=6 and lx1=7,\'月线\', if(lx=6 and lx1=8,\'季线\', if(lx=6 and lx1=9,\'年线\',\'自选\'+NUMTOSTR(自选+1,0)+\'周期日线\')))); za:=if(lx=7 and lx1=7,\'月线\', if(lx=7 and lx1=8,\'季线\', if(lx=7 and lx1=9,\'年线\',\'自选\'+NUMTOSTR(自选+1,0)+\'周期周线\'))); ya:=if(lx=8 and lx1=8,\'季线\', if(lx=8 and lx1=9,\'年线\',\'自选\'+NUMTOSTR(自选+1,0)+\'周期月线\')); x1:=if(lx=0,fba,if(lx=1,f1a,if(lx=2,f5a,if(lx=3,f15a,if(lx=4,f30a,if(lx=5,f60a, if(lx=6,ra,if(lx=7,za,if(lx=8,ya,\'0\')))))))));
zq:=x,COLORWHITE; zqs:=sum(zq,0); fzqs:=zqs[DATACOUNT]-zqs; fks:=DATACOUNT-BARPOS; t:=sumbars(zq,1); t1:=sumbars(zq,fks-fzqs); km:=BACKSET(ISLASTBAR and zq=1,2); t2:=if(km,0,t1);t22:=LBOUND(t2); oo:=ref(o,t-1); hh:=hhv(h,t); ll:=llv(l,t); vv:=sum(v,t); jh:=sum(AMOUNT,t);
时间:=if(ISLASTBAR,f,ref(f,t2)),LINETHICK0,PRECISION0,COLORWHITE; 开:ref(oo,t2),LINETHICK0,PRECISION2,COLORBDBEBD; 高:if(ISLASTBAR,hh,ref(hh,t2)),LINETHICK0,PRECISION2,COLORBDBEBD; 低:if(ISLASTBAR,ll,ref(ll,t2)),LINETHICK0,PRECISION2,COLORBDBEBD; 收:if(ISLASTBAR,c,ref(c,t2)),LINETHICK0,PRECISION2,COLORBDBEBD; 量:if(ISLASTBAR,vv,ref(vv,t2)),LINETHICK0,PRECISION2,COLORBDBEBD; 额:if(ISLASTBAR,jh,ref(jh,t2)),LINETHICK0,PRECISION2,COLORBDBEBD; 换:量*100/CAPITAL,LINETHICK0,PRECISION2,COLORBDBEBD; 振:(高-低)/ref(收,1)*100,LINETHICK0,PRECISION2,COLORBDBEBD; 涨〔:PARTLINE(0,0),COLORBDBEBD; 收-ref(收,1),LINETHICK0,PRECISION2,COLORBDBEBD; 〕:PARTLINE(0,0),COLORBDBEBD; 收/ref(收,1)*100-100,LINETHICK0,PRECISION2,COLORBDBEBD; %:PARTLINE(0,0),COLORBDBEBD; k:=收>开 or 收=开 and 收>ref(收,1); STICKLINE(k,低,高,0.1,1),colorred; STICKLINE(k,收,开,7,1),colorred; STICKLINE(not(k),低,高,0.1,0),colorcyan; STICKLINE(not(k),收,开,7,0),colorcyan;
a1:=if(ISLASTBAR,YEAR,ref(YEAR,t2)),LINETHICK;; b1:=if(ISLASTBAR,MONTH,ref(MONTH,t2)),LINETHICK; c1:=if(ISLASTBAR,day,ref(day,t2)),LINETHICK; d1:=if(ISLASTBAR,weekday,ref(weekday,t2)),LINETHICK; a2:=0*c;b2:=0*c;c2:=0*c;d2:=0*c;时间1:=0*c; kw:=if(s>LBOUND(t2),1,0);xr:=HOUR; for i=1 to datacount do begin if kw[i] then begin a2[i]:=a1[i]; b2[i]:=b1[i]; c2[i]:=c1[i]; d2[i]:=d1[i]; 时间1[i]:=时间[i]; end; end; p:=SYSPARAM(1); g:=时间1[p]/100; g1:=INTPART(g)COLORWHITE; xq:=if(d2[p]=1,\'一\',if(d2[p]=2,\'二\',if(d2[p]=3,\'三\',if(d2[p]=4,\'四\',if(d2[p]=5,\'五\',\'0\'))))); sz:=NUMTOSTR(a2[p],0)+\'年\'+\'/\'+NUMTOSTR(b2[p],0)+\'月\'+\'/\'+NUMTOSTR(c2[p],0)+\'日\'+\'/\'+NUMTOSTR(g1,0)+\':\'+STRRIGHT(NUMTOSTR(时间1[p],0),2)+\' \'+\'星期\'+xq; DRAWTEXTEX(1,0,0,0,\'当前周期∶\'+x1+\' \'+sz),ALIGN4,COLORBDBEBD;
|