以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 后台追单不成功分析 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=164216) |
-- 作者:wzsunshao -- 发布时间:2018/6/30 8:55:15 -- 后台追单不成功分析 下面分别是实盘后台撤单追单公式、程序化交易开平追设置,交易日志,请分析下最后没有追单的问题在哪里?公式和设置有没有错误 /////////////程序化交易开平追设置 下单40秒后未成交,10个变动价位追单,否则挂单不动 ///////监控未成交单//对未成交单撤单,并追单 未成交时:=TSUBMITEX(0,\'\',\'\'); if 未成交时>=50 then BEGIN WCJD:=TREMAINQTY(0,\'\',\'\'); kd:=TREMAINQTY(1,\'\',\'\'); pd:=TREMAINQTY(2,\'\',\'\'); kk:=TREMAINQTY(3,\'\',\'\'); pk:=TREMAINQTY(4,\'\',\'\'); IF WCJD>0 THEN BEGIN TCANCELEX(1,0,\'\',\'\'); tbuy(kd>0,WCJD,MKT,0,0,\'\',\'\'); tsell(pd>0,WCJD,MKT,0,0,\'\',\'\'); tbuyshort(kk>0,WCJD,MKT,0,0,\'\',\'\'); tsellshort(pk>0,WCJD,MKT,0,0,\'\',\'\'); 交易记录:=37; DEBUGFILE(\'E:\\TESTic11.TXT\',\'交易记录%.2f\',交易记录); DEBUGOUT(\'交易记录%.2f\',交易记录); END end //////////////信号记录 2018-06-29 13:00:05.923 交易记录37.00 ////////////////交易日志 2018-06-29 11:25:05.694 【后台】IC00 运行结束 2018-06-29 11:26:04.397 【后台】IC00 运行结束 2018-06-29 11:27:05.694 【后台】IC00 运行结束 2018-06-29 11:28:11.522 【后台】IC00 运行结束 2018-06-29 11:29:05.257 【后台】IC00 TSellShort 第 142 行 策略:<ic后台> 出现信号 2018-06-29 11:29:05.257 【后台】IC00 TSellShort 已成功触发下单操作 价格:5132.600098 数量:1 类型:0 账户: 品种:IC00 2018-06-29 11:29:05.257 【后台】实际账户持仓 1 2018-06-29 11:29:05.257 【后台】下单已发送 2018-06-29 11:29:05.257 【后台】IC00 运行结束 2018-06-29 11:29:05.257 【下单】IC07 价5132.600098 量1 买卖0 类型0 开平1 账户7888888 Formula 1 2018-06-29 11:29:05.257 【下单】确认报单已发送 ID=-2107764037 RefID = 3184 2018-06-29 11:29:05.272 【指令】收到回报指令 ID = -2107764037 RefID = 3184 2018-06-29 11:29:05.272 【回报】7888888 : IC1807 - 已报单 1 价格:5132.6 平 买 2018-06-29 11:29:05.272 【指令】收到回报指令 ID = -2107764037 RefID = 3184 2018-06-29 13:00:05.923 【后台】IC00 TCANCELEX 出现信号 类型:0 帐号: 2018-06-29 13:00:05.923 【后台】IC00 TSellShort 第 281 行 策略:<ic后台> 出现信号 2018-06-29 13:00:05.923 【后台】IC00 TSellShort 已成功触发下单操作 价格:0.000000 数量:1 类型:1 账户: 品种:IC00 2018-06-29 13:00:05.923 【后台】实际账户持仓 0 2018-06-29 13:00:05.923 【后台】IC00 运行结束 2018-06-29 13:00:05.938 【指令】收到回报指令 ID = -2107764037 RefID = 3184 2018-06-29 13:00:05.938 【指令】收到回报指令 ID = -2107764037 RefID = 3184 2018-06-29 13:00:05.954 【回报】7888888 : IC1807 - 已撤单 量:1 2018-06-29 13:01:05.689 【后台】IC00 运行结束 2018-06-29 13:02:05.766 【后台】IC00 运行结束 2018-06-29 13:03:05.329 【后台】IC00 运行结束 |
-- 作者:wzsunshao -- 发布时间:2018/6/30 9:09:19 -- 从交易日志里发现这两句就出现错误,没有得到账户持仓,实际上是有的 2018-06-29 13:00:05.923 【后台】IC00 TSellShort 已成功触发下单操作 价格:0.000000 数量:1 类型:1 账户: 品种:IC00 2018-06-29 13:00:05.923 【后台】实际账户持仓 0 /////另一时段交易日志 2018-06-29 14:24:05.287 【后台】IC00 运行结束 2018-06-29 14:25:06.272 【后台】IC00 运行结束 2018-06-29 14:26:07.569 【后台】IC00 运行结束 2018-06-29 14:27:07.366 【后台】IC00 TSellShort 第 142 行 策略:<ic后台> 出现信号 2018-06-29 14:27:07.366 【后台】IC00 TSellShort 已成功触发下单操作 价格:5194.600098 数量:1 类型:0 账户: 品种:IC00 2018-06-29 14:27:07.366 【后台】实际账户持仓 1 2018-06-29 14:27:07.366 【后台】下单已发送 2018-06-29 14:27:07.366 【后台】IC00 运行结束 2018-06-29 14:27:07.366 【下单】IC07 价5194.600098 量1 买卖0 类型0 开平1 账户781598888 Formula 1 2018-06-29 14:27:07.366 【下单】确认报单已发送 ID=-898006464 RefID = 3194 2018-06-29 14:27:07.382 【指令】收到回报指令 ID = -898006464 RefID = 3194 2018-06-29 14:27:07.382 【回报】7888888 : IC1807 - 已报单 1 价格:5194.6 平 买 2018-06-29 14:27:07.382 【指令】收到回报指令 ID = -898006464 RefID = 3194 2018-06-29 14:27:17.460 【指令】收到回报指令 ID = -898006464 RefID = 3194 2018-06-29 14:27:17.460 【指令】收到回报指令 ID = -898006464 RefID = 3194 2018-06-29 14:27:17.460 【指令】收到成交回报指令 REFID = 3194 vol = 1 2018-06-29 14:27:17.460 【回报】7888888 : IC1807 - 已成交 1 价格:5194.6 平 买 2018-06-29 14:28:07.429 【后台】IC00 运行结束 2018-06-29 14:29:07.336 【后台】IC00 运行结束 2018-06-29 14:30:05.446 【后台】IC00 运行结束 2018-06-29 14:31:08.509 【后台】IC00 运行结束 |
-- 作者:wenarm -- 发布时间:2018/7/1 14:15:38 -- 撤单指令发出到柜台回报是需要时间的,而你策略中在撤单后紧接着就发平仓指令了,此时还有有收到撤单成功的回报,可用仓位还是0.自然平仓失败 你日志中也能反馈出这一现象,撤单成功的回报晚于平空操作的动作。 处理方案:不要直接在撤单指令后面直接写追单指令,虽然逻辑上没问题,但是必须考虑柜台回报的时间。 应该是使用一个全局标志位,在撤单后进行标记,并且检测当前实际账户的可用持仓是否已经恢复(撤单成功后)再进行平仓 |
-- 作者:wzsunshao -- 发布时间:2018/7/2 7:12:23 -- 撤单指令后插入SLEEP指令能起作用吗?如 IF WCJD>0 THEN BEGIN TCANCELEX(1,0,\'\',\'\'); SLEEP(3000); TSELLSHORT(1,A4,MKT,0,0,zh1,pz1); [此贴子已经被作者于2018/7/2 7:13:41编辑过]
|
-- 作者:wenarm -- 发布时间:2018/7/2 7:30:17 -- 1不要使用sleep,它会造成金字塔整个策略运行的暂停。 2柜台回报时间间隔不确定,最好的方式就是我说之前的说的,撤单指令发出后,标记位记录和使用thbuyholingex等仓位函数检测当前是否存在可用持仓,两者都成立时在去发平仓指令
|
-- 作者:wzsunshao -- 发布时间:2018/7/2 11:55:10 -- 好,谢谢 |