vnpy/examples/TurtleStrategy/run.ipynb

137 lines
20 KiB
Plaintext
Raw Normal View History

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"\n",
"from datetime import datetime\n",
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"from turtleEngine import BacktestingEngine"
]
},
{
"cell_type": "code",
2018-11-11 07:25:59 +00:00
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"16:07:40.112000:\t投资组合的合约代码['000300', '000905']\n",
"16:07:40.112000:\t投资组合的初始价值10000000\n"
]
}
],
"source": [
"engine = BacktestingEngine()\n",
"engine.setPeriod(datetime(2014, 1, 1), datetime(2018, 12, 30))\n",
"engine.initPortfolio('test.csv', 10000000)"
]
},
{
"cell_type": "code",
2018-11-11 07:25:59 +00:00
"execution_count": 3,
"metadata": {
"scrolled": false
},
2018-11-11 07:25:59 +00:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"16:07:40.182000:\t000300数据加载完成总数据量1185\n",
"16:07:40.221000:\t000905数据加载完成总数据量1185\n",
"16:07:40.221000:\t全部数据加载完成\n",
"16:07:40.221000:\t开始回放K线数据\n",
"16:07:40.355000:\tK线数据回放结束\n",
"16:07:40.355000:\t开始统计回测结果\n",
"16:07:40.362000:\t回测结果统计结束\n"
2018-11-11 07:25:59 +00:00
]
}
],
"source": [
"engine.loadData()\n",
"engine.runBacktesting()\n",
"engine.calculateResult()"
]
},
{
"cell_type": "code",
2018-11-11 07:25:59 +00:00
"execution_count": 4,
"metadata": {},
2018-11-11 07:25:59 +00:00
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x8238270>]"
2018-11-11 07:25:59 +00:00
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
2018-11-11 07:25:59 +00:00
"text/plain": [
"<matplotlib.figure.Figure at 0x81b79d0>"
2018-11-11 07:25:59 +00:00
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# 汇总每日盈亏,绘制简单资金曲线\n",
"l = [result.totalPnl for result in engine.resultList]\n",
"dateList = [result.date for result in engine.resultList]\n",
"equity = np.cumsum(l)\n",
"plt.plot(dateList, equity)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": false
},
"outputs": [],
"source": [
"# 查看逐笔的交易记录\n",
"for dt, l in engine.tradeDict.items():\n",
" for trade in l:\n",
" print dt, trade.vtSymbol, trade.direction, trade.offset, trade.price, trade.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.14"
}
},
"nbformat": 4,
"nbformat_minor": 2
}