Beispiel #1
0
 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)
Beispiel #2
0
 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
Beispiel #3
0
 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
Beispiel #4
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
Beispiel #5
0
 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}
Beispiel #6
0
 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}