MCPcopy Create free account
hub / github.com/shidenggui/easyquant / MainEngine

Class MainEngine

easyquant/main_engine.py:29–268  ·  view source on GitHub ↗

主引擎,负责行情 / 事件驱动引擎 / 交易

Source from the content-addressed store, hash-verified

27
28
29class MainEngine:
30 """主引擎,负责行情 / 事件驱动引擎 / 交易"""
31
32 def __init__(self, broker=None, need_data=None, quotation_engines=None,
33 log_handler=DefaultLogHandler(), tzinfo=None):
34 """初始化事件 / 行情 引擎并启动事件引擎
35 """
36 self.log = log_handler
37 self.broker = broker
38
39 # 登录账户
40 if (broker is not None) and (need_data is not None):
41 self.user = easytrader.use(broker)
42 need_data_file = pathlib.Path(need_data)
43 if need_data_file.exists():
44 self.user.prepare(need_data)
45 else:
46 log_handler.warn("券商账号信息文件 %s 不存在, easytrader 将不可用" % need_data)
47 else:
48 self.user = None
49 self.log.info('选择了无交易模式')
50
51 self.event_engine = EventEngine()
52 self.clock_engine = ClockEngine(self.event_engine, tzinfo)
53
54 quotation_engines = quotation_engines or [DefaultQuotationEngine]
55
56 if type(quotation_engines) != list:
57 quotation_engines = [quotation_engines]
58 else:
59 types = [quo.EventType for quo in quotation_engines]
60 if len(types) != len(set(types)):
61 types.sort()
62 types = ','.join([str(t) for t in types])
63 raise ValueError("行情引擎 EventType 重复:" + types)
64 self.quotation_engines = []
65 for quotation_engine in quotation_engines:
66 self.quotation_engines.append(quotation_engine(self.event_engine, self.clock_engine))
67
68 # 保存读取的策略类
69 self.strategies = OrderedDict()
70 self.strategy_list = list()
71
72 # 是否要动态重载策略
73 self.is_watch_strategy = False
74 # 修改时间缓存
75 self._cache = {}
76 # # 文件进程映射
77 # self._process_map = {}
78 # 文件模块映射
79 self._modules = {}
80 self._names = None
81 # 加载锁
82 self.lock = Lock()
83 # 加载线程
84 self._watch_thread = Thread(target=self._load_strategy, name="MainEngine.watch_reload_strategy")
85
86 # shutdown 函数

Callers 2

unitest_demo.pyFile · 0.90
setUpMethod · 0.90

Calls

no outgoing calls

Tested by 1

setUpMethod · 0.72