以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  [求助]设置价差追单  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=171517)

--  作者:D
--  发布时间:2019/8/7 22:00:50
--  [求助]设置价差追单
金字塔只提供时间追单,有没有可以设置价差追单的,达到多少价差再追单?
--  作者:banzhuan
--  发布时间:2019/8/8 8:44:31
--  
软件中追撤单功能已经考虑到报单价和现价价差的因素,只不过需要时间因素作为大前提; 单独用价差作为条件的没有,后台的话可以考虑用代码来实现
--  作者:D
--  发布时间:2019/8/8 9:20:28
--  
后台代码如何实现,请帮忙编写谢谢!
--  作者:banzhuan
--  发布时间:2019/8/8 9:56:36
--  
//监控未成交单
WCJ:=TREMAINQTY( 1, 账号,品种);
IF WCJ<>0 THEN BEGIN
A:=WCJ;
END

B:=TENTERPRICE - CLOSE//上次委托价和现价的价差

//价差大于10个价位,对未成交单撤单并追单
IF WCJ>0  AND B>10 THEN BEGIN
TCANCELEX(1,1,账号,品种);
TBUY(WCJ=0,A,MKT,0,账号品种);
END

--  作者:D
--  发布时间:2019/8/8 23:34:06
--  
ac:=\'628824\';//下单账户
B:=TENTERPRICE-CLOSE;//上次委托价和现价的价差
wt:=tremainqty(0,ac,stklabel);
buyhold:=tbuyholdingex(ac,stklabel,1);
sellhold:=tsellholdingex(ac,stklabel,1);
if wt>0.5 and B>10*MINDIFF then tcancelex(1,0,ac,stklabel);//如果用软件自带的撤单功能,这句删除。
if wt<0.5 then begin
 kc1:=max(cc628824,0)-buyhold;
 kc2:=abs(min(cc628824,0))-sellhold;
 if kc1<-0.5 then tsell(1,abs(kc1),mkt,0,0,ac),allowrepeat;
 if kc2<-0.5 then tsellshort(1,abs(kc2),mkt,0,0,ac),allowrepeat;
 if sellhold<0.5 and kc1>0.5 then tbuy(1,kc1,mkt,0,0,ac),allowrepeat;
 if buyhold<0.5  and kc2>0.5 then tbuyshort(1,kc2,mkt,0,0,ac),allowrepeat;
end


加载到后台的时候有的品种执行,有的品种不执行,看看这样写对不?

--  作者:gxx978
--  发布时间:2019/8/9 8:48:39
--  
从代码上看,未发现有逻辑错误。建议用debugfile函数,输出各个条件的值,来分析哪个条件不满足导致的不执行。