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

我用的是1.4版本,一直用新版,这次穿透式监管也只是升级了ctpgateway。老版本大家都没碰到这种情况吗?
总是隔上十来次交易就来一次这种bug,这次是两个品种的self.pos同时出现多一倍的情况。没有全程人工盯盘,我一直没有抓住现场。就是ctpengine里的这点代码,怎么就出错呢?

----------------------------------------------------------------------

def processTradeEvent(self, event):
    """处理成交推送"""
    trade = event.dict_['data']

    if trade.vtOrderID in self.orderStrategyDict:
        strategy = self.orderStrategyDict[trade.vtOrderID]

        # 计算策略持仓
        if trade.direction == DIRECTION_LONG:
            strategy.pos += trade.volume
        else:
            strategy.pos -= trade.volume

        self.callStrategyFunc(strategy, strategy.onTrade, trade)

    # 更新持仓缓存数据
    if trade.vtSymbol in self.tickStrategyDict:
        posBuffer = self.posBufferDict.get(trade.vtSymbol, None)
        if not posBuffer:
            posBuffer = PositionBuffer()
            posBuffer.vtSymbol = trade.vtSymbol
            self.posBufferDict[trade.vtSymbol] = posBuffer
        posBuffer.updateTradeData(trade)            

#----------------------------------------------------------------------
Member
avatar
加入于:
帖子: 20
声望: 0

说错了,一直用的1.4老版

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

要加上这个吗?

过滤已经收到过的成交回报

if trade.vtTradeID in self.tradeSet:
    return
self.tradeSet.add(trade.vtTradeID)
Administrator
avatar
加入于:
帖子: 4228
声望: 241

可以加上过滤试试,另外1.4版本真的太老了,请升级2.0吧

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