def init(self): for key, maxlen in self._cache_info.items(): symbol, timeframe = key if timeframe not in self._data: self._data[timeframe] = defaultdict(dict) if maxlen == 0: maxlen = self.CACHE_MAXLEN for field in ['open', 'high', 'low', 'close', 'datetime', 'timestamp', 'volume']: self._data[timeframe][field][symbol] = deque(maxlen=maxlen) self._engine.register_event(EVENT_SYMBOL_BAR_RAW[symbol][timeframe], self.on_bar)
def __init__(self, cache_info): self.info = cache_info self.open = deque(maxlen=self.info.length) self.high = deque(maxlen=self.info.length) self.low = deque(maxlen=self.info.length) self.close = deque(maxlen=self.info.length) self.volume = deque(maxlen=self.info.length) self.datetime = deque(maxlen=self.info.length) self.timestamp = deque(maxlen=self.info.length) self.tick_open = None
def init(self): for key, maxlen in self._cache_info.items(): symbol, timeframe = key if timeframe not in self._data: self._data[timeframe] = defaultdict(dict) if maxlen == 0: maxlen = self.CACHE_MAXLEN for field in ['open', 'high', 'low', 'close', 'datetime', 'timestamp', 'volume']: self._data[timeframe][field][symbol] = deque(maxlen=maxlen) if not self._is_backtest: self._engine.register_event(EVENT_SYMBOL_TICK_RAW[symbol], self.on_tick) else: self._engine.register_event(EVENT_SYMBOL_BAR_RAW[symbol][timeframe], self.on_bar) # TODO 这里只考虑了单品种情况 self._engine.register_event(EVENT_SYMBOL_BAR_COMPLETED[symbol][timeframe], self.on_next_bar) self._count = 0
def initialize(self): # TODO 数据结构还需修改 self.__deals.clear() self.__positions.clear() self.__data.clear() # TODO 这里的auto_inc是模块级别的,需要修改成对象级别的。 Deal.set_auto_inc(0) Position.set_auto_inc(0) self.__current_positions.clear() for (symbol, time_frame), maxlen in self.__symbols.items(): if symbol not in self.__data: self.__data[symbol] = {} if time_frame not in self.__data[symbol]: self.__data[symbol][time_frame] = {} if maxlen == 0: maxlen = self.CACHE_MAXLEN for field in ['open', 'high', 'low', 'close', 'time', 'volume']: self.__data[symbol][time_frame][field] = deque(maxlen=maxlen) if symbol not in self.__current_positions: position = Position(symbol) self.__current_positions[symbol] = position self.__initial_positions[symbol] = position self.__positions[position.get_id()] = position
def __init__(self, series_id, maxlen, *args): self.__id = series_id self.__bar_now = 0 self.series_args = {arg_name: deque([], maxlen) for arg_name in args}