VeighNa量化社区
你的开源社区量化交易平台 | vn.py | vnpy
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
加入于:
帖子: 4452
声望: 343

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