vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 10
声望: 0

程序很普通:

            if self.pos == 0:
                if bar.close_price > self.day_open:
                    self.buy(self.long_entry, self.fixed_size, stop=True)
                else:
                    self.short(self.short_entry, self.fixed_size, stop=True)

但在10:30一秒之内成交两次,我交易的是ni2002,当时跳空高开急速拉升了一下

抱歉,截图发不上来,edge和chrome都试过了

是不是因为没有成交回报,就重复成交了呢?这种情况怎么避免?

Administrator
avatar
加入于:
帖子: 2463
声望: 104

10:30这个点因为是上午休息的结束点,所以有可能短时间触发两次分钟线更新,此时成交回报如果尚未收到确实会出现上述情况。

解决办法是每次下单后,记录委托号:

# 写在__init__里
self.vt_orderids = []

# 写在on_bar里
vt_orderids = self.buy(...)
self.vt_orderids.extend(vt_orderids)

# 然后每次下单前,加上判断
if self.vt_orderids:
    return

这样在尚未收到委托变化回报之前,都不会挂新的委托出去。

Member
avatar
加入于:
帖子: 10
声望: 0

谢谢回复并指导!

按大佬说的改,然后继续观察,毕竟我觉得这事挺大的

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3