2017-06-02 13:44:28 +00:00
|
|
|
|
{
|
|
|
|
|
"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.strategyAtrRsi import AtrRsiStrategy"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"execution_count": 2,
|
|
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"# 创建回测引擎对象\n",
|
|
|
|
|
"engine = BacktestingEngine()"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2017-08-23 14:51:48 +00:00
|
|
|
|
"execution_count": 3,
|
2017-06-02 13:44:28 +00:00
|
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": false
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"# 设置回测使用的数据\n",
|
|
|
|
|
"engine.setBacktestingMode(engine.BAR_MODE) # 设置引擎的回测模式为K线\n",
|
|
|
|
|
"engine.setDatabase(MINUTE_DB_NAME, 'IF0000') # 设置使用的历史数据库\n",
|
2017-07-14 12:27:34 +00:00
|
|
|
|
"engine.setStartDate('20120101') # 设置回测用的数据起始日期"
|
2017-06-02 13:44:28 +00:00
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2017-08-23 14:51:48 +00:00
|
|
|
|
"execution_count": 4,
|
2017-06-02 13:44:28 +00:00
|
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"# 配置回测引擎参数\n",
|
|
|
|
|
"engine.setSlippage(0.2) # 设置滑点为股指1跳\n",
|
|
|
|
|
"engine.setRate(0.3/10000) # 设置手续费万0.3\n",
|
|
|
|
|
"engine.setSize(300) # 设置股指合约大小 \n",
|
2017-07-14 12:12:42 +00:00
|
|
|
|
"engine.setPriceTick(0.2) # 设置股指最小价格变动 \n",
|
|
|
|
|
"engine.setCapital(1000000) # 设置回测本金"
|
2017-06-02 13:44:28 +00:00
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2017-08-23 14:51:48 +00:00
|
|
|
|
"execution_count": 5,
|
2017-06-02 13:44:28 +00:00
|
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"# 在引擎中创建策略对象\n",
|
|
|
|
|
"d = {'atrLength': 11} # 策略参数配置\n",
|
|
|
|
|
"engine.initStrategy(AtrRsiStrategy, d) # 创建策略对象"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2017-08-23 14:51:48 +00:00
|
|
|
|
"execution_count": 6,
|
2017-06-02 13:44:28 +00:00
|
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": false
|
|
|
|
|
},
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
"text": [
|
2017-09-18 09:05:59 +00:00
|
|
|
|
"2017-09-16 20:21:05.474000\t开始载入数据\n",
|
|
|
|
|
"2017-09-16 20:21:05.643000\t载入完成,数据量:351090\n",
|
|
|
|
|
"2017-09-16 20:21:05.643000\t开始回测\n",
|
|
|
|
|
"2017-09-16 20:21:05.662000\t策略初始化完成\n",
|
|
|
|
|
"2017-09-16 20:21:05.662000\t策略启动完成\n",
|
|
|
|
|
"2017-09-16 20:21:05.662000\t开始回放数据\n",
|
|
|
|
|
"2017-09-16 20:21:30.939000\t数据回放结束\n"
|
2017-06-02 13:44:28 +00:00
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"source": [
|
|
|
|
|
"# 运行回测\n",
|
|
|
|
|
"engine.runBacktesting() # 运行回测"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2017-08-23 14:51:48 +00:00
|
|
|
|
"execution_count": 7,
|
2017-06-02 13:44:28 +00:00
|
|
|
|
"metadata": {
|
2017-09-18 09:05:59 +00:00
|
|
|
|
"collapsed": false,
|
|
|
|
|
"scrolled": true
|
2017-06-02 13:44:28 +00:00
|
|
|
|
},
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
"text": [
|
2017-09-18 09:05:59 +00:00
|
|
|
|
"2017-09-16 20:21:37.622000\t计算按日统计结果\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t------------------------------\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t首个交易日:\t2012-01-11\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t最后交易日:\t2017-07-14\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t总交易日:\t1338\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t盈利交易日\t651\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t亏损交易日:\t686\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t起始资金:\t1000000\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t结束资金:\t1,601,119.34\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t总收益率:\t60.11\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t总盈亏:\t601,119.34\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t最大回撤: \t-185,949.45\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t总手续费:\t220,760.66\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t总滑点:\t457,980.0\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t总成交金额:\t7,358,688,660.0\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t总成交笔数:\t7,632.0\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t日均盈亏:\t449.27\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t日均手续费:\t164.99\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t日均滑点:\t342.29\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t日均成交金额:\t5,499,767.31\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t日均成交笔数:\t5.7\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t日均收益率:\t0.04%\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\t收益标准差:\t1.07%\n",
|
|
|
|
|
"2017-09-16 20:21:37.702000\tSharpe Ratio:\t0.52\n"
|
2017-06-02 13:44:28 +00:00
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"data": {
|
2017-09-18 09:05:59 +00:00
|
|
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAoEAAAOlCAYAAAASGT0sAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlYVeX2wPEvMikzOELOsymaQppjWdfMyrT8lYp6S23Q\nMisnKs0p0zTBBrSbeaubKImVt7LRSiEtU3HAq6LlSEIqijLKuH9/LDcHFBQROEdcn+fx2Wfvs88+\n7zlbdLHe912vnWEYBkoppZRS6oZSzdoNUEoppZRSlU+DQKWUUkqpG5AGgUoppZRSNyANApVSSiml\nbkAaBCqllFJK3YA0CFRKKaWUugE5WLsBSilVno4fP06fPn1o1aoVhmGQl5eHi4sLwcHBdOrUqcTX\nvfTSS7Rs2ZKRI0dWYmuVUsp6NAhUSlU51atXZ82aNQX73377LS+99BLff/+9FVullFK2RYNApVSV\nl5ycTJ06dQCYM2cOu3fvJj09HcMwmDNnDh07dixy/qeffkpkZCS5ubmcPXuWJ598kiFDhrBmzRrW\nrVtHtWrVOHr0KI6OjixYsIDmzZuTlJTEjBkzOHToEPb29gwePJgRI0aQlpbGa6+9xoEDB8jNzaVr\n165MmTKFatV0NI5Syro0CFRKVTnnz5/nwQcfxDAMUlJSOHXqFEuWLGHnzp0kJSWxatUqAJYuXcrS\npUt59913C16bkZHBp59+yvvvv4+npye7du1i5MiRDBkyBIBt27axdu1a6tSpw5w5c/j3v//NvHnz\nmDlzJk2aNGHx4sWkpaUxdOhQ7rjjDt59913atWvHvHnzyM/P58UXX+SDDz7g8ccft8p3o5RSJg0C\nlVJVzsXdwTt27OCJJ57giy++4LnnniMiIoJjx46xZcsW3NzcirzWxcWFf/3rX6xfv56jR4+yb98+\nMjMzC55v27ZtQVbx5ptvZt26dQD89ttvBAcHA+Dm5sZXX30FwIYNG9i9ezerV68GICsrCzs7u4r7\n8EopVUoaBCqlqryOHTvSpEkTtm7dypIlSxg1ahT/+Mc/aNq0aUGwZjpx4gSDBw9m8ODBBAYG0rdv\nX6Kiogqed3Z2LnhsZ2eHufy6g0PRf07j4+Px9vYmPz+ft956i6ZNmwKQlpZWUR9TKaWuig5KUUpV\nOWZgZjp8+DBHjhzh22+/5c4772TIkCG0a9eOn376ifz8/CLn7t69Gx8fH8aOHUv37t1Zv359sde8\nWLdu3fj8888BSE1N5bHHHuPYsWP06NGDjz76CIDs7GzGjBnDihUryumTKqVU2WkmUClV5WRnZ/Pg\ngw8CEryZE0BatmzJxIkTGTBgAPb29gQGBvLDDz8UeW3Pnj357LPP6Nu3L66urvj7++Pj48PRo0cv\n+56vvPIKM2fO5IEHHsAwDMaMGcPNN9/M1KlTmTt3Lv379yc3N5fu3bvreECllE2wM670661SSiml\nlKpySt0dvGvXLkaMGAHAvn37GDx4MMOGDWPq1KkF50RGRjJo0CCGDBnChg0bABkEPX78eIYNG8ZT\nTz1FcnIyADt37uSRRx4hKCiIsLCwgmuEhYXx8MMPM3ToUGJjYwEp7zB69GiGDx/OhAkTyMrKuuYP\nrpRSSil1IytVELhs2TKmTZtGTk4OAIsXL2bcuHGsWLGCrKwsNmzYQFJSEsuXL2fVqlUsW7aMkJAQ\ncnJyiIiIoGXLlqxYsYIBAwawZMkSAGbOnEloaCgrV64kNjaWuLg49u7dy7Zt21i9ejWhoaHMnj27\n4P369+9PeHg4rVu3JiIiooK+DqWUUkqpG0OpgsBGjRqxePHigv02bdqQnJyMYRikp6fj4OBAbGws\nAQEBODg44ObmRuPGjYmLiyMmJoZevXoB0KtXLzZv3kxaWho5OTnUr18fgB49erBp0yZiYmLo3r07\nAL6+vuTn53PmzBm2b99Oz549i1xDKaWUUkqVXamCwD59+mBvb1+w37hxY1577TXuu+8+zpw5Q+fO\nnUlLS8Pd3b3gHBcXF9LS0khPTy+ow+Xq6kpqamqRYxcfL3wNV1fXgmuYx81zlVJKKaVU2ZVpdvBr\nr73GypUradasGStWrOD111+nZ8+eRepfpaen4+HhgZubG+np6QXH3N3dC4K7wud6enri6OhYcC5I\nPS0PD4+C8318fC4JFAuLiYkpy8dRSimllLKKgIAAq713mYJALy+vgkxe3bp12bFjB/7+/ixatIjs\n7GyysrI4dOgQLVq0oGPHjkRFReHv709UVBSBgYG4ubnh5OREfHw89evXZ+PGjYwbNw57e3sWLlzI\nqFGjSExMxDAMvLy86NSpE9HR0QwcOJDo6GgCAwNLbJs1v0xlkZCQgJ+fn7WboQrRe2J79J7YHr0n\ntqmq3hdrJ6/KFAS++uqrPP/88zg4OODk5MSrr75KrVq1GDFiBEFBQRiGwYQJE3BycmLo0KEEBwcT\nFBSEk5MTISEhAMyaNYtJkyaRn59P9+7dad++PSBB3ODBgzEMg+nTpwMwduxYgoODiYyMxNvbu+Aa\nSimllFKqbKpUncCYmBjNBNqIqvpb2/VM74nt0Xtie/Se2Kaqel+sHbfosnFKKaWUUjcgDQKVUkop\npW5AGgQqpZRSSt2ANAhUSimllLoBaRColFJKKXUD0iBQKaWUUuoGpEGgUkoppdQNSINAK9uyZQv9\n+/e/qte0bt2as2fPVlCLlFJK5ebCiRPWboVSFUuDwOuQnZ2dtZuglFJV2nffwejR1m6FUhWrTMvG\nqfKVnp7O+PHjOXbsGB4eHsyePRuA2bNnk5GRwcmTJ2nTpg2LFi3CyckJc5GXzMxMZs6cydGjRzl7\n9iyurq6EhITQuHFjRowYQceOHdm+fTsJCQkEBgayYMECANavX89bb72FYRjUqFGDmTNn0rp1a7Zv\n305ISAiZmZlUq1aNcePGcccdd1jra1FKKatJSIDUVGu3QqmKpUGgDThx4gSLFi2iQ4cOREZGMmXK\nFG699VYefPBB+vfvT25uLg899BBRUVH06dOn4HXR0dF4eHjwySefADBjxgzCw8OZNm0aAPHx8YSH\nh5Oenk6/fv3YsmULzZo1Y8qUKYSHh9OqVSvWrVtHaGgoCxcu5OWXX+aDDz7Az8+PkydP8sgjj/DJ\nJ59Qr149q3wvSillLSdOwPnz1m6FUhXrhg0C27WDPXsq7vpt28L//le6c1u1akWHDh0AePDBB5k5\ncyYffPABO3fuZNmyZRw5coRTp06Rnp5e5HV9+/alQYMGhIeHc/ToUbZs2ULHjh0Lnu/duzcArq6u\nNGrUiHPnzrF9+3ZatmxJq1atAOjTpw99+vQhKiqKU6dO8cwzzxRkGqtVq8b+/fs1CFRK3XBOntQg\nUFV9N2wQWNoArTJUq1Z0aKadnR1Tp07FMAz69etH7969SUxMLPI8wMqVK1m9ejXDhw+nf//+eHp6\ncvz48YLzqlevXuS6hmHg4HDpLd+/fz/5+fk0b96cVatWFRw/efIkNWvWLJfPqJRS15PLZQInT4Y7\n74R+/Up3rSZN4KWX4Mkny699SpUHnRhiA+Li4oiLiwPgk08+ISAggN9++41nnnmGfv36YRgGu3bt\nIi8vD6AgU7dp0yYeeughBg0aROPGjVm/fj35+fmXfa8OHTpw6NAhDh48CMCPP/7IlClTuOWWWzhy\n5Ajbtm0DYN++ffTt25eTJ09W1MdWSimbFBUFq1eXHAQuXAhLl5b+ekeOwMcfl0vTlCpXN2wm0JY0\na9aMxYsXc+zYMWrVqsX8+fPZsGEDzzzzDF5eXtSoUYPOnTtz7NgxwJIJHDVqFNOnT+fzzz+nWrVq\ntG3blgMHDhQ5x2Tu16xZk4ULFzJlyhTy8/Nxc3Nj0aJFeHt7884777BgwQKysrIwDIM33ngDX1/f\nSvwmlFLK+qZOlW3hIDA/H269Ffr2lf1jxyAvD+zti742LQ3eestyjQu/s/PHH/JYizsoW2JnmGml\nKiAmJoaAgABrN0MBCQk
|
2017-06-02 13:44:28 +00:00
|
|
|
|
"text/plain": [
|
2017-09-18 09:05:59 +00:00
|
|
|
|
"<matplotlib.figure.Figure at 0xc07ec10>"
|
2017-06-02 13:44:28 +00:00
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"output_type": "display_data"
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"source": [
|
2017-07-14 12:12:42 +00:00
|
|
|
|
"# 显示逐日回测结果\n",
|
|
|
|
|
"df = engine.showDailyResult()"
|
2017-06-02 13:44:28 +00:00
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2017-08-23 14:51:48 +00:00
|
|
|
|
"execution_count": 8,
|
2017-06-02 13:44:28 +00:00
|
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": false
|
|
|
|
|
},
|
2017-08-23 14:51:48 +00:00
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
"text": [
|
2017-09-18 09:05:59 +00:00
|
|
|
|
"2017-09-16 20:22:35.445000\t计算回测结果\n",
|
|
|
|
|
"2017-09-16 20:22:35.572000\t------------------------------\n",
|
|
|
|
|
"2017-09-16 20:22:35.572000\t第一笔交易:\t2012-01-11 10:18:00\n",
|
|
|
|
|
"2017-09-16 20:22:35.572000\t最后一笔交易:\t2017-07-14 15:00:00\n",
|
|
|
|
|
"2017-09-16 20:22:35.572000\t总交易次数:\t3,817.0\n",
|
|
|
|
|
"2017-09-16 20:22:35.572000\t总盈亏:\t601,026.05\n",
|
|
|
|
|
"2017-09-16 20:22:35.572000\t最大回撤: \t-215,542.46\n",
|
|
|
|
|
"2017-09-16 20:22:35.572000\t平均每笔盈利:\t157.46\n",
|
|
|
|
|
"2017-09-16 20:22:35.572000\t平均每笔滑点:\t120.0\n",
|
|
|
|
|
"2017-09-16 20:22:35.572000\t平均每笔佣金:\t57.84\n",
|
|
|
|
|
"2017-09-16 20:22:35.572000\t胜率\t\t37.1%\n",
|
|
|
|
|
"2017-09-16 20:22:35.572000\t盈利交易平均值\t8,540.18\n",
|
|
|
|
|
"2017-09-16 20:22:35.572000\t亏损交易平均值\t-4,786.29\n",
|
|
|
|
|
"2017-09-16 20:22:35.573000\t盈亏比:\t1.78\n"
|
2017-08-23 14:51:48 +00:00
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"data": {
|
2017-09-18 09:05:59 +00:00
|
|
|
|
"image/png": "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\nHJDXSUyUXGdvuPlm4I4
|
2017-08-23 14:51:48 +00:00
|
|
|
|
"text/plain": [
|
2017-09-18 09:05:59 +00:00
|
|
|
|
"<matplotlib.figure.Figure at 0xf3125f0>"
|
2017-08-23 14:51:48 +00:00
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"output_type": "display_data"
|
|
|
|
|
}
|
|
|
|
|
],
|
2017-07-14 12:12:42 +00:00
|
|
|
|
"source": [
|
|
|
|
|
"# 显示逐笔回测结果\n",
|
|
|
|
|
"engine.showBacktestingResult()"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2017-08-23 14:51:48 +00:00
|
|
|
|
"execution_count": 9,
|
2017-07-14 12:12:42 +00:00
|
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": false
|
|
|
|
|
},
|
2017-08-23 14:51:48 +00:00
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
"text": [
|
|
|
|
|
"{'orderID': '1', 'direction': u'\\u591a', 'gatewayName': '', 'tradeID': '1', 'exchange': '', 'symbol': '', 'volume': 1, 'tradeTime': '09:18:00', 'rawData': None, 'vtTradeID': '1', 'offset': u'\\u5f00\\u4ed3', 'vtOrderID': '1', 'dt': datetime.datetime(2012, 1, 11, 9, 18), 'price': 2464.4, 'vtSymbol': ''}\n",
|
|
|
|
|
"{'orderID': '2', 'direction': u'\\u7a7a', 'gatewayName': '', 'tradeID': '2', 'exchange': '', 'symbol': '', 'volume': 1, 'tradeTime': '10:18:00', 'rawData': None, 'vtTradeID': '2', 'offset': u'\\u5e73\\u4ed3', 'vtOrderID': '2', 'dt': datetime.datetime(2012, 1, 11, 10, 18), 'price': 2448.8, 'vtSymbol': ''}\n",
|
|
|
|
|
"{'orderID': '3', 'direction': u'\\u7a7a', 'gatewayName': '', 'tradeID': '3', 'exchange': '', 'symbol': '', 'volume': 1, 'tradeTime': '10:19:00', 'rawData': None, 'vtTradeID': '3', 'offset': u'\\u5f00\\u4ed3', 'vtOrderID': '3', 'dt': datetime.datetime(2012, 1, 11, 10, 19), 'price': 2448.4, 'vtSymbol': ''}\n",
|
|
|
|
|
"{'orderID': '4', 'direction': u'\\u591a', 'gatewayName': '', 'tradeID': '4', 'exchange': '', 'symbol': '', 'volume': 1, 'tradeTime': '14:21:00', 'rawData': None, 'vtTradeID': '4', 'offset': u'\\u5e73\\u4ed3', 'vtOrderID': '4', 'dt': datetime.datetime(2012, 1, 11, 14, 21), 'price': 2456.2000000000003, 'vtSymbol': ''}\n",
|
|
|
|
|
"{'orderID': '5', 'direction': u'\\u591a', 'gatewayName': '', 'tradeID': '5', 'exchange': '', 'symbol': '', 'volume': 1, 'tradeTime': '14:22:00', 'rawData': None, 'vtTradeID': '5', 'offset': u'\\u5f00\\u4ed3', 'vtOrderID': '5', 'dt': datetime.datetime(2012, 1, 11, 14, 22), 'price': 2455.6, 'vtSymbol': ''}\n",
|
|
|
|
|
"{'orderID': '6', 'direction': u'\\u7a7a', 'gatewayName': '', 'tradeID': '6', 'exchange': '', 'symbol': '', 'volume': 1, 'tradeTime': '14:57:00', 'rawData': None, 'vtTradeID': '6', 'offset': u'\\u5e73\\u4ed3', 'vtOrderID': '6', 'dt': datetime.datetime(2012, 1, 11, 14, 57), 'price': 2444.0, 'vtSymbol': ''}\n",
|
|
|
|
|
"{'orderID': '7', 'direction': u'\\u7a7a', 'gatewayName': '', 'tradeID': '7', 'exchange': '', 'symbol': '', 'volume': 1, 'tradeTime': '14:58:00', 'rawData': None, 'vtTradeID': '7', 'offset': u'\\u5f00\\u4ed3', 'vtOrderID': '7', 'dt': datetime.datetime(2012, 1, 11, 14, 58), 'price': 2445.8, 'vtSymbol': ''}\n",
|
|
|
|
|
"{'orderID': '8', 'direction': u'\\u591a', 'gatewayName': '', 'tradeID': '8', 'exchange': '', 'symbol': '', 'volume': 1, 'tradeTime': '09:51:00', 'rawData': None, 'vtTradeID': '8', 'offset': u'\\u5e73\\u4ed3', 'vtOrderID': '8', 'dt': datetime.datetime(2012, 1, 12, 9, 51), 'price': 2452.8, 'vtSymbol': ''}\n",
|
|
|
|
|
"{'orderID': '9', 'direction': u'\\u591a', 'gatewayName': '', 'tradeID': '9', 'exchange': '', 'symbol': '', 'volume': 1, 'tradeTime': '09:52:00', 'rawData': None, 'vtTradeID': '9', 'offset': u'\\u5f00\\u4ed3', 'vtOrderID': '9', 'dt': datetime.datetime(2012, 1, 12, 9, 52), 'price': 2452.0, 'vtSymbol': ''}\n",
|
|
|
|
|
"{'orderID': '10', 'direction': u'\\u7a7a', 'gatewayName': '', 'tradeID': '10', 'exchange': '', 'symbol': '', 'volume': 1, 'tradeTime': '10:31:00', 'rawData': None, 'vtTradeID': '10', 'offset': u'\\u5e73\\u4ed3', 'vtOrderID': '10', 'dt': datetime.datetime(2012, 1, 12, 10, 31), 'price': 2455.2000000000003, 'vtSymbol': ''}\n"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
],
|
2017-06-02 13:44:28 +00:00
|
|
|
|
"source": [
|
|
|
|
|
"# 显示前10条成交记录\n",
|
|
|
|
|
"for i in range(10):\n",
|
|
|
|
|
" print engine.tradeDict[str(i+1)].__dict__"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2017-07-14 01:05:11 +00:00
|
|
|
|
"execution_count": null,
|
2017-06-02 13:44:28 +00:00
|
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": false
|
|
|
|
|
},
|
2017-07-14 01:05:11 +00:00
|
|
|
|
"outputs": [],
|
2017-06-02 13:44:28 +00:00
|
|
|
|
"source": [
|
|
|
|
|
"# 优化配置\n",
|
|
|
|
|
"setting = OptimizationSetting() # 新建一个优化任务设置对象\n",
|
|
|
|
|
"setting.setOptimizeTarget('capital') # 设置优化排序的目标是策略净盈利\n",
|
|
|
|
|
"setting.addParameter('atrLength', 12, 20, 2) # 增加第一个优化参数atrLength,起始12,结束20,步进2\n",
|
|
|
|
|
"setting.addParameter('atrMa', 20, 30, 5) # 增加第二个优化参数atrMa,起始20,结束30,步进5\n",
|
|
|
|
|
"setting.addParameter('rsiLength', 5) # 增加一个固定数值的参数\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# 执行多进程优化\n",
|
|
|
|
|
"import time\n",
|
|
|
|
|
"engine.runParallelOptimization(AtrRsiStrategy, setting)\n",
|
|
|
|
|
"print u'耗时:%s' %(time.time()-start)"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"execution_count": null,
|
|
|
|
|
"metadata": {
|
|
|
|
|
"collapsed": true
|
|
|
|
|
},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": []
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"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
|
|
|
|
|
}
|