vnpy/vn.trader/ctaStrategy/strategy/__init__.py
2017-05-03 18:03:17 +08:00

43 lines
1.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# encoding: UTF-8
'''
动态载入所有的策略类
'''
import os
import importlib
# 用来保存策略类的字典
STRATEGY_CLASS = {}
# 获取目录路径
path = os.path.abspath(os.path.dirname(__file__))
print 'init {0}'.format(path)
# 遍历strategy目录下的文件
for root, subdirs, files in os.walk(path):
for name in files:
# 只有文件名中包含strategy且非.pyc的文件才是策略文件
if 'strategy' in name and '.pyc' not in name:
# 模块名称需要上前缀
moduleName = 'ctaStrategy.strategy.' + name.replace('.py', '')
print 'loading {0}'.format(moduleName)
try:
# 使用importlib动态载入模块
module = importlib.import_module(moduleName)
except:
print 'load fail'
continue
# 遍历模块下的对象,只有名称中包含'Strategy'的才是策略类
for k in dir(module):
if 'Strategy' in k:
print 'adding {0} into STRATEGY_CLASS'.format(k)
v = module.__getattribute__(k)
STRATEGY_CLASS[k] = v
print 'finished load modules'