[PEL] 复制代码
// 单策略监控品种的所有周期
QBX3_1M:SELFDATA('QBX3_1M');
QBX3_3M:SELFDATA('QBX3_3M');
QBX3_5M:SELFDATA('QBX3_5M');
QBX3_10M:SELFDATA('QBX3_10M');
QBX3_15M:SELFDATA('QBX3_15M');
QBX3_30M:SELFDATA('QBX3_30M');
QBX3_1H:SELFDATA('QBX3_1H');
VARIABLE:QBX3[7]:=(QBX3_1M,QBX3_3M,QBX3_5M,QBX3_10M,QBX3_15M,QBX3_30M,QBX3_1H);
VARIABLE:QBX3_DURATION[7]:=(60,180,300,600,900,1800,3600);
VARIABLE:SIG_PERIOD1[7]:=(22,22,22,22,22,22,22);
VARIABLE:SIG_NUM1[7]:=(3,5,5,10,10,15,30);
VARIABLE:SIG_DURATION1[7]:=(3,5,5,10,10,15,30);
VARIABLE:SIG_PERIOD2[7]:=(22,22,22,22,22,22,1);
VARIABLE:SIG_NUM2[7]:=(5,10,10,15,15,30,0);
VARIABLE:SIG_DURATION2[7]:=(5,10,10,15,15,30,60);
VARIABLE:SIG_PERIOD3[7]:=(22,22,22,22,22,1,3);
VARIABLE:SIG_NUM3[7]:=(10,15,15,30,30,0,0);
VARIABLE:SIG_DURATION3[7]:=(10,15,15,30,30,60,180);
SW5S_RANK:SELFDATA('SW5S_RANK');
SW1M_RANK:SELFDATA('SW1M_RANK');
SS:=1;
GLOBALVARIABLE:ORDER_DURATION:=0;
GLOBALVARIABLE:ZS:=C;
GLOBALVARIABLE:GBG:=C,GBD:=C;
平多条件:= DYNAINFO(34)=ZS;
平空条件:= DYNAINFO(28)=ZS;
IF GBD>ZS AND TBUYHOLDING(1)>0 THEN BEGIN
ZS:=GBD;
END
IF GBG<ZS AND TSELLHOLDING(1)>0 THEN BEGIN
ZS:=GBG;
END
IF 平多条件 AND TBUYHOLDING(1)>0 THEN TSELL(1,TBUYHOLDING(1),MKT);
IF 平空条件 AND TSELLHOLDING(1)>0 THEN TSELLSHORT(1,TSELLHOLDING(1),MKT);
FOR N=7 DOWNTO 1 DO
BEGIN
// X3>0
IF QBX3[N]>0 AND TBUYHOLDING(1)=0 THEN
BEGIN
// ----
SIG1:=#TICK_SIG.PULSE_2ND(SIG_DURATION3[N]*2,QBX3[N])#;
IF SIG1 THEN
BEGIN
TBUY(1,SS,LMT,DYNAINFO(28)+MINDIFF,0);
ZS:=CALLSTOCK('',VTLOW,SIG_PERIOD3[N],SIG_NUM3[N]);
ORDER_DURATION:=SIG_DURATION3[N];
GBD:=STKINDIEX('','GBDSX.GBD',0,SIG_PERIOD3[N],SIG_NUM3[N],300);
GBG:=STKINDIEX('','GBDSX.GBG',0,SIG_PERIOD3[N],SIG_NUM3[N],300);
BREAK;
END
// ----
SIG1:=#TICK_SIG.PULSE_2ND(SIG_DURATION2[N]*2,QBX3[N])#;
IF SIG1>0 AND SIG1*(QBX3_DURATION[N]/SIG_DURATION2[N])/QBX3[N]>2 THEN
BEGIN
TBUY(1,SS,LMT,DYNAINFO(28)+MINDIFF,0);
ZS:=CALLSTOCK('',VTLOW,SIG_PERIOD2[N],SIG_NUM2[N]);
ORDER_DURATION:=SIG_DURATION2[N];
GBD:=STKINDIEX('','GBDSX.GBD',0,SIG_PERIOD2[N],SIG_NUM1[N],300);
GBG:=STKINDIEX('','GBDSX.GBG',0,SIG_PERIOD2[N],SIG_NUM1[N],300);
BREAK;
END
// ----
SIG1:=#TICK_SIG.PULSE_2ND(SIG_DURATION1[N]*2,QBX3[N])#;
IF SIG1>0 AND SIG1*(QBX3_DURATION[N]/SIG_DURATION1[N])/QBX3[N]>2 THEN
BEGIN
TBUY(1,SS,LMT,DYNAINFO(28)+MINDIFF,0);
ZS:=CALLSTOCK('',VTLOW,SIG_PERIOD1[N],SIG_NUM1[N]);
ORDER_DURATION:=SIG_DURATION1[N];
GBD:=STKINDIEX('','GBDSX.GBD',0,SIG_PERIOD1[N],SIG_NUM1[N],300);
GBG:=STKINDIEX('','GBDSX.GBG',0,SIG_PERIOD1[N],SIG_NUM1[N],300);
BREAK;
END
END
// X3<0
IF QBX3[N]<0 AND TSELLHOLDING(1)=0 THEN
BEGIN
// ----
SIG1:=#TICK_SIG.PULSE_2ND(SIG_DURATION3[N]*3,ABS(QBX3[N]))#;
IF SIG1 THEN
BEGIN
TBUYSHORT(1,SS,LMT,DYNAINFO(34)-MINDIFF,0);
ZS:=CALLSTOCK('',VTHIGH,SIG_PERIOD3[N],SIG_NUM3[N]);
ORDER_DURATION:=SIG_DURATION3[N];
GBD:=STKINDIEX('','GBDSX.GBD',0,SIG_PERIOD3[N],SIG_NUM3[N],300);
GBG:=STKINDIEX('','GBDSX.GBG',0,SIG_PERIOD3[N],SIG_NUM3[N],300);
BREAK;
END
// ----
SIG1:=#TICK_SIG.PULSE_2ND(SIG_DURATION3[N]*2,ABS(QBX3[N]))#;
IF SIG1 THEN
BEGIN
TBUYSHORT(1,SS,LMT,DYNAINFO(34)-MINDIFF,0);
ZS:=CALLSTOCK('',VTHIGH,SIG_PERIOD2[N],SIG_NUM2[N]);
ORDER_DURATION:=SIG_DURATION2[N];
GBD:=STKINDIEX('','GBDSX.GBD',0,SIG_PERIOD2[N],SIG_NUM2[N],300);
GBG:=STKINDIEX('','GBDSX.GBG',0,SIG_PERIOD2[N],SIG_NUM2[N],300);
BREAK;
END
// ----
SIG1:=#TICK_SIG.PULSE_2ND(SIG_DURATION1[N]*2,ABS(QBX3[N]))#;
IF SIG1 THEN
BEGIN
TBUYSHORT(1,SS,LMT,DYNAINFO(34)-MINDIFF,0);
ZS:=CALLSTOCK('',VTHIGH,SIG_PERIOD1[N],SIG_NUM1[N]);
ORDER_DURATION:=SIG_DURATION1[N];
GBD:=STKINDIEX('','GBDSX.GBD',0,SIG_PERIOD1[N],SIG_NUM1[N],300);
GBG:=STKINDIEX('','GBDSX.GBG',0,SIG_PERIOD1[N],SIG_NUM1[N],300);
BREAK;
END
END
END
MSGOUT(ISLASTBAR=1,STKLABEL &' ' &NUMTOSTR(TBUYHOLDING(1),0)&' ' &NUMTOSTR(TBUYHOLDING(1),0));