我也出现类似情况。仓库下载2.9.0代码安装,运行run.py提示“发生异常: ModuleNotFoundError No module named 'tzlocal'”
CMD运行命令python -m vnstation,如下图,登录却是正常的。
建议vnpy增加以下两个功能模块:
1、数据接口购买
2、服务器一键购买和部署功能
让注重交易的人把更多的精力放在策略的打磨上。
安装环境:win10虚拟机vmware下ubuntu18.04,虚拟机内存4G
错误提示如下:
Generating locales (this might take a while)...
zh_CN.GB18030...??????????"/usr/lib/locale/locale-archive": ????
done
Generation complete.
Processing /home/lu/anaconda3/envs/vnpy/lib/python3.7/site-packages
ERROR: Command errored out with exit status 1:
command: /home/lu/anaconda3/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-req-build-_klkvgzo/setup.py'"'"'; __file__='"'"'/tmp/pip-req-build-_klkvgzo/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-it7qwkfm
cwd: /tmp/pip-req-build-_klkvgzo/
Complete output (9 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-req-build-_klkvgzo/setuptools/__init__.py", line 3, in <module>
from fnmatch import fnmatchcase
File "/home/lu/anaconda3/lib/python3.7/fnmatch.py", line 14, in <module>
import re
File "/home/lu/anaconda3/lib/python3.7/re.py", line 143, in <module>
class RegexFlag(enum.IntFlag):
AttributeError: module 'enum' has no attribute 'IntFlag'
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
在网上搜索“AttributeError: module 'enum' has no attribute 'IntFlag'”解决方法,是enmu34库不兼容导致,卸载enmu34后提示缺少pytz==2019.3、simplejson==3.17.0,安装这两个包以后重新bash install.sh又提示最上面的错误。始终不知问题原因所在,恳请高手给予指点!多谢
两个问题:
1、Anaconda3-5.2.0对应的python版本是3.6,但是在搭建vnpy专用环境时,命令conda create -n vnpy python=3.7。这就让人费解了,3.6能搭建出3.7的环境吗?
2、上传项目代码是上传到anaconda3的vnpy目录下吗?具体上传vnpy的哪些目录?
蜂鸟数据trochil也是免费的,而且数据接口集成更加全面,哪位高手做个配置教程
xiaohe wrote:
你回测资金好像一个是10万一个是100万
是的,的确是资金不一样。
但是无论资金大小,收益率不应该是一样的吗?
在相同条件下回测同一策略时,VN Station和backtesting_demo其他结果项目相同,除了总收益率和年化收益两项不一致,而且前者刚比后者刚好大一个数量级。具体结果如下图所示:
1、VN Station回测结果
2、backtesting_demo回测结果
具体回测环境:
VN Station版本2.5.2
backtesting_demo脚本从GitHub下载,具体脚本如下:
from vnpy.app.cta_strategy.backtesting import BacktestingEngine, OptimizationSetting
from vnpy.app.cta_strategy.strategies.nine_squire_strategy1 import (
NineSquireStrategy,
)
from datetime import datetime
engine = BacktestingEngine()
engine.set_parameters(
vt_symbol="IF99.CFFEX",
interval="1m",
start=datetime(2015, 5, 7),
end=datetime(2015, 8, 11),
rate=0.25/10000,
slippage=0.2,
size=100,
pricetick=0.2,
capital=1000000,
)
engine.add_strategy(NineSquireStrategy, {})
engine.load_data()
engine.run_backtesting()
df = engine.calculate_result()
engine.calculate_statistics()
engine.show_chart()
网盘过期了呀
楼主的提议非常好👏🏻👏🏻👏🏻K线图上的买卖成对标记一目了然,期待可以看到
学习了👍🏻👍🏻👍🏻
牛人啊!大大的赞👍🏻👍🏻👍🏻👍🏻👍🏻希望能再看到大神们的帖子
用Python的交易员 wrote:
10:30这个点因为是上午休息的结束点,所以有可能短时间触发两次分钟线更新,此时成交回报如果尚未收到确实会出现上述情况。
解决办法是每次下单后,记录委托号:
# 写在__init__里 self.vt_orderids = [] # 写在on_bar里 vt_orderids = self.buy(...) self.vt_orderids.extend(vt_orderids) # 然后每次下单前,加上判断 if self.vt_orderids: return
这样在尚未收到委托变化回报之前,都不会挂新的委托出去。
那么,self.vt_orderids何时清空?否则后续挂单if self.vt_orderids始终为真,也就是开一单之后就无法挂单了,如何解决?
xiaohe wrote:
回测的capital只参与了balance和total_return的计算,是不和剩余可用资金挂钩的。
那在回测模式下,剩余可用资金怎么控制?
用Python的交易员 wrote:
总资金设置,请在show_portfolio函数内的BacktestingEngine中设置capital参数
我也发现回测资金的问题,回测资金无论如何设置,即使资金明显不够开仓一手也不影响开仓回测,导致总收益率和年化收益率畸高。
按照你的方法修改了BacktestingEngine中的capital参数,结果一样。
感谢分享!希望能继续看到这样的精华帖
用Python的交易员 wrote:
- 下单后获得委托号列表vt_orderids
- 通过on_order回调函数,记录每个委托的最新状态
- 检查你之前的平仓委托的状态,是否是STATUS_ALLTRADED
这样的技术文档或说明哪里有?
顶一下!好多新手都碰到过类似问题,第一步就被挡在外面。希望论坛能出面把这个问题彻底回答一下
感谢稳转兄的分享,必须给你一个大大赞!