import importlib
_modules = {}
custom_folder = 'custom_strategies'
imp_class = 'Strategy'
def new_module(module_name):
return importlib.import_module('.' + module_name, custom_folder)
def load_strategy_class(code: str, name: str):
"""
加载策略文件
:param code:
:param name:
:return:
"""
with open(custom_folder + "/" + name + ".py", 'w', encoding='utf8') as file:
file.write(code)
file.close()
if name in _modules:
strategy_module = _modules.get(name)
strategy_module = importlib.reload(strategy_module)
else:
strategy_module = new_module(name)
return getattr(strategy_module, imp_class)
if __name__ == '__main__':
code = open('strategies/example.py', encoding='utf8').read()
strategy_module_cls = load_strategy_class(code, 'test')
print(strategy_module_cls)