争分夺秒的意思是什么:趋势画线预警压力线放量突破之飞狐、大智慧、通达信源码

来源:百度文库 编辑:中财网 时间:2024/04/29 22:10:51
一、通达信的,源码如下:
  1、趋势画线预警
HIGHN:=10;LOWN:=10;HIGHDISPLAY:=0;LOWDISPLAY:=0;ZGDISPLAY:=0;MADISPLAY:=0;
AA:=REF(H,HIGHN)=HHV(H,2*HIGHN+1);
QY:=BACKSET(AA,HIGHN+1);
CC:=FILTER(QY,HIGHN) AND H=HHV(H,HIGHN+1);
DDD:=BARSLAST(CC);
GDTS:=IF(CC,CURRBARSCOUNT,0);
DINGBU:=IF(DDD,REF(H,DDD),H);{顶部}
DINGBUTS:=IF(DDD,REF(GDTS,DDD),GDTS);
DINGBU1:=REF(DINGBU,DDD+1);
GDCS1:=CONST(DINGBUTS);
DINGBUTS1:=REF(DINGBUTS,DDD+1);
GDCS2:=CONST(DINGBUTS1);
DINGBU2:=REF(DINGBU1,DDD+1);
MM:=IF(CURRBARSCOUNT>GDCS2,0,1);
高点压力:=DRAWLINE(CURRBARSCOUNT=GDCS2,H,CURRBARSCOUNT=GDCS1,H,1);
压力线选股:CROSS(C,高点压力);
   2、成交量放大(如果直接用成交量的话,经合前面的画线预警,可能股价已经涨很高了,所以用虚拟量来做变量)
虚拟量:=IF(CURRBARSCOUNT=1 AND PERIOD=5,VOL*240/FROMOPEN,DRAWNULL);
量突破:虚拟量>REF(V,1);
   3、组合前面趋势线及后面的成交量放大,确定其有效性。
   HIGHN:=10;LOWN:=10;HIGHDISPLAY:=0;LOWDISPLAY:=0;ZGDISPLAY:=0;MADISPLAY:=0;
AA:=REF(H,HIGHN)=HHV(H,2*HIGHN+1);
QY:=BACKSET(AA,HIGHN+1);
CC:=FILTER(QY,HIGHN) AND H=HHV(H,HIGHN+1);
DDD:=BARSLAST(CC);
GDTS:=IF(CC,CURRBARSCOUNT,0);
DINGBU:=IF(DDD,REF(H,DDD),H);{顶部}
DINGBUTS:=IF(DDD,REF(GDTS,DDD),GDTS);
DINGBU1:=REF(DINGBU,DDD+1);
GDCS1:=CONST(DINGBUTS);
DINGBUTS1:=REF(DINGBUTS,DDD+1);
GDCS2:=CONST(DINGBUTS1);
DINGBU2:=REF(DINGBU1,DDD+1);
MM:=IF(CURRBARSCOUNT>GDCS2,0,1);
高点压力:=DRAWLINE(CURRBARSCOUNT=GDCS2,H,CURRBARSCOUNT=GDCS1,H,1);
虚拟量:=IF(CURRBARSCOUNT=1 AND PERIOD=5,VOL*240/FROMOPEN,DRAWNULL);
量突破:=虚拟量>REF(V,1);
选股:CROSS(C,高点压力) and 量突破;

二、大智慧的,思路及代码来自于西天取金老师,同时有一个问题,就是预警没有问题,但盘后直接选股会出错,我解决不了。
   1、趋势画线预警代码:
input: N(5,1,100);{调整参数,能取得不同的效果哟,大家可以试试}
A1:=ref(h,N)=hhv(h,2*N+1);
B1:=filter(A1,N);
C1:=backset(B1,N+1);
D1:=filter(C1,n);{高点}
A2:=ref(l,N)=llv(l,2*N+1);
B2:=filter(A2,N);
C2:=backset(B2,N+1);
D2:=filter(C2,N);{低点}
E1:=(ref(llv(l,2*N),1)+ref(hhv(h,2*N),1))/2; E2:=(h+l)/2;{高低点出现在同一K线上时可作取舍}
H1:=(D1 AND not(D2 AND E1>=E2)) OR barstatus=2 OR barscount(c)=1;
L1:=(D2 AND not(D1 AND E1=E2);
X1:=ref(barslast(H1),1)+1; F1:=backset(H1 AND count(L1,X1)>0,llvbars
(if(L1,l,10000),X1));
G1:=F1>ref(F1,1); I1:=backset(G1,2); LD:=I1>ref(I1,1);{过滤后低点}
L2:=LD OR barstatus=2 OR barscount(c)=1;
X2:=ref(barslast(L2),1)+1; F2:=backset(L2 AND count(H2,X2)>0,hhvbars
(if(H2,h,0),X2));
G2:=F2>ref(F2,1); I2:=backset(G2,2); HD:=I2>ref(I2,1);{过滤后高点}
R1:=backset(barstatus=2,barslast(HD)+1);
S1:=R1>ref(R1,1); {前一高}
T1:=backset(barstatus=2,barslast(LD)+1);
U1:=T1>ref(T1,1); {前一低}
R2:=backset(S1,ref(barslast(HD),1)+2);
S2:=R2>ref(R2,1); {前二高}
T2:=backset(U1,ref(barslast(LD),1)+2);
U2:=T2>ref(T2,1); {前二低}
HH1:=if(s2,H,ref(H,BARSLAST(s2)));
HH2:=if(s1,H,ref(H,BARSLAST(s1)));
LL1:=if(u2,l,ref(l,BARSLAST(u2)));
LL2:=if(u1,l,ref(l,BARSLAST(u1)));
上线:=HH1+(HH2-HH1)*BARSLAST(s2)/(BARSLAST(s2)-BARSLAST(s1));{这两句就是趋势线能预警的核心代码}
下线:=LL1+(LL2-LL1)*BARSLAST(U2)/(BARSLAST(U2)-BARSLAST(u1));
安破:cross(c,上线) and 上线
   2、成交量大于前一天,同样用虚拟量,理由在前面通达信中,已经说明
T日:=if(CURRENTTIME>93000 and CURRENTTIME<150000,
if(CURRENTTIME<113000,(TIMETOT0(CURRENTTIME)-34200),
if(CURRENTTIME>130000,(TIMETOT0(CURRENTTIME)-39600),7200)),14400);
T60:=if(MOD(T日,3600)=0,3600,MOD(T日,3600));
T30:=if(MOD(T日,1800)=0,1800,MOD(T日,1800));
T15:=if(MOD(T日,900)=0,900,MOD(T日,900));
T5:=if(MOD(T日,300)=0,300,MOD(T日,300));
T1:=if(MOD(T日,60)=0,60,MOD(T日,60));
TT:=if(DATATYPE=8,vol*14400/ T日,
if(DATATYPE=7,vol*3600/T60,
if(DATATYPE=6,vol*1800/T30,
if(DATATYPE=5,vol*900/T15,
if(DATATYPE=4,vol*300/T5,
if(DATATYPE=4,vol*60/T1,0))))));
量:=IF(BARSTATUS=2,TT,0);
放大:量>ref(v,1);

3、组合预警公式,不需要的可以只使用前面的趋势线预警。
input: N(5,1,100);{调整参数,能取得不同的效果哟,大家可以试试}
A1:=ref(h,N)=hhv(h,2*N+1);
B1:=filter(A1,N);
C1:=backset(B1,N+1);
D1:=filter(C1,n);{高点}
A2:=ref(l,N)=llv(l,2*N+1);
B2:=filter(A2,N);
C2:=backset(B2,N+1);
D2:=filter(C2,N);{低点}
E1:=(ref(llv(l,2*N),1)+ref(hhv(h,2*N),1))/2; E2:=(h+l)/2;{高低点出现在同一K线上时可作取舍}
H1:=(D1 AND not(D2 AND E1>=E2)) OR barstatus=2 OR barscount(c)=1;
L1:=(D2 AND not(D1 AND E1=E2);
X1:=ref(barslast(H1),1)+1; F1:=backset(H1 AND count(L1,X1)>0,llvbars
(if(L1,l,10000),X1));
G1:=F1>ref(F1,1); I1:=backset(G1,2); LD:=I1>ref(I1,1);{过滤后低点}
L2:=LD OR barstatus=2 OR barscount(c)=1;
X2:=ref(barslast(L2),1)+1; F2:=backset(L2 AND count(H2,X2)>0,hhvbars
(if(H2,h,0),X2));
G2:=F2>ref(F2,1); I2:=backset(G2,2); HD:=I2>ref(I2,1);{过滤后高点}
R1:=backset(barstatus=2,barslast(HD)+1);
S1:=R1>ref(R1,1); {前一高}
T1:=backset(barstatus=2,barslast(LD)+1);
U1:=T1>ref(T1,1); {前一低}
R2:=backset(S1,ref(barslast(HD),1)+2);
S2:=R2>ref(R2,1); {前二高}
T2:=backset(U1,ref(barslast(LD),1)+2);
U2:=T2>ref(T2,1); {前二低}
HH1:=if(s2,H,ref(H,BARSLAST(s2)));
HH2:=if(s1,H,ref(H,BARSLAST(s1)));
LL1:=if(u2,l,ref(l,BARSLAST(u2)));
LL2:=if(u1,l,ref(l,BARSLAST(u1)));
上线:=HH1+(HH2-HH1)*BARSLAST(s2)/(BARSLAST(s2)-BARSLAST(s1));{这两句就是趋势线能预警的核心代码}
下线:=LL1+(LL2-LL1)*BARSLAST(U2)/(BARSLAST(U2)-BARSLAST(u1));
T日:=if(CURRENTTIME>93000 and CURRENTTIME<150000,
if(CURRENTTIME<113000,(TIMETOT0(CURRENTTIME)-34200),
if(CURRENTTIME>130000,(TIMETOT0(CURRENTTIME)-39600),7200)),14400);
T60:=if(MOD(T日,3600)=0,3600,MOD(T日,3600));
T30:=if(MOD(T日,1800)=0,1800,MOD(T日,1800));
T15:=if(MOD(T日,900)=0,900,MOD(T日,900));
T5:=if(MOD(T日,300)=0,300,MOD(T日,300));
T1:=if(MOD(T日,60)=0,60,MOD(T日,60));
TT:=if(DATATYPE=8,vol*14400/ T日,
if(DATATYPE=7,vol*3600/T60,
if(DATATYPE=6,vol*1800/T30,
if(DATATYPE=5,vol*900/T15,
if(DATATYPE=4,vol*300/T5,
if(DATATYPE=4,vol*60/T1,0))))));
预量:=IF(BARSTATUS=2,TT,0);
放大:=预量>ref(v,1);
放量突破:cross(c,上线) and 上线
三、飞狐的
   1、趋势画线预警代码
input: N(5,1,100);
A1:=ref(h,N)=hhv(h,2*N+1);
B1:=filter(A1,N);
C1:=backset(B1,N+1);
D1:=filter(C1,n);{高点}
A2:=ref(l,N)=llv(l,2*N+1);
B2:=filter(A2,N);
C2:=backset(B2,N+1);
D2:=filter(C2,N);{低点}
E1:=(ref(llv(l,2*N),1)+ref(hhv(h,2*N),1))/2; E2:=(h+l)/2;{高低点出现在同一K线上时可作取舍}
H1:=(D1 AND not(D2 AND E1>=E2)) OR barstatus=2 OR barscount(c)=1;
L1:=(D2 AND not(D1 AND E1=E2);
X1:=ref(barslast(H1),1)+1; F1:=backset(H1 AND count(L1,X1)>0,llvbars
(if(L1,l,10000),X1));
G1:=F1>ref(F1,1); I1:=backset(G1,2); LD:=I1>ref(I1,1);{过滤后低点}
L2:=LD OR barstatus=2 OR barscount(c)=1;
X2:=ref(barslast(L2),1)+1; F2:=backset(L2 AND count(H2,X2)>0,hhvbars
(if(H2,h,0),X2));
G2:=F2>ref(F2,1); I2:=backset(G2,2); HD:=I2>ref(I2,1);{过滤后高点}
R1:=backset(barstatus=2,barslast(HD)+1);
S1:=R1>ref(R1,1); {前一高}
T1:=backset(barstatus=2,barslast(LD)+1);
U1:=T1>ref(T1,1); {前一低}
R2:=backset(S1,ref(barslast(HD),1)+2);
S2:=R2>ref(R2,1); {前二高}
T2:=backset(U1,ref(barslast(LD),1)+2);
U2:=T2>ref(T2,1); {前二低}
压力线:=LINEVALUE(S2,最高价,S1,最高价,0,1);{不知道是哪个老师教过我的,这个统计函数,谢谢}
cross(c,压力线);

2、成交量放大
交易分钟数:=if(CURRENTTIME>93000 and CURRENTTIME<150000,
if(CURRENTTIME<113000,(TIMETOT0(CURRENTTIME)-34200)/60,
if(CURRENTTIME>130000,(TIMETOT0(CURRENTTIME)-39600)/60,120)),240);
日期差:=DATEDIFF(DATE,CURRENTDATE);
预量:=IF(BARSTATUS=2 and 日期差=0,VOL/交易分钟数*240,VOL);
量突破:预量>ref(v,1);

3、组合预警,不需要放量的可以只用前面的趋势线预警指标
input: N(5,1,100);
A1:=ref(h,N)=hhv(h,2*N+1);
B1:=filter(A1,N);
C1:=backset(B1,N+1);
D1:=filter(C1,n);{高点}
A2:=ref(l,N)=llv(l,2*N+1);
B2:=filter(A2,N);
C2:=backset(B2,N+1);
D2:=filter(C2,N);{低点}
E1:=(ref(llv(l,2*N),1)+ref(hhv(h,2*N),1))/2; E2:=(h+l)/2;{高低点出现在同一K线上时可作取舍}
H1:=(D1 AND not(D2 AND E1>=E2)) OR barstatus=2 OR barscount(c)=1;
L1:=(D2 AND not(D1 AND E1=E2);
X1:=ref(barslast(H1),1)+1; F1:=backset(H1 AND count(L1,X1)>0,llvbars
(if(L1,l,10000),X1));
G1:=F1>ref(F1,1); I1:=backset(G1,2); LD:=I1>ref(I1,1);{过滤后低点}
L2:=LD OR barstatus=2 OR barscount(c)=1;
X2:=ref(barslast(L2),1)+1; F2:=backset(L2 AND count(H2,X2)>0,hhvbars
(if(H2,h,0),X2));
G2:=F2>ref(F2,1); I2:=backset(G2,2); HD:=I2>ref(I2,1);{过滤后高点}
R1:=backset(barstatus=2,barslast(HD)+1);
S1:=R1>ref(R1,1); {前一高}
T1:=backset(barstatus=2,barslast(LD)+1);
U1:=T1>ref(T1,1); {前一低}
R2:=backset(S1,ref(barslast(HD),1)+2);
S2:=R2>ref(R2,1); {前二高}
T2:=backset(U1,ref(barslast(LD),1)+2);
U2:=T2>ref(T2,1); {前二低}
压力线:=LINEVALUE(S2,最高价,S1,最高价,0,1);{不知道是哪个老师教过我的,这个统计函数,谢谢}
交易分钟数:=if(CURRENTTIME>93000 and CURRENTTIME<150000,
if(CURRENTTIME<113000,(TIMETOT0(CURRENTTIME)-34200)/60,
if(CURRENTTIME>130000,(TIMETOT0(CURRENTTIME)-39600)/60,120)),240);
日期差:=DATEDIFF(DATE,CURRENTDATE);
预量:=IF(BARSTATUS=2 and 日期差=0,VOL/交易分钟数*240,VOL);
量突破:预量>ref(v,1);
cross(c,压力线) and 量突破;