我在 vnpy/ example 下 修改策略是没有用的吗?所有的东西运行都是anaconda 里面的vnpy, vnpy/example 文件里的策略是没有用的?
能帮我确认下吗?谢谢
我在 vnpy/ example 下 修改策略是没有用的吗?所有的东西运行都是anaconda 里面的vnpy, vnpy/example 文件里的策略是没有用的?
能帮我确认下吗?谢谢
看看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)