以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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=173998) |
-- 作者:ebpart -- 发布时间:2020/1/15 14:47:08 -- [求助]求助撤单挂单的代码 求大神/版主帮我写一段后台代码: 我现在实现的时候,撤单可以撤成功,但是新开的限价单,也会立即被撤单。
|
-- 作者:FireScript -- 发布时间:2020/1/15 14:49:44 -- 你是不是撤单的方向指定有问题。通常你撤平仓单,不会把开仓的撤掉,除非你指定的方向是全部方向单子。 [此贴子已经被作者于2020/1/15 14:49:54编辑过]
|
-- 作者:ebpart -- 发布时间:2020/1/15 15:16:18 -- 我描述错了,重新写个条件: 当没有仓位的时候,市价买入多单,然后在1000限价挂单卖出平仓,假设某根K的开盘价小于800的时候,还没有成交,撤单,然后在900限价挂单卖出平仓。 这种情况下,就会出现新的挂单被撤。 我追踪记录,会出现,新的900的限价单挂出来后,因为撤单条件在K线走完前,仍然还是满足的,然后新的挂单被撤销了。但是900限价挂单,只能执行一次,并不会再次执行。 也就说,TCANCAL可以多次执行,挂单卖出平仓只能执行一次。最后的结果是新挂单也被撤销了。(刚刚那个超时撤单,因为新挂单后超时条件不会一直满足了,所以倒是没问题)
|
-- 作者:FireScript -- 发布时间:2020/1/15 15:33:07 -- 能否提供下你这部分的代码。在原先代码上进行校正会比较方便点。也能让我们更容易明确你的思路里面的细节。 |
-- 作者:ebpart -- 发布时间:2020/1/15 15:33:18 -- 备注:我这个只是特地弄个例子简单化描述 在我这个例子里,我知道可以通用全局变量来控制,比如,在900限价单挂单后设置一个全局变量为1,撤单条件增加全局变量检测,如果为1则不再进入撤单代码。 但是这样,在接下来的运行里,撤单条件不能再重复使用了
|
-- 作者:ebpart -- 发布时间:2020/1/15 15:34:42 -- 以下是引用FireScript在2020/1/15 14:49:44的发言:
我撤平仓单,新开的也是平仓单,变一下价格
你是不是撤单的方向指定有问题。通常你撤平仓单,不会把开仓的撤掉,除非你指定的方向是全部方向单子。 [此贴子已经被作者于2020/1/15 14:49:54编辑过]
|
-- 作者:FireScript -- 发布时间:2020/1/15 15:48:07 -- 那行。目前具体代码可能需要盘中我这边一遍测试一遍处理。有需要进一步了解的我会跟帖咨询你的。 |
-- 作者:ebpart -- 发布时间:2020/1/15 15:55:15 -- 当没有仓位的时候,市价买入多单,然后在1000限价挂单卖出平仓,假设某根K的开盘价小于800的时候,还没有成交,撤单,然后在900限价挂单卖出平仓 然后:假设某根K的开盘价小于800的时候,还没有成交,撤单 难点是:这个撤单条件,我需要重复使用,所以不能说只撤单一次,就不再使用。而是撤单完后,在下一根K线,还要使用
|
-- 作者:FireScript -- 发布时间:2020/1/15 16:05:17 -- 撤单的控制条件是未成交时间还是价格,还是说2个综合的。 |
-- 作者:FireScript -- 发布时间:2020/1/16 9:48:44 -- 你可以这样做。你要做的其实就是限制撤单条件在一个K上不要重复触发以避免对新开的平仓单也执行撤单。 你可以这样: if barpos>extgbdata(\'t\') and 撤单条件 then //用超全局变量记住barpos begin //这里写撤单语句 extgbdataset(\'t\',barpos);//重置超全局变量 end 第一种方式有一点不好,就是那个超全局变量下次运行程序化时候 上次的值还保留着,所以需要手动清除下。
[此贴子已经被作者于2020/1/16 9:59:11编辑过]
|