VN.PY最重要的是examples和vnpy两个文件夹,主要需要关注的也是这两个文件夹,打开example文件内重要的是 Ctabacktesting 和 Vntrader , 对于回测而言主要是 Ctabacktesting文件夹。对于策略开发而言,需要仔细了解vnpy/trader/app/ctaStrategy这个文件夹。
一、策略回测方法一
完成VN.PY的安装之后,我们第一步的工作当然是进行策略回测啦!使用VN.PY进行回测,直接使用回测模板即可,可以跟据个人修改滑点等信息。
1、修改loadCsv.py
进入C:\vnpy\examples\CtaBacktesting文件夹,打开loadCsv.py文件,可以看到默认导入IF0000、rb0000两个数据,由于我们是第一次使用,还是先导入一个吧,将loadMcCsv('rb0000_1min.csv', MINUTE_DB_NAME, 'rb0000')这一行代码注释掉。
2、载入数据
,执行:python load Csv.py,装载数据,将历史数据导入到MangoDB中。由于数据比较多,这里需要耐心等待几分钟。
3、执行python runBacktesting.py
同时会弹出一个图形界面:
二、策略回测方法二
1.进入到“C:\vnpy\examples\CtaBacktesting”文件夹下面,打开cmd窗口,执行"ipython notebook"打开jypter notebook.
2. 点击“backtesting_IF.ipynb”打开这个文件。
3.执行“kernel --restart & clear output”清除原有的输出。
4.依次点击代码块,并执行“shift+enter”,运行到“使用历史数据缓存服务器”的时候,要先运行startHds.py
小知识:查询某数据表中有多少条记录
(1)右击数据库,在弹出的菜单中执行“open shell”功能,打开shell.
(2)输入以下代码,按一下工具栏的“run”按钮。
db.IF0000.find().count();
小技巧:
输入db加一个点之后,Robo会自动弹出相应的提示。
三、策略开发
因为vnpy这个文件夹仅仅只是一个和已经安装好的包 vnpy 一模一样的复制,而不是安装在 C: \ Anaconda2 \ Lib \ site - packages \ vnpy \ 中的包, 所以每次当我需要修 改一些具体细节时,或着自己需要增加 策略 时需要在 annconda 中的包 里修改,而不是仅仅在再这个复制的文件夹下修改 。
如前所述,在策略开发中需要仔细了解vnpy/trader/app/ctaStrategy 文件夹,先看看它是什么样的:
其中的CTA_setting.json用于策略加载,下面我们来看一下这个文件夹中最重要的三大模块:
(一)ctaBacktesting - 回测类
包含了 回测所需要的一系列函数,包括回测引擎,回测结果反馈(是 Backesting E ngine 类下的一个函数)
(二)ctaHistoryData - 数据加载
需要注意的是:
1 ) tushare 包会更新,有些语法会改变,所以一些在线下载 数据 的部分 内容需要做相应的调整。
2 ) 从 TB 中导出的数据 csv ,最好把第一行(也就是中文显示行)删除,否则会报错) 数据来源可以根据自己喜好 MC, 通达信, T B 都可以,都很方便, TB 导出 数据可能会快一点。
(三)ctaTemplate -常用交易组件
需要注意两个类,
1.CtaTtmplate类:相当于buy,sell等交易组件,具体可以看代码。
2.ArrayManager类:主要是 K 线的序列管理, 最重要的 update Bar 用于更行 k 线 ,至于技术 指标,可以用自带,也可以使用 talib 自己计算。
关于策略:可以拿某个模板 AtrRsiStrategy ,然后修改,策略模板可能会涉及到许多参数初始化,不要担心,大多数参数都是 基本类似的 , 基本是不用修改的 , 需要核心了解的是:
1)策略初始化
2)Onbar/Ontick的编写
四、vnpy内置CTR策略
vnpy V1.9.0的版本中包含双均线策略、多信号组合策略、跨时间周期的策略、ATR-RSI指标结合的交易策略等共7个策略。