예제 #1
0
 def __init__(self, engine, code, parent=None):
     """Constructor"""
     super().__init__()
     LoggerInterface.__init__(self, parent=parent)
     APIInterface.__init__(self)
     Runnable.__init__(self)
     ConfigInterface.__init__(self, parent=parent)
     self.__id = self.next_auto_inc()
     self.user = self.config.user
     self.user_dir = UserDirectory(User(self.config.user))
     self.__strategy_code = StrategyCode(self.config.name, code)
     self.__code_parser = None
     self.engine = proxy(engine)
     self.time_frame = self.config.time_frame
     self.symbols = self.config.symbols
     self.start_time = self.config.start_time
     self.end_time = self.config.end_time
     self.capital_base = self.config.capital_base
     self.handlers = {}
     self.signal_factory = SignalFactory()
     self.signals = {}
     self.system_functions = {}
     self.series_storage = {}
     self.printer = FilePrinter(self.config.user, self.config.name,
                                self.engine)
     self.__context = {}
     self._setting()
     self.logger_name = "Strategy"
예제 #2
0
 def __init__(self,
              engine,
              user,
              name,
              code,
              symbols=None,
              time_frame=None,
              start_time=None,
              end_time=None):
     """Constructor"""
     self.__id = self.next_auto_inc()
     self.user = user
     self.user_dir = UserDirectory(user)
     self.name = name
     self.code = code
     self.engine = engine
     self.time_frame = time_frame
     self.symbols = symbols
     self.start_time = start_time
     self.end_time = end_time
     self.max_length = 0
     self.capital_base = 100000
     self.handlers = {}
     self.listeners = {}
     self.system_functions = {}
     self.series_storage = {}
     self.__printer = FilePrinter(user, name, self.engine)
     self.__context = {}
     # 是否完成了初始化
     self.trading = False
     # 在字典中保存Open,High,Low,Close,Volumn,CurrentBar,MarketPosition,
     # 手动为exec语句提供local命名空间
     self.__locals_ = dict(
         sell=partial(self.engine.sell, strategy=self.__id),
         short=partial(self.engine.short, strategy=self.__id),
         buy=partial(self.engine.buy, strategy=self.__id),
         cover=partial(self.engine.cover, strategy=self.__id),
         marketposition=self.engine.get_current_positions(),
         currentcontracts=self.engine.get_current_contracts(),
         data=self.engine.get_data,
         context=self.__context,
         export=partial(export, strategy=self),
         put=self.put_context,
         get=self.get_context,
         print=self.__printer.print,
         listeners=self.listeners,
         system_functions=self.system_functions,
     )
     # 将策略容器与对应代码文件关联
     self.bind_code_to_strategy(self.code)
예제 #3
0
파일: _strategy.py 프로젝트: ghotiv/Bigfish
 def __init__(self,
              engine,
              user,
              name,
              code,
              symbols=None,
              time_frame=None,
              start_time=None,
              end_time=None):
     """Constructor"""
     self.__id = self.next_auto_inc()
     self.user = user
     self.user_dir = UserDirectory(user)
     self.name = name
     self.code = code
     self.engine = proxy(engine)
     self.time_frame = time_frame
     self.symbols = symbols
     self.start_time = start_time
     self.end_time = end_time
     self.max_length = 0
     self.capital_base = 100000
     self.handlers = {}
     self.signal_factory = SignalFactory()
     self.signals = {}
     self.system_functions = {}
     self.series_storage = {}
     self.__printer = FilePrinter(user, name, self.engine)
     self.__context = {}
     self.__points = {}
     # 是否完成了初始化
     self.trading = False
     # 在字典中保存Open,High,Low,Close,Volumn,CurrentBar,MarketPosition,
     # 手动为exec语句提供globals命名空间
     self.__glb = {
         'Buy':
         partial(self.engine.open_position, strategy=self.__id,
                 direction=1),
         'Sell':
         partial(self.engine.close_position,
                 strategy=self.__id,
                 direction=1),
         'SellShort':
         partial(self.engine.open_position,
                 strategy=self.__id,
                 direction=-1),
         'BuyToCover':
         partial(self.engine.close_position,
                 strategy=self.__id,
                 direction=-1),
         'Positions':
         self.engine.current_positions,
         'Data':
         self.engine.data,
         'Context':
         self.__context,
         'Export':
         partial(export, strategy=self),
         'Put':
         self.put_context,
         'Get':
         self.get_context,
         'print':
         self.__printer.print,
         'Points':
         self.__points,
         'signals':
         self.signals,
         'system_functions':
         self.system_functions
     }
     # 将策略容器与对应代码文件关联
     self.bind_code_to_strategy(self.code)