一不小心点击了升级,程序升级到3.031版本,后台程序如下:
Xhold:=STKINDI('IF00','AC09BY07.Xholding',0 ,1, 0); //图表程序的虚拟持仓 ,在图表程序上是这样的 Xholding:=holding;
TBUF:=DYNAINFO(207)-(INTPART(DYNAINFO(207)/100)) *100,nodraw; //当前秒
Stime:tbuf,nodraw;
//实盘纠错
if STIME> 0 && STIME<=3 && Barstatus=2 then begin //每分钟开始3秒纠正仓位同步
//虚空实多
Pdprice:=DYNAINFO( 7)-0.2;
Tsell(Xhold<0 && Tholding>0,0,lmt,Pdprice);
KKprice:=DYNAINFO( 7)-0.2;
Tbuyshort(Xhold<0 && Tholding=0 ,1,lmt,KKprice);
// 虚多实空
Pkprice:=DYNAINFO( 7)+0.2;
TSELLSHORT(Xhold>0 && THOLDING<0 ,0,lmt,Pkprice);
KDprice:=DYNAINFO( 7)+0.2;
Tbuy(Xhold>0 && Tholding=0,1,lmt,Kdprice);
//不持仓
Pkprice:=DYNAINFO( 7)+0.2;
TSELLSHORT(Xhold=0 && THOLDING<0 ,0,lmt,Pkprice);
PDprice:=DYNAINFO( 7)+0.2;
Tsell(Xhold=0 && Tholding>0,0,lmt,Pdprice);
end
后台程序工作在5秒周期下,用机构版账号登录,在3.00版本下,程序运作正常,升级到3.031版本后,程序不正常,表现为不纠正仓位同步,比如:
图表虚拟持仓为零的时候,手动开多1手,按正常,下一个1分钟的前3秒会纠错,平仓,实际是:在3.00版本有平仓,在3.031版本不平仓。
请高手给予指点,是不是软件问题? 用另外一台电脑运行3.00版本,加载后也是正常。
您好,对应的用DEBUGOUT输出下HOLDING和THOLDING,对比看下是不是HOLDING的值引用不正常。
本地已经用您提供的上述部分代码测试没有问题,另仔细查看下是不是对应的设置有问题
VARIABLE:TRADEBEGIN:=91500;
VARIABLE:LASTTRADE:=145900;
VARIABLE:TRADECLOSE:=151400;
Ordvol:=1;
BN:=2.3;
Tradtime:= ((TIME >= TRADEBEGIN) && (time<=LASTTRADE));
M5A:=STKINDI('IF00','AC09T7.TEST',0 ,1, 0);//,colorred;
rfm5a:=ref(m5a,12);
M5BS:=STKINDI('IF00','AC09T7.BS',0 ,1, 0);//,colorgreen;
Xhold:=STKINDI('IF00','AC09BY07.Xholding',0 ,1, 0);
T5LC:=STKINDI('IF00','AC09T7.TLC',0 ,1, 0);
T5WD:=STKINDI('IF00','AC09BY07.WD',0 ,1, 0);
T5WK:=STKINDI('IF00','AC09BY07.WK',0 ,1, 0);
SSD:= cross(m5a,m5bs ) ; //
SSK:= cross(m5bs,m5a) ; //????
TBUF:=DYNAINFO(207)-(INTPART(DYNAINFO(207)/100)) *100,nodraw; //μ±?°??ê±??
Stime:tbuf,nodraw;
WinD:= (T5wd && Stime>=57);
WinK:= (T5wk && Stime>=57);
PDcond1:= ( SSD or (ref(ssd,1)) or (ref(ssd,2))or (ref(ssd,3))or (ref(ssd,4))or (ref(ssd,5))or (ref(ssd,6))or (ref(ssd,7))or (ref(ssd,8))or (ref(ssd,9))or (ref(ssd,10)) or (ref(ssd,11)) );
Pdcond2:= STIME>3;
Pdcond4:= ref(ssd,12);//????ì??t
PKcond1:=( SSK or (ref(ssK,1)) or (ref(ssK,2))or (ref(ssK,3))or (ref(ssK,4))or (ref(ssK,5))or (ref(ssK,6))or (ref(ssK,7))or (ref(ssK,8))or (ref(ssK,9))or (ref(ssK,10))or (ref(ssK,11)) );
PKcond2:= STIME>3 ;
Pkcond4:=ref(ssk,12);
跑多:= (PDcond1 && Pdcond2 && ref(LOW,1)< (rfm5a-0.1) && LOW< (rfm5a-0.3) && ((T5LC>=BN && Stime>3) or Stime>=58 )) or (Pdcond4 && Pdcond2 );
跑空:= (Pkcond1 && Pkcond2 && ref(high,1)>(rfm5a+0.1) && high>(rfm5a+0.3) && ((T5Lc>=BN && Stime>3)or Stime>=58) ) or ( Pkcond4 && Pkcond2);
if 跑多 then begin
Pdprice:=DYNAINFO( 7)-0.0;
TSELL(BARSTATUS=2 && THOLDING>0 ,0,lmt,Pdprice);
KKprice:=DYNAINFO( 7)-0.0;
TBUYSHORT( (BARSTATUS=2 && THOLDING=0 && Tradtime ),1,LMT,KKprice); //?′ê±?a2?
end
if 跑空 then begin
Pkprice:=DYNAINFO( 7)+0.0;
TSELLSHORT(BARSTATUS=2 && THOLDING<0 ,0,lmt,Pkprice);
KDprice:=DYNAINFO( 7)+0.0;
TBUY( (BARSTATUS=2 && THOLDING=0 && Tradtime),1,LMT,KDprice); //?′ê±?a2?
end
//极速止赢
if WinD then begin
Pdprice:=DYNAINFO( 7)-0.0;
TSELL(BARSTATUS=2 && THOLDING>0 ,0,lmt,Pdprice);
end
if WinK then begin
Pkprice:=DYNAINFO( 7)+0.0;
TSELLSHORT(BARSTATUS=2 && THOLDING<0 ,0,lmt,Pkprice);
end
//实盘纠正
if STIME> 0 && STIME<=3 && Barstatus=2 then begin //?aê?3??D£?y?ì2é2???
//**********************Dé??êμ?à£????à?a??
Pdprice:=DYNAINFO( 7)-0.2;
Tsell(Xhold<0 && Tholding>0,0,lmt,Pdprice);
KKprice:=DYNAINFO( 7)-0.2;
Tbuyshort(Xhold<0 && Tholding=0 ,1,lmt,KKprice);
//*********************Dé?àêμ??£??????a?à
Pkprice:=DYNAINFO( 7)+0.2;
TSELLSHORT(Xhold>0 && THOLDING<0 ,0,lmt,Pkprice);
KDprice:=DYNAINFO( 7)+0.2;
Tbuy(Xhold>0 && Tholding=0,1,lmt,Kdprice);
//*********************Dé??êμ3?2?£????à??
Pkprice:=DYNAINFO( 7)+0.2;
TSELLSHORT(Xhold=0 && THOLDING<0 ,0,lmt,Pkprice);
PDprice:=DYNAINFO( 7)+0.2;
Tsell(Xhold=0 && Tholding>0,0,lmt,Pdprice);
end
//?à?y3?2?êyá?
Tordvol:=Tholding;
TDC:=TBUYHOLDING(0);
TKC:=TSELLHOLDING(0);
if ( Tbuf<3 && Tbuf>0 && Barstatus=2) then begin //3·?ú?ùóD±¨μ¥
撤单:=TCANCEL(1,0);
Pdprice:=DYNAINFO( 7)-0.2;
Tsell(Tordvol>Xhold,(Tordvol-Xhold),lmt,Pdprice);
Tsell( (TDC>0 && Xhold<0),TDC,lmt,Pdprice);
Tsell( (TDC>0 && Xhold>0 && TDC > Xhold),(TDC-Xhold),lmt,Pdprice);
PKprice:=DYNAINFO( 7)+0.2;
Tsellshort(Tordvol<Xhold,(abs(Tordvol-Xhold)),lmt,Pkprice);
Tsellshort((Tkc<0 && Xhold>0), TKC,lmt,Pkprice);
Tsellshort((Tkc<0 && Xhold<0 && Tkc<Xhold), abs(Tkc-Xhold) ,lmt,Pkprice);
end
//2???êyá?3?3?
if ( abs(Tordvol)>1 ) then begin
撤单:=TCANCEL(abs(Tordvol)>1,0);
Pdprice:=DYNAINFO( 7)-0.2;
Tsell( (Xhold>0 && Tordvol>0 && Tordvol > Xhold),(Tordvol-Xhold),lmt,Pdprice);
PKprice:=DYNAINFO( 7)+0.2;
Tsellshort( (Tordvol<Xhold && Xhold<0 && Tordvol<0) ,(abs(Tordvol-Xhold)),lmt,Pkprice);
end
//ê??ì????è?2???2?
IF ((TIME >= TRADECLOSE) AND (THOLDING <> 0)) THEN BEGIN
IF (THOLDING < 0) THEN BEGIN
PKprice:=DYNAINFO( 7)+0.2;
TSELLSHORT(1,0,LMT,PKprice,1);
END
IF (THOLDING > 0) THEN BEGIN
PDprice:=DYNAINFO( 7)-0.2;
TSELL(1,0,LMT,PDprice,1);
END
END