以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 交易策略发布专区 (http://222.73.7.161/bbs/list.asp?boardid=10) ---- 【zzc_PEL】追撤单 (http://222.73.7.161/bbs/dispbbs.asp?boardid=10&id=170820) |
-- 作者:yukizzc -- 发布时间:2019/7/4 15:04:56 -- 【zzc_PEL】追撤单 追撤单的代码必须在后台实现,我们平时写的时候经常会出错,出错代码可以看我3楼的代码,那个应该大部人都是那样写的。但其实是不对的 我这里1楼给出一种写法,2楼给出对应的日志。三楼和四楼是错误代码,以及对应的下单日志,这样大家也可以看出为何那种写法会有问题吧 开仓条件:tbuyholding(1)=0; 平仓条件:tbuyholding(1)>0; //正常开平程序 if 开仓条件 then begin
tbuy(1,1,lmt,close-5*MINDIFF); end if 平仓条件 then BEGIN
tsell(1,1,lmt,close+5*MINDIFF); end //开仓的简单,撤单后直接再开就可以了 if TISPRVREMAIN(1)=1 and currenttime-TORDERTIME( 1,1 )>20 then BEGIN
TCANCEL(1,1);
tbuy(1,1,mkt); end //平仓时候,因为你撤单动作发出去,单子并不是立即解冻的,需要用一个全局变量去记录 //然后根据变量=1,表示执行过撤单了等下次轮训时候配合持仓大于0进行撤单 if TISPRVREMAIN(2)=1 and currenttime-TORDERTIME( 2,1 )>20 then BEGIN
TCANCEL(1,2);
EXTGBDATASET(STKLABEL,1); end if EXTGBDATA(STKLABEL)=1 and tbuyholding(1)>0 then begin
tsell(1,1,mkt);
EXTGBDATASET(STKLABEL,0); end [此贴子已经被作者于2019/7/4 15:19:59编辑过]
|
-- 作者:yukizzc -- 发布时间:2019/7/4 15:14:42 -- 2019-07-04 15:12:10.894 【后台】T00 TBuy 第 8 行 策略:<Formula103> 出现信号 2019-07-04 15:12:10.895 【后台】T00 TBuy 已成功触发下单操作 价格:98.174995 数量:1 类型:0 账户: 品种:T00 2019-07-04 15:12:10.896 【后台】下单已发送 2019-07-04 15:12:10.898 【后台】T00 运行结束 2019-07-04 15:12:10.899 【下单】T09 价98.174995 量1 买卖0 类型0 开平0 账户88 Formula 1 2019-07-04 15:12:10.900 【下单】已提交,订单ID :662294523 2019-07-04 15:12:10.913 【指令】收到回报指令 ID = 662294523 2019-07-04 15:12:10.921 【回报】88 : T09 - 已报单 1 价格:98.175 开 买 2019-07-04 15:12:10.922 【指令】收到回报指令 ID = 662294523 2019-07-04 15:12:10.922 【指令】收到Order回报指令 ID = 662294523 Status = 3 2019-07-04 15:12:31.096 【后台】T00 TCancel 出现信号 类型:1 2019-07-04 15:12:31.101 【后台】T00 TBuy 第 24 行 策略:<Formula103> 出现信号 2019-07-04 15:12:31.102 【后台】T00 TBuy 已成功触发下单操作 价格:0.000000 数量:1 类型:1 账户: 品种:T00 2019-07-04 15:12:31.103 【后台】下单已发送 2019-07-04 15:12:31.106 【后台】T00 运行结束 2019-07-04 15:12:31.106 【下单】T09 价0.000000 量1 买卖0 类型1 开平0 账户88 Formula 1 2019-07-04 15:12:31.107 【下单】已提交,订单ID :662294524 2019-07-04 15:12:31.126 【回报】88 : T09 10年国债1909 - 已撤单 量:1 2019-07-04 15:12:31.127 【指令】收到回报指令 ID = 662294523 2019-07-04 15:12:31.137 【指令】收到回报指令 ID = 662294524 2019-07-04 15:12:31.145 【回报】88 : T09 - 已报单 1 价格:98.225 开 买 2019-07-04 15:12:31.146 【指令】收到回报指令 ID = 662294524 2019-07-04 15:12:31.146 【指令】收到Order回报指令 ID = 662294524 Status = 3 2019-07-04 15:12:31.150 【指令】收到回报指令 ID = 662294524 2019-07-04 15:12:31.169 【指令】收到成交回报指令 ORDERID = 662294524 2019-07-04 15:12:31.175 【回报】88 : T1909 - 已成交 1 价格:98.210 开 买 2019-07-04 15:12:31.175 【回报】88 : T1909 - 全部成交 1 2019-07-04 15:12:31.203 【后台】T00 TSell 第 14 行 策略:<Formula103> 出现信号 2019-07-04 15:12:31.204 【后台】T00 TSell 已成功触发下单操作 价格:98.235001 数量:1 类型:0 账户: 品种:T00 2019-07-04 15:12:31.204 【后台】实际账户持仓 1 2019-07-04 15:12:31.205 【后台】下单已发送 2019-07-04 15:12:31.206 【后台】T00 运行结束 2019-07-04 15:12:31.206 【下单】T09 价98.235001 量1 买卖1 类型0 开平1 账户88 Formula 1 2019-07-04 15:12:31.207 【下单】已提交,订单ID :662294525 2019-07-04 15:12:31.220 【指令】收到回报指令 ID = 662294525 2019-07-04 15:12:31.227 【回报】88 : T09 - 已报单 1 价格:98.235 平 卖 2019-07-04 15:12:31.228 【指令】收到回报指令 ID = 662294525 2019-07-04 15:12:31.228 【指令】收到Order回报指令 ID = 662294525 Status = 3 2019-07-04 15:12:52.079 【后台】T00 TCancel 出现信号 类型:2 2019-07-04 15:12:52.080 【后台】T00 运行结束 2019-07-04 15:12:52.120 【回报】88 : T09 10年国债1909 - 已撤单 量:1 2019-07-04 15:12:52.131 【指令】收到回报指令 ID = 662294525 2019-07-04 15:12:52.175 【后台】T00 TSell 第 41 行 策略:<Formula103> 出现信号 2019-07-04 15:12:52.175 【后台】T00 TSell 已成功触发下单操作 价格:0.000000 数量:1 类型:1 账户: 品种:T00 2019-07-04 15:12:52.176 【后台】实际账户持仓 1 2019-07-04 15:12:52.176 【后台】下单已发送 2019-07-04 15:12:52.262 【后台】T00 运行结束 2019-07-04 15:12:52.262 【下单】T09 价0.000000 量1 买卖1 类型1 开平1 账户88 Formula 1 2019-07-04 15:12:52.265 【下单】已提交,订单ID :662294526 2019-07-04 15:12:52.271 【指令】收到回报指令 ID = 662294526 2019-07-04 15:12:52.282 【回报】88 : T09 - 已报单 1 价格:98.190 平 卖 2019-07-04 15:12:52.290 【指令】收到回报指令 ID = 662294526 2019-07-04 15:12:52.290 【指令】收到Order回报指令 ID = 662294526 Status = 3 2019-07-04 15:12:52.296 【后台】T00 运行结束 2019-07-04 15:12:52.300 【指令】收到回报指令 ID = 662294526 2019-07-04 15:12:52.316 【指令】收到成交回报指令 ORDERID = 662294526 2019-07-04 15:12:52.316 【指令】平仓计量 EBuy:0 ESell:0 2019-07-04 15:12:52.321 【回报】88 : T1909 - 已成交 1 价格:98.205 平 卖 2019-07-04 15:12:52.322 【回报】88 : T1909 - 全部成交 1 2019-07-04 15:12:52.413 【后台】T00 运行结束
|
-- 作者:yukizzc -- 发布时间:2019/7/4 15:16:43 -- //如果不做记录,直接撤单后马上追单,代码如下。 if TISPRVREMAIN(1)=1 and currenttime-TORDERTIME( 1,1 )>20 then BEGIN
TCANCEL(1,1);
tbuy(1,1,mkt); end if TISPRVREMAIN(2)=1 and currenttime-TORDERTIME( 2,1 )>20 then BEGIN
TCANCEL(1,2);
tsell(1,1,mkt); end |
-- 作者:yukizzc -- 发布时间:2019/7/4 15:21:26 -- 2019-07-04 15:09:47.044 【下单】已提交,订单ID :662294519 2019-07-04 15:09:47.056 【指令】收到回报指令 ID = 662294519 2019-07-04 15:09:47.099 【回报】88 : T09 - 已报单 1 价格:98.175 开 买 2019-07-04 15:09:47.100 【指令】收到回报指令 ID = 662294519 2019-07-04 15:09:47.101 【指令】收到Order回报指令 ID = 662294519 Status = 3 2019-07-04 15:10:00.025 【后台】T00 TCancel 出现信号 类型:1 2019-07-04 15:10:00.036 【后台】T00 TBuy 第 19 行 策略:<Formula103> 出现信号 2019-07-04 15:10:00.037 【后台】T00 TBuy 已成功触发下单操作 价格:0.000000 数量:1 类型:1 账户: 品种:T00 2019-07-04 15:10:00.038 【后台】下单已发送 2019-07-04 15:10:00.041 【后台】T00 运行结束 2019-07-04 15:10:00.041 【下单】T09 价0.000000 量1 买卖0 类型1 开平0 账户88 Formula 1 2019-07-04 15:10:00.041 【下单】已提交,订单ID :662294520 2019-07-04 15:10:00.056 【回报】88 : T09 10年国债1909 - 已撤单 量:1 2019-07-04 15:10:00.059 【指令】收到回报指令 ID = 662294519 2019-07-04 15:10:00.069 【指令】收到回报指令 ID = 662294520 2019-07-04 15:10:00.077 【回报】88 : T09 - 已报单 1 价格:98.220 开 买 2019-07-04 15:10:00.081 【指令】收到回报指令 ID = 662294520 2019-07-04 15:10:00.082 【指令】收到Order回报指令 ID = 662294520 Status = 3 2019-07-04 15:10:00.089 【指令】收到回报指令 ID = 662294520 2019-07-04 15:10:00.104 【指令】收到成交回报指令 ORDERID = 662294520 2019-07-04 15:10:00.110 【回报】88 : T1909 - 已成交 1 价格:98.205 开 买 2019-07-04 15:10:00.111 【回报】88 : T1909 - 全部成交 1 2019-07-04 15:10:00.135 【后台】T00 TSell 第 11 行 策略:<Formula103> 出现信号 2019-07-04 15:10:00.136 【后台】T00 TSell 已成功触发下单操作 价格:98.224998 数量:1 类型:0 账户: 品种:T00 2019-07-04 15:10:00.136 【后台】实际账户持仓 1 2019-07-04 15:10:00.136 【后台】下单已发送 2019-07-04 15:10:00.138 【后台】T00 运行结束 2019-07-04 15:10:00.138 【下单】T09 价98.224998 量1 买卖1 类型0 开平1 账户88 Formula 1 2019-07-04 15:10:00.139 【下单】已提交,订单ID :662294521 2019-07-04 15:10:00.156 【指令】收到回报指令 ID = 662294521 2019-07-04 15:10:00.165 【回报】88 : T09 - 已报单 1 价格:98.225 平 卖 2019-07-04 15:10:00.174 【指令】收到回报指令 ID = 662294521 2019-07-04 15:10:00.174 【指令】收到Order回报指令 ID = 662294521 Status = 3 2019-07-04 15:10:21.106 【后台】T00 TCancel 出现信号 类型:2 2019-07-04 15:10:21.107 【后台】T00 TSell 第 28 行 策略:<Formula103> 出现信号 2019-07-04 15:10:21.108 【后台】T00 TSell 已成功触发下单操作 价格:0.000000 数量:1 类型:1 账户: 品种:T00 2019-07-04 15:10:21.109 【后台】实际账户持仓 0 2019-07-04 15:10:21.110 【后台】T00 运行结束 2019-07-04 15:10:21.135 【回报】88 : T09 10年国债1909 - 已撤单 量:1 2019-07-04 15:10:21.139 【指令】收到回报指令 ID = 662294521 |
-- 作者:yukizzc -- 发布时间:2019/7/4 15:26:20 -- 四楼的日志,我们可以发现撤单后立即出发tsell指令时,发现持仓是0导致我们无法进行平仓,因为时间间隔只有 2019-07-04 15:10:21.106 【后台】T00 TCancel 出现信号 类型:2 2019-07-04 15:10:21.107 【后台】T00 TSell 第 28 行 策略:<Formula103> 出现信号 0.001秒太短了 二楼的日志我们可以看到 2019-07-04 15:12:52.079 【后台】T00 TCancel 出现信号 类型:2 2019-07-04 15:12:52.080 【后台】T00 运行结束 2019-07-04 15:12:52.120 【回报】88 : T09 10年国债1909 - 已撤单 量:1 2019-07-04 15:12:52.131 【指令】收到回报指令 ID = 662294525 2019-07-04 15:12:52.175 【后台】T00 TSell 第 41 行 策略:<Formula103> 出现信号 tsell的撤单动作是在回报已撤单之后,此时我们的仓位是可卖的状态,这个也是因为我们用exgbdata全局变量做记录加上判断可卖持仓大于0来完成。 |
-- 作者:yydkyet -- 发布时间:2019/12/4 16:27:55 -- 非常感谢版主的分享 |