以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  撤单问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=175050)

--  作者:haizxj
--  发布时间:2020/3/19 14:44:48
--  撤单问题
ZL:=\'srX05\'; //主力合约
CZL:=\'srX09\';//次主力合约
AH:=40;
AL:=20;
BH:=10;
BL:=30;
ZLDJ:=DYNAINFO2(28,ZL); //主力买价
ZLKJ:=DYNAINFO2(34,ZL); //主力卖价
ZLDL:=DYNAINFO2(25,ZL); //主力买量
ZLKL:=DYNAINFO2(31,ZL); //主力卖量
CZLDJ:=DYNAINFO2(28,CZL); //次主力买价
CZLKJ:=DYNAINFO2(34,CZL); //次主力卖价
CZLDL:=DYNAINFO2(25,ZL);  //次主力买量
CZLKL:=DYNAINFO2(31,ZL); //次主力卖量
BDD:=TBUYHOLDINGEX(\'\',CZL,2); //次主力多单
AKD:=TSELLHOLDINGEX(\'\',ZL,2); //主力空单
ZLWKK:=TISREMAINEX(3,\'\',ZL); //主力未成交开空
ZLWPK:=TISREMAINEX(4,\'\',ZL); //主力未成交平空
CZLWDK:=TISREMAINEX(2,\'\',CZL);//次主力未成交平多
CZLWDK:=TISREMAINEX(1,\'\',ZL); //次主力未成交开多
CZLWPK:=TISREMAINEX(4,\'\',CZL); //次主力未成交平空
//CZLWPK:=TISREMAINEX(4,\'\',ZL); //主力未成交平空
CZLWDK:=TISREMAINEX(2,\'\',CZL);//次主力未成交平多
//平空
COND3:=c<=AL;
TSELLSHORT(COND3 AND AKD<>0,AKD,LMT,ZLDJ);
//有未成交平空单且历时5s以上
IF ZLWPK<>0 AND TSUBMITEX(4,\'\',ZL)>5 THEN
BEGIN
 TCANCELEX(1,4,\'\',ZL);
 //TSELLSHORT(1,ZLWPK,MKT);
 TSELLSHORT(1,s,MKT);
END

//开空
COND1:=ZLKL/ZLDL>=N;
COND2:=c>=AH;
IF COND1 AND COND2 AND THOLDING=0 THEN
//IF COND1 AND COND2 AND AKD=0 THEN
//TBUYSHORT(1,S,LMT,ZLDJ);
TBUYSHORT(1,S,LMT,C);
//有未成交开空单且历史5s以上
IF ZLWKK<>0 AND TSUBMITEX(3,\'\',ZL)>5 THEN
BEGIN
 TCANCELEX(ZLWKK<>S,3,\'\',ZL);
 TCANCELEX(BDD=0 AND ZLWKK=S,3,\'\',ZL);
 IF BDD<>0 AND  ZLWKK=S THEN
 BEGIN
  TCANCELEX(1,3,\'\',ZL);
  TBUYSHORT(1,S,MKT);
 END
END 
//平多
COND5:=c>=BL;
TSELL(BDD<>0,BDD,LMT,CZLDJ);
IF CZLWDK<>0 AND TSUBMITEX(2,\'\',ZL)>5 THEN
BEGIN
 TCANCELEX(1,2,\'\',ZL);
 //TSELL(1,CZLWDK,MKT);
 TSELL(1,s,MKT);
END
//开多
COND6:=ZLKL/ZLDL>=N;
COND7:=C<=BH;
IF COND6 AND COND7 AND THOLDING=0 THEN
//IF COND6 AND COND7 AND BDD=0 THEN
//TBUY(1,S,LMT,CZLKJ);
TBUY(1,S,LMT,C);
//有未成交开多单且历史5s以上
IF CZLWDK<>0 AND TSUBMITEX(1,\'\',CZL)>5 THEN
BEGIN
 TCANCELEX(CZLWDK<>S,1,\'\',CZL);
 TCANCELEX(AKD=0 AND CZLWDK=S,1,\'\',CZL);
 IF AKD<>0 AND  CZLWDK=S THEN
 BEGIN
  TCANCELEX(1,1,\'\',CZL);
  TBUY(1,S,MKT);
 END
END 

发现只开05合约,09一开就平仓,我是秒询,监控里有5,9合约

--  作者:FireScript
--  发布时间:2020/3/19 14:59:39
--  
必须明确下是代码里面具体哪个平单语句触发的。用DEBUGFILE把控制的条件输出来,才能进一步排查问题。

加几条输出语句 把控制条件输出下。


[此贴子已经被作者于2020/3/23 9:25:25编辑过]

--  作者:haizxj
--  发布时间:2020/3/21 15:11:32
--  
还是不怎么会,能不能帮修改一下


--  作者:haizxj
--  发布时间:2020/3/21 19:16:04
--  
现在问题可能是,当时有未成交的限价单,
成交后又被 撤单了

--  作者:wenarm
--  发布时间:2020/3/22 22:07:49
--  
成交后又被 撤单了???  都成交了,还怎么撤单的?
 
发现只开05合约,09一开就平仓,我是秒询,监控里有5,9合约
09一开就平仓。指的还是挂单就撤?
 
劳烦您再把出现的现象描述细致点。(还有这个代码需要实现的目的)
 
 
[此贴子已经被作者于2020/3/22 22:17:00编辑过]

--  作者:FireScript
--  发布时间:2020/3/23 9:24:46
--  
BDD:=TBUYHOLDINGEX(\'\',CZL,2); //次主力多单
bdd的定义是这样的。

那么下面这里:

 //平多
COND5:=c>=BL;
TSELL(BDD<>0,BDD,LMT,CZLDJ);

你这里这个条件等于是09有仓位就直接平的逻辑了啊。
[此贴子已经被作者于2020/3/23 9:27:38编辑过]