159 lines
3.8 KiB
Plaintext
159 lines
3.8 KiB
Plaintext
{
|
||
"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": [
|
||
"2018-01-07 15:25:16.799000\t开始载入数据\n",
|
||
"2018-01-07 15:25:16.805000\t载入完成,数据量:0\n",
|
||
"2018-01-07 15:25:16.805000\t开始回测\n",
|
||
"2018-01-07 15:25:16.805000\t策略初始化完成\n",
|
||
"2018-01-07 15:25:16.805000\t策略启动完成\n",
|
||
"2018-01-07 15:25:16.805000\t开始回放数据\n",
|
||
"2018-01-07 15:25:16.806000\t数据回放结束\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# 运行回测\n",
|
||
"engine.runBacktesting()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {
|
||
"collapsed": false
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"# 显示逐日回测结果\n",
|
||
"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
|
||
}
|