Files

159 lines
7.2 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from datetime import datetime\n",
"\n",
"from vnpy.trader.optimize import OptimizationSetting\n",
"from vnpy_ctastrategy.backtesting import BacktestingEngine\n",
"# from vnpy_ctastrategy.strategies.vip10 import vip10\n",
"from vip10 import vip10"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"engine = BacktestingEngine()\n",
"engine.set_parameters(\n",
" vt_symbol=\"rb888.SHFE\",\n",
" interval=\"1h\",\n",
" start=datetime(2020, 1, 1),\n",
" end=datetime(2024, 3, 21),\n",
" rate=1.5/10000,\n",
" slippage=1,\n",
" size=10,\n",
" pricetick=1,\n",
" capital=1_000_00,\n",
")\n",
"engine.add_strategy(vip10, {})"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2024-08-25 20:34:47.539362\t开始加载历史数据\n",
"2024-08-25 20:34:47.539362\t加载进度# [0%]\n",
"2024-08-25 20:34:47.747392\t加载进度# [10%]\n",
"2024-08-25 20:34:47.748385\t加载进度## [20%]\n",
"2024-08-25 20:34:47.748385\t加载进度### [30%]\n",
"2024-08-25 20:34:47.749381\t加载进度#### [40%]\n",
"2024-08-25 20:34:47.749381\t加载进度##### [50%]\n",
"2024-08-25 20:34:47.750388\t加载进度###### [60%]\n",
"2024-08-25 20:34:47.750388\t加载进度####### [70%]\n",
"2024-08-25 20:34:47.751394\t加载进度######## [80%]\n",
"2024-08-25 20:34:47.751394\t加载进度######### [90%]\n",
"2024-08-25 20:34:47.751394\t加载进度########## [100%]\n",
"2024-08-25 20:34:47.752372\t历史数据加载完成数据量0\n",
"2024-08-25 20:34:47.752372\t策略初始化完成\n",
"2024-08-25 20:34:47.752372\t开始回放历史数据\n",
"2024-08-25 20:34:47.752372\t历史数据回放结束\n",
"2024-08-25 20:34:47.752372\t开始计算逐日盯市盈亏\n",
"2024-08-25 20:34:47.752372\t回测成交记录为空\n"
]
},
{
"ename": "KeyError",
"evalue": "\"None of ['date'] are in the columns\"",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[3], line 3\u001b[0m\n\u001b[0;32m 1\u001b[0m engine\u001b[38;5;241m.\u001b[39mload_data()\n\u001b[0;32m 2\u001b[0m engine\u001b[38;5;241m.\u001b[39mrun_backtesting()\n\u001b[1;32m----> 3\u001b[0m df \u001b[38;5;241m=\u001b[39m \u001b[43mengine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcalculate_result\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 4\u001b[0m engine\u001b[38;5;241m.\u001b[39mcalculate_statistics()\n\u001b[0;32m 5\u001b[0m engine\u001b[38;5;241m.\u001b[39mshow_chart()\n",
"File \u001b[1;32mc:\\veighna_studio\\lib\\site-packages\\vnpy_ctastrategy\\backtesting.py:283\u001b[0m, in \u001b[0;36mBacktestingEngine.calculate_result\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 280\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m key, value \u001b[38;5;129;01min\u001b[39;00m daily_result\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__dict__\u001b[39m\u001b[38;5;241m.\u001b[39mitems():\n\u001b[0;32m 281\u001b[0m results[key]\u001b[38;5;241m.\u001b[39mappend(value)\n\u001b[1;32m--> 283\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdaily_df \u001b[38;5;241m=\u001b[39m \u001b[43mDataFrame\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfrom_dict\u001b[49m\u001b[43m(\u001b[49m\u001b[43mresults\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset_index\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mdate\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[0;32m 285\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moutput(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m逐日盯市盈亏计算完成\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 286\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdaily_df\n",
"File \u001b[1;32mc:\\veighna_studio\\lib\\site-packages\\pandas\\core\\frame.py:6109\u001b[0m, in \u001b[0;36mDataFrame.set_index\u001b[1;34m(self, keys, drop, append, inplace, verify_integrity)\u001b[0m\n\u001b[0;32m 6106\u001b[0m missing\u001b[38;5;241m.\u001b[39mappend(col)\n\u001b[0;32m 6108\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m missing:\n\u001b[1;32m-> 6109\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNone of \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmissing\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m are in the columns\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 6111\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m inplace:\n\u001b[0;32m 6112\u001b[0m frame \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\n",
"\u001b[1;31mKeyError\u001b[0m: \"None of ['date'] are in the columns\""
]
}
],
"source": [
"engine.load_data()\n",
"engine.run_backtesting()\n",
"df = engine.calculate_result()\n",
"engine.calculate_statistics()\n",
"engine.show_chart()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": false
},
"outputs": [],
"source": [
"'''用于参数优化'''\n",
"# setting = OptimizationSetting()\n",
"# setting.set_target(\"sharpe_ratio\")\n",
"# setting.add_parameter(\"Length\", 5, 80, 5)\n",
"# setting.add_parameter(\"Offset\", 0.5, 3, 0.5)\n",
"# setting.add_parameter(\"X\", 1, 3, 1)\n",
"# setting.add_parameter(\"TS\", 5, 80, 5)\n",
"# from multiprocessing import cpu_count\n",
"# # 获取 CPU 核心数量\n",
"# num_cores = cpu_count()\n",
"# print(f\"获取 CPU 核心数量:\",round(num_cores/2))\n",
"# engine.run_ga_optimization(setting, max_workers=round(num_cores/2))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": false
},
"outputs": [],
"source": [
"# engine.run_bf_optimization(setting)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.9"
},
"vscode": {
"interpreter": {
"hash": "1b43cb0bd93d5abbadd54afed8252f711d4681fe6223ad6b67ffaee289648f85"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}