以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5) ---- Order.CancelOrder问题 (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=151029) |
-- 作者:laotang250 -- 发布时间:2017/4/11 14:15:05 -- Order.CancelOrder问题 我在VBA程序里发现对于未成交的限价单不能通过这个方法撤消,而未成交的停损单可以,不知道为什么会这样?是有什么特别的讲究么? 代码如下: \'假如程序运行时rb00的市价为3000 order1 = Order.Buy(0,5,2900,0,"rb00","sq","",0) order2 = Order.Buy(2,5,3100,0,"rb00","sq","",0) Order.CancelOrder order1,"" Order.CancelOrder order2,"" |
-- 作者:laotang250 -- 发布时间:2017/4/11 14:18:44 -- 另外,我发现以上代码调用中,停损单返回的单号一般是个3位数字(例如543),而限价单是一个比较大的数字(例如:446657792),和这个有关系么?
|
-- 作者:王锋 -- 发布时间:2017/4/11 14:53:29 -- 直接委托后,单子还没等报到交易所下一句你就马上撤单,这样肯定是不行的。 你要将Order.CancelOrder order1 放到其他过程语句,建议等2秒后再撤单 |
-- 作者:laotang250 -- 发布时间:2017/4/11 20:34:00 -- 为了代码的紧凑,我只是写了个示例,我实际用的代码是开单后,用定时器延时了10秒才撤单的,但是限价单不成功,而停损单可以。可方便确认一下? |
-- 作者:马良 -- 发布时间:2017/4/11 23:20:23 -- 那建议你代码贴全,便于我们核实你说的问题 |
-- 作者:laotang250 -- 发布时间:2017/4/12 19:49:11 -- 我的问题解决了,这个函数没有问题。 原因我通过VBA的函数返回给PET公式调用的单号通过NUMTOSTR输出后和在VBA下调试看到的单号不一致,是这个问题,但是这个问题还没找到原因。对于停损单,单号是3位数字,这个传递过去没有问题,对于限价单,单号是9位数字,VBA中通过MSGOUT输出的和PET中通过NUMTOSTR转换后输出的不一致,9位数字的最后两位有差异,前面7位一致,不知道是不是PET内部单精度浮点数引起的问题。
|