diff --git a/examples/TurtleStrategy/.ipynb_checkpoints/run-checkpoint.ipynb b/examples/TurtleStrategy/.ipynb_checkpoints/run-checkpoint.ipynb index 438216aa..9247c6fb 100644 --- a/examples/TurtleStrategy/.ipynb_checkpoints/run-checkpoint.ipynb +++ b/examples/TurtleStrategy/.ipynb_checkpoints/run-checkpoint.ipynb @@ -20,11 +20,20 @@ "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "16:05:52.965000:\t投资组合的合约代码['IF99', 'I99', 'CU99', 'TA99']\n", + "16:05:52.966000:\t投资组合的初始价值10000000\n" + ] + } + ], "source": [ "engine = BacktestingEngine()\n", - "engine.setPeriod(datetime(2015, 1, 1), datetime(2018, 11, 9))\n", - "engine.initPortfolio('setting.csv', 10000000)" + "engine.setPeriod(datetime(2014, 1, 1), datetime(2018, 12, 30))\n", + "engine.initPortfolio('test.csv', 10000000)" ] }, { @@ -38,8 +47,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "15:22:46.074000:000300.XSHG数据加载完成,总数据量:940\n", - "15:22:46.074000:全部数据加载完成\n" + "16:05:53.031000:\tIF99数据加载完成,总数据量:1185\n", + "16:05:53.064000:\tI99数据加载完成,总数据量:1185\n", + "16:05:53.096000:\tCU99数据加载完成,总数据量:1185\n", + "16:05:53.130000:\tTA99数据加载完成,总数据量:1185\n", + "16:05:53.131000:\t全部数据加载完成\n", + "16:05:53.131000:\t开始回放K线数据\n", + "16:05:53.383000:\tK线数据回放结束\n", + "16:05:53.383000:\t开始统计回测结果\n", + "16:05:53.392000:\t回测结果统计结束\n" ] } ], @@ -49,55 +65,23 @@ "engine.calculateResult()" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "for dt, l in engine.tradeDict.items():\n", - " print dt\n", - " for trade in l:\n", - " print trade.vtSymbol, trade.direction, trade.offset, trade.price, trade.volume" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "for result in engine.resultList:\n", - " if result.totalPnl:\n", - " print result.date, result.totalPnl" - ] - }, { "cell_type": "code", "execution_count": 4, - "metadata": { - "scrolled": true - }, + "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "44093646.23195201\n" + ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXEAAAEDCAYAAADDbTRuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xl81NW9//HXyb5DgIQ97IssshhARLECKi7V1h2v1VZ7+dlq61Lbq12sta1ar/ttq6Vqq23daqtWsS4oomUVEJB9CQHCGgJZyD7J+f0xS2aSgUzCrMn7+XjkwXe+y8znZMhnzpzvWYy1FhERiU1xkQ5ARETaT0lcRCSGKYmLiMQwJXERkRimJC4iEsOUxEVEYljIkrgx5nljzCFjzPoAzn3cGLPG9bPVGFMaqrhERDoSE6p+4saY6cAx4EVr7Zg2XPc9YIK19saQBCYi0oGErCZurf0UOOK9zxgzxBjznjFmlTHmM2PMSD+XzgFeDlVcIiIdSUKYX28ecLO1dpsxZgrwe2CG+6AxZgAwCPg4zHGJiMSksCVxY0wGcAbwd2OMe3dys9OuAV631jaEKy4RkVgWzpp4HFBqrR1/gnOuAW4JUzwiIjEvbF0MrbXlwE5jzJUAxmmc+7gxZgSQDSwNV0wiIrEuoCRujCk0xnzp6gK4MsBrXsaZkEcYY4qMMTcB/wXcZIxZC2wALvW6ZA7witW0iiIiAQuoi6ExphDIt9YeDnlEIiISMI3YFBGJYYHWxHcCRwEL/MFaO8/POXOBuQDp6emnjRzprwu4iIj4s2rVqsPW2py2XhdoEu9jrd1njMkFPgS+5xrM41d+fr5duTKgpnMREQGMMaustfltvS6g5hRr7T7Xv4eAN4DJbX0hEREJvlaTuDEm3RiT6d4GzgNandRKRERCL5DBPj2BN1yjLBOAl6y174U0KhERCUirSdxaWwCMa+08EREJP3UxFBGJYUriIiIxTElcRCSGKYmLiPixatdRXl9VRFlVfaRDOaFwLwohIhL1th+q4PKnlwAwZ3IeD142NsIRHZ9q4iIizdQ5mkayR/vEqkriIiLNNC0+Br26pEQukAAoiYuINONoaKp91zkaIxhJ65TERUSaqWtoSty//2QHa/aURjCaE1MSFxHxUlPfwA9fX+uz7xvPLo9QNK1TEhcR8fLEgm0UFFcCkJXi7MCXmhQfyZBOSElcRMTLM4t2eLafuGY8AKP7ZEUqnFYpiYuIeDl7eNPiOrmZKYzomcnCLcUcPlYbwaiOT0lcRMRLdX2DZzuvexo9XV0M83+1gEH3zGfFziPUNzTiaIiOXisasSki4qW4oqnGnZWSyP/NmcD1z69g7Z5SrIWr/rDU63gC5TUOnpozgUvG9YlEuKqJi4i4HamsY+fhSp99XVITeXXu6dx6zlDG9PVtGy+vcQDw/Ze/CFuMzSmJi4i4bN5fDkCvrBQW/fArnv0pifHcdf4I3vneWfzy0tF+r91fVh2OEFtQc4qIiItrGUoev3o8A7qn+z3nG1MHMq5/V/plpzHxlx969s+Zt4y+2an89aYpnucJB9XERURcah3Om5rJiSdOjaf260q39CRmj+4FQEpiHIUlVewvrQlrAgclcRERj5p6Z4+T5ITAUuNTcyaw8qezyEpJBKB31/BPlqUkLiLi8srnuwFnG3ggkhLi6JGRTP9uaQBcMykvZLEdj9rERURcNrlubPbtmtqm6569Pp/3Nxxg9pheoQjrhJTERURcEuLiuGxC34Br4m7Z6UlcMzn8tXBQc4qICOBcwedQRQ25WdG9CERzSuIiIsDRqnrqGyw9s5IjHUqbKImLiAAHy2sA6KmauIhI7HGv3tMtPSnCkbSNkriICHDPP78EnHOlxBIlcRERL6qJi4jEmKo6h2dbbeIiEtPWFZV65hBpTXVdA099tI3quqbzGxqt5yZhrCg8XBXpENot4CRujIk3xnxhjHknlAGJnIwvdh+ltKou0mHErP1l1Vzy28Xc++aG455TWetg28EKlheUcMq97/HYh1s55d732HPEmQgffHcTUx74qMW83NHMHeufvzUpwpG0XVtq4rcBm0IViEigDpTV8O8v92Ot9dm/atdRvv77Jdz4588jFFls+93C7Ux98GMAVhQe8ex/beUeRvz0357a+f/8Yx3nPv4pV89b5nP9N/+0AoB/rC4C4JxHPuFQgDXySH/wuucCn5CXHdE42iOgJG6M6QdcBDwb2nBEWvfMoh1852+reX5xoc/+y59eAsD6feURiCr2PftZgWd75+FKSo7V8rXfLeZHr6+j1tHIniPV7C6p4p11+wH4/oyhPtfvKK5kXVEpR6vqPfve23Cg1ddduqOE8fd/yMIth4JUkrY7VutsE89Ijr2ZSAKtiT8B/AiIjpVBRYBPtxb73R+Lf4jRwDv5njMih5//a4On7zTAnqNVPPnRNs/jO88bwec/mcWCO8/27Lvkt4t9nvPetzbwxIKtzHj0EwqKj/l93RU7nbX+VYVHg1KO9qisdZCSGEd8XHjnAg+GVpO4MeZi4JC1dlUr5801xqw0xqwsLvb/xyUSDHWuVcaP9xU8PbltkxeJk3cCS4yP89S4P/vROQBs2FvGO+v2MSQnnTdvmQZATmYyQ3MzuPPc4T7PddOZg7hsYl8AnliwjYLiSmY/+Znf161rcDbTVHr1EAm3yrqGmP3wD6QmPg24xBhTCLwCzDDG/LX5SdbaedbafGttfk5OTpDDFGlS65q4v6Imcn/0bbHnSBU7D1fyyZZDnHrf+6zeHbka5/HU1DfQ0Gi5fdYwRvTM5IONBz3H+mWnkpoYzyMfbKXW0ciNZw5ifP+uPtdPGtjN53F2WiKPXjmOn391lGdfnaORmvqWvV52HHLeVFx0nG9W4VBZ6yA9RpN4q1Fba+8B7gEwxnwFuMtae12I4xJpYUfxMWY+uojhPTMAqG/037pX54h8q19Do6Wh0RIfZzjr4YU+x15YUsjEKLuBtr/MeQOyX3YaKUlN32TW3Hsuxhgeu2ocP3trPaf0zuLS8X1bXD8hz5nUh+Sks6O4kmunDMAYw7emDeKaSXm8+vlu7nt7I0t3lHDOyFzAeSP0ky3F5GY6J5zaXVJFfUMjifHh7flcXlPPW2v2hfU1gyk2P3qkU3p7rfMPbetBZ9uqo6Gpd8prK/d4tqtqA+vjHErXP7+cxdtLeOO7Z7Q41tYFB8Jh52Hn73RQjzTSXUl8cE46XdOcoxcvGNubC8b2Pu71KYnxbP7lbJIT4lqsMZmaFM/XJ/TjgXc384dPdzCqTxY9MpL5ZIuz5n2oopb8Adms3HWUF5YUcqCshp9cdErY1qpcs7u09ZOiWJs+8qy1n1hrLw5VMCInUtushl3fYJm/bj+VtQ5+9Po6z/6KWofPCLxIWLy9BIDS6voWx6JxWPf2Q84kPiQng59d7GwCuenMQW16jpTE+OMm3i5piXz3nCEsKzjClAc+YsiP3/U5fmo/Z03+V/M38ex/dlJY4n/wzYZ9ZXz7hc+555/rWLqjpE3xHc/WgxUAfPcrQ4LyfOGmEZsSM5o3kxw+VsstL63mB6+t9ewblutsann18z1Eg4NlLftJOxqtnzMj5+H3NvPAu5vpkZFE17QkTumdReFDF/FfUwYE9XVumzmMO2b53gC99+JRnNI7i5vPHuyzf/Uu//cNHnl/Cws2HeLlFXuY88dl7R4ZWlPfwJLthwFnEu+RkcyPZo9s13NFmpK4xIz6Bv9t3Z9ta7ohNmNkLpMGZvPcf3a2GAwUCQV+Ri0u3By5/tD+/P6THQAM6J4e0tcxxnDbrGG8dcs0zh6ew20zh3HjmYP4921nkZuVwhWn9fOcu8VVO/Z2rNbBwi2+Nz/nvrjSM1CnLX41fyPXPrucTfvLOVJZR05mbC0E4U1JXGLG4WO1fvdXes3bMbZfFy4a25uio9UUVzjPb4hAzTcl0fmn5a9v9PKdR1rsi6Q+XZwTPn3j9ODWvI9nXP+uvHDjZO5o1i3xZxeN8nTzO1rZsvvoKj+187VFZTzj+hAK1LKCEv66zLmq/daDFSzYdMizQHIsUhKXmFFcUUv3E7Qn/+prY7j41D706uK8cXioopaa+gamPvgRP3htbViTeTfXDUF/NfFok5OVwvThOXxtQsteJ+HUJS2RZT+eyeCcdJ+BR27u5rQxfbN89rf1BujfVxZ5tm97ZU07Io0u6p0iMePwsTryuqdR4lVLO7VfF9YVlQF4klCua43En7y5nrWuEYf/WF3EsJ4Z3Hx2eG5epbp6eHi3id82cxgFhytZsye6+onX1jeQEiXNCRnJCeRmJlNW3bIm7k7iD18+jgHd01hXVMacPy5jX2nbmlOSE1vWXf8nRtvDQTVxiSFHq+rol53ms++N707j2il5PHbVOM9X8d6u5oG1e3y7jhX6qRW/s24fu0qCX1tOTnAmce+mnjOGdGdYbgZFR6sp81PTjJRaRyPJidEzyrVrapLPB7XbsgJnb5TUpHjSkxOYOqQ7pw/uxurdRyk5TlObP/HNau7ZaYn891lt64kTTZTEJWZU1zV4mlNuOWcIhQ9dRHyc4YGvj+WyiU03xXp3SWXeN04jf4BzQM3Zw50jiF/5fI/Pzc76hkZufekLz8RZwdTY7KZqZkoCp/TJIn9gNtYSNaM2X19VxM7DlWSmRM+X8vF5XSkoruTdL/f77P/Lsl0AJMY3JeF9pTUcPlbHab9awNn/u5ADfnoDNVdR4/sB+vjV40kI8wCjYIrdyKVTsdZS62gkKyWB7b++gLvOG3HC888b3YuX557OD88fwdPXTfTs967huf/gDx+r46pnlrK3jV/LT8R7ePngnHS+vO98slISGdEzE4DdR068CEFjo/XcmA2lu/7u7J45uk9WK2eGz01nDuLUfl347t9W88KSQqy1Pje1kxKa0taPZjf9P9hVUsVZD3/caq+kN5uNzhzq6pYaq5TEJSa4B/okJ8aTEN9yVKA/ifFx3HLOUNKSmmqZ3u2nu7wGlKwoPMKVTy8JqCYXiGqvJO49sZJ7Ed4v95axrKCEVbuO8mVRGZW1voOTnvp4G5N+vYCio8Ffcaaipp6Bd89n2kMfe/ZdMykv6K/TXonxcTxx9XiG5mbw839t4KmPtpP/qwV+z7341D48c91EnrxmPCN7ZVLfYBn6k3/zyPtb/HZJ/X9/WenZvuu84Wz/9QUtmuhijZK4xAT3pFcp7Wy7fff7ZwGweX9T/+Prnlvuc86+shpOf/Ajv5M0tZX3cmVpXnORJMTHkZuZzOurirhm3jIuf3oJX/3tf5j56CKfdnJ3F7jLn17iaQsOFveHl/c3j2ibgnVwTgYf3D6dsX278PiCrZ793zxjIDkZvjdhZ4/pzaXj+/Lu98/i7gtG0tBo+e3C7bzxxV72HKli4N3zGXj3fOobGnl/g3Nir8evHsetM4bFdDOKW+yXQDqFQtfNx6x2tt2O7JVJWlI8Lyx1fj0/0VfuF5YUtus1vNXUN9UC05N8Y/7XrWfy95un8tK3p/DCjZP5f9MHc6C8hk0Hmvoqu5sPDpbXepo8AvXdv63iumeXH/f4Ha/6dqv73bUTj3NmZMXFGeZObxrJOTQ3g/suGX3cb2FxcYabzx7CP13z1RQUV/LZtsOe449/2PRhkNcttAObwil67maInIC71ji6T5d2XR8XZ5g2tAcfbjzIzEcXnXCE3uMLtjLzlFznjH7tqPk3NFrPnOcAac2mOO3VJYVeXZpWVM/JSOYPnxZ45kf/ePNBn/OLjlbzj1VFXO41otGtuq6BXUcqGdnL2aa9vKCEd7888Wo62w75DkCaMrjbcc6MvItP7c2qXUeZNrQH04Z2D+iaiXnZpCfF88yiHT59yp9Z1DQoaGD32G5C8aaauMSEI64bkt0z2j951DPXncZ9Xx1FweFKz6jJayb1B5yTUhU8cCHgrEXPeuxTbn9lDdsPtRz+3Rp3c0yy6wacd28Kf9wJ/T+uuTxu/HNTu6270vmDZrXxfaXVNDRaHvr3JmY/8Rm3vLSai576jF+8vdFzjr8Rrt7NPAA/PH8EPTKio4+4P8YY7rtkNOeO6ulzb6M17tGg6/c6v93891mDcI/1+uH5I+gexWVuKyVxAZzDnKNhrhF/Nu4r56dvrgega1piu58nPs7wzWmD2PnghSQlxJGWFM9EVzfExHhDXJxh+Y9nes5/b8MBZj32aZtnRHTf1Bzgqu25uzgeT7f0JIbkpPPXZbs5//FPPfsfvvxUFv/PDE7p7axNznjkEzbtL2fT/nLOeOhjhvz4XV5Y6ux2N3/dfjbsK2ej1/DxL7ymWH19VRHf+tMKdrimAZgyyFn77tO16RtBR/LtswZ7pgHOzUxmxsienmPXhWl6gXBRc4pQUHyMGY8u4v5LR3P91IGRDqeFq/6w1LPtHkRzMowxbL5/Ng3WsthV+3WXu2dWCi/eOJnrn1/hOf+dtfu5ylVjb8076/bxxALnOpQ3nDGQSQO7MdzVrfBEpg7pzo7iSrYcrCA1MZ7X/t9UxvZzNh3dNnMoN/91NQWHK7ngyc/4TitTpp4xpDsrdx1lxc4Szh3lTF7udvXFrulbf3LRKewrreH80T2P+zyxbkJeNgUPXEitoxHvZnR3D6GOQklcKCh23jT8ZEtxxJO4tZY31+xlxsiedElNpKHRelYiD6a4OEMchunDcnj71jN92k6nD89hxshcPnbNNrh4x2GumtSfN74oIjUxntljjr84wq0vfeHZHpabGVACB7jz3BFU1Di4aGxvzhvdy+fY7DG9+eJn5zLhlx8C8HSzCZ9+/fUxHK6oY0D3NG5/dQ1d0xIZ3COdnYebuie6V9xxD13P65bmmcO7I4uLM54pEJbeM4PstOiby/1kKYkL7kaUaOhk9uHGg9zx6lquOK0fj1w5ztMrBeCeC4I/v0VcnPHUeL25V99JTYznrTX7qHM08u/1zhuGq392LtlpiS16STRvdjltQOBLsHVLT+LJayYc93h2ehLP3ZDPTS+sbHHMPe93Q6PlSGUdU4d05xvPLWfzgQqKK2qpb2hsMXCoo9VGA9G7S/StqBQMSuLiaQt3J6UXlhTiaLSM79+F0waEp+dCybFa/rS4EHd35ddXOWu97qHWr849nSmDA+udEAz/c8FILhnfhw17y7jv7Y2eBA4w8Zcf8vUJfXn86vE+15RX+ybxYPe9PmdELnedN5yUxHiuzO9PY6Nt0df7RtdqPDNG5vLayiIm/dr/IJlwLX0moackLp679sY45xP5+b82eI4VPnRRUF+rstZBQrxp0bb99tp9/Hbhdp997gQOzsEf4ZSRnMCkgd04LS+bh9/fQpWrV0e/7FTKqup544u9zF+3n+U/nkm2az6X11c1rSbkPcAnWOLiDLfOGOazL/s4U/P++utjeWvNvhZL2oFzNR3pOJTEBXeDigG2HPDtUnewvIaeWSfXg2H93jJeXFrIg5edyuifvw+0/HC4z6trHMAVp/XjB+cNZ+qDzqHhkVqXMi7O8M73zmThlmLOHt6DobmZ7DxcyTmPfEJdQyNvrtlLcUUt04fn8MgHTYNJ/nh9fkTidUuMj2PBnWfzs7fWk5GcwDvr9nPHrOFU1jk6XO+Mzk5JXDw18ThjWqxwMu/TAs/Cue313y+uZH9ZDfu95iWpqW/wDKRpPi3r9VMHcP+lYwBnu/KaPaURHRY+OCfD55vAoB7prL33PMbd/4GnX/bvP9nBtKHdWby9hJ0PXhgVzRX9u6Xx529Nprymnj5dU/n2WYNIT9affEejd1Q806YaQ4uJmJYEYUVx91d67yHQ6/eWkT/Q2d7+UbMRiu4EDvDK3NMjsrxaa7qkJfLcDfks3l7C84t3As6ZCS8+tXdUJHBvWSmJ/PjCUyIdhoSIBvsI1qtNfKvXkOzvzxjKpv3lHK2s45Sfvddizo1A+ZtN7opnlnpuqN7pWq1+ZK9MUpsNc0+Mj2v3pFehNvOUntz71VHcMNXZPLHnSDV53TrOcG6JDUri0tTF0BheWu6cPe/s4Tme+UW++acVVNc38MYXe9v1/BU1vrV799SsXzRbeWf+989i0y9nt+s1Isl7PpdQ3NAUORElcfHUiOO8mgFeuHEyGa4ZA9e61rBsT9/ibQd9b5Ruun82798xHYDLfr+EJdsP07drKsN7ZkTddKiBuuK0flyV75yc6qYzB7dytkhwKYkLjgZnEt9ywPemZtdU3x4hZdX1/OLtDTS2oY26rNr3pmVqUjx9u6byyJXjALj22eXsLa1m68Fj/i6PCXFxhoevGEfhQxd5RgeKhIuSuOBodLZZN0+kY/o2NRPcMcs5K9yfFhfy7nrftQ9PZI9rZZqRvTK5fVZTH+crTuvHizdO9jxubaY/EfFPvVOE+gbfmvXNZzsnWMrJTObuC0YydXB3PtlS7Dn+x08LuPjUPgE9t3sVmfnfP6tFc8lZw3rw1JwJJMWbTjGPh0goKIl3QHWORvaWVvPi0kJunzW81bZsR7PeIz88v2nxWXdCz0hJYNeRSgyGDzaceNEBb1V1DaQmxvtt7zbGcMm4wD4MRMQ/Nad0MKVVdQz/6b8555FP+NPiQsb94oNWr3G42rhH9c7i9Zun+k24Q3IyeOyq8WSmJFBR62Dmo58ENP94Za2D9GS1E4uEimriHcz/fby9xT5r7QkHoLiXEvvHd85o9cacux/0juJKdhRXUl5Tz7DcDDJT/Nf2S6vq27Qii4i0jWriHYx7STBvr63c4+fMJu7eKQkB3Fz85hkDPRMozXpsEZf9fgl3//NLv+fWOhr4dFsxkwZG7xqOIrGu1SRujEkxxqwwxqw1xmwwxvwiHIFJ+3j3/jtnhHNZMO+Jmfw5UllHZnICifGtf6bHxRmunZLHWK+eK/PX7fe7nuOOQ5VU1Dg4Z+SJlycTkfYLpCZeC8yw1o4DxgOzjTGnhzYsaY+dhyt5ZtEOslISKHzoIv70rcn07pJCcUXtCduv95dV+6y+3pqUxHje/t6ZFD50EQvunE5ivOGX72xscd7ync55V6J5IV6RWNdqErdO7g7Eia6f6JuRSHj2swIAyr2GuV9xmnMk4aufH79J5UBZTZuSuLehuZl85+whvLVmH2uaDaN3TwyVm6kkLhIqAbWJG2PijTFrgEPAh9ba5X7OmWuMWWmMWVlcXNzySSSkviwq42+ueU+uzm9a1PeOWcMZlpvBi0t3MX/dfj7ceJDHPtjCgo1NMwceKK+hdzuTOMCV+f1JiDPc8eoaz3qYi7YWs+eIc9WZcC/oINKZBNRtwFrbAIw3xnQF3jDGjLHWrm92zjxgHkB+fr5q6mH2m/c2N21fcapnOy7OcN7onvxu4Q5ueWm1zzVnDu3B/ZeO5mB5LVnH6V0SiP7d0vjl18Zwzz+/5MzffMz4/l09g4PuDsG6mCLSpE19v6y1pcaYT4DZwPpWTpcweXvtPv6z3TlXt785pH5w7giuPK0/tY5Gah0NfLTpEE9+tI3/bD/MjEcXAbDONclVe82ZnMfIXpnc+tIXngTep0uKZ7CQiIRGq0ncGJMD1LsSeCowC/hNyCPrpBZtLWZ8/65tmjHwey9/4dn+7bUTWxyPizMM7JHueXxqv648+dE2n3O850lprwl52Sy86yvsK60mOTGuw64uLhJNAmkT7w0sNMasAz7H2Sb+TmjD6pxq6hu44fkVXPb7xW26Lt1rgM6FY3sHdM2OBy6kZ1bTDcc7zxveptc8nqSEOAb2SFcCFwmTVmvi1tp1wIQwxNLpuVdU31Fc2eZru6Qm8tBlYwM+Pz7OMGNkLi+vcPZaSdcUqiIxSeOho0hNfUObr9l6sILKuga+fWYeFwRYC3e7/9IxXDt5AJsPlEfdupAiEhgl8ShS3Y4kfu9bzvvLn+862uZrE+PjGNuvC2P7nXx7uIhEhuZOiSLtqYm7255vnq5lwUQ6IyXxKFJT33JV+NYY4+zK19amFBHpGJTEo0itV028rLqeT7e2PvJ1X2k1fbqqJ4hIZ6UkHkW828TH/eIDrn9+BSV+Zgd0s9ayv6yG3kriIp2WkngU8decsv2Q/1Xg6xsamfrgx+wqqaLPScx7IiKxTUk8SlTVOXjfz9qV24v9J/GD5TUcKK8BOKnJq0QktqmLYZS46+9refdLP0n8ODXxP35a4NkOxpB5EYlNqolHibV7Wk5ANbJXJh9sOOjnbMjNcta+n7xmPPla/kyk01ISjxJ7S6tb7CuprGNvaTUD757f4nica4Tl+aN7hSU+EYlOSuJRKikhjuumDPA8XrbDudSZtZaa+gaq65yLL/hbGFlEOg+1iUehVT+dRVJCHOv3lnv2uVfZeHnFHn78hnN1+aSEOM15ItLJKYlHgaq6pjUxe2Yl0921sPDUId35x3emcvnTS/nf9zfz7GcFbD5Q4Tm3f7b6h4t0dkriUeBgedOAnsevGu9zbGJeNjdOG0TR0SoA8rqlcaiilh2HjvGHb5wW1jhFJPooiUeBA2XO/t4vfXsKZwzt4XPMGMO9Xx0VibBEJAborlgUOOgatOPuNigiEigl8SjgHnnZSyMvRaSNlMSjwMHyGjKSE8hIVuuWiLSNkngUKKuqp2ta4Kvbi4i4KYlHgco6B+lJqoWLSNspc0RQQ6PFWsuukiqSNPJSRNpBSTyCLv3df9h+6Bg19Y2kJ8VHOhwRiUFK4hHkPaz+8avHn+BMERH/9B0+QuobmlbxMQbOHdUzgtGISKxSEo8Q7yRuLZrISkTaRUk8QuobbOsniYi0Qkk8QhwNLRdFFhFpKyXxCFFNXESCQUk8QupVExeRIFASjxBHo2riInLylMQjRDVxEQmGVpO4Maa/MWahMWaTMWaDMea2cATW0SmJi0gwBDJi0wH8wFq72hiTCawyxnxord0Y4tg6NIdubIpIELRaE7fW7rfWrnZtVwCbgL6hDqyjU01cRIKhTXOnGGMGAhOA5X6OzQXmAuTl5QUhtI7rWK2DnYcrAfjZxaOYMTI3whGJSKwKOIkbYzKAfwC3W2vLmx+31s4D5gHk5+erreAErv7DUjbsc/4KT+3XhUE90iMckYjEqoB6pxhjEnEm8L9Za/8Z2pA6PncCB0iW64E7AAANYUlEQVSMVwchEWm/QHqnGOA5YJO19rHQh9S5JMRp4isRab9AqoHTgG8AM4wxa1w/F4Y4rk5DK/qIyMlotU3cWvsfQNXFEElWEheRk6AMEkHj+nUhr1tapMMQkRimJB5Bd543QotBiMhJURKPIDWliMjJUhYJsy+LyjzbI3pmRjASEekIlMTDbOvBCgDOGZFDdnpShKMRkVinJB5m3TKcifvWGUMjHImIdARK4mFW73BOfJWcEB/hSESkI1ASDzP3ij4J8eqVIiInT0k8zNxT0GrOFBEJBmWSMHMvBpEYp1+9iJw8ZZIwc9fE1ZwiIsGgJB5m9WoTF5EgUhIPs5q6BgBSE9U7RUROnpJ4mB2rdQCQntSmlfFERPxSEg+zY7UO0pPiidNiECISBEriYVZZ6yA9WbVwEQkOJfEwO1brIENJXESCREk8zFQTF5FgUhIPs7LqetXERSRolMTDyFpLweFKBvbQkmwiEhxK4mFUfKyW0qp6hmsxCBEJEiXxMNp+6BgAw3KVxEUkOJTEw6jkWB0APbOSIxyJiHQUSuJh9LfluwDokpYY4UhEpKNQEg+j/WU1AHRPV01cRIJDSTyMDHDJuD7Ea8i9iASJkngQTf71AgbePZ9HP9hCo2vKWW9Hq+rJVlOKiASRkniQ7C2t5lBFLQD/9/F2/r3+gM/xipp6yqrryc1KiUR4ItJBKYkHybo9pT6P31qz1+exu3uh+oiLSDApiQfJmiLfJL5kRwkNXk0q2w66+4hnhDUuEenYlMSDZO2eUgb3SPc8PlbrYHlBCY2NliufWcIjH2zBGOiXnRrBKEWko1ESD4KGRsv6veVMG9qDWafkMiGvKwDXPruc1buP8nnhUQ5V1JIYH0dCvH7lIhI8rWYUY8zzxphDxpj14QgoFv1laSHHah2M79+VZ2+YxPM3TPIcu+KZpZ7tOkdjBKITkY4skGrhn4HZIY4jpt339kYAxvbrAkB2ehK/+tqYFuedObRHWOMSkY6v1YmtrbWfGmMGhj6U2HSwvIbeXVLYX1bj0/Pkv6bkMXlQN857/FMAFtx5Nl3VR1xEgixoqxMYY+YCcwHy8vKC9bRRb8oDHwEwe3Qvn/3GGIb3zOQrI3I4LS+boeqVIiIhELQkbq2dB8wDyM/PbzlcsQPaVVLp2S6trvN7zp+/NTlc4YhIJ6SuEidh84EKz/axWkcEIxGRzkpJ/CTU1Dd4tudOHxLBSESkswqki+HLwFJghDGmyBhzU+jDin7WWipqnLXvpffM4JJxfSIckYh0RoH0TpkTjkBiibWW2U98xpaDzuaU1MT4CEckIp2VmlPa4cmPtnkSOECKkriIRIiSeDssKyjxeawkLiKRoiTeDuXVDmaOzI10GCIiwesn3plU1NYzPCWDO2YNZ/OB8kiHIyKdmJJ4O1TVNpCenMBts4ZFOhQR6eTUnNIOVXUNpCWpHVxEIk9JvI0aGy3V9Q2kJulLjIhEnpJ4G1W7RmmmqyYuIlFASbyNjlQ6J7pSc4qIRAMl8Taw1nLWwwsBKK2qj3A0IiJK4ic09r73GXj3fAqKnSvV7y+r8Ryr9pr8SkQkUpTET8A9wdWbX+wF4K01+zzHxvXvGpGYRES8KYkfx9HKpkUeah2N7Cut5jfvbQbgqTkTOL/ZSj4iIpGgJO6y5UAFLy4t9Dx++P0tnu2/LNvFNfOWeR4P01JrIhIl1NnZ5ep5Symtqueq/P6kJMazdk+p51hVXQO7j1R5HmvBYxGJFqqJ41yhx93bpOholeff80f3bHHu5RP70SsrJazxiYgcj5I4UOi14PGeI9UA1NQ3MqhHBjdMHeA59v7t03n0qnEYY8Ieo4iIP526OeX+tzeyrKCEgT3SPPv2HK3C0dBIXUMjqYnx3H3BSLqmJfHkR9sYkpMewWhFRFrq1En8+cU7ASg+VuvZt+dIFTWORqBpVOYd5w7njnOHhz9AEZFWqDkFqK5rGriz+0gVVXXO/uEpGlovIlGu0ybxOldtG+BYrYNx/boA8P6Gg2w5oAWQRSQ2dNokfsBrCD3AjJE9PV0Hv/HcCkBJXESiX6dN4uU1vhNYlVTW8urcqSTFN/1KUpM67a9HRGJEp81SlbXOdu/hPZ2jL0f3yWJEr0z+79oJnnO0ir2IRLtO2zul0nXz8qHLTyU3M5l+2c5uht5D6kf36RKR2EREAtVpk/ixWmePlKyUBE8CBxjUI53rpw6g6Gg1XVI1vF5EolunTeLuWQrTk31/BcYY7r90TCRCEhFps07ZJv7e+gP8/F8bAMhI7rSfYyLSAXS6JL7tYAU3/3WV57GSuIjEsk6XxH+7cDsA04Z2p/ChizSZlYjEtE5TDd1dUsX0/13oefzijVMiGI2ISHAEVBM3xsw2xmwxxmw3xtwd6qDaq7SqjoF3z+fdL/e3OPbUx9t8HsfHqQYuIrGv1SRujIkHfgdcAIwC5hhjRoU6sPZwL6n23b+tprHRevY3NloKDzfNGT5YU8qKSAcRSHPKZGC7tbYAwBjzCnApsDHYwRRX1LZ+0gm8tHy3Z3tH8TGG9czk88IjXPnMUp/znrth0km9johItAgkifcF9ng9LgJC0qA8/eGFVNc3tH7iCZw9PIdFW4tZuesow3pmsrygxHMsKyWBhXd9he4ZyScbqohIVAgkiftrPLYtTjJmLjAXIC8vr13B3PvVUTgaWzx1QCprHRyprOO2mcOY/vBCVhYeZc7kPM8Cx5MHduOnF5+iBC4iHUogSbwI6O/1uB+wr/lJ1tp5wDyA/Pz8dmXiOZPbl/ybmzSwG0t3HObJBdt4bWUR543qybzr84Py3CIi0SSQ3imfA8OMMYOMMUnANcC/QhvWyZk+PId9ZTU8vmArAD88f0SEIxIRCY1Wa+LWWocx5lbgfSAeeN5auyHkkZ2Es0fkeLZvnDaIYT0zIxiNiEjoBDTYx1r7LvBuiGMJmr5dU7nlnCEM6JbOVZP6t36BiEiM6rAjNn94/shIhyAiEnKdbu4UEZGORElcRCSGKYmLiMQwJXERkRimJC4iEsOUxEVEYpiSuIhIDFMSFxGJYcba9s0aeMInNaYY2NXOy3sAh4MYTqzorOUGlV1l71yOV+4B1tocP/tPKCRJ/GQYY1ZaazvdlIOdtdygsqvsnUuwy63mFBGRGKYkLiISw6Ixic+LdAAR0lnLDSp7Z9VZyx7Uckddm7iIiAQuGmviIiISICVxEZEYFvIkbozpb4xZaIzZZIzZYIy5zbW/mzHmQ2PMNte/2a79I40xS40xtcaYu/w8X7wx5gtjzDuhjv1kBLPcxphCY8yXxpg1xpiVkShPWwS57F2NMa8bYza7nm9qJMoUqGCV3RgzwvV+u3/KjTG3R6pcgQjy+36H6znWG2NeNsakRKJMgQhyuW9zlXlDwO+3tTakP0BvYKJrOxPYCowCHgbudu2/G/iNazsXmAT8GrjLz/PdCbwEvBPq2KOl3EAh0CPSZYpQ2V8Avu3aTgK6Rrp84Sq713PGAwdwDgaJeBlDXXagL7ATSHU9fg34ZqTLF4ZyjwHWA2k4V11bAAxr7fVDXhO31u631q52bVcAm1xv0qU4/0Bx/fs11zmHrLWfA/XNn8sY0w+4CHg21HGfrGCWO9YEq+zGmCxgOvCc67w6a21pWArRTiF632cCO6y17R0FHRZBLnsCkGqMScCZ1PaFOPx2C2K5TwGWWWurrLUOYBHw9dZeP6xt4saYgcAEYDnQ01q7H5y/BJyfTq15AvgR0BiiEEMiCOW2wAfGmFXGmLmhijMUTrLsg4Fi4E+uJrRnjTHpIQw3qILwvrtdA7wc7PhC6WTKbq3dCzwC7Ab2A2XW2g9CGW+wnOR7vh6YbozpboxJAy4EWl3pPWxJ3BiTAfwDuN1aW96O6y8GDllrVwU9uBA62XK7TLPWTgQuAG4xxkwPWoAhFISyJwATgaettROASpxfS6NekN53jDFJwCXA34MVW6gF4W89G2ctdhDQB0g3xlwX3CiD72TLba3dBPwG+BB4D1gLOFq7LixJ3BiTiLNwf7PW/tO1+6AxprfreG/gUCtPMw24xBhTCLwCzDDG/DVEIQdFkMqNtXaf699DwBvA5NBEHDxBKnsRUGStXe56/DrOpB7VgvW+u1wArLbWHgx+pMEXpLLPAnZaa4uttfXAP4EzQhVzMATxb/05a+1Ea+104AiwrbVrwtE7xeBs09xkrX3M69C/gBtc2zcAb53oeay191hr+1lrB+L8evmxtTZqP52DVW5jTLoxJtO9DZyH82tX1Arie34A2GOMGeHaNRPYGORwgypYZfcyhxhpSgli2XcDpxtj0lzPORNnO3NUCuZ7bozJdf2bB1xGIO99GO7cnomzTXcdsMb1cyHQHfgI5yfNR0A31/m9cNbAyoFS13ZWs+f8CtHfOyUo5cbZLrzW9bMB+EmkyxbO9xwYD6x0PdebQHakyxfGsqcBJUCXSJcrAmX/BbAZZ4XlL0BypMsXpnJ/hrOishaYGcjra9i9iEgM04hNEZEYpiQuIhLDlMRFRGKYkriISAxTEhcRiWFK4iIiMUxJXEQkhv1/vcSgaES5clcAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -105,24 +89,616 @@ } ], "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(equity)" + "plt.plot(dateList, equity)" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] + "execution_count": 9, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2014-04-03 00:00:00 IF99 多 开仓 2175.2 8\n", + "2014-04-04 00:00:00 I99 多 开仓 803.5 52\n", + "2014-04-08 00:00:00 IF99 多 开仓 2195.8 8\n", + "2014-04-08 00:00:00 IF99 多 开仓 2216.2 8\n", + "2014-04-08 00:00:00 IF99 多 开仓 2236.8 8\n", + "2014-04-08 00:00:00 I99 多 开仓 813.5 52\n", + "2014-04-08 00:00:00 I99 多 开仓 823.0 52\n", + "2014-04-18 00:00:00 I99 空 平仓 784.5 156\n", + "2014-04-21 00:00:00 TA99 空 开仓 6272.0 240\n", + "2014-04-21 00:00:00 TA99 空 开仓 6230.0 240\n", + "2014-04-22 00:00:00 IF99 空 平仓 2165.2 32\n", + "2014-04-22 00:00:00 TA99 空 开仓 6190.0 240\n", + "2014-04-24 00:00:00 CU99 多 开仓 47260.0 30\n", + "2014-04-25 00:00:00 CU99 多 开仓 47590.0 30\n", + "2014-04-25 00:00:00 CU99 多 开仓 47930.0 30\n", + "2014-04-28 00:00:00 I99 空 开仓 758.0 58\n", + "2014-05-05 00:00:00 IF99 空 开仓 2130.0 9\n", + "2014-05-05 00:00:00 TA99 空 开仓 6148.0 240\n", + "2014-05-07 00:00:00 I99 空 开仓 749.5 58\n", + "2014-05-08 00:00:00 I99 空 开仓 740.5 58\n", + "2014-05-09 00:00:00 I99 空 开仓 732.0 58\n", + "2014-05-12 00:00:00 CU99 多 开仓 48260.0 30\n", + "2014-05-15 00:00:00 TA99 多 平仓 6240.0 960\n", + "2014-05-19 00:00:00 IF99 空 开仓 2111.8 9\n", + "2014-05-19 00:00:00 IF99 空 开仓 2093.4 9\n", + "2014-05-21 00:00:00 TA99 多 开仓 6324.0 252\n", + "2014-05-21 00:00:00 TA99 多 开仓 6364.0 252\n", + "2014-05-21 00:00:00 TA99 多 开仓 6402.0 252\n", + "2014-05-23 00:00:00 TA99 多 开仓 6442.0 252\n", + "2014-05-28 00:00:00 IF99 多 平仓 2166.8 27\n", + "2014-06-05 00:00:00 CU99 空 平仓 47860.0 120\n", + "2014-06-13 00:00:00 IF99 多 开仓 2176.2 11\n", + "2014-06-16 00:00:00 IF99 多 开仓 2191.6 11\n", + "2014-06-19 00:00:00 IF99 空 平仓 2129.6 22\n", + "2014-06-23 00:00:00 I99 多 平仓 693.0 232\n", + "2014-06-23 00:00:00 CU99 多 开仓 49310.0 38\n", + "2014-06-26 00:00:00 CU99 多 开仓 49570.0 38\n", + "2014-07-01 00:00:00 CU99 多 开仓 49830.0 38\n", + "2014-07-01 00:00:00 CU99 多 开仓 50090.0 38\n", + "2014-07-08 00:00:00 TA99 空 平仓 6986.0 1008\n", + "2014-07-21 00:00:00 I99 空 开仓 679.5 71\n", + "2014-07-22 00:00:00 IF99 多 开仓 2182.4 14\n", + "2014-07-22 00:00:00 IF99 多 开仓 2194.0 14\n", + "2014-07-23 00:00:00 IF99 多 开仓 2205.6 14\n", + "2014-07-23 00:00:00 I99 空 开仓 673.5 71\n", + "2014-07-24 00:00:00 IF99 多 开仓 2217.4 14\n", + "2014-07-24 00:00:00 I99 空 开仓 666.5 71\n", + "2014-08-05 00:00:00 I99 多 平仓 692.0 213\n", + "2014-08-12 00:00:00 I99 空 开仓 665.5 86\n", + "2014-08-14 00:00:00 I99 空 开仓 659.5 86\n", + "2014-08-14 00:00:00 I99 空 开仓 653.5 86\n", + "2014-08-14 00:00:00 CU99 空 平仓 49170.0 152\n", + "2014-08-14 00:00:00 TA99 空 开仓 7052.0 185\n", + "2014-08-15 00:00:00 TA99 空 开仓 6998.0 185\n", + "2014-08-18 00:00:00 TA99 空 开仓 6944.0 185\n", + "2014-08-18 00:00:00 TA99 空 开仓 6890.0 185\n", + "2014-08-20 00:00:00 I99 空 开仓 648.0 86\n", + "2014-08-26 00:00:00 IF99 空 平仓 2339.4 56\n", + "2014-09-03 00:00:00 IF99 多 开仓 2399.6 11\n", + "2014-09-03 00:00:00 IF99 多 开仓 2414.6 11\n", + "2014-09-04 00:00:00 IF99 多 开仓 2429.6 11\n", + "2014-09-04 00:00:00 IF99 多 开仓 2444.8 11\n", + "2014-09-10 00:00:00 CU99 空 开仓 48600.0 37\n", + "2014-09-11 00:00:00 CU99 空 开仓 48330.0 37\n", + "2014-09-17 00:00:00 CU99 多 平仓 49150.0 74\n", + "2014-09-22 00:00:00 IF99 空 平仓 2394.4 44\n", + "2014-09-22 00:00:00 CU99 空 开仓 47920.0 30\n", + "2014-09-22 00:00:00 CU99 空 开仓 47590.0 30\n", + "2014-09-25 00:00:00 IF99 多 开仓 2484.6 9\n", + "2014-10-14 00:00:00 I99 多 平仓 571.5 344\n", + "2014-10-17 00:00:00 IF99 空 平仓 2428.8 9\n", + "2014-10-17 00:00:00 CU99 空 开仓 46780.0 30\n", + "2014-10-24 00:00:00 TA99 多 平仓 5718.0 740\n", + "2014-10-27 00:00:00 IF99 空 开仓 2379.4 10\n", + "2014-10-29 00:00:00 IF99 多 平仓 2446.8 10\n", + "2014-10-30 00:00:00 CU99 多 平仓 47940.0 90\n", + "2014-10-31 00:00:00 IF99 多 开仓 2499.6 10\n", + "2014-10-31 00:00:00 IF99 多 开仓 2516.6 10\n", + "2014-11-05 00:00:00 CU99 空 开仓 46480.0 32\n", + "2014-11-07 00:00:00 IF99 多 开仓 2533.6 10\n", + "2014-11-07 00:00:00 IF99 多 开仓 2550.4 10\n", + "2014-11-13 00:00:00 TA99 多 开仓 5736.0 178\n", + "2014-11-19 00:00:00 TA99 多 开仓 5792.0 178\n", + "2014-11-24 00:00:00 CU99 多 平仓 47770.0 32\n", + "2014-11-27 00:00:00 CU99 空 开仓 46450.0 33\n", + "2014-11-28 00:00:00 CU99 空 开仓 46150.0 33\n", + "2014-11-28 00:00:00 CU99 空 开仓 45850.0 33\n", + "2014-11-28 00:00:00 TA99 空 平仓 5436.0 356\n", + "2014-12-01 00:00:00 CU99 空 开仓 45540.0 33\n", + "2014-12-01 00:00:00 TA99 空 开仓 5304.0 161\n", + "2014-12-01 00:00:00 TA99 空 开仓 5248.0 161\n", + "2014-12-08 00:00:00 TA99 空 开仓 5186.0 161\n", + "2014-12-09 00:00:00 TA99 空 开仓 5046.0 161\n", + "2015-01-19 00:00:00 IF99 空 平仓 3509.0 40\n", + "2015-01-21 00:00:00 TA99 多 平仓 4740.0 644\n", + "2015-01-26 00:00:00 I99 空 开仓 470.5 83\n", + "2015-01-26 00:00:00 I99 空 开仓 464.5 83\n", + "2015-02-13 00:00:00 I99 多 平仓 483.0 166\n", + "2015-02-13 00:00:00 CU99 多 平仓 41940.0 132\n", + "2015-03-05 00:00:00 I99 空 开仓 466.0 101\n", + "2015-03-05 00:00:00 I99 空 开仓 461.5 101\n", + "2015-03-06 00:00:00 I99 空 开仓 456.5 101\n", + "2015-03-06 00:00:00 I99 空 开仓 451.5 101\n", + "2015-03-13 00:00:00 IF99 多 开仓 3659.2 3\n", + "2015-03-16 00:00:00 IF99 多 开仓 3707.0 3\n", + "2015-03-16 00:00:00 TA99 空 开仓 4704.0 194\n", + "2015-03-16 00:00:00 TA99 空 开仓 4652.0 194\n", + "2015-03-17 00:00:00 IF99 多 开仓 3761.4 3\n", + "2015-03-18 00:00:00 IF99 多 开仓 3806.2 3\n", + "2015-03-23 00:00:00 CU99 多 开仓 43260.0 28\n", + "2015-03-23 00:00:00 CU99 多 开仓 43620.0 28\n", + "2015-03-23 00:00:00 CU99 多 开仓 43990.0 28\n", + "2015-03-24 00:00:00 CU99 多 开仓 44350.0 28\n", + "2015-03-24 00:00:00 TA99 多 平仓 4858.0 388\n", + "2015-03-30 00:00:00 TA99 空 开仓 4630.0 181\n", + "2015-04-02 00:00:00 TA99 空 开仓 4576.0 181\n", + "2015-04-07 00:00:00 TA99 多 平仓 4822.0 362\n", + "2015-04-08 00:00:00 TA99 多 开仓 4922.0 183\n", + "2015-04-08 00:00:00 TA99 多 开仓 4978.0 183\n", + "2015-04-09 00:00:00 CU99 空 平仓 43060.0 112\n", + "2015-04-14 00:00:00 TA99 多 开仓 5086.0 183\n", + "2015-04-17 00:00:00 I99 多 平仓 401.0 404\n", + "2015-04-28 00:00:00 CU99 多 开仓 44090.0 30\n", + "2015-05-04 00:00:00 CU99 多 开仓 45320.0 30\n", + "2015-05-04 00:00:00 CU99 多 开仓 45320.0 30\n", + "2015-05-06 00:00:00 IF99 空 平仓 4531.2 12\n", + "2015-05-06 00:00:00 I99 多 开仓 437.0 77\n", + "2015-05-06 00:00:00 I99 多 开仓 443.5 77\n", + "2015-05-15 00:00:00 I99 空 平仓 417.5 154\n", + "2015-05-18 00:00:00 TA99 空 平仓 5256.0 549\n", + "2015-05-20 00:00:00 CU99 空 平仓 45310.0 90\n", + "2015-06-08 00:00:00 IF99 多 开仓 5370.6 2\n", + "2015-06-10 00:00:00 I99 多 开仓 444.0 91\n", + "2015-06-11 00:00:00 I99 多 开仓 449.5 91\n", + "2015-06-12 00:00:00 CU99 空 开仓 42550.0 36\n", + "2015-06-15 00:00:00 CU99 空 开仓 42280.0 36\n", + "2015-06-16 00:00:00 CU99 空 开仓 42000.0 36\n", + "2015-06-17 00:00:00 IF99 空 平仓 4994.8 2\n", + "2015-06-17 00:00:00 I99 空 平仓 429.5 182\n", + "2015-06-17 00:00:00 CU99 空 开仓 41730.0 36\n", + "2015-06-19 00:00:00 IF99 空 开仓 4711.2 2\n", + "2015-06-19 00:00:00 IF99 空 开仓 4617.0 2\n", + "2015-06-23 00:00:00 IF99 空 开仓 4522.8 2\n", + "2015-06-25 00:00:00 IF99 多 平仓 4899.8 6\n", + "2015-06-26 00:00:00 IF99 空 开仓 4464.6 2\n", + "2015-06-26 00:00:00 IF99 空 开仓 4358.6 2\n", + "2015-06-26 00:00:00 IF99 空 开仓 4252.6 2\n", + "2015-06-29 00:00:00 IF99 空 开仓 4146.6 2\n", + "2015-06-30 00:00:00 I99 空 开仓 419.5 94\n", + "2015-06-30 00:00:00 I99 空 开仓 414.5 94\n", + "2015-07-29 00:00:00 I99 多 平仓 378.5 188\n", + "2015-08-10 00:00:00 IF99 多 平仓 3991.2 8\n", + "2015-08-24 00:00:00 IF99 空 开仓 3272.8 1\n", + "2015-08-24 00:00:00 IF99 空 开仓 3160.8 1\n", + "2015-08-25 00:00:00 IF99 空 开仓 3034.0 1\n", + "2015-08-25 00:00:00 IF99 空 开仓 2936.4 1\n", + "2015-08-25 00:00:00 I99 空 开仓 358.5 91\n", + "2015-08-25 00:00:00 TA99 空 开仓 4310.0 195\n", + "2015-08-28 00:00:00 I99 多 平仓 380.0 91\n", + "2015-08-28 00:00:00 TA99 多 平仓 4472.0 195\n", + "2015-09-09 00:00:00 I99 多 开仓 394.5 89\n", + "2015-09-09 00:00:00 CU99 多 平仓 39960.0 144\n", + "2015-09-10 00:00:00 I99 多 开仓 400.0 89\n", + "2015-09-10 00:00:00 I99 多 开仓 405.5 89\n", + "2015-09-11 00:00:00 I99 多 开仓 411.0 89\n", + "2015-09-15 00:00:00 I99 空 平仓 389.0 356\n", + "2015-09-29 00:00:00 I99 空 开仓 358.0 89\n", + "2015-09-29 00:00:00 I99 空 开仓 354.0 89\n", + "2015-09-29 00:00:00 CU99 空 开仓 37780.0 26\n", + "2015-09-29 00:00:00 CU99 空 开仓 37780.0 26\n", + "2015-10-08 00:00:00 CU99 多 平仓 39370.0 52\n", + "2015-10-08 00:00:00 TA99 多 开仓 4726.0 202\n", + "2015-10-09 00:00:00 I99 多 平仓 376.5 178\n", + "2015-10-09 00:00:00 TA99 多 开仓 4776.0 202\n", + "2015-10-12 00:00:00 IF99 多 平仓 3341.0 4\n", + "2015-10-22 00:00:00 TA99 空 平仓 4604.0 404\n", + "2015-10-27 00:00:00 I99 空 开仓 353.0 107\n", + "2015-10-28 00:00:00 I99 空 开仓 348.5 107\n", + "2015-11-03 00:00:00 I99 空 开仓 343.5 107\n", + "2015-11-03 00:00:00 I99 空 开仓 339.0 107\n", + "2015-11-05 00:00:00 CU99 空 开仓 38240.0 31\n", + "2015-11-06 00:00:00 CU99 空 开仓 37920.0 31\n", + "2015-11-09 00:00:00 CU99 空 开仓 37600.0 31\n", + "2015-11-10 00:00:00 CU99 空 开仓 37280.0 31\n", + "2015-11-16 00:00:00 TA99 空 开仓 4548.0 231\n", + "2015-11-16 00:00:00 TA99 空 开仓 4506.0 231\n", + "2015-11-26 00:00:00 TA99 多 平仓 4632.0 462\n", + "2015-12-08 00:00:00 TA99 空 开仓 4426.0 231\n", + "2015-12-08 00:00:00 TA99 空 开仓 4382.0 231\n", + "2015-12-11 00:00:00 CU99 多 平仓 35630.0 124\n", + "2015-12-18 00:00:00 I99 多 平仓 298.5 428\n", + "2015-12-21 00:00:00 IF99 多 开仓 3786.6 4\n", + "2015-12-23 00:00:00 IF99 多 开仓 3831.8 4\n", + "2015-12-28 00:00:00 IF99 空 平仓 3650.4 8\n", + "2015-12-30 00:00:00 TA99 多 平仓 4444.0 462\n", + "2016-01-04 00:00:00 IF99 空 开仓 3504.4 4\n", + "2016-01-04 00:00:00 IF99 空 开仓 3460.4 4\n", + "2016-01-04 00:00:00 IF99 空 开仓 3416.4 4\n", + "2016-01-05 00:00:00 IF99 空 开仓 3372.6 4\n", + "2016-01-11 00:00:00 CU99 空 开仓 34850.0 30\n", + "2016-01-12 00:00:00 TA99 空 开仓 4252.0 286\n", + "2016-01-14 00:00:00 CU99 空 开仓 34520.0 30\n", + "2016-01-18 00:00:00 TA99 空 开仓 4206.0 286\n", + "2016-01-19 00:00:00 TA99 多 平仓 4346.0 572\n", + "2016-01-27 00:00:00 CU99 多 平仓 35560.0 60\n", + "2016-02-01 00:00:00 I99 多 开仓 326.5 128\n", + "2016-02-04 00:00:00 I99 多 开仓 330.0 128\n", + "2016-02-04 00:00:00 I99 多 开仓 334.0 128\n", + "2016-02-04 00:00:00 CU99 多 开仓 36540.0 34\n", + "2016-02-15 00:00:00 TA99 多 开仓 4440.0 307\n", + "2016-02-17 00:00:00 IF99 多 平仓 2969.2 16\n", + "2016-02-18 00:00:00 I99 多 开仓 338.0 128\n", + "2016-02-19 00:00:00 TA99 多 开仓 4472.0 307\n", + "2016-02-26 00:00:00 TA99 空 平仓 4384.0 614\n", + "2016-03-01 00:00:00 TA99 多 开仓 4500.0 331\n", + "2016-03-01 00:00:00 TA99 多 开仓 4530.0 331\n", + "2016-03-01 00:00:00 TA99 多 开仓 4560.0 331\n", + "2016-03-02 00:00:00 CU99 多 开仓 36840.0 34\n", + "2016-03-02 00:00:00 TA99 多 开仓 4592.0 331\n", + "2016-03-28 00:00:00 I99 空 平仓 389.0 512\n", + "2016-03-30 00:00:00 CU99 空 平仓 37130.0 68\n", + "2016-04-13 00:00:00 IF99 多 开仓 3245.2 4\n", + "2016-04-20 00:00:00 IF99 空 平仓 3093.8 4\n", + "2016-04-20 00:00:00 I99 多 开仓 436.5 66\n", + "2016-04-20 00:00:00 I99 多 开仓 444.0 66\n", + "2016-04-20 00:00:00 I99 多 开仓 451.5 66\n", + "2016-04-21 00:00:00 I99 多 开仓 459.5 66\n", + "2016-04-22 00:00:00 CU99 多 开仓 38380.0 33\n", + "2016-04-22 00:00:00 CU99 多 开仓 38550.0 33\n", + "2016-04-26 00:00:00 CU99 空 平仓 37630.0 66\n", + "2016-04-27 00:00:00 I99 空 平仓 429.0 264\n", + "2016-05-06 00:00:00 TA99 空 平仓 4802.0 1324\n", + "2016-05-10 00:00:00 I99 空 开仓 378.0 49\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2016-05-13 00:00:00 I99 空 开仓 368.0 49\n", + "2016-05-13 00:00:00 I99 空 开仓 358.0 49\n", + "2016-05-13 00:00:00 CU99 空 开仓 35690.0 31\n", + "2016-05-13 00:00:00 CU99 空 开仓 35360.0 31\n", + "2016-05-20 00:00:00 CU99 空 开仓 35040.0 31\n", + "2016-05-23 00:00:00 I99 空 开仓 348.0 49\n", + "2016-05-23 00:00:00 TA99 空 开仓 4552.0 187\n", + "2016-05-31 00:00:00 IF99 空 开仓 2905.2 6\n", + "2016-05-31 00:00:00 IF99 空 开仓 2878.0 6\n", + "2016-06-01 00:00:00 IF99 多 平仓 3137.8 12\n", + "2016-06-03 00:00:00 IF99 多 开仓 3165.6 5\n", + "2016-06-06 00:00:00 CU99 多 平仓 36210.0 93\n", + "2016-06-07 00:00:00 I99 多 平仓 359.5 196\n", + "2016-06-13 00:00:00 IF99 空 平仓 3033.8 5\n", + "2016-06-14 00:00:00 TA99 多 平仓 4758.0 187\n", + "2016-06-20 00:00:00 TA99 多 开仓 4806.0 212\n", + "2016-06-23 00:00:00 CU99 多 开仓 36300.0 35\n", + "2016-06-24 00:00:00 CU99 多 开仓 36580.0 35\n", + "2016-06-28 00:00:00 CU99 多 开仓 36860.0 35\n", + "2016-06-28 00:00:00 CU99 多 开仓 37140.0 35\n", + "2016-06-29 00:00:00 TA99 多 开仓 4854.0 212\n", + "2016-07-04 00:00:00 TA99 多 开仓 4900.0 212\n", + "2016-07-06 00:00:00 TA99 空 平仓 4712.0 636\n", + "2016-07-07 00:00:00 IF99 多 开仓 3166.6 6\n", + "2016-07-11 00:00:00 IF99 多 开仓 3194.4 6\n", + "2016-07-12 00:00:00 IF99 多 开仓 3222.4 6\n", + "2016-07-13 00:00:00 IF99 多 开仓 3250.4 6\n", + "2016-07-19 00:00:00 TA99 空 开仓 4672.0 204\n", + "2016-07-27 00:00:00 IF99 空 平仓 3173.6 24\n", + "2016-07-28 00:00:00 I99 多 开仓 451.5 59\n", + "2016-07-28 00:00:00 CU99 空 平仓 37640.0 140\n", + "2016-07-29 00:00:00 TA99 空 开仓 4622.0 204\n", + "2016-07-29 00:00:00 TA99 空 开仓 4574.0 204\n", + "2016-08-01 00:00:00 I99 多 开仓 460.0 59\n", + "2016-08-05 00:00:00 I99 多 开仓 468.5 59\n", + "2016-08-08 00:00:00 I99 多 开仓 477.5 59\n", + "2016-08-09 00:00:00 TA99 多 平仓 4758.0 612\n", + "2016-08-11 00:00:00 IF99 多 开仓 3245.6 7\n", + "2016-08-11 00:00:00 I99 空 平仓 443.0 236\n", + "2016-08-12 00:00:00 IF99 多 开仓 3268.6 7\n", + "2016-08-12 00:00:00 TA99 多 开仓 4806.0 245\n", + "2016-08-15 00:00:00 IF99 多 开仓 3291.4 7\n", + "2016-08-15 00:00:00 IF99 多 开仓 3314.4 7\n", + "2016-08-17 00:00:00 TA99 多 开仓 4846.0 245\n", + "2016-08-17 00:00:00 TA99 多 开仓 4886.0 245\n", + "2016-08-25 00:00:00 TA99 空 平仓 4732.0 735\n", + "2016-08-29 00:00:00 I99 空 开仓 424.0 60\n", + "2016-08-29 00:00:00 I99 空 开仓 416.0 60\n", + "2016-08-31 00:00:00 I99 空 开仓 407.5 60\n", + "2016-09-08 00:00:00 I99 空 开仓 399.5 60\n", + "2016-09-12 00:00:00 IF99 空 平仓 3227.8 28\n", + "2016-09-14 00:00:00 IF99 空 开仓 3189.8 8\n", + "2016-09-21 00:00:00 CU99 多 开仓 37410.0 47\n", + "2016-09-22 00:00:00 CU99 多 开仓 37620.0 47\n", + "2016-09-23 00:00:00 CU99 多 开仓 37840.0 47\n", + "2016-09-28 00:00:00 TA99 空 开仓 4702.0 312\n", + "2016-09-29 00:00:00 I99 多 平仓 414.5 240\n", + "2016-10-10 00:00:00 IF99 多 平仓 3260.4 8\n", + "2016-10-11 00:00:00 CU99 多 开仓 38050.0 47\n", + "2016-10-11 00:00:00 TA99 多 平仓 4816.0 312\n", + "2016-10-14 00:00:00 I99 多 开仓 422.0 78\n", + "2016-10-14 00:00:00 I99 多 开仓 428.5 78\n", + "2016-10-14 00:00:00 I99 多 开仓 435.0 78\n", + "2016-10-14 00:00:00 CU99 空 平仓 37230.0 188\n", + "2016-10-19 00:00:00 IF99 多 开仓 3294.2 9\n", + "2016-10-19 00:00:00 I99 多 开仓 441.0 78\n", + "2016-10-20 00:00:00 TA99 多 开仓 4852.0 315\n", + "2016-10-20 00:00:00 TA99 多 开仓 4882.0 315\n", + "2016-10-20 00:00:00 TA99 多 开仓 4914.0 315\n", + "2016-10-20 00:00:00 TA99 多 开仓 4946.0 315\n", + "2016-10-24 00:00:00 IF99 多 开仓 3312.8 9\n", + "2016-11-03 00:00:00 TA99 空 平仓 4834.0 1260\n", + "2016-11-10 00:00:00 TA99 多 开仓 5010.0 277\n", + "2016-11-10 00:00:00 TA99 多 开仓 5046.0 277\n", + "2016-11-11 00:00:00 TA99 多 开仓 5082.0 277\n", + "2016-11-11 00:00:00 TA99 多 开仓 5118.0 277\n", + "2016-11-14 00:00:00 TA99 空 平仓 4974.0 1108\n", + "2016-12-07 00:00:00 IF99 空 平仓 3433.0 18\n", + "2016-12-09 00:00:00 TA99 多 开仓 5402.0 215\n", + "2016-12-09 00:00:00 TA99 多 开仓 5448.0 215\n", + "2016-12-12 00:00:00 TA99 多 开仓 5496.0 215\n", + "2016-12-12 00:00:00 TA99 多 开仓 5542.0 215\n", + "2016-12-19 00:00:00 I99 空 平仓 568.0 312\n", + "2016-12-20 00:00:00 TA99 空 平仓 5356.0 860\n", + "2017-01-13 00:00:00 CU99 多 开仓 47310.0 19\n", + "2017-01-13 00:00:00 CU99 多 开仓 47840.0 19\n", + "2017-01-16 00:00:00 IF99 空 开仓 3220.6 9\n", + "2017-01-16 00:00:00 IF99 空 开仓 3202.0 9\n", + "2017-01-16 00:00:00 I99 多 开仓 612.5 37\n", + "2017-01-16 00:00:00 I99 多 开仓 626.0 37\n", + "2017-01-16 00:00:00 I99 多 开仓 639.5 37\n", + "2017-01-16 00:00:00 CU99 多 开仓 48370.0 19\n", + "2017-01-17 00:00:00 IF99 多 平仓 3277.0 18\n", + "2017-01-17 00:00:00 I99 多 开仓 653.5 37\n", + "2017-01-18 00:00:00 CU99 空 平仓 46240.0 57\n", + "2017-01-20 00:00:00 IF99 多 开仓 3352.0 8\n", + "2017-01-23 00:00:00 IF99 多 开仓 3372.2 8\n", + "2017-01-23 00:00:00 I99 空 平仓 598.5 148\n", + "2017-01-23 00:00:00 TA99 多 开仓 5540.0 205\n", + "2017-01-24 00:00:00 TA99 多 开仓 5588.0 205\n", + "2017-01-25 00:00:00 TA99 多 开仓 5636.0 205\n", + "2017-01-25 00:00:00 TA99 多 开仓 5686.0 205\n", + "2017-02-10 00:00:00 IF99 多 开仓 3392.2 8\n", + "2017-02-10 00:00:00 I99 多 开仓 658.0 34\n", + "2017-02-10 00:00:00 I99 多 开仓 673.0 34\n", + "2017-02-13 00:00:00 I99 多 开仓 687.5 34\n", + "2017-02-20 00:00:00 TA99 空 平仓 5662.0 820\n", + "2017-03-03 00:00:00 IF99 空 平仓 3383.4 24\n", + "2017-03-03 00:00:00 I99 空 平仓 659.5 102\n", + "2017-03-09 00:00:00 I99 空 开仓 625.0 36\n", + "2017-03-09 00:00:00 CU99 空 开仓 47120.0 22\n", + "2017-03-09 00:00:00 CU99 空 开仓 46670.0 22\n", + "2017-03-09 00:00:00 TA99 空 开仓 5244.0 206\n", + "2017-03-10 00:00:00 CU99 空 开仓 46210.0 22\n", + "2017-03-10 00:00:00 TA99 空 开仓 5190.0 206\n", + "2017-03-10 00:00:00 TA99 空 开仓 5146.0 206\n", + "2017-03-13 00:00:00 TA99 空 开仓 5098.0 206\n", + "2017-03-15 00:00:00 I99 多 平仓 680.5 36\n", + "2017-03-16 00:00:00 CU99 多 平仓 48040.0 66\n", + "2017-03-22 00:00:00 I99 空 开仓 612.0 36\n", + "2017-03-24 00:00:00 IF99 多 开仓 3456.6 10\n", + "2017-03-24 00:00:00 IF99 多 开仓 3473.2 10\n", + "2017-03-24 00:00:00 I99 空 开仓 594.5 36\n", + "2017-03-27 00:00:00 I99 空 开仓 584.5 36\n", + "2017-03-27 00:00:00 I99 空 开仓 570.5 36\n", + "2017-03-28 00:00:00 CU99 空 开仓 46180.0 23\n", + "2017-03-30 00:00:00 IF99 空 平仓 3407.0 20\n", + "2017-03-30 00:00:00 CU99 多 平仓 47920.0 23\n", + "2017-04-05 00:00:00 IF99 多 开仓 3474.4 10\n", + "2017-04-05 00:00:00 IF99 多 开仓 3491.0 10\n", + "2017-04-11 00:00:00 IF99 多 开仓 3509.2 10\n", + "2017-04-13 00:00:00 CU99 空 开仓 45750.0 23\n", + "2017-04-17 00:00:00 IF99 空 平仓 3442.2 30\n", + "2017-04-17 00:00:00 CU99 多 平仓 47520.0 23\n", + "2017-04-19 00:00:00 CU99 空 开仓 45640.0 21\n", + "2017-04-20 00:00:00 CU99 空 开仓 45170.0 21\n", + "2017-04-28 00:00:00 I99 多 平仓 515.5 144\n", + "2017-05-02 00:00:00 CU99 多 平仓 47060.0 42\n", + "2017-05-04 00:00:00 IF99 空 开仓 3371.6 10\n", + "2017-05-05 00:00:00 IF99 空 开仓 3355.4 10\n", + "2017-05-05 00:00:00 IF99 空 开仓 3339.0 10\n", + "2017-05-05 00:00:00 CU99 空 开仓 44900.0 23\n", + "2017-05-16 00:00:00 IF99 多 平仓 3404.4 30\n", + "2017-05-22 00:00:00 CU99 多 平仓 45730.0 23\n", + "2017-05-23 00:00:00 TA99 多 平仓 5034.0 824\n", + "2017-05-25 00:00:00 IF99 多 开仓 3433.6 10\n", + "2017-05-25 00:00:00 IF99 多 开仓 3449.8 10\n", + "2017-05-25 00:00:00 IF99 多 开仓 3466.0 10\n", + "2017-05-26 00:00:00 IF99 多 开仓 3482.2 10\n", + "2017-05-31 00:00:00 I99 空 开仓 439.0 46\n", + "2017-05-31 00:00:00 I99 空 开仓 428.5 46\n", + "2017-06-01 00:00:00 I99 空 开仓 417.5 46\n", + "2017-06-01 00:00:00 TA99 空 开仓 4774.0 249\n", + "2017-06-12 00:00:00 CU99 多 开仓 46440.0 31\n", + "2017-06-13 00:00:00 TA99 多 平仓 4934.0 249\n", + "2017-06-23 00:00:00 CU99 多 开仓 46760.0 31\n", + "2017-06-27 00:00:00 I99 多 平仓 437.5 138\n", + "2017-06-28 00:00:00 I99 多 开仓 455.5 60\n", + "2017-06-28 00:00:00 CU99 多 开仓 47080.0 31\n", + "2017-06-29 00:00:00 I99 多 开仓 464.0 60\n", + "2017-06-29 00:00:00 I99 多 开仓 472.0 60\n", + "2017-08-11 00:00:00 IF99 空 平仓 3657.0 40\n", + "2017-08-15 00:00:00 I99 空 平仓 526.5 180\n", + "2017-09-04 00:00:00 TA99 多 开仓 5410.0 258\n", + "2017-09-08 00:00:00 CU99 空 平仓 52050.0 93\n", + "2017-09-11 00:00:00 I99 空 开仓 520.0 41\n", + "2017-09-11 00:00:00 TA99 空 平仓 5254.0 258\n", + "2017-09-14 00:00:00 I99 空 开仓 508.0 41\n", + "2017-09-18 00:00:00 I99 空 开仓 496.0 41\n", + "2017-09-21 00:00:00 I99 空 开仓 484.0 41\n", + "2017-09-28 00:00:00 TA99 空 开仓 5194.0 266\n", + "2017-09-28 00:00:00 TA99 空 开仓 5156.0 266\n", + "2017-09-28 00:00:00 TA99 空 开仓 5118.0 266\n", + "2017-10-09 00:00:00 TA99 空 开仓 5082.0 266\n", + "2017-10-13 00:00:00 CU99 多 开仓 53520.0 26\n", + "2017-10-16 00:00:00 CU99 多 开仓 53900.0 26\n", + "2017-10-16 00:00:00 CU99 多 开仓 54290.0 26\n", + "2017-10-16 00:00:00 CU99 多 开仓 54680.0 26\n", + "2017-10-20 00:00:00 I99 多 平仓 468.0 164\n", + "2017-10-30 00:00:00 TA99 多 平仓 5230.0 1064\n", + "2017-11-06 00:00:00 TA99 多 开仓 5244.0 320\n", + "2017-11-06 00:00:00 TA99 多 开仓 5274.0 320\n", + "2017-11-06 00:00:00 TA99 多 开仓 5306.0 320\n", + "2017-11-07 00:00:00 TA99 多 开仓 5338.0 320\n", + "2017-11-09 00:00:00 CU99 空 平仓 53470.0 104\n", + "2017-11-15 00:00:00 CU99 空 开仓 53280.0 22\n", + "2017-11-28 00:00:00 TA99 空 平仓 5388.0 1280\n", + "2017-11-30 00:00:00 CU99 空 开仓 52820.0 22\n", + "2017-12-04 00:00:00 I99 多 开仓 551.0 62\n", + "2017-12-04 00:00:00 TA99 多 开仓 5568.0 249\n", + "2017-12-06 00:00:00 CU99 空 开仓 52360.0 22\n", + "2017-12-06 00:00:00 CU99 空 开仓 51910.0 22\n", + "2017-12-07 00:00:00 I99 空 平仓 518.5 62\n", + "2017-12-07 00:00:00 TA99 空 平仓 5408.0 249\n", + "2017-12-14 00:00:00 TA99 空 开仓 5340.0 248\n", + "2017-12-18 00:00:00 CU99 多 平仓 53730.0 88\n", + "2017-12-25 00:00:00 IF99 多 开仓 4103.6 6\n", + "2017-12-25 00:00:00 CU99 多 开仓 55000.0 25\n", + "2017-12-25 00:00:00 CU99 多 开仓 55400.0 25\n", + "2017-12-26 00:00:00 TA99 多 平仓 5444.0 248\n", + "2017-12-27 00:00:00 IF99 空 平仓 3996.6 6\n", + "2017-12-28 00:00:00 CU99 多 开仓 55790.0 25\n", + "2018-01-02 00:00:00 IF99 多 开仓 4105.4 6\n", + "2018-01-03 00:00:00 IF99 多 开仓 4132.2 6\n", + "2018-01-03 00:00:00 TA99 多 开仓 5584.0 295\n", + "2018-01-04 00:00:00 TA99 多 开仓 5618.0 295\n", + "2018-01-04 00:00:00 TA99 多 开仓 5652.0 295\n", + "2018-01-08 00:00:00 IF99 多 开仓 4159.0 6\n", + "2018-01-08 00:00:00 I99 多 开仓 553.0 57\n", + "2018-01-12 00:00:00 CU99 空 平仓 54580.0 75\n", + "2018-01-22 00:00:00 CU99 空 开仓 53650.0 29\n", + "2018-01-23 00:00:00 I99 空 平仓 526.5 57\n", + "2018-01-24 00:00:00 CU99 空 开仓 53190.0 29\n", + "2018-01-24 00:00:00 CU99 空 开仓 52960.0 29\n", + "2018-01-25 00:00:00 CU99 多 平仓 54340.0 87\n", + "2018-01-29 00:00:00 I99 空 开仓 517.0 65\n", + "2018-01-31 00:00:00 I99 空 开仓 509.0 65\n", + "2018-02-01 00:00:00 IF99 空 平仓 4253.2 18\n", + "2018-02-06 00:00:00 TA99 空 平仓 5630.0 885\n", + "2018-02-08 00:00:00 CU99 空 开仓 52780.0 27\n", + "2018-02-08 00:00:00 CU99 空 开仓 52410.0 27\n", + "2018-02-08 00:00:00 CU99 空 开仓 52050.0 27\n", + "2018-02-09 00:00:00 IF99 空 开仓 3937.4 5\n", + "2018-02-09 00:00:00 IF99 空 开仓 3902.4 5\n", + "2018-02-09 00:00:00 IF99 空 开仓 3867.4 5\n", + "2018-02-09 00:00:00 IF99 空 开仓 3832.4 5\n", + "2018-02-09 00:00:00 I99 多 平仓 533.0 130\n", + "2018-02-09 00:00:00 CU99 空 开仓 51680.0 27\n", + "2018-02-22 00:00:00 IF99 多 平仓 4010.2 20\n", + "2018-02-22 00:00:00 CU99 多 平仓 53270.0 108\n", + "2018-02-23 00:00:00 I99 多 开仓 549.0 75\n", + "2018-02-26 00:00:00 I99 多 开仓 556.0 75\n", + "2018-02-26 00:00:00 TA99 多 开仓 5788.0 291\n", + "2018-02-27 00:00:00 TA99 多 开仓 5822.0 291\n", + "2018-03-05 00:00:00 I99 空 平仓 529.0 150\n", + "2018-03-07 00:00:00 TA99 空 平仓 5684.0 582\n", + "2018-03-08 00:00:00 I99 空 开仓 506.5 79\n", + "2018-03-09 00:00:00 I99 空 开仓 500.0 79\n", + "2018-03-09 00:00:00 I99 空 开仓 493.5 79\n", + "2018-03-09 00:00:00 I99 空 开仓 487.5 79\n", + "2018-03-09 00:00:00 TA99 空 开仓 5570.0 290\n", + "2018-03-09 00:00:00 TA99 空 开仓 5536.0 290\n", + "2018-03-16 00:00:00 TA99 空 开仓 5502.0 290\n", + "2018-03-20 00:00:00 TA99 空 开仓 5468.0 290\n", + "2018-03-21 00:00:00 CU99 空 开仓 51250.0 27\n", + "2018-03-21 00:00:00 CU99 空 开仓 50890.0 27\n", + "2018-04-10 00:00:00 CU99 多 平仓 51280.0 54\n", + "2018-04-17 00:00:00 IF99 空 开仓 3740.8 5\n", + "2018-04-17 00:00:00 TA99 多 平仓 5500.0 1160\n", + "2018-04-18 00:00:00 IF99 空 开仓 3704.4 5\n", + "2018-04-19 00:00:00 I99 多 平仓 461.0 316\n", + "2018-04-19 00:00:00 CU99 多 开仓 52020.0 27\n", + "2018-04-19 00:00:00 CU99 多 开仓 52260.0 27\n", + "2018-05-08 00:00:00 IF99 多 平仓 3832.8 10\n", + "2018-05-09 00:00:00 CU99 空 平仓 51040.0 54\n", + "2018-05-15 00:00:00 TA99 多 开仓 5836.0 302\n", + "2018-05-16 00:00:00 TA99 多 开仓 5870.0 302\n", + "2018-05-16 00:00:00 TA99 多 开仓 5902.0 302\n", + "2018-05-21 00:00:00 IF99 多 开仓 3922.2 6\n", + "2018-05-22 00:00:00 TA99 空 平仓 5770.0 906\n", + "2018-05-23 00:00:00 I99 空 开仓 451.0 75\n", + "2018-05-23 00:00:00 CU99 多 开仓 52370.0 34\n", + "2018-05-24 00:00:00 IF99 空 平仓 3822.0 6\n", + "2018-05-30 00:00:00 IF99 空 开仓 3714.2 6\n", + "2018-05-30 00:00:00 CU99 空 平仓 51190.0 34\n", + "2018-06-04 00:00:00 CU99 多 开仓 52470.0 33\n", + "2018-06-05 00:00:00 CU99 多 开仓 52780.0 33\n", + "2018-06-06 00:00:00 I99 多 平仓 469.5 75\n", + "2018-06-06 00:00:00 CU99 多 开仓 53080.0 33\n", + "2018-06-06 00:00:00 CU99 多 开仓 53380.0 33\n", + "2018-06-07 00:00:00 IF99 多 平仓 3827.6 6\n", + "2018-06-19 00:00:00 IF99 空 开仓 3667.4 6\n", + "2018-06-19 00:00:00 IF99 空 开仓 3659.2 6\n", + "2018-06-19 00:00:00 IF99 空 开仓 3631.0 6\n", + "2018-06-19 00:00:00 IF99 空 开仓 3602.8 6\n", + "2018-06-19 00:00:00 I99 空 开仓 446.5 87\n", + "2018-06-19 00:00:00 CU99 空 平仓 52170.0 132\n", + "2018-06-25 00:00:00 I99 多 平仓 469.5 87\n", + "2018-06-28 00:00:00 TA99 多 开仓 5822.0 296\n", + "2018-07-02 00:00:00 CU99 空 开仓 51370.0 32\n", + "2018-07-03 00:00:00 TA99 多 开仓 5854.0 296\n", + "2018-07-04 00:00:00 CU99 空 开仓 51050.0 32\n", + "2018-07-04 00:00:00 CU99 空 开仓 50740.0 32\n", + "2018-07-04 00:00:00 CU99 空 开仓 50430.0 32\n", + "2018-07-09 00:00:00 TA99 多 开仓 5888.0 296\n", + "2018-07-12 00:00:00 IF99 多 平仓 3476.2 24\n", + "2018-07-19 00:00:00 TA99 多 开仓 5922.0 296\n", + "2018-07-23 00:00:00 I99 多 开仓 476.0 110\n", + "2018-07-25 00:00:00 CU99 多 平仓 49840.0 128\n", + "2018-07-27 00:00:00 I99 多 开仓 480.5 110\n", + "2018-07-27 00:00:00 I99 多 开仓 485.0 110\n", + "2018-07-27 00:00:00 I99 多 开仓 489.5 110\n", + "2018-08-02 00:00:00 I99 空 平仓 471.5 440\n", + "2018-08-06 00:00:00 IF99 空 开仓 3272.8 4\n", + "2018-08-06 00:00:00 IF99 空 开仓 3234.4 4\n", + "2018-08-06 00:00:00 I99 多 开仓 493.5 110\n", + "2018-08-06 00:00:00 I99 多 开仓 498.0 110\n", + "2018-08-06 00:00:00 I99 多 开仓 502.5 110\n", + "2018-08-06 00:00:00 I99 多 开仓 507.5 110\n", + "2018-08-09 00:00:00 IF99 多 平仓 3387.8 8\n", + "2018-08-16 00:00:00 IF99 空 开仓 3224.6 4\n", + "2018-08-16 00:00:00 I99 空 平仓 489.0 440\n", + "2018-08-17 00:00:00 IF99 空 开仓 3189.8 4\n", + "2018-08-27 00:00:00 IF99 多 平仓 3346.8 8\n", + "2018-09-05 00:00:00 CU99 空 开仓 47260.0 30\n", + "2018-09-11 00:00:00 TA99 空 平仓 7666.0 1184\n", + "2018-09-12 00:00:00 IF99 空 开仓 3188.4 5\n", + "2018-09-13 00:00:00 CU99 多 平仓 48580.0 30\n", + "2018-09-19 00:00:00 I99 多 开仓 508.0 92\n", + "2018-09-19 00:00:00 I99 多 开仓 513.5 92\n", + "2018-09-19 00:00:00 CU99 多 开仓 49160.0 30\n", + "2018-09-19 00:00:00 CU99 多 开仓 49460.0 30\n", + "2018-09-21 00:00:00 IF99 多 平仓 3325.4 5\n", + "2018-09-21 00:00:00 CU99 多 开仓 49790.0 30\n", + "2018-09-25 00:00:00 CU99 多 开仓 50300.0 30\n", + "2018-09-26 00:00:00 IF99 多 开仓 3425.0 5\n", + "2018-09-26 00:00:00 IF99 多 开仓 3457.6 5\n", + "2018-09-28 00:00:00 I99 空 平仓 492.5 184\n", + "2018-10-08 00:00:00 IF99 空 平仓 3326.8 10\n", + "2018-10-10 00:00:00 I99 多 开仓 513.5 97\n", + "2018-10-11 00:00:00 IF99 空 开仓 3183.6 5\n", + "2018-10-11 00:00:00 IF99 空 开仓 3150.8 5\n", + "2018-10-11 00:00:00 IF99 空 开仓 3118.0 5\n", + "2018-10-17 00:00:00 IF99 空 开仓 3085.2 5\n", + "2018-10-17 00:00:00 I99 多 开仓 519.0 97\n", + "2018-10-18 00:00:00 I99 多 开仓 524.0 97\n", + "2018-10-18 00:00:00 I99 多 开仓 529.0 97\n", + "2018-10-18 00:00:00 TA99 空 开仓 7084.0 118\n", + "2018-10-18 00:00:00 TA99 空 开仓 6998.0 118\n", + "2018-10-22 00:00:00 IF99 多 平仓 3216.6 20\n", + "2018-10-22 00:00:00 TA99 空 开仓 6914.0 118\n", + "2018-10-25 00:00:00 CU99 空 平仓 49610.0 120\n", + "2018-10-25 00:00:00 TA99 空 开仓 6830.0 118\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2018-10-31 00:00:00 CU99 空 开仓 49400.0 31\n", + "2018-10-31 00:00:00 CU99 空 开仓 49080.0 31\n", + "2018-11-01 00:00:00 CU99 空 开仓 48760.0 31\n", + "2018-11-02 00:00:00 I99 空 平仓 509.5 388\n", + "2018-11-05 00:00:00 CU99 多 平仓 50050.0 93\n" + ] + } + ], + "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": { diff --git a/examples/TurtleStrategy/run.ipynb b/examples/TurtleStrategy/run.ipynb index 8eb32e4c..2d97467d 100644 --- a/examples/TurtleStrategy/run.ipynb +++ b/examples/TurtleStrategy/run.ipynb @@ -25,14 +25,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "16:03:53.281000:\t投资组合的合约代码['000300', '000905']\n", - "16:03:53.281000:\t投资组合的初始价值10000000\n" + "16:07:40.112000:\t投资组合的合约代码['000300', '000905']\n", + "16:07:40.112000:\t投资组合的初始价值10000000\n" ] } ], "source": [ "engine = BacktestingEngine()\n", - "engine.setPeriod(datetime(2015, 1, 1), datetime(2018, 11, 9))\n", + "engine.setPeriod(datetime(2014, 1, 1), datetime(2018, 12, 30))\n", "engine.initPortfolio('test.csv', 10000000)" ] }, @@ -47,13 +47,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "16:03:53.421000:\t000300数据加载完成,总数据量:2820\n", - "16:03:53.455000:\t000905数据加载完成,总数据量:940\n", - "16:03:53.455000:\t全部数据加载完成\n", - "16:03:53.457000:\t开始回放K线数据\n", - "16:03:53.575000:\tK线数据回放结束\n", - "16:03:53.576000:\t开始统计回测结果\n", - "16:03:53.582000:\t回测结果统计结束\n" + "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" ] } ], @@ -71,7 +71,7 @@ { "data": { "text/plain": [ - "[]" + "[]" ] }, "execution_count": 4, @@ -80,9 +80,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -92,1205 +92,24 @@ "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(equity)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2015-04-07 00:00:00\n", - "000300 多 开仓 4213.8 1216\n", - "000300 多 开仓 4213.8 1216\n", - "000300 多 开仓 4252.8 1216\n", - "000905 多 开仓 7728.9 831\n", - "000905 多 开仓 7742.9 831\n", - "000905 多 开仓 7803.1 831\n", - "000905 多 开仓 7863.3 831\n", - "2015-04-08 00:00:00\n", - "000300 多 开仓 4294.0 1216\n", - "2015-04-09 00:00:00\n", - "000905 空 平仓 7622.5 3324\n", - "2015-04-10 00:00:00\n", - "000905 多 开仓 7921.0 712\n", - "2015-04-13 00:00:00\n", - "000905 多 开仓 7994.3 712\n", - "000905 多 开仓 8061.4 712\n", - "000905 多 开仓 8131.6 712\n", - "2015-04-15 00:00:00\n", - "000905 空 平仓 7850.8 2848\n", - "2015-04-22 00:00:00\n", - "000905 多 开仓 8192.2 570\n", - "000905 多 开仓 8280.0 570\n", - "2015-04-23 00:00:00\n", - "000905 多 开仓 8371.9 570\n", - "2015-04-27 00:00:00\n", - "000905 多 开仓 8503.6 570\n", - "2015-05-06 00:00:00\n", - "000905 空 平仓 8152.6 2280\n", - "2015-05-07 00:00:00\n", - "000300 空 平仓 4511.8 4864\n", - "2015-05-12 00:00:00\n", - "000905 多 开仓 8595.1 472\n", - "000905 多 开仓 8682.4 472\n", - "2015-05-13 00:00:00\n", - "000905 多 开仓 8788.3 472\n", - "000905 多 开仓 8894.2 472\n", - "2015-06-05 00:00:00\n", - "000300 多 开仓 5255.0 691\n", - "2015-06-08 00:00:00\n", - "000300 多 开仓 5299.2 691\n", - "2015-06-09 00:00:00\n", - "000300 多 开仓 5379.4 691\n", - "2015-06-16 00:00:00\n", - "000300 空 平仓 5090.0 2073\n", - "2015-06-19 00:00:00\n", - "000300 空 开仓 4665.6 657\n", - "000905 空 平仓 10475.9 1888\n", - "2015-06-23 00:00:00\n", - "000300 空 开仓 4589.4 657\n", - "000300 空 开仓 4513.2 657\n", - "2015-06-24 00:00:00\n", - "000300 多 平仓 4817.8 1971\n", - "2015-06-26 00:00:00\n", - "000300 空 开仓 4455.4 585\n", - "000300 空 开仓 4369.8 585\n", - "000300 空 开仓 4284.2 585\n", - "000905 空 开仓 9333.9 246\n", - "000905 空 开仓 9130.6 246\n", - "2015-06-29 00:00:00\n", - "000300 空 开仓 4198.8 585\n", - "000905 空 开仓 8927.2 246\n", - "000905 空 开仓 8723.9 246\n", - "2015-07-20 00:00:00\n", - "000905 多 平仓 8076.2 984\n", - "2015-07-24 00:00:00\n", - "000300 多 平仓 4278.2 2340\n", - "2015-08-24 00:00:00\n", - "000300 空 开仓 3454.6 583\n", - "000300 空 开仓 3452.2 583\n", - "000300 空 开仓 3366.4 583\n", - "000300 空 开仓 3280.6 583\n", - "000905 空 开仓 7255.3 238\n", - "000905 空 开仓 7051.4 238\n", - "2015-08-25 00:00:00\n", - "000905 空 开仓 6496.1 238\n", - "000905 空 开仓 6496.1 238\n", - "2015-10-08 00:00:00\n", - "000905 多 平仓 6362.0 952\n", - "2015-10-12 00:00:00\n", - "000300 多 平仓 3426.6 2332\n", - "2015-11-20 00:00:00\n", - "000905 多 开仓 7820.0 440\n", - "2015-11-26 00:00:00\n", - "000905 多 开仓 7962.2 440\n", - "2015-11-27 00:00:00\n", - "000905 空 平仓 7507.3 880\n", - "2015-12-23 00:00:00\n", - "000300 多 开仓 3891.8 1293\n", - "2015-12-28 00:00:00\n", - "000300 空 平仓 3737.2 1293\n", - "2016-01-04 00:00:00\n", - "000300 空 开仓 3571.0 1369\n", - "000300 空 开仓 3534.4 1369\n", - "000300 空 开仓 3498.0 1369\n", - "2016-01-05 00:00:00\n", - "000300 空 开仓 3382.2 1369\n", - "000905 空 开仓 6663.7 540\n", - "2016-01-06 00:00:00\n", - "000300 多 平仓 3528.2 5476\n", - "000905 多 平仓 7034.2 540\n", - "2016-01-07 00:00:00\n", - "000300 空 开仓 3377.2 1175\n", - "000300 空 开仓 3334.8 1175\n", - "000300 空 开仓 3292.2 1175\n", - "000905 空 开仓 6627.6 510\n", - "000905 空 开仓 6529.6 510\n", - "2016-01-08 00:00:00\n", - "000300 空 开仓 3249.6 1175\n", - "000905 空 开仓 6431.5 510\n", - "000905 空 开仓 6333.5 510\n", - "2016-02-17 00:00:00\n", - "000300 多 平仓 3042.0 4700\n", - "2016-03-07 00:00:00\n", - "000300 多 开仓 3128.2 1169\n", - "2016-03-18 00:00:00\n", - "000300 多 开仓 3171.0 1169\n", - "2016-03-21 00:00:00\n", - "000300 多 开仓 3213.8 1169\n", - "000300 多 开仓 3256.6 1169\n", - "2016-03-22 00:00:00\n", - "000905 多 平仓 6118.6 2040\n", - "2016-04-06 00:00:00\n", - "000905 多 开仓 6293.5 551\n", - "2016-04-13 00:00:00\n", - "000905 多 开仓 6384.2 551\n", - "2016-04-20 00:00:00\n", - "000300 空 平仓 3163.4 4676\n", - "000905 空 平仓 6021.3 1102\n", - "2016-04-28 00:00:00\n", - "000905 空 开仓 5897.7 682\n", - "2016-05-04 00:00:00\n", - "000905 多 平仓 6191.1 682\n", - "2016-05-09 00:00:00\n", - "000300 空 开仓 3107.4 1914\n", - "000300 空 开仓 3081.2 1914\n", - "000300 空 开仓 3055.2 1914\n", - "000905 空 开仓 5888.1 689\n", - "000905 空 开仓 5815.5 689\n", - "000905 空 开仓 5743.0 689\n", - "2016-05-12 00:00:00\n", - "000905 空 开仓 5647.1 689\n", - "2016-05-26 00:00:00\n", - "000300 空 开仓 3029.0 1914\n", - "2016-05-31 00:00:00\n", - "000300 多 平仓 3105.2 7656\n", - "000905 多 平仓 5853.6 2756\n", - "2016-06-06 00:00:00\n", - "000905 多 开仓 6062.1 802\n", - "2016-06-13 00:00:00\n", - "000905 空 平仓 5812.8 802\n", - "2016-06-28 00:00:00\n", - "000905 多 开仓 6067.5 765\n", - "2016-06-29 00:00:00\n", - "000905 多 开仓 6132.8 765\n", - "2016-07-04 00:00:00\n", - "000300 多 开仓 3201.8 2407\n", - "000905 多 开仓 6198.1 765\n", - "2016-07-05 00:00:00\n", - "000905 多 开仓 6263.5 765\n", - "2016-07-11 00:00:00\n", - "000300 多 开仓 3222.6 2407\n", - "2016-07-12 00:00:00\n", - "000300 多 开仓 3243.2 2407\n", - "000300 多 开仓 3264.0 2407\n", - "2016-07-27 00:00:00\n", - "000300 空 平仓 3218.2 9628\n", - "000905 空 平仓 6355.5 3060\n", - "2016-08-12 00:00:00\n", - "000300 多 开仓 3285.0 2688\n", - "2016-08-15 00:00:00\n", - "000300 多 开仓 3303.6 2688\n", - "000300 多 开仓 3322.2 2688\n", - "000300 多 开仓 3340.8 2688\n", - "2016-08-18 00:00:00\n", - "000905 多 开仓 6515.9 1048\n", - "2016-08-25 00:00:00\n", - "000905 空 平仓 6325.1 1048\n", - "2016-09-07 00:00:00\n", - "000905 多 开仓 6527.2 1183\n", - "2016-09-12 00:00:00\n", - "000300 空 平仓 3271.8 10752\n", - "000905 空 平仓 6358.1 1183\n", - "2016-09-14 00:00:00\n", - "000300 空 开仓 3234.6 2753\n", - "000905 空 开仓 6283.8 1196\n", - "2016-09-26 00:00:00\n", - "000905 空 开仓 6242.0 1196\n", - "2016-09-27 00:00:00\n", - "000300 空 开仓 3214.8 2753\n", - "2016-10-10 00:00:00\n", - "000300 多 平仓 3287.6 5506\n", - "000905 多 平仓 6409.3 2392\n", - "2016-10-19 00:00:00\n", - "000300 多 开仓 3323.4 3238\n", - "000905 多 开仓 6518.7 1396\n", - "2016-10-21 00:00:00\n", - "000300 多 开仓 3336.8 3238\n", - "2016-10-24 00:00:00\n", - "000300 多 开仓 3352.2 3238\n", - "000300 多 开仓 3367.6 3238\n", - "000905 多 开仓 6545.1 1396\n", - "2016-11-09 00:00:00\n", - "000905 空 平仓 6408.3 2792\n", - "2016-11-11 00:00:00\n", - "000905 多 开仓 6563.5 1494\n", - "2016-11-14 00:00:00\n", - "000905 多 开仓 6597.0 1494\n", - "2016-11-15 00:00:00\n", - "000905 多 开仓 6630.5 1494\n", - "2016-11-23 00:00:00\n", - "000905 多 开仓 6668.2 1494\n", - "2016-11-25 00:00:00\n", - "000905 空 平仓 6534.4 5976\n", - "2016-11-28 00:00:00\n", - "000905 多 开仓 6676.7 1609\n", - "2016-12-02 00:00:00\n", - "000905 空 平仓 6552.3 1609\n", - "2016-12-07 00:00:00\n", - "000300 空 平仓 3456.8 12952\n", - "2016-12-12 00:00:00\n", - "000905 空 开仓 6451.1 1691\n", - "000905 空 开仓 6421.5 1691\n", - "000905 空 开仓 6391.9 1691\n", - "000905 空 开仓 6362.4 1691\n", - "2017-01-04 00:00:00\n", - "000905 多 平仓 6350.3 6764\n", - "2017-01-13 00:00:00\n", - "000905 空 开仓 6190.4 1667\n", - "2017-01-16 00:00:00\n", - "000300 空 开仓 3267.0 3205\n", - "000905 空 开仓 6160.4 1667\n", - "000905 空 开仓 6130.4 1667\n", - "000905 空 开仓 6100.4 1667\n", - "2017-01-18 00:00:00\n", - "000300 多 平仓 3329.4 3205\n", - "2017-01-23 00:00:00\n", - "000300 多 开仓 3373.4 3109\n", - "2017-01-26 00:00:00\n", - "000300 多 开仓 3389.4 3109\n", - "000905 多 平仓 6220.4 6668\n", - "2017-02-09 00:00:00\n", - "000300 多 开仓 3405.6 3109\n", - "2017-02-10 00:00:00\n", - "000300 多 开仓 3421.6 3109\n", - "2017-02-20 00:00:00\n", - "000905 多 开仓 6379.8 1604\n", - "2017-02-21 00:00:00\n", - "000905 多 开仓 6411.0 1604\n", - "2017-02-22 00:00:00\n", - "000905 多 开仓 6442.1 1604\n", - "000905 多 开仓 6473.3 1604\n", - "2017-03-03 00:00:00\n", - "000300 空 平仓 3419.6 12436\n", - "2017-03-24 00:00:00\n", - "000300 多 开仓 3492.2 3692\n", - "2017-03-27 00:00:00\n", - "000300 多 开仓 3505.6 3692\n", - "2017-03-30 00:00:00\n", - "000300 空 平仓 3451.6 7384\n", - "000905 空 平仓 6445.8 6416\n", - "2017-04-06 00:00:00\n", - "000300 多 开仓 3508.0 3433\n", - "000905 多 开仓 6555.8 1628\n", - "2017-04-07 00:00:00\n", - "000300 多 开仓 3520.6 3433\n", - "000905 多 开仓 6586.5 1628\n", - "2017-04-11 00:00:00\n", - "000905 多 开仓 6617.2 1628\n", - "2017-04-17 00:00:00\n", - "000300 空 平仓 3462.2 6866\n", - "000905 空 平仓 6494.4 4884\n", - "2017-04-19 00:00:00\n", - "000300 空 开仓 3422.4 3420\n", - "000905 空 开仓 6365.4 1564\n", - "000905 空 开仓 6333.5 1564\n", - "000905 空 开仓 6301.5 1564\n", - "2017-04-24 00:00:00\n", - "000300 空 开仓 3407.8 3420\n", - "000905 空 开仓 6269.6 1564\n", - "2017-04-26 00:00:00\n", - "000300 多 平仓 3466.2 6840\n", - "2017-04-27 00:00:00\n", - "000300 空 开仓 3404.0 3243\n", - "2017-05-05 00:00:00\n", - "000300 空 开仓 3388.6 3243\n", - "000300 空 开仓 3373.2 3243\n", - "2017-05-08 00:00:00\n", - "000300 空 开仓 3357.8 3243\n", - "2017-05-16 00:00:00\n", - "000300 多 平仓 3419.4 12972\n", - "2017-05-25 00:00:00\n", - "000300 多 开仓 3466.6 3098\n", - "000300 多 开仓 3482.8 3098\n", - "2017-05-31 00:00:00\n", - "000300 多 开仓 3498.8 3098\n", - "000300 多 开仓 3515.0 3098\n", - "2017-06-08 00:00:00\n", - "000905 多 平仓 5955.0 6256\n", - "2017-07-17 00:00:00\n", - "000905 空 开仓 5923.6 1512\n", - "000905 空 开仓 5890.5 1512\n", - "2017-07-18 00:00:00\n", - "000905 空 开仓 5854.1 1512\n", - "2017-07-19 00:00:00\n", - "000905 多 平仓 5986.4 4536\n", - "2017-07-31 00:00:00\n", - "000905 多 开仓 6236.3 1311\n", - "000905 多 开仓 6274.4 1311\n", - "2017-08-02 00:00:00\n", - "000905 多 开仓 6312.5 1311\n", - "2017-08-11 00:00:00\n", - "000300 空 平仓 3688.0 12392\n", - "000905 空 平仓 6166.0 3933\n", - "2017-08-17 00:00:00\n", - "000905 多 开仓 6341.5 1345\n", - "2017-08-21 00:00:00\n", - "000905 多 开仓 6378.7 1345\n", - "2017-08-28 00:00:00\n", - "000905 多 开仓 6415.8 1345\n", - "2017-08-30 00:00:00\n", - "000905 多 开仓 6453.0 1345\n", - "2017-09-25 00:00:00\n", - "000905 空 平仓 6547.3 5380\n", - "2017-11-17 00:00:00\n", - "000905 空 开仓 6395.5 1453\n", - "000905 空 开仓 6361.1 1453\n", - "2017-11-20 00:00:00\n", - "000905 空 开仓 6326.7 1453\n", - "000905 空 开仓 6292.2 1453\n", - "2017-11-21 00:00:00\n", - "000905 多 平仓 6429.9 5812\n", - "2017-11-27 00:00:00\n", - "000905 空 开仓 6239.3 1184\n", - "000905 空 开仓 6197.1 1184\n", - "2017-12-05 00:00:00\n", - "000905 空 开仓 6154.8 1184\n", - "000905 空 开仓 6112.6 1184\n", - "2017-12-11 00:00:00\n", - "000905 多 平仓 6281.6 4736\n", - "2018-01-02 00:00:00\n", - "000300 多 开仓 4087.0 2000\n", - "2018-01-03 00:00:00\n", - "000300 多 开仓 4112.0 2000\n", - "000300 多 开仓 4137.0 2000\n", - "000905 多 开仓 6332.6 1317\n", - "000905 多 开仓 6370.6 1317\n", - "2018-01-04 00:00:00\n", - "000905 多 开仓 6408.6 1317\n", - "2018-01-08 00:00:00\n", - "000300 多 开仓 4162.0 2000\n", - "000905 多 开仓 6446.5 1317\n", - "2018-01-15 00:00:00\n", - "000905 空 平仓 6294.6 5268\n", - "2018-01-31 00:00:00\n", - "000905 空 开仓 6202.3 1466\n", - "2018-02-01 00:00:00\n", - "000300 空 平仓 4232.8 8000\n", - "000905 空 开仓 6168.2 1466\n", - "000905 空 开仓 6134.1 1466\n", - "000905 空 开仓 6100.0 1466\n", - "2018-02-09 00:00:00\n", - "000300 空 开仓 3896.2 1475\n", - "000300 空 开仓 3896.2 1475\n", - "000300 空 开仓 3887.6 1475\n", - "000300 空 开仓 3853.8 1475\n", - "2018-02-22 00:00:00\n", - "000300 多 平仓 4021.0 5900\n", - "2018-02-26 00:00:00\n", - "000905 多 平仓 6016.2 5864\n", - "2018-03-23 00:00:00\n", - "000300 空 开仓 3896.8 1674\n", - "000300 空 开仓 3896.8 1674\n", - "000300 空 开仓 3896.8 1674\n", - "000300 空 开仓 3896.8 1674\n", - "000905 空 开仓 5848.5 1154\n", - "000905 空 开仓 5805.2 1154\n", - "000905 空 开仓 5761.9 1154\n", - "2018-03-26 00:00:00\n", - "000905 空 开仓 5715.4 1154\n", - "2018-03-27 00:00:00\n", - "000905 多 平仓 5956.2 4616\n", - "2018-04-11 00:00:00\n", - "000300 多 平仓 3937.0 6696\n", - "2018-04-16 00:00:00\n", - "000300 空 开仓 3794.2 1598\n", - "2018-04-17 00:00:00\n", - "000300 空 开仓 3763.0 1598\n", - "2018-04-18 00:00:00\n", - "000300 空 开仓 3731.6 1598\n", - "2018-05-08 00:00:00\n", - "000300 多 平仓 3854.4 4794\n", - "2018-05-21 00:00:00\n", - "000300 多 开仓 3925.6 1903\n", - "000905 多 开仓 6052.7 1216\n", - "2018-05-24 00:00:00\n", - "000300 空 平仓 3841.8 1903\n", - "2018-05-25 00:00:00\n", - "000905 空 平仓 5932.1 1216\n", - "2018-05-30 00:00:00\n", - "000300 空 开仓 3732.4 2058\n", - "000905 空 开仓 5759.4 1262\n", - "000905 空 开仓 5740.1 1262\n", - "000905 空 开仓 5700.5 1262\n", - "2018-06-01 00:00:00\n", - "000905 空 开仓 5660.9 1262\n", - "2018-06-05 00:00:00\n", - "000300 多 平仓 3829.6 2058\n", - "2018-06-19 00:00:00\n", - "000300 空 开仓 3702.6 1988\n", - "000300 空 开仓 3697.0 1988\n", - "000300 空 开仓 3671.8 1988\n", - "000300 空 开仓 3646.6 1988\n", - "2018-07-18 00:00:00\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "000905 多 平仓 5216.6 5048\n", - "2018-07-23 00:00:00\n", - "000300 多 平仓 3506.2 7952\n", - "2018-08-02 00:00:00\n", - "000905 空 开仓 4897.3 1066\n", - "2018-08-06 00:00:00\n", - "000300 空 开仓 3312.8 1510\n", - "000300 空 开仓 3282.0 1510\n", - "000905 空 开仓 4850.4 1066\n", - "000905 空 开仓 4803.5 1066\n", - "2018-08-09 00:00:00\n", - "000905 多 平仓 4991.0 3198\n", - "2018-08-10 00:00:00\n", - "000300 多 平仓 3414.6 3020\n", - "2018-08-16 00:00:00\n", - "000300 空 开仓 3251.8 1458\n", - "2018-08-17 00:00:00\n", - "000905 空 开仓 4797.5 973\n", - "2018-08-20 00:00:00\n", - "000300 空 开仓 3223.4 1458\n", - "000905 空 开仓 4746.1 973\n", - "2018-08-27 00:00:00\n", - "000300 多 平仓 3360.6 2916\n", - "000905 多 平仓 4951.6 1946\n", - "2018-09-10 00:00:00\n", - "000905 空 开仓 4736.6 1087\n", - "2018-09-11 00:00:00\n", - "000905 空 开仓 4690.5 1087\n", - "2018-09-12 00:00:00\n", - "000300 空 开仓 3209.0 1654\n", - "2018-09-17 00:00:00\n", - "000905 空 开仓 4644.5 1087\n", - "000905 空 开仓 4598.5 1087\n", - "2018-09-19 00:00:00\n", - "000300 多 平仓 3330.0 1654\n", - "2018-09-21 00:00:00\n", - "000905 多 平仓 4782.6 4348\n", - "2018-09-26 00:00:00\n", - "000300 多 开仓 3416.6 1733\n", - "000300 多 开仓 3445.4 1733\n", - "2018-10-08 00:00:00\n", - "000300 空 平仓 3330.0 3466\n", - "2018-10-11 00:00:00\n", - "000300 空 开仓 3179.6 1692\n", - "000300 空 开仓 3161.8 1692\n", - "000300 空 开仓 3132.2 1692\n", - "000300 空 开仓 3102.8 1692\n", - "000905 空 开仓 4483.3 1237\n", - "000905 空 开仓 4483.3 1237\n", - "000905 空 开仓 4483.3 1237\n", - "000905 空 开仓 4463.1 1237\n", - "2018-10-22 00:00:00\n", - "000300 多 平仓 3221.0 6768\n", - "2018-11-02 00:00:00\n", - "000905 多 平仓 4375.6 4948\n" - ] - } - ], - "source": [ - "# 查看逐笔的交易记录\n", - "for dt, l in engine.tradeDict.items():\n", - " print dt\n", - " for trade in l:\n", - " print trade.vtSymbol, trade.direction, trade.offset, trade.price, trade.volume" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2015-04-03 00:00:00 -556058.736\n", - "2015-04-07 00:00:00 -41290.496\n", - "2015-04-08 00:00:00 -669917.184\n", - "2015-04-09 00:00:00 -493815.152\n", - "2015-04-10 00:00:00 164718.296\n", - "2015-04-13 00:00:00 494400.896\n", - "2015-04-14 00:00:00 -691692.96\n", - "2015-04-15 00:00:00 -1183931.52\n", - "2015-04-16 00:00:00 647072.512\n", - "2015-04-17 00:00:00 401717.76\n", - "2015-04-20 00:00:00 -360991.488\n", - "2015-04-21 00:00:00 332308.86\n", - "2015-04-22 00:00:00 559211.99\n", - "2015-04-23 00:00:00 104738.032\n", - "2015-04-24 00:00:00 -219870.394\n", - "2015-04-27 00:00:00 671086.574\n", - "2015-04-28 00:00:00 -881810.824\n", - "2015-04-29 00:00:00 526747.64\n", - "2015-04-30 00:00:00 -24440.84\n", - "2015-05-04 00:00:00 277168.96\n", - "2015-05-05 00:00:00 -1744525.736\n", - "2015-05-06 00:00:00 -678886.568\n", - "2015-05-07 00:00:00 -404869.632\n", - "2015-05-11 00:00:00 -76022.208\n", - "2015-05-12 00:00:00 -90219.968\n", - "2015-05-13 00:00:00 74812.944\n", - "2015-05-14 00:00:00 -21779.968\n", - "2015-05-15 00:00:00 -133119.104\n", - "2015-05-18 00:00:00 303420.48\n", - "2015-05-19 00:00:00 417697.344\n", - "2015-05-20 00:00:00 287916.224\n", - "2015-05-21 00:00:00 645492.096\n", - "2015-05-22 00:00:00 300093.824\n", - "2015-05-25 00:00:00 494503.072\n", - "2015-05-26 00:00:00 629629.12\n", - "2015-05-27 00:00:00 233658.88\n", - "2015-05-28 00:00:00 -1187393.408\n", - "2015-05-29 00:00:00 185818.848\n", - "2015-06-01 00:00:00 984525.92\n", - "2015-06-02 00:00:00 751593.92\n", - "2015-06-03 00:00:00 176697.92\n", - "2015-06-04 00:00:00 -78373.584\n", - "2015-06-05 00:00:00 290723.912\n", - "2015-06-08 00:00:00 -147075.994\n", - "2015-06-09 00:00:00 -82588.984\n", - "2015-06-10 00:00:00 349570.9486\n", - "2015-06-11 00:00:00 293520.3292\n", - "2015-06-12 00:00:00 398212.6123\n", - "2015-06-15 00:00:00 -910264.9591\n", - "2015-06-16 00:00:00 -1179473.9125\n", - "2015-06-17 00:00:00 416700.1024\n", - "2015-06-18 00:00:00 -1353402.4515\n", - "2015-06-19 00:00:00 -1517295.5482\n", - "2015-06-23 00:00:00 -160417.7847\n", - "2015-06-24 00:00:00 -185343.9705\n", - "2015-06-25 00:00:00 -922472.4249\n", - "2015-06-26 00:00:00 -204613.1811\n", - "2015-06-29 00:00:00 545817.2343\n", - "2015-06-30 00:00:00 -1073225.4312\n", - "2015-07-01 00:00:00 1000949.976\n", - "2015-07-02 00:00:00 906935.5668\n", - "2015-07-03 00:00:00 991604.028\n", - "2015-07-06 00:00:00 -145950.906\n", - "2015-07-07 00:00:00 629963.8668\n", - "2015-07-08 00:00:00 778592.4552\n", - "2015-07-09 00:00:00 -838212.2424\n", - "2015-07-10 00:00:00 -831753.4104\n", - "2015-07-13 00:00:00 -689935.1556\n", - "2015-07-14 00:00:00 72403.4088\n", - "2015-07-15 00:00:00 786715.9956\n", - "2015-07-16 00:00:00 -242285.556\n", - "2015-07-17 00:00:00 -850170.27\n", - "2015-07-20 00:00:00 -141182.1\n", - "2015-07-21 00:00:00 -12621.258\n", - "2015-07-22 00:00:00 20698.002\n", - "2015-07-23 00:00:00 -283232.664\n", - "2015-07-24 00:00:00 174391.542\n", - "2015-08-21 00:00:00 -687679.028\n", - "2015-08-24 00:00:00 -242802.126\n", - "2015-08-25 00:00:00 792234.68\n", - "2015-08-26 00:00:00 271418.6544\n", - "2015-08-27 00:00:00 -626720.7044\n", - "2015-08-28 00:00:00 -686935.7296\n", - "2015-08-31 00:00:00 192475.14\n", - "2015-09-01 00:00:00 402709.2984\n", - "2015-09-02 00:00:00 35671.6116\n", - "2015-09-07 00:00:00 248993.596\n", - "2015-09-08 00:00:00 -415007.4876\n", - "2015-09-09 00:00:00 -319934.6564\n", - "2015-09-10 00:00:00 202732.3416\n", - "2015-09-11 00:00:00 -26275.0272\n", - "2015-09-14 00:00:00 576282.1476\n", - "2015-09-15 00:00:00 625950.3296\n", - "2015-09-16 00:00:00 -724882.5516\n", - "2015-09-17 00:00:00 282181.704\n", - "2015-09-18 00:00:00 -101330.092\n", - "2015-09-21 00:00:00 -336169.3228\n", - "2015-09-22 00:00:00 -115089.8036\n", - "2015-09-23 00:00:00 245139.4204\n", - "2015-09-24 00:00:00 -137402.8152\n", - "2015-09-25 00:00:00 320517.7188\n", - "2015-09-28 00:00:00 -131160.0976\n", - "2015-09-29 00:00:00 259523.9128\n", - "2015-09-30 00:00:00 -302176.3876\n", - "2015-10-08 00:00:00 -454946.734\n", - "2015-10-09 00:00:00 -303435.176\n", - "2015-10-12 00:00:00 -250870.73\n", - "2015-11-19 00:00:00 -44606.452\n", - "2015-11-23 00:00:00 -27316.652\n", - "2015-11-24 00:00:00 23898.732\n", - "2015-11-25 00:00:00 36991.108\n", - "2015-11-26 00:00:00 -344020.072\n", - "2015-11-27 00:00:00 -438200.752\n", - "2015-12-22 00:00:00 -19482.2775\n", - "2015-12-24 00:00:00 -47814.1056\n", - "2015-12-25 00:00:00 -119217.4446\n", - "2015-12-28 00:00:00 -142966.2342\n", - "2015-12-31 00:00:00 -807181.7029\n", - "2016-01-04 00:00:00 -291560.2038\n", - "2016-01-05 00:00:00 -388526.5513\n", - "2016-01-06 00:00:00 -1648795.223\n", - "2016-01-07 00:00:00 -133958.7385\n", - "2016-01-08 00:00:00 -347159.6085\n", - "2016-01-11 00:00:00 1696055.142\n", - "2016-01-12 00:00:00 -125657.096\n", - "2016-01-13 00:00:00 714949.808\n", - "2016-01-14 00:00:00 -718339.138\n", - "2016-01-15 00:00:00 954877.058\n", - "2016-01-18 00:00:00 -230255.604\n", - "2016-01-19 00:00:00 -879363.824\n", - "2016-01-20 00:00:00 348637.764\n", - "2016-01-21 00:00:00 950557.674\n", - "2016-01-22 00:00:00 -342155.144\n", - "2016-01-25 00:00:00 -196348.58\n", - "2016-01-26 00:00:00 1807493.418\n", - "2016-01-27 00:00:00 200977.352\n", - "2016-01-28 00:00:00 855630.234\n", - "2016-01-29 00:00:00 -837671.316\n", - "2016-02-01 00:00:00 353782.282\n", - "2016-02-02 00:00:00 -665129.18\n", - "2016-02-03 00:00:00 11631.498\n", - "2016-02-04 00:00:00 -396845.916\n", - "2016-02-05 00:00:00 215428.808\n", - "2016-02-15 00:00:00 72450.052\n", - "2016-02-16 00:00:00 -926247.352\n", - "2016-02-17 00:00:00 -264049.148\n", - "2016-02-18 00:00:00 29134.872\n", - "2016-02-19 00:00:00 -45667.236\n", - "2016-02-22 00:00:00 -253380.444\n", - "2016-02-23 00:00:00 67774.308\n", - "2016-02-24 00:00:00 -82707.516\n", - "2016-02-25 00:00:00 989380.62\n", - "2016-02-26 00:00:00 -46686.216\n", - "2016-02-29 00:00:00 608947.956\n", - "2016-03-01 00:00:00 -251330.448\n", - "2016-03-02 00:00:00 -570207.132\n", - "2016-03-03 00:00:00 -48610.752\n", - "2016-03-04 00:00:00 276938.8495\n", - "2016-03-07 00:00:00 -267213.072\n", - "2016-03-08 00:00:00 -20713.507\n", - "2016-03-09 00:00:00 258656.8047\n", - "2016-03-10 00:00:00 125290.8243\n", - "2016-03-11 00:00:00 32458.1883\n", - "2016-03-14 00:00:00 -315063.93\n", - "2016-03-15 00:00:00 114235.2428\n", - "2016-03-16 00:00:00 174905.8908\n", - "2016-03-17 00:00:00 -388428.077\n", - "2016-03-18 00:00:00 -506724.6261\n", - "2016-03-21 00:00:00 -164313.4124\n", - "2016-03-22 00:00:00 -61636.7724\n", - "2016-03-23 00:00:00 48172.6196\n", - "2016-03-24 00:00:00 -253634.1892\n", - "2016-03-25 00:00:00 74657.9512\n", - "2016-03-28 00:00:00 -131342.2936\n", - "2016-03-29 00:00:00 -160473.306\n", - "2016-03-30 00:00:00 378127.078\n", - "2016-03-31 00:00:00 8475.7176\n", - "2016-04-01 00:00:00 17801.0644\n", - "2016-04-05 00:00:00 195344.0286\n", - "2016-04-06 00:00:00 -32536.5432\n", - "2016-04-07 00:00:00 -277605.8179\n", - "2016-04-08 00:00:00 -143374.8562\n", - "2016-04-11 00:00:00 282166.3859\n", - "2016-04-12 00:00:00 -155264.6806\n", - "2016-04-13 00:00:00 251146.961\n", - "2016-04-14 00:00:00 131070.682\n", - "2016-04-15 00:00:00 -36249.3166\n", - "2016-04-18 00:00:00 -318253.5016\n", - "2016-04-19 00:00:00 -590600.7404\n", - "2016-04-20 00:00:00 -583014.9868\n", - "2016-04-27 00:00:00 -81157.318\n", - "2016-04-29 00:00:00 3228.929\n", - "2016-05-03 00:00:00 -140155.092\n", - "2016-05-04 00:00:00 -1588.3098\n", - "2016-05-06 00:00:00 -583552.1278\n", - "2016-05-10 00:00:00 -10259.0436\n", - "2016-05-11 00:00:00 -99212.5041\n", - "2016-05-12 00:00:00 -48375.0429\n", - "2016-05-13 00:00:00 120761.527\n", - "2016-05-16 00:00:00 -387710.3524\n", - "2016-05-17 00:00:00 114491.5604\n", - "2016-05-18 00:00:00 541907.7806\n", - "2016-05-19 00:00:00 -66163.9272\n", - "2016-05-20 00:00:00 -272614.2674\n", - "2016-05-23 00:00:00 -262740.8872\n", - "2016-05-24 00:00:00 318612.3522\n", - "2016-05-25 00:00:00 44162.4336\n", - "2016-05-26 00:00:00 -109111.7936\n", - "2016-05-27 00:00:00 26328.5532\n", - "2016-05-30 00:00:00 -641128.946\n", - "2016-05-31 00:00:00 -1437857.74\n", - "2016-06-03 00:00:00 -23656.594\n", - "2016-06-07 00:00:00 -5214.9248\n", - "2016-06-08 00:00:00 -186510.7942\n", - "2016-06-13 00:00:00 -222501.9076\n", - "2016-06-27 00:00:00 -17809.8885\n", - "2016-06-28 00:00:00 -19346.4675\n", - "2016-06-29 00:00:00 9709.074\n", - "2016-06-30 00:00:00 5036.454\n", - "2016-07-01 00:00:00 -199083.7874\n", - "2016-07-04 00:00:00 159935.7195\n", - "2016-07-05 00:00:00 92812.338\n", - "2016-07-06 00:00:00 108026.3036\n", - "2016-07-07 00:00:00 52044.5769\n", - "2016-07-08 00:00:00 -176534.3718\n", - "2016-07-11 00:00:00 -176709.607\n", - "2016-07-12 00:00:00 589166.695\n", - "2016-07-13 00:00:00 250595.7984\n", - "2016-07-14 00:00:00 -31174.1052\n", - "2016-07-15 00:00:00 -49255.5416\n", - "2016-07-18 00:00:00 -225814.9964\n", - "2016-07-19 00:00:00 -71964.3148\n", - "2016-07-20 00:00:00 -145224.972\n", - "2016-07-21 00:00:00 219474.8728\n", - "2016-07-22 00:00:00 -421886.5908\n", - "2016-07-25 00:00:00 109744.6432\n", - "2016-07-26 00:00:00 -285177.466\n", - "2016-07-27 00:00:00 -1305820.1336\n", - "2016-08-11 00:00:00 -138807.2448\n", - "2016-08-12 00:00:00 -225520.2432\n", - "2016-08-15 00:00:00 266623.2576\n", - "2016-08-16 00:00:00 -163202.4576\n", - "2016-08-17 00:00:00 -84740.4096\n", - "2016-08-18 00:00:00 -92064.0\n", - "2016-08-19 00:00:00 15333.8656\n", - "2016-08-22 00:00:00 -386475.0688\n", - "2016-08-23 00:00:00 62879.128\n", - "2016-08-24 00:00:00 -237236.4528\n", - "2016-08-25 00:00:00 -279627.6656\n", - "2016-08-26 00:00:00 -20234.1888\n", - "2016-08-29 00:00:00 7429.632\n", - "2016-08-30 00:00:00 45222.912\n", - "2016-08-31 00:00:00 169952.5632\n", - "2016-09-01 00:00:00 -281886.2592\n", - "2016-09-02 00:00:00 134803.2\n", - "2016-09-05 00:00:00 59846.7072\n", - "2016-09-06 00:00:00 206219.6038\n", - "2016-09-07 00:00:00 -19447.1424\n", - "2016-09-08 00:00:00 14524.3644\n", - "2016-09-09 00:00:00 -917740.7085\n", - "2016-09-12 00:00:00 -808337.4922\n", - "2016-09-13 00:00:00 -114175.823\n", - "2016-09-19 00:00:00 -146121.0159\n", - "2016-09-20 00:00:00 18318.6096\n", - "2016-09-21 00:00:00 -27476.8485\n", - "2016-09-22 00:00:00 -117496.5696\n", - "2016-09-23 00:00:00 -93237.1602\n", - "2016-09-26 00:00:00 291736.6409\n", - "2016-09-27 00:00:00 -164937.6036\n", - "2016-09-28 00:00:00 67768.4812\n", - "2016-09-29 00:00:00 -116191.9436\n", - "2016-09-30 00:00:00 -502265.8644\n", - "2016-10-10 00:00:00 -509557.9122\n", - "2016-10-18 00:00:00 -19842.2772\n", - "2016-10-20 00:00:00 -47103.4726\n", - "2016-10-21 00:00:00 -308202.5228\n", - "2016-10-24 00:00:00 347592.4112\n", - "2016-10-25 00:00:00 65100.3464\n", - "2016-10-26 00:00:00 -255935.556\n", - "2016-10-27 00:00:00 -154312.7224\n", - "2016-10-28 00:00:00 -243903.5016\n", - "2016-10-31 00:00:00 -59976.924\n", - "2016-11-01 00:00:00 450602.7688\n", - "2016-11-02 00:00:00 -480329.5792\n", - "2016-11-03 00:00:00 490859.3736\n", - "2016-11-04 00:00:00 -200328.82\n", - "2016-11-07 00:00:00 48679.344\n", - "2016-11-08 00:00:00 19178.304\n", - "2016-11-09 00:00:00 -372452.7656\n", - "2016-11-10 00:00:00 446797.7138\n", - "2016-11-11 00:00:00 325050.64\n", - "2016-11-14 00:00:00 192074.9324\n", - "2016-11-15 00:00:00 71155.714\n", - "2016-11-16 00:00:00 13105.3532\n", - "2016-11-17 00:00:00 55328.7792\n", - "2016-11-18 00:00:00 -400145.6642\n", - "2016-11-21 00:00:00 347676.6092\n", - "2016-11-22 00:00:00 565375.6154\n", - "2016-11-23 00:00:00 -52343.771\n", - "2016-11-24 00:00:00 -396842.8832\n", - "2016-11-25 00:00:00 561165.5345\n", - "2016-11-28 00:00:00 178508.3496\n", - "2016-11-29 00:00:00 294622.197\n", - "2016-11-30 00:00:00 -393926.9445\n", - "2016-12-01 00:00:00 296613.6616\n", - "2016-12-02 00:00:00 -633842.3384\n", - "2016-12-05 00:00:00 -771257.9248\n", - "2016-12-06 00:00:00 -163289.7496\n", - "2016-12-07 00:00:00 214925.488\n", - "2016-12-09 00:00:00 -725036.542\n", - "2016-12-13 00:00:00 -196838.4876\n", - "2016-12-14 00:00:00 261634.2256\n", - "2016-12-15 00:00:00 -276642.1888\n", - "2016-12-16 00:00:00 -257882.9112\n", - "2016-12-19 00:00:00 -14938.294\n", - "2016-12-20 00:00:00 135916.4924\n", - "2016-12-21 00:00:00 -317688.17\n", - "2016-12-22 00:00:00 39352.2756\n", - "2016-12-23 00:00:00 404428.3532\n", - "2016-12-26 00:00:00 -86295.112\n", - "2016-12-27 00:00:00 39875.1328\n", - "2016-12-28 00:00:00 125945.0036\n", - "2016-12-29 00:00:00 119262.1716\n", - "2016-12-30 00:00:00 -74525.752\n", - "2017-01-03 00:00:00 -586265.6416\n", - "2017-01-04 00:00:00 -499905.5952\n", - "2017-01-12 00:00:00 -137445.817\n", - "2017-01-13 00:00:00 -490935.3585\n", - "2017-01-16 00:00:00 272414.6387\n", - "2017-01-17 00:00:00 -370800.6049\n", - "2017-01-18 00:00:00 48142.1186\n", - "2017-01-19 00:00:00 166153.224\n", - "2017-01-20 00:00:00 -579810.1525\n", - "2017-01-23 00:00:00 -334525.5584\n", - "2017-01-24 00:00:00 47179.1781\n", - "2017-01-25 00:00:00 -373995.6469\n", - "2017-01-26 00:00:00 -256828.8364\n", - "2017-02-03 00:00:00 -145925.8894\n", - "2017-02-06 00:00:00 54176.1904\n", - "2017-02-07 00:00:00 -46760.6036\n", - "2017-02-08 00:00:00 40086.2024\n", - "2017-02-09 00:00:00 2181.2744\n", - "2017-02-10 00:00:00 160372.1688\n", - "2017-02-13 00:00:00 283394.0552\n", - "2017-02-14 00:00:00 -5854.8688\n", - "2017-02-15 00:00:00 -175236.9196\n", - "2017-02-16 00:00:00 239019.92\n", - "2017-02-17 00:00:00 -358902.7924\n", - "2017-02-20 00:00:00 579583.1552\n", - "2017-02-21 00:00:00 146723.704\n", - "2017-02-22 00:00:00 213863.2268\n", - "2017-02-23 00:00:00 -205850.5436\n", - "2017-02-24 00:00:00 20506.2116\n", - "2017-02-27 00:00:00 -676651.41\n", - "2017-02-28 00:00:00 253326.8732\n", - "2017-03-01 00:00:00 176925.5572\n", - "2017-03-02 00:00:00 -694791.3104\n", - "2017-03-03 00:00:00 26897.5188\n", - "2017-03-06 00:00:00 413732.552\n", - "2017-03-07 00:00:00 37618.9328\n", - "2017-03-08 00:00:00 -167451.184\n", - "2017-03-09 00:00:00 -370239.1296\n", - "2017-03-10 00:00:00 54756.0688\n", - "2017-03-13 00:00:00 384831.0384\n", - "2017-03-14 00:00:00 -92466.1088\n", - "2017-03-15 00:00:00 -47625.968\n", - "2017-03-16 00:00:00 367502.7056\n", - "2017-03-17 00:00:00 -385565.6704\n", - "2017-03-20 00:00:00 96851.4448\n", - "2017-03-21 00:00:00 112948.5472\n", - "2017-03-22 00:00:00 -103637.648\n", - "2017-03-23 00:00:00 -32055.132\n", - "2017-03-24 00:00:00 161814.374\n", - "2017-03-27 00:00:00 -238900.6288\n", - "2017-03-28 00:00:00 -172033.2512\n", - "2017-03-29 00:00:00 -473800.9944\n", - "2017-03-30 00:00:00 -882358.564\n", - "2017-04-05 00:00:00 -39875.5824\n", - "2017-04-06 00:00:00 -66204.3595\n", - "2017-04-07 00:00:00 42780.3397\n", - "2017-04-10 00:00:00 -206750.0288\n", - "2017-04-11 00:00:00 287585.5328\n", - "2017-04-12 00:00:00 -311505.8938\n", - "2017-04-13 00:00:00 226795.4554\n", - "2017-04-14 00:00:00 -951996.042\n", - "2017-04-17 00:00:00 -394580.7144\n", - "2017-04-18 00:00:00 -535595.0068\n", - "2017-04-20 00:00:00 -40116.7164\n", - "2017-04-21 00:00:00 -47502.1804\n", - "2017-04-24 00:00:00 882584.5428\n", - "2017-04-25 00:00:00 -376357.1048\n", - "2017-04-26 00:00:00 -262047.24\n", - "2017-04-27 00:00:00 -99509.8128\n", - "2017-04-28 00:00:00 -99760.2184\n", - "2017-05-02 00:00:00 16126.7996\n", - "2017-05-03 00:00:00 160206.8588\n", - "2017-05-04 00:00:00 8472.6526\n", - "2017-05-05 00:00:00 532460.258\n", - "2017-05-08 00:00:00 945024.5681\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2017-05-09 00:00:00 -146641.4404\n", - "2017-05-10 00:00:00 981657.526\n", - "2017-05-11 00:00:00 -163166.048\n", - "2017-05-12 00:00:00 -317319.3712\n", - "2017-05-15 00:00:00 -627279.5244\n", - "2017-05-16 00:00:00 -1140490.9352\n", - "2017-05-17 00:00:00 -80802.496\n", - "2017-05-18 00:00:00 321249.3536\n", - "2017-05-19 00:00:00 8274.1856\n", - "2017-05-22 00:00:00 539045.112\n", - "2017-05-23 00:00:00 775348.6208\n", - "2017-05-24 00:00:00 -528146.8316\n", - "2017-05-25 00:00:00 -322501.1792\n", - "2017-05-26 00:00:00 -109594.9628\n", - "2017-05-31 00:00:00 157402.1776\n", - "2017-06-01 00:00:00 773986.6792\n", - "2017-06-02 00:00:00 -530284.6816\n", - "2017-06-05 00:00:00 -490792.32\n", - "2017-06-06 00:00:00 138081.1216\n", - "2017-06-07 00:00:00 -201960.3024\n", - "2017-06-08 00:00:00 311123.0704\n", - "2017-06-09 00:00:00 188255.5464\n", - "2017-06-12 00:00:00 -22068.9128\n", - "2017-06-13 00:00:00 97624.176\n", - "2017-06-14 00:00:00 -582036.1304\n", - "2017-06-15 00:00:00 -80623.5912\n", - "2017-06-16 00:00:00 -124310.348\n", - "2017-06-19 00:00:00 432532.8464\n", - "2017-06-20 00:00:00 -88866.7496\n", - "2017-06-21 00:00:00 513784.712\n", - "2017-06-22 00:00:00 29585.9\n", - "2017-06-23 00:00:00 403243.1152\n", - "2017-06-26 00:00:00 560227.4496\n", - "2017-06-27 00:00:00 82075.9336\n", - "2017-06-28 00:00:00 -353774.2512\n", - "2017-06-29 00:00:00 280818.8296\n", - "2017-06-30 00:00:00 -25158.2384\n", - "2017-07-03 00:00:00 -197669.7488\n", - "2017-07-04 00:00:00 -382444.3824\n", - "2017-07-05 00:00:00 491905.3968\n", - "2017-07-06 00:00:00 5169.9424\n", - "2017-07-07 00:00:00 -51642.4208\n", - "2017-07-10 00:00:00 -27789.06\n", - "2017-07-11 00:00:00 212173.3456\n", - "2017-07-12 00:00:00 -148518.12\n", - "2017-07-13 00:00:00 348176.7848\n", - "2017-07-14 00:00:00 -469967.6408\n", - "2017-07-17 00:00:00 -523743.4184\n", - "2017-07-18 00:00:00 -360086.5744\n", - "2017-07-19 00:00:00 226805.3688\n", - "2017-07-20 00:00:00 224762.3784\n", - "2017-07-21 00:00:00 -239000.7864\n", - "2017-07-24 00:00:00 184281.432\n", - "2017-07-25 00:00:00 -296287.7632\n", - "2017-07-26 00:00:00 -175602.0752\n", - "2017-07-27 00:00:00 84343.6696\n", - "2017-07-28 00:00:00 15578.579\n", - "2017-07-31 00:00:00 198046.4656\n", - "2017-08-01 00:00:00 338761.289\n", - "2017-08-02 00:00:00 -209013.3946\n", - "2017-08-03 00:00:00 -369516.8595\n", - "2017-08-04 00:00:00 -395839.2281\n", - "2017-08-07 00:00:00 546091.4698\n", - "2017-08-08 00:00:00 68301.7235\n", - "2017-08-09 00:00:00 128306.4892\n", - "2017-08-10 00:00:00 -1217829.774\n", - "2017-08-11 00:00:00 -1353256.2203\n", - "2017-08-16 00:00:00 -30533.383\n", - "2017-08-18 00:00:00 -66204.397\n", - "2017-08-21 00:00:00 75353.087\n", - "2017-08-22 00:00:00 -74779.041\n", - "2017-08-23 00:00:00 -143106.655\n", - "2017-08-24 00:00:00 -118876.211\n", - "2017-08-25 00:00:00 89592.4675\n", - "2017-08-28 00:00:00 209964.184\n", - "2017-08-29 00:00:00 -126598.7975\n", - "2017-08-30 00:00:00 182813.3415\n", - "2017-08-31 00:00:00 91257.174\n", - "2017-09-01 00:00:00 301703.406\n", - "2017-09-04 00:00:00 205385.804\n", - "2017-09-05 00:00:00 38621.406\n", - "2017-09-06 00:00:00 189690.73\n", - "2017-09-07 00:00:00 -261044.594\n", - "2017-09-08 00:00:00 83854.294\n", - "2017-09-11 00:00:00 405894.1\n", - "2017-09-12 00:00:00 -30213.004\n", - "2017-09-13 00:00:00 217179.84\n", - "2017-09-14 00:00:00 -65608.562\n", - "2017-09-15 00:00:00 -269759.118\n", - "2017-09-18 00:00:00 255071.18\n", - "2017-09-19 00:00:00 -179878.686\n", - "2017-09-20 00:00:00 303713.374\n", - "2017-09-21 00:00:00 -432696.184\n", - "2017-09-22 00:00:00 -348331.328\n", - "2017-09-25 00:00:00 -442050.39\n", - "2017-11-16 00:00:00 -523104.701\n", - "2017-11-17 00:00:00 -152540.299\n", - "2017-11-20 00:00:00 -187984.1998\n", - "2017-11-21 00:00:00 -134732.6216\n", - "2017-11-24 00:00:00 -141674.3616\n", - "2017-11-28 00:00:00 -248071.68\n", - "2017-11-29 00:00:00 -45125.0816\n", - "2017-11-30 00:00:00 130115.4432\n", - "2017-12-01 00:00:00 -125471.3216\n", - "2017-12-04 00:00:00 -258429.312\n", - "2017-12-05 00:00:00 347405.9648\n", - "2017-12-06 00:00:00 -188924.2496\n", - "2017-12-07 00:00:00 176808.6144\n", - "2017-12-08 00:00:00 -692070.7328\n", - "2017-12-11 00:00:00 -393193.6128\n", - "2017-12-29 00:00:00 -112290.2\n", - "2018-01-02 00:00:00 -199423.9454\n", - "2018-01-03 00:00:00 21185.9961\n", - "2018-01-04 00:00:00 181644.3978\n", - "2018-01-05 00:00:00 -26496.1934\n", - "2018-01-08 00:00:00 242748.9231\n", - "2018-01-09 00:00:00 230810.8592\n", - "2018-01-10 00:00:00 -61577.6956\n", - "2018-01-11 00:00:00 87547.9608\n", - "2018-01-12 00:00:00 -536582.0468\n", - "2018-01-15 00:00:00 -767210.0104\n", - "2018-01-16 00:00:00 265869.6\n", - "2018-01-17 00:00:00 -82852.8\n", - "2018-01-18 00:00:00 186403.2\n", - "2018-01-19 00:00:00 111825.6\n", - "2018-01-22 00:00:00 409619.2\n", - "2018-01-23 00:00:00 368124.0\n", - "2018-01-24 00:00:00 58179.2\n", - "2018-01-25 00:00:00 -198447.2\n", - "2018-01-26 00:00:00 129761.6\n", - "2018-01-29 00:00:00 -634252.0\n", - "2018-01-30 00:00:00 -530262.172\n", - "2018-01-31 00:00:00 -429368.0374\n", - "2018-02-01 00:00:00 59935.001\n", - "2018-02-02 00:00:00 -117905.1024\n", - "2018-02-05 00:00:00 38853.6912\n", - "2018-02-06 00:00:00 1723778.508\n", - "2018-02-07 00:00:00 -41447.3384\n", - "2018-02-08 00:00:00 -1082108.42\n", - "2018-02-09 00:00:00 1240718.6072\n", - "2018-02-12 00:00:00 -1137357.942\n", - "2018-02-13 00:00:00 -490581.6664\n", - "2018-02-14 00:00:00 -608540.0296\n", - "2018-02-22 00:00:00 -1214968.9992\n", - "2018-02-23 00:00:00 -823732.4992\n", - "2018-02-26 00:00:00 -774065.592\n", - "2018-03-22 00:00:00 -1852131.6552\n", - "2018-03-23 00:00:00 -82802.1542\n", - "2018-03-26 00:00:00 -478998.9022\n", - "2018-03-27 00:00:00 -831948.6056\n", - "2018-03-28 00:00:00 472425.5664\n", - "2018-03-29 00:00:00 -343734.4728\n", - "2018-03-30 00:00:00 -29783.1384\n", - "2018-04-02 00:00:00 77531.6448\n", - "2018-04-03 00:00:00 163645.5528\n", - "2018-04-04 00:00:00 51004.1016\n", - "2018-04-09 00:00:00 12945.3768\n", - "2018-04-10 00:00:00 -562938.0768\n", - "2018-04-11 00:00:00 -74797.668\n", - "2018-04-13 00:00:00 -122956.9914\n", - "2018-04-16 00:00:00 -73289.074\n", - "2018-04-17 00:00:00 69002.5988\n", - "2018-04-18 00:00:00 -56379.9968\n", - "2018-04-19 00:00:00 -218419.434\n", - "2018-04-20 00:00:00 244439.8278\n", - "2018-04-23 00:00:00 -26229.8916\n", - "2018-04-24 00:00:00 -369918.9426\n", - "2018-04-25 00:00:00 70889.3574\n", - "2018-04-26 00:00:00 350956.2756\n", - "2018-04-27 00:00:00 -6627.2256\n", - "2018-05-02 00:00:00 -32453.4624\n", - "2018-05-03 00:00:00 -140723.076\n", - "2018-05-04 00:00:00 88219.188\n", - "2018-05-07 00:00:00 -382570.3086\n", - "2018-05-08 00:00:00 -213280.266\n", - "2018-05-18 00:00:00 -112867.7437\n", - "2018-05-22 00:00:00 -3429.0172\n", - "2018-05-23 00:00:00 -218705.2095\n", - "2018-05-24 00:00:00 -151481.1417\n", - "2018-05-25 00:00:00 -90984.8896\n", - "2018-05-29 00:00:00 -533968.981\n", - "2018-05-31 00:00:00 -552842.6372\n", - "2018-06-01 00:00:00 328010.787\n", - "2018-06-04 00:00:00 -111515.521\n", - "2018-06-05 00:00:00 -561916.023\n", - "2018-06-06 00:00:00 24332.8744\n", - "2018-06-07 00:00:00 182939.0152\n", - "2018-06-08 00:00:00 346870.796\n", - "2018-06-11 00:00:00 186505.932\n", - "2018-06-12 00:00:00 -307874.996\n", - "2018-06-13 00:00:00 435787.7824\n", - "2018-06-14 00:00:00 101393.6232\n", - "2018-06-15 00:00:00 -68044.2112\n", - "2018-06-19 00:00:00 1727602.7848\n", - "2018-06-20 00:00:00 -400069.136\n", - "2018-06-21 00:00:00 888735.1096\n", - "2018-06-22 00:00:00 -484506.488\n", - "2018-06-25 00:00:00 562222.5048\n", - "2018-06-26 00:00:00 55582.4272\n", - "2018-06-27 00:00:00 827708.7424\n", - "2018-06-28 00:00:00 558729.0768\n", - "2018-06-29 00:00:00 -1516556.408\n", - "2018-07-02 00:00:00 1217920.228\n", - "2018-07-03 00:00:00 -305011.4552\n", - "2018-07-04 00:00:00 744653.1352\n", - "2018-07-05 00:00:00 869008.732\n", - "2018-07-06 00:00:00 -250391.1552\n", - "2018-07-09 00:00:00 -1307901.2704\n", - "2018-07-10 00:00:00 -212555.1048\n", - "2018-07-11 00:00:00 983705.6344\n", - "2018-07-12 00:00:00 -1272958.484\n", - "2018-07-13 00:00:00 -252444.228\n", - "2018-07-16 00:00:00 209199.212\n", - "2018-07-17 00:00:00 72552.5968\n", - "2018-07-18 00:00:00 343272.088\n", - "2018-07-19 00:00:00 23694.5744\n", - "2018-07-20 00:00:00 -619118.864\n", - "2018-07-23 00:00:00 -261274.888\n", - "2018-08-01 00:00:00 -221806.9906\n", - "2018-08-03 00:00:00 -202543.686\n", - "2018-08-06 00:00:00 111396.1472\n", - "2018-08-07 00:00:00 -709625.992\n", - "2018-08-08 00:00:00 55031.2564\n", - "2018-08-09 00:00:00 -699483.4222\n", - "2018-08-10 00:00:00 -22617.686\n", - "2018-08-15 00:00:00 -58576.608\n", - "2018-08-16 00:00:00 -88417.6776\n", - "2018-08-17 00:00:00 4223.2735\n", - "2018-08-20 00:00:00 -83687.4271\n", - "2018-08-21 00:00:00 -288661.815\n", - "2018-08-22 00:00:00 161468.5332\n", - "2018-08-23 00:00:00 -87054.292\n", - "2018-08-24 00:00:00 -289435.9742\n", - "2018-08-27 00:00:00 -446625.9936\n", - "2018-09-07 00:00:00 -59978.3773\n", - "2018-09-10 00:00:00 -15629.1034\n", - "2018-09-11 00:00:00 -23013.1614\n", - "2018-09-12 00:00:00 19411.4286\n", - "2018-09-13 00:00:00 -116346.4528\n", - "2018-09-14 00:00:00 -3587.9958\n", - "2018-09-17 00:00:00 208633.1664\n", - "2018-09-18 00:00:00 -559568.5444\n", - "2018-09-19 00:00:00 -303335.516\n", - "2018-09-20 00:00:00 -198732.2968\n", - "2018-09-21 00:00:00 -311901.606\n", - "2018-09-25 00:00:00 -177444.2962\n", - "2018-09-27 00:00:00 -47314.7126\n", - "2018-09-28 00:00:00 -255063.6332\n", - "2018-10-08 00:00:00 -512850.5026\n", - "2018-10-10 00:00:00 -1680888.45\n", - "2018-10-12 00:00:00 -170072.5924\n", - "2018-10-15 00:00:00 689959.1236\n", - "2018-10-16 00:00:00 664611.8052\n", - "2018-10-17 00:00:00 -283648.3748\n", - "2018-10-18 00:00:00 1068480.3224\n", - "2018-10-19 00:00:00 -1737209.0496\n", - "2018-10-22 00:00:00 -1931025.1004\n", - "2018-10-23 00:00:00 393803.4032\n", - "2018-10-24 00:00:00 39918.9796\n", - "2018-10-25 00:00:00 54762.4848\n", - "2018-10-26 00:00:00 2287.4604\n", - "2018-10-29 00:00:00 353450.484\n", - "2018-10-30 00:00:00 -207899.6212\n", - "2018-10-31 00:00:00 -336510.5112\n", - "2018-11-01 00:00:00 -509882.4936\n", - "2018-11-02 00:00:00 -687583.4812\n" - ] - } - ], - "source": [ - "# 查看每日的盈亏统计\n", - "for result in engine.resultList:\n", - " if result.totalPnl:\n", - " print result.date, result.totalPnl" + "plt.plot(dateList, equity)" ] }, { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "scrolled": false + }, "outputs": [], - "source": [] + "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": { diff --git a/examples/TurtleStrategy/turtleEngine.py b/examples/TurtleStrategy/turtleEngine.py index 001dd819..7ce17dc1 100644 --- a/examples/TurtleStrategy/turtleEngine.py +++ b/examples/TurtleStrategy/turtleEngine.py @@ -108,18 +108,18 @@ class BacktestingEngine(object): for dt, barDict in self.dataDict.items(): self.currentDt = dt - result = DailyResult(dt) - result.updatePos(self.portfolio.posDict) + previousResult = self.result + + self.result = DailyResult(dt) + self.result.updatePos(self.portfolio.posDict) + self.resultList.append(self.result) + + if previousResult: + self.result.updatePreviousClose(previousResult.closeDict) for bar in barDict.values(): self.portfolio.onBar(bar) - result.updateBar(bar) - - if self.result: - result.updatePreviousClose(self.result.closeDict) - - self.resultList.append(result) - self.result = result + self.result.updateBar(bar) self.writeLog(u'K线数据回放结束') diff --git a/examples/TurtleStrategy/turtleStrategy.py b/examples/TurtleStrategy/turtleStrategy.py index 1996c9fc..04d6e0f4 100644 --- a/examples/TurtleStrategy/turtleStrategy.py +++ b/examples/TurtleStrategy/turtleStrategy.py @@ -104,6 +104,7 @@ class TurtleSignal(object): # 优先检查平仓 if self.unit > 0: longExit = max(self.longStop, self.exitDown) + if bar.low <= longExit: self.sell(longExit) return @@ -112,7 +113,7 @@ class TurtleSignal(object): if bar.high >= shortExit: self.cover(shortExit) return - + # 没有仓位或者持有多头仓位的时候,可以做多(加仓) if self.unit >= 0: trade = False @@ -164,12 +165,14 @@ class TurtleSignal(object): self.longEntry2 = self.entryUp + self.atrVolatility * 0.5 self.longEntry3 = self.entryUp + self.atrVolatility * 1 self.longEntry4 = self.entryUp + self.atrVolatility * 1.5 + self.longStop = 0 self.shortEntry1 = self.entryDown self.shortEntry2 = self.entryDown - self.atrVolatility * 0.5 self.shortEntry3 = self.entryDown - self.atrVolatility * 1 self.shortEntry4 = self.entryDown - self.atrVolatility * 1.5 - + self.shortStop = 0 + #---------------------------------------------------------------------- def newSignal(self, direction, offset, price, volume): """""" @@ -391,5 +394,6 @@ class TurtlePortfolio(object): self.totalShort += unit # 向回测引擎中发单记录 + #self.engine.sendOrder(vtSymbol, direction, offset, price, volume) self.engine.sendOrder(vtSymbol, direction, offset, price, volume*multiplier) \ No newline at end of file diff --git a/vnpy/trader/app/ctaStrategy/strategy/strategyTurtleTrading.py b/vnpy/trader/app/ctaStrategy/strategy/strategyTurtleTrading.py index 84fbe026..35dbd183 100644 --- a/vnpy/trader/app/ctaStrategy/strategy/strategyTurtleTrading.py +++ b/vnpy/trader/app/ctaStrategy/strategy/strategyTurtleTrading.py @@ -115,7 +115,9 @@ class TurtleTradingStrategy(CtaTemplate): # 计算指标数值 self.entryUp, self.entryDown = self.am.donchian(self.entryWindow) self.exitUp, self.exitDown = self.am.donchian(self.exitWindow) - self.atrVolatility = self.am.atr(self.atrWindow) + + if not self.pos: + self.atrVolatility = self.am.atr(self.atrWindow) # 判断是否要进行交易 if self.pos == 0: @@ -132,19 +134,17 @@ class TurtleTradingStrategy(CtaTemplate): self.sendBuyOrders(self.longEntry) # 止损逻辑 - self.longStop = self.longEntry - self.atrVolatility * 2 - self.longStop = max(self.longStop, self.exitDown) - self.sell(self.longStop, abs(self.pos), True) + sellPrice = max(self.longStop, self.exitDown) + self.sell(sellPrice, abs(self.pos), True) elif self.pos < 0: # 加仓逻辑 self.sendShortOrders(self.shortEntry) # 止损逻辑 - self.shortStop = self.shortEntry + self.atrVolatility * 2 - self.shortStop = min(self.shortStop, self.exitUp) - self.cover(self.shortStop, abs(self.pos), True) - + coverPrice = min(self.shortStop, self.exitUp) + self.cover(coverPrice, abs(self.pos), True) + # 同步数据到数据库 self.saveSyncData() @@ -161,8 +161,10 @@ class TurtleTradingStrategy(CtaTemplate): """成交推送""" if trade.direction == DIRECTION_LONG: self.longEntry = trade.price + self.longStop = self.longEntry - self.atrVolatility * 2 else: self.shortEntry = trade.price + self.shortStop = self.shortEntry + self.atrVolatility * 2 # 发出状态更新事件 self.putEvent()