{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "from vnpy.trader.app.ctaStrategy.ctaBacktesting import BacktestingEngine, OptimizationSetting, MINUTE_DB_NAME\n", "from vnpy.trader.app.ctaStrategy.strategy.strategyBollChannel import BollChannelStrategy" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# 创建回测引擎对象\n", "engine = BacktestingEngine()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# 设置回测使用的数据\n", "engine.setBacktestingMode(engine.BAR_MODE) # 设置引擎的回测模式为K线\n", "engine.setDatabase(MINUTE_DB_NAME, 'rb0000') # 设置使用的历史数据库\n", "engine.setStartDate('20110101') # 设置回测用的数据起始日期" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# 配置回测引擎参数\n", "engine.setSlippage(1) # 设置滑点为1跳\n", "engine.setRate(1/10000) # 设置手续费万1\n", "engine.setSize(10) # 设置合约大小 \n", "engine.setPriceTick(1) # 设置最小价格变动 \n", "engine.setCapital(30000) # 设置回测本金" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# 在引擎中创建策略对象\n", "d = {} # 策略参数配置\n", "engine.initStrategy(BollChannelStrategy, d) # 创建策略对象" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2017-10-07 18:16:51.192000\t开始载入数据\n", "2017-10-07 18:16:51.306000\t载入完成,数据量:332899\n", "2017-10-07 18:16:51.306000\t开始回测\n", "2017-10-07 18:16:51.306000\t策略初始化完成\n", "2017-10-07 18:16:51.306000\t策略启动完成\n", "2017-10-07 18:16:51.306000\t开始回放数据\n", "2017-10-07 18:17:04.696000\t数据回放结束\n" ] } ], "source": [ "# 运行回测\n", "engine.runBacktesting()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# 显示逐日回测结果\n", "df = engine.showDailyResult()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# 显示逐笔回测结果\n", "engine.showBacktestingResult()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# 显示前10条成交记录\n", "for i in range(10):\n", " d = engine.tradeDict[str(i+1)].__dict__\n", " print 'TradeID: %s, Time: %s, Direction: %s, Price: %s, Volume: %s' %(d['tradeID'], d['dt'], d['direction'], d['price'], d['volume'])" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" } }, "nbformat": 4, "nbformat_minor": 0 }