- 精华
- 0
- 在线时间
- 312 小时
- UID
- 4613
- 积分
- 953
- 帖子
- 162
- 阅读权限
- 60
- 注册时间
- 2009-6-10
- 最后登录
- 2019-3-30
- 精华
- 0
- UID
- 4613
- 积分
- 953
- 帖子
- 162
- 主题
- 37
- 阅读权限
- 60
- 注册时间
- 2009-6-10
- 最后登录
- 2019-3-30
|
这几天在测试异常情况的时候,让我发现了个问题,我觉得这个问题可能还是一个BUG,还请管理员再看看。具体情况如下:
BUG名称:倒数第二根BAR在BarStatus == 1的时候还是有可能会往外发单
前提:所有的交易指令用的都是buy sell系列,不存在Q,A函数与buy sell指令混用的情况
如果收盘前的最后一个BAR有信号并发单,收盘后再重新进入,最后一个BAR的信号就消失了,这时一开盘,新的tick一来,这个BAR变成倒数第二个BAR,但仍然会被执行一遍,但除了显示信号外,还会往外发单。
这种情况在非收盘前的最后一个BAR也有同样的问题,比如某个BAR上产生信号且发单,然后假设TB宕掉重新启动,这时在刚才那个BAR上肯定会再发单,不过我们可以通过程序来控制此时不发单。但一旦当前的BAR执行完,变成倒数第二个BAR的时候,程序一旦不控制,还是会往外发单。
不过我发现,如果当前BAR产生信号后,只要信号不消失,当它变成倒数第二根BAR的时候是不会发单的。我想这应该是管理员说BarStatus==1的时候不会发单的缘故。
所以这个BUG就是BarStatus == 1的时候,在倒数第二个BAR上还是有可能会重复发单的。个人觉得不管在什么情况下,只要是BarStatus == 1,就一定不能发单,否则正常时候不出错,一旦有异常,比如关闭后重新运行就会有问题。 |
|