vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 11
声望: 1

我在 vnpy/ example 下 修改策略是没有用的吗?所有的东西运行都是anaconda 里面的vnpy, vnpy/example 文件里的策略是没有用的?

能帮我确认下吗?谢谢

Member
加入于:
帖子: 58
声望: 9

看看vnpy.trader.app.ctaStrategy.strategy 路径的init.py, 如下图,我加一个print;
读取是两个路径
一个是python.exe所在路径,一般就是anaconda的python.exe所在文件夹下的.py文件,包括文件夹的py文件。按照筛选条件,只有文件名中包含strategy且以.py结尾的文件,才是策略文件。
一个是被运行py文件的工作路径,就是比如你跑 “C:\Project...\examples\VnTrader\run.py"; 那么”C:\Project...\examples\VnTrader\“就是工作目录,这个目录中所有文件的py,只有文件名中包含strategy且以.py结尾的文件,才是策略文件。

所以只要把examples文件放在\VnTrader\中,就可以被调用了。

# 遍历strategy目录下的文件
path = os.path.abspath(os.path.dirname(__file__))
for root, subdirs, files in os.walk(path):
    for name in files:
        # 只有文件名中包含strategy且以.py结尾的文件,才是策略文件
        if 'strategy' in name and name[-3:] == '.py' and '/' not in name and '\\' not in name:
            # 模块名称需要模块路径前缀
            moduleName = 'vnpy.trader.app.ctaStrategy.strategy.' + name.replace('.py', '')
            loadStrategyModule(moduleName)


# 遍历工作目录下的文件
workingPath = os.getcwd()
print(workingPath) #显示workingPath
for root, subdirs, files in os.walk(workingPath):
    print("root: %s,subdirs: %s, files:%s" %(root, subdirs, files)) #显示遍历文件夹和文件
    for name in files:
        # 只有文件名中包含strategy且以.py结尾的文件,才是策略文件
        if 'strategy' in name and name[-3:] == '.py' and '/' not in name and '\\' not in name:
            # 模块名称无需前缀
            moduleName = name.replace('.py', '')
            loadStrategyModule(moduleName)
© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3