def update_instrument(self, tick):
inst = tick.instID
curr_tick = tick.tick_id
if (self.instruments[inst].exchange == 'CZCE') and (self.instruments[inst].last_update == tick.tick_id) and \
((self.instruments[inst].volume < tick.volume) or (self.instruments[inst].ask_vol1 != tick.askVol1) or \
(self.instruments[inst].bid_vol1 != tick.bidVol1)):
if tick.tick_id % 10 < 5:
tick.tick_id += 5
tick.timestamp = tick.timestamp + datetime.timedelta(milliseconds=500)
self.tick_id = max(curr_tick, self.tick_id)
self.instruments[inst].up_limit = tick.upLimit
self.instruments[inst].down_limit = tick.downLimit
tick.askPrice1 = min(tick.askPrice1, tick.upLimit)
tick.bidPrice1 = max(tick.bidPrice1, tick.downLimit)
self.instruments[inst].last_update = curr_tick
self.instruments[inst].bid_price1 = tick.bidPrice1
self.instruments[inst].ask_price1 = tick.askPrice1
self.instruments[inst].mid_price = (tick.askPrice1 + tick.bidPrice1)/2.0
if (self.instruments[inst].mid_price > tick.upLimit) or (self.instruments[inst].mid_price < tick.downLimit):
return False
self.instruments[inst].bid_vol1 = tick.bidVol1
self.instruments[inst].ask_vol1 = tick.askVol1
self.instruments[inst].open_interest = tick.openInterest
last_volume = self.instruments[inst].volume
if tick.volume > last_volume:
self.instruments[inst].price = tick.price
self.instruments[inst].volume = tick.volume
self.instruments[inst].last_traded = curr_tick
if inst in self.inst2spread:
for spd_key in self.inst2spread[inst]:
self.spread_data[spd_key].update()
return True
评论列表
文章目录