你好,我在代码中使用挂单超过N秒重新挂单的模块来执行无限次追单的功能(不是金字塔系统自带的追单功能),但是为什么只会进行2次的追单,第三次追单就只撤单,撤完挂单以后就不再挂单了,代码部分如下,应该不会是代码问题,不然第一次撤单都不会执行了。这个是为什么?
是否金字塔对开平仓函数的执行机制有限制呢?
if TSUBMIT(0)>挂单N秒重挂 or ( (CURRENTTIME=090030 or CURRENTTIME=000030 ) and TREMAINQTY(0 , '','' )<>0 ) then //挂单超过N秒未成交完 ,按照现在排队价追单 或者在30秒时刻重新挂单 //limitr MARKET and TSUBMIT(0)=0
begin //
if TSUBMIT(4)>0 then
//原来挂什么单,撤单重新按照现在排队价挂
begin
未成交空平单数量:=TREMAINQTY(4 , '','' );
TCANCELex(1,4 ,'','' );
if Islastbar then begin
DEBUGFILE('D:\TEST.TXT' , '444444N秒重挂'&numtostr(未成交空平单数量,0),0); end;
while TREMAINQTY(4 , '','' )<>0 do done:=1;
tsellshort
(1, 未成交空平单数量,lmt,DYNAINFO( 28)),NODRAW;
end;
if TSUBMIT(2)>0 then
begin
未成交多平单数量:=TREMAINQTY(2 , '','' );
TCANCELex(1,2 ,'','' );
if Islastbar then begin
DEBUGFILE('D:\TEST.TXT' , '222222N秒重挂'&numtostr(未成交多平单数量,0),0); end;
while TREMAINQTY(2 , '','' )<>0 do done:=1;
tsell
(1, 未成交多平单数量,lmt,DYNAINFO( 34)),NODRAW;
end;
if TSUBMIT(3)>0 then
begin
未成交空开单数量:=TREMAINQTY(3 , '','' );
TCANCELex(1,3 ,'','' );
if Islastbar then begin
DEBUGFILE('D:\TEST.TXT' , '333333N秒重挂'&numtostr(未成交空开单数量,0),0); end;
while TREMAINQTY(3 , '','' )<>0 do done:=1;
tbuyshort
(1, 未成交空开单数量,lmt,DYNAINFO( 34)),NODRAW;
//TBUYHOLDINGEX('' ,'' , 2)=0
end;
if TSUBMIT(1)>0 then
begin
未成交多开单数量:=TREMAINQTY(1 , '','' );
TCANCELex(1,1 ,'','' );
if Islastbar then begin
DEBUGFILE('D:\TEST.TXT' , '111111N秒重挂'&numtostr(未成交多开单数量,0),0); end;
while TREMAINQTY(1 , '','' )<>0 do done:=1;
tbuy
(1, 未成交多开单数量,lmt,DYNAINFO( 28)),NODRAW;
//TSELLHOLDINGEX('' ,'' ,2 )=0
end;
if Islastbar then begin
DEBUGFILE('D:\TEST.TXT' , 'O
追单 撤单情况 TSUBMIT(1):'&numtostr(TSUBMIT(1),0)&' TSUBMIT(2):'&numtostr(TSUBMIT(2),0)&' TSUBMIT(3):'&numtostr(TSUBMIT(3),0)&' TSUBMIT(4):'&numtostr(TSUBMIT(4),0),0);
DEBUGFILE('D:\TEST.TXT' , 'P
实际持仓===指定账户买持'&numtostr(TBUYHOLDINGEX('' ,'' , 2),0)&' 指定账户卖持'&numtostr(TSELLHOLDINGEX('' ,'' ,2 ),0),0);
DEBUGFILE('D:\TEST.TXT' , 'P
可用持仓===指定账户买持'&numtostr(TBUYHOLDINGEX('' ,'' , 1),0)&' 指定账户卖持'&numtostr(TSELLHOLDINGEX('' ,'' ,1 ),0),0);
end; //输出
end;