蜗牛博客VNPY学习记录:
VN.PY 2.0学习记录一(如何回测)
VN.PY 2.0学习记录二(策略开发)
Vn.py学习记录三(米筐教程)
VN.PY 2.0学习记录四(多线程、多进程)
Vn.py学习记录五–交易时间段及Widgets
Vn.py学习记录六(无界面模拟盘)
Vn.py学习记录七(V2.0.5版本)
Vnpy学习记录八(R-Breaker及pickle)
Vn.py学习记录九(事件驱动引擎)
VN.PY学习记录十(源码概述)
VNPY学习记录11(微信+Vscode)
VNPY学习记录12(父子进程、回调函数)
VNPY学习记录13(部署到云服务器,实现自动交易)
之前一直用的是VNPY V2.0.1,用run.py跑VN.PY的无界面运行,昨天白天还是正常的,晚上就不行了。出现如下的错误:
没办法,只好用最新版本的V2.0.5
一、安装
将原来的VNConda在控制面板卸载,然后下载V2.0.5的exe安装,一步一步点“下一步”就OK了,非常简单。
二、出错
用原来的simnow地址登陆,发现登陆不了,一直提示:交易服务器授权验证失败,代码:63,信息:CTP客户端认证失败。
后来添加了下面两行:
产品名称:simnow_client_test
授权编码:0000000000000000
没有出错信息了,也提示结算信息确认成功了,可是却没有显示账户余额。
好吧,搞了半天原来是因为我的笔记本屏幕比较小,资金那一栏没有显示出来:
三、一些设置
1.策略文件
位于:C:\vnstudio\Lib\site-packages\vnpy\app\cta_strategy\strategies
2.RQ账号
直接填写C:\vnstudio\Lib\site-packages\vnpy\trader\settings.py文件即可。
然后在策略那里可以看到数据接口初始化成功了。
这里又有一个坑,我修改了settings.py之后,发现CTA回测的数据下载那里,还是无法使用RQdata,我以为还要在其他地方设置,后来重启了一下程序,发现它就好了。
3.关于滑点、手续费的设置,这里是关于IF88的,都是正确的。
四、添加环境变量
发现无法在CMD窗口使用python命令,需要将“C:\vnstudio” 加入到系统的环境变量。再重启一下CMD窗口就可以了。
五、下载数据与回测
尝试用脚本下载数据,可是发现我以前用的下载数据的脚本,回测数据的脚本全都用不了了
这个是下载数据的:
这个是回测的:
看出错提示是数据库的问题,后来我将原来的database.db剪切到其他文件夹下面,再运行getdata.py就成功了。
自己的策略与双均线策略的对比:
双均线:
自己的:
夏普比率
*代表投资人每多承担一分风险,可以拿到几分报酬;
---单位风险所获得的超额回报率
*该比率越高,策略承担单位风险得到的超额回报率越高。
所以说夏普比率是越高越好滴..
六、TradeData
在on_trade里面print(trade),可以看到tradeData。
OrderData
BarData
七、关于多次成交的问题
回测时发现有时候平单平不掉,比如:
记录开盘价,时间是2019-06-17 09:31:00,价格是3647.0 开空仓,买入时的价格是3642.6 -----买入时间2019-06-17 09:32:00 平空仓,价格是3649.4 -----平空时间2019-06-17 09:36:00 平空仓,价格是3657.4 -----平空时间2019-06-17 09:37:00 仓位为0,无需要处理,当前时间为2019-06-17 14:55:00 **************************************************
上面的代码逻辑是写在onbar里的,然后我将on_trade里面的信息也打印出来:
发现那天的信息是这样的:
09:33:00 3642.6000000000004 09:38:00 3657.4
就是说中间有一笔“平空仓,价格是3649.4”,虽然在onbar里面执行了,但是并没有成交。
我再找到原始的数据,发现9:42我用close_price价格3082.80去平空单,但是9:43的价格没有低于3083的,所以平不掉。
另外一个:
记录开盘价,时间是2019-05-06 09:31:00,价格是3776.8 开多仓,买入时的价格是3790.0 -----买入时间2019-05-06 09:32:00 平多仓,价格是3768.6 -----平多时间2019-05-06 09:40:00 平多仓,价格是3750.4 -----平多时间2019-05-06 09:41:00 仓位为0,无需要处理,当前时间为2019-05-06 14:55:00 **************************************************
9:40分,低于开盘价,所以以3768.6价格平多仓,但是9:41最高价也只有3768.40,所以平不掉。
原来是这个原因。