金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 170|回复: 13

撤单后开平仓问题

[复制链接]

17

主题

63

帖子

63

积分

Rank: 4

等级: 专业版

注册:
2021-10-12
曾用名:
发表于 2024-12-23 13:59 | 显示全部楼层 |阅读模式
//开多未成交
IF TGLOBALSUBMITEX(1,'',STKLABEL ,1 )>=SEC  THEN BEGIN //如果有未成交单;未成交超过SEC秒
        TCANCELEX(1,1,'',STKLABEL);//撤单
        开多未成交数量:=TGLOBALSUBMITEX(1,'',STKLABEL,0 );
        TBUY(1,开多未成交数量,MKT,0,'','');
END


//平多未成交
IF TGLOBALSUBMITEX(2,'',STKLABEL ,1 )>=SEC  THEN BEGIN //如果有未成交单;未成交超过SEC秒
        TCANCELEX(1,2,'',STKLABEL);//撤单
        平多未成交数量:=TGLOBALSUBMITEX(2,'',STKLABEL,0 );
        TSELL(1,平多未成交数量,MKT,0,'','');
END


//开空未成交
IF TGLOBALSUBMITEX(3,'',STKLABEL ,1 )>=SEC  THEN BEGIN //如果有未成交单;未成交超过SEC秒
        TCANCELEX(1,3,'',STKLABEL);//撤单
        开空未成交数量:=TGLOBALSUBMITEX(3,'',STKLABEL,0 );
        TBUYSHORT(1,开空未成交数量,MKT,0,'','');
END


//平空未成交
IF TGLOBALSUBMITEX(4,'',STKLABEL ,1 )>=SEC  THEN BEGIN //如果有未成交单;未成交超过SEC秒
        TCANCELEX(1,4,'',STKLABEL);//撤单
        平空未成交数量:=TGLOBALSUBMITEX(4,'',STKLABEL,0 );
        TSELLSHORT(1,平空未成交数量,MKT,0,'','');
END


我使用上述代码实现未成交单撤单重新下单,撤销开多/开空未成交单后再下单开多/开空没有问题,但是撤销平多/平空未成交单后再次下单平多/平空却没有成功,这是怎么回事,请教如何解决?

回复

使用道具 举报

2

主题

4477

帖子

4477

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2024-12-23 14:15 | 显示全部楼层
因为你撤单也是需要和柜台进行通信的,这个过程是需要时间的。

而实际你的代码运行中,在你客户端和柜台通信完成前, 就已经执行了再次平仓的指令。

开仓没有影响是因为 你只要有资金就可以再开,但是平仓不一样,我必须有可用才能执行平仓,所以订单必须收到柜台撤单成功的回报才行。


可以考虑用全局变量做标记:
以平空为例:
[PEL] 复制代码
globalvariable:wt_pk:=0;

if tglobalsubmitex(4,'',stklabel ,1 )>=sec  then begin //如果有未成交单;未成交超过sec秒
        tcancelex(1,4,'',stklabel);//撤单
        wt_pk:=1;
end

if tsellholdingex('','',1)>0 and  wt_pk=1 then begin 
        tsellshort(1,0,mkt,0,'','');
        wt_pk:=0;
end



回复

使用道具 举报

17

主题

63

帖子

63

积分

Rank: 4

等级: 专业版

注册:
2021-10-12
曾用名:
 楼主| 发表于 2024-12-23 14:34 | 显示全部楼层
请问我要按照撤单的数量来再次开单,这个未成交单的数量怎么取值合适?(不是用0全平持仓)
回复

使用道具 举报

2

主题

4477

帖子

4477

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2024-12-23 14:43 | 显示全部楼层
可以用 全局变量记录下,就像上面那个wt_pk一样 在执行撤单时候 记录下来未成交的量。



回复

使用道具 举报

17

主题

63

帖子

63

积分

Rank: 4

等级: 专业版

注册:
2021-10-12
曾用名:
 楼主| 发表于 2024-12-24 10:13 | 显示全部楼层
实盘实验了一下,用这个方法在撤单不及时的时候仍然无法再次下单平多/平空,有没有其他方法实现呢,比如读取撤单成功后再下单,或者设置间隔时间。
回复

使用道具 举报

2

主题

4477

帖子

4477

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2024-12-24 10:23 | 显示全部楼层
目前没有其他方式了。撤单不及时是指什么?正常执行得话,我本地看都是正常的:
设置时间是10秒。可以检查下是不是什么地方弄错了。


或者你可以考虑用系统自带的追撤单功能试试。但是代码的撤单就要去掉,避免相互干扰。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

x
回复

使用道具 举报

17

主题

63

帖子

63

积分

Rank: 4

等级: 专业版

注册:
2021-10-12
曾用名:
 楼主| 发表于 2024-12-24 11:37 | 显示全部楼层
有个奇怪的现象,当我把多空未成交程序弄在一个程序里面的时候,平空未成交撤单后确实没有再下单,但是单独将平空未成交的代码弄成一个程序的时候又能再下单了
集成的账户未成交监控程序代码如下:
GLOBALVARIABLE:WT_PD:=0;PDLOTS:=0;WT_PK:=0;PKLOTS:=0;

//开多未成交
IF TGLOBALSUBMITEX(1,'',STKLABEL ,1 )>=SEC  THEN BEGIN //如果有未成交单;未成交超过SEC秒
        开多未成交数量:=TGLOBALSUBMITEX(1,'',STKLABEL,0 );
        TCANCELEX(1,1,'',STKLABEL);//撤单
        TBUY(1,开多未成交数量,MKT,0,'','');
END

//平多未成交
IF TGLOBALSUBMITEX(2,'',STKLABEL ,1 )>=SEC  THEN BEGIN //如果有未成交单;未成交超过SEC秒
        PDLOTS:=TGLOBALSUBMITEX(2,'',STKLABEL,0 );
        TCANCELEX(1,2,'',STKLABEL);//撤单
        WT_PD:=1;
//        TSELL(1,平多未成交数量,MKT,0,'','');
END

IF TBUYHOLDINGEX('','',1)>0 AND WT_PD=1 THEN BEGIN
        TSELL(1,PDLOTS,MKT,0,'','');
        WT_PD:=0;
        PDLOTS:=0;
END

//开空未成交
IF TGLOBALSUBMITEX(3,'',STKLABEL ,1 )>=SEC  THEN BEGIN //如果有未成交单;未成交超过SEC秒
        开空未成交数量:=TGLOBALSUBMITEX(3,'',STKLABEL,0 );
        TCANCELEX(1,3,'',STKLABEL);//撤单
        //        DEBUGFILE('D:\账户未成交监控.TXT',"开空未成交数量%.0F",未成交数量);
        TBUYSHORT(1,开空未成交数量,MKT,0,'','');
END

//平空未成交
IF TGLOBALSUBMITEX(4,'',STKLABEL ,1 )>=SEC  THEN BEGIN //如果有未成交单;未成交超过SEC秒
        PKLOTS:=TGLOBALSUBMITEX(4,'',STKLABEL,0 );
        TCANCELEX(1,4,'',STKLABEL);//撤单
        WT_PK:=1;
//        TSELLSHORT(1,平空未成交数量,MKT,0,'','');
END

IF TSELLHOLDINGEX('','',1)>0 AND WT_PK=1 THEN BEGIN
        TSELLSHORT(1,PKLOTS,MKT,0,'','');
        WT_PK:=0;
        PKLOTS:=0;
END
回复

使用道具 举报

17

主题

63

帖子

63

积分

Rank: 4

等级: 专业版

注册:
2021-10-12
曾用名:
 楼主| 发表于 2024-12-24 11:38 | 显示全部楼层
集成的账户未成交监控程序监控情况截图如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

x
回复

使用道具 举报

17

主题

63

帖子

63

积分

Rank: 4

等级: 专业版

注册:
2021-10-12
曾用名:
 楼主| 发表于 2024-12-24 11:39 | 显示全部楼层
单独的平空未成交程序如下(“账户未成交监控-平空”):
//2024-12-23

GLOBALVARIABLE:WT_PK:=0;PKLOTS:=0;

//平空未成交
IF TGLOBALSUBMITEX(4,'',STKLABEL ,1 )>=SEC  THEN BEGIN //如果有未成交单;未成交超过SEC秒
        PKLOTS:=TGLOBALSUBMITEX(4,'',STKLABEL,0 );
        TCANCELEX(1,4,'',STKLABEL);//撤单
        WT_PK:=1;
//        TSELLSHORT(1,平空未成交数量,MKT,0,'','');
END

IF TSELLHOLDINGEX('','',1)>0 AND WT_PK=1 THEN BEGIN
        TSELLSHORT(1,PKLOTS,MKT,0,'','');
        WT_PK:=0;
        PKLOTS:=0;
END
回复

使用道具 举报

17

主题

63

帖子

63

积分

Rank: 4

等级: 专业版

注册:
2021-10-12
曾用名:
 楼主| 发表于 2024-12-24 11:40 | 显示全部楼层

单独的平空未成交程序“账户未成交监控-平空”)监控截图如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-1-5 14:18 , Processed in 0.166567 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表