Files
NewQuant/main.ipynb

505 lines
303 KiB
Plaintext
Raw Normal View History

2025-06-18 10:25:05 +08:00
{
"cells": [
{
"cell_type": "code",
2025-07-10 15:07:31 +08:00
"execution_count": 2,
2025-06-18 10:25:05 +08:00
"id": "initial_id",
"metadata": {
"ExecuteTime": {
2025-06-29 12:03:43 +08:00
"end_time": "2025-06-26T14:14:16.325887Z",
"start_time": "2025-06-26T14:14:15.311071Z"
},
"collapsed": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The autoreload extension is already loaded. To reload it, use:\n",
" %reload_ext autoreload\n",
"初始化数据管理器...\n",
2025-07-10 15:07:31 +08:00
"数据加载成功: /mnt/d/PyProject/NewQuant/data/data/KQ_m@CZCE_MA/KQ_m@CZCE_MA_min60.csv\n",
2025-07-01 10:14:28 +08:00
"数据范围从 2021-12-31 14:00:00 到 2025-06-20 21:00:00\n",
"总计 5811 条记录。\n",
"\n",
"初始化回测引擎...\n",
2025-06-23 23:49:43 +08:00
"模拟器初始化:初始资金=100000.00, 滑点率=0.0, 佣金率=0.0001\n",
"\n",
"--- 回测引擎初始化完成 ---\n",
2025-07-01 10:14:28 +08:00
" 策略: SimpleLimitBuyStrategyLong\n",
" 初始资金: 100000.00\n",
2025-06-23 22:21:59 +08:00
" 换月模式: 启用\n",
"\n",
"开始运行回测...\n",
"\n",
"--- 回测开始 ---\n",
2025-07-01 10:14:28 +08:00
"SimpleLimitBuyStrategyLong 策略初始化回调被调用。\n",
"开始将 DataFrame 转换为 Bar 对象流...\n",
"Bar 对象流生成完毕。\n",
"\n",
2025-06-23 22:21:59 +08:00
"--- 回测结束,检查并平仓所有剩余持仓 ---\n",
"--- 回测结束 ---\n",
2025-07-10 15:07:31 +08:00
"总计处理了 5042 根K线。\n",
"总计发生了 268 笔交易。\n",
"最终总净值: 100321.83\n",
"总收益率: 0.32%\n",
"\n",
"回测运行完毕。\n",
"\n",
"--- 结果分析器初始化完成 ---\n",
2025-06-29 12:03:43 +08:00
"\n",
"--- 交易明细 ---\n",
2025-07-10 15:07:31 +08:00
" 2022-01-13 11:00:00 | BUY | CZCE.MA205 | Vol: 1 | Price: 2609.00 | Comm: 0.26\n",
" 2022-01-13 22:00:00 | CLOSE_LONG | CZCE.MA205 | Vol: 1 | Price: 2638.00 | Comm: 0.26 | PnL: 29.00\n",
" 2022-01-28 14:00:00 | BUY | CZCE.MA205 | Vol: 1 | Price: 2827.00 | Comm: 0.28\n",
" 2022-02-07 09:00:00 | CLOSE_LONG | CZCE.MA205 | Vol: 1 | Price: 2903.00 | Comm: 0.29 | PnL: 76.00\n",
" 2022-02-08 21:00:00 | BUY | CZCE.MA205 | Vol: 1 | Price: 2856.00 | Comm: 0.29\n",
" 2022-02-08 22:00:00 | CLOSE_LONG | CZCE.MA205 | Vol: 1 | Price: 2877.00 | Comm: 0.29 | PnL: 21.00\n",
" 2022-02-11 14:00:00 | BUY | CZCE.MA205 | Vol: 1 | Price: 2710.00 | Comm: 0.27\n",
" 2022-02-11 21:00:00 | CLOSE_LONG | CZCE.MA205 | Vol: 1 | Price: 2721.00 | Comm: 0.27 | PnL: 11.00\n",
" 2022-02-22 10:00:00 | BUY | CZCE.MA205 | Vol: 1 | Price: 2796.00 | Comm: 0.28\n",
" 2022-02-22 13:00:00 | CLOSE_LONG | CZCE.MA205 | Vol: 1 | Price: 2773.00 | Comm: 0.28 | PnL: -23.00\n",
" 2022-02-24 14:00:00 | BUY | CZCE.MA205 | Vol: 1 | Price: 2807.00 | Comm: 0.28\n",
" 2022-02-24 21:00:00 | CLOSE_LONG | CZCE.MA205 | Vol: 1 | Price: 2858.00 | Comm: 0.29 | PnL: 51.00\n",
" 2022-02-25 13:00:00 | BUY | CZCE.MA205 | Vol: 1 | Price: 2764.00 | Comm: 0.28\n",
" 2022-02-25 14:00:00 | CLOSE_LONG | CZCE.MA205 | Vol: 1 | Price: 2727.00 | Comm: 0.27 | PnL: -37.00\n",
" 2022-03-03 21:00:00 | BUY | CZCE.MA205 | Vol: 1 | Price: 3060.00 | Comm: 0.31\n",
" 2022-03-04 09:00:00 | CLOSE_LONG | CZCE.MA205 | Vol: 1 | Price: 3139.00 | Comm: 0.31 | PnL: 79.00\n",
" 2022-03-07 21:00:00 | BUY | CZCE.MA205 | Vol: 1 | Price: 3194.00 | Comm: 0.32\n",
" 2022-03-07 22:00:00 | CLOSE_LONG | CZCE.MA205 | Vol: 1 | Price: 3223.00 | Comm: 0.32 | PnL: 29.00\n",
" 2022-03-10 09:00:00 | BUY | CZCE.MA205 | Vol: 1 | Price: 3020.00 | Comm: 0.30\n",
" 2022-03-10 10:00:00 | CLOSE_LONG | CZCE.MA205 | Vol: 1 | Price: 3055.00 | Comm: 0.31 | PnL: 35.00\n",
" 2022-03-31 10:00:00 | BUY | CZCE.MA205 | Vol: 1 | Price: 2920.00 | Comm: 0.29\n",
" 2022-03-31 13:00:00 | CLOSE_LONG | CZCE.MA205 | Vol: 1 | Price: 2901.00 | Comm: 0.29 | PnL: -19.00\n",
" 2022-04-15 10:00:00 | BUY | CZCE.MA209 | Vol: 1 | Price: 2902.00 | Comm: 0.29\n",
" 2022-04-15 13:00:00 | CLOSE_LONG | CZCE.MA209 | Vol: 1 | Price: 2888.00 | Comm: 0.29 | PnL: -14.00\n",
" 2022-04-22 09:00:00 | BUY | CZCE.MA209 | Vol: 1 | Price: 2894.00 | Comm: 0.29\n",
" 2022-04-22 11:00:00 | CLOSE_LONG | CZCE.MA209 | Vol: 1 | Price: 2905.00 | Comm: 0.29 | PnL: 11.00\n",
" 2022-04-22 22:00:00 | BUY | CZCE.MA209 | Vol: 1 | Price: 2829.00 | Comm: 0.28\n",
" 2022-04-25 09:00:00 | CLOSE_LONG | CZCE.MA209 | Vol: 1 | Price: 2795.00 | Comm: 0.28 | PnL: -34.00\n",
" 2022-04-25 13:00:00 | BUY | CZCE.MA209 | Vol: 1 | Price: 2728.00 | Comm: 0.27\n",
" 2022-04-25 21:00:00 | CLOSE_LONG | CZCE.MA209 | Vol: 1 | Price: 2695.00 | Comm: 0.27 | PnL: -33.00\n",
" 2022-04-27 10:00:00 | BUY | CZCE.MA209 | Vol: 1 | Price: 2694.00 | Comm: 0.27\n",
" 2022-04-27 13:00:00 | CLOSE_LONG | CZCE.MA209 | Vol: 1 | Price: 2662.00 | Comm: 0.27 | PnL: -32.00\n",
" 2022-05-06 21:00:00 | BUY | CZCE.MA209 | Vol: 1 | Price: 2718.00 | Comm: 0.27\n",
" 2022-05-06 22:00:00 | CLOSE_LONG | CZCE.MA209 | Vol: 1 | Price: 2687.00 | Comm: 0.27 | PnL: -31.00\n",
" 2022-05-17 22:00:00 | BUY | CZCE.MA209 | Vol: 1 | Price: 2727.00 | Comm: 0.27\n",
" 2022-05-18 11:00:00 | CLOSE_LONG | CZCE.MA209 | Vol: 1 | Price: 2713.00 | Comm: 0.27 | PnL: -14.00\n",
" 2022-06-06 09:00:00 | BUY | CZCE.MA209 | Vol: 1 | Price: 2851.00 | Comm: 0.29\n",
" 2022-06-06 10:00:00 | CLOSE_LONG | CZCE.MA209 | Vol: 1 | Price: 2872.00 | Comm: 0.29 | PnL: 21.00\n",
" 2022-06-06 14:00:00 | BUY | CZCE.MA209 | Vol: 1 | Price: 2870.00 | Comm: 0.29\n",
" 2022-06-07 10:00:00 | CLOSE_LONG | CZCE.MA209 | Vol: 1 | Price: 2886.00 | Comm: 0.29 | PnL: 16.00\n",
" 2022-06-13 22:00:00 | BUY | CZCE.MA209 | Vol: 1 | Price: 2894.00 | Comm: 0.29\n",
" 2022-06-14 09:00:00 | CLOSE_LONG | CZCE.MA209 | Vol: 1 | Price: 2912.00 | Comm: 0.29 | PnL: 18.00\n",
" 2022-06-15 14:00:00 | BUY | CZCE.MA209 | Vol: 1 | Price: 2882.00 | Comm: 0.29\n",
" 2022-06-15 21:00:00 | CLOSE_LONG | CZCE.MA209 | Vol: 1 | Price: 2841.00 | Comm: 0.28 | PnL: -41.00\n",
" 2022-06-24 21:00:00 | BUY | CZCE.MA209 | Vol: 1 | Price: 2512.00 | Comm: 0.25\n",
" 2022-06-27 09:00:00 | CLOSE_LONG | CZCE.MA209 | Vol: 1 | Price: 2542.00 | Comm: 0.25 | PnL: 30.00\n",
" 2022-07-01 09:00:00 | BUY | CZCE.MA209 | Vol: 1 | Price: 2570.00 | Comm: 0.26\n",
" 2022-07-01 13:00:00 | CLOSE_LONG | CZCE.MA209 | Vol: 1 | Price: 2557.00 | Comm: 0.26 | PnL: -13.00\n",
" 2022-07-11 09:00:00 | BUY | CZCE.MA209 | Vol: 1 | Price: 2442.00 | Comm: 0.24\n",
" 2022-07-11 14:00:00 | CLOSE_LONG | CZCE.MA209 | Vol: 1 | Price: 2403.00 | Comm: 0.24 | PnL: -39.00\n",
" 2022-07-14 13:00:00 | BUY | CZCE.MA209 | Vol: 1 | Price: 2325.00 | Comm: 0.23\n",
" 2022-07-15 09:00:00 | CLOSE_LONG | CZCE.MA209 | Vol: 1 | Price: 2347.00 | Comm: 0.23 | PnL: 22.00\n",
" 2022-07-15 14:00:00 | BUY | CZCE.MA209 | Vol: 1 | Price: 2303.00 | Comm: 0.23\n",
" 2022-07-15 21:00:00 | CLOSE_LONG | CZCE.MA209 | Vol: 1 | Price: 2324.00 | Comm: 0.23 | PnL: 21.00\n",
" 2022-08-09 09:00:00 | BUY | CZCE.MA209 | Vol: 1 | Price: 2494.00 | Comm: 0.25\n",
" 2022-08-09 21:00:00 | CLOSE_LONG | CZCE.MA209 | Vol: 1 | Price: 2505.00 | Comm: 0.25 | PnL: 11.00\n",
" 2022-08-18 22:00:00 | BUY | CZCE.MA301 | Vol: 1 | Price: 2396.00 | Comm: 0.24\n",
" 2022-08-19 09:00:00 | CLOSE_LONG | CZCE.MA301 | Vol: 1 | Price: 2430.00 | Comm: 0.24 | PnL: 34.00\n",
" 2022-09-30 09:00:00 | BUY | CZCE.MA301 | Vol: 1 | Price: 2766.00 | Comm: 0.28\n",
" 2022-09-30 10:00:00 | CLOSE_LONG | CZCE.MA301 | Vol: 1 | Price: 2754.00 | Comm: 0.28 | PnL: -12.00\n",
" 2022-10-10 09:00:00 | BUY | CZCE.MA301 | Vol: 1 | Price: 2871.00 | Comm: 0.29\n",
" 2022-10-10 10:00:00 | CLOSE_LONG | CZCE.MA301 | Vol: 1 | Price: 2852.00 | Comm: 0.29 | PnL: -19.00\n",
" 2022-10-11 11:00:00 | BUY | CZCE.MA301 | Vol: 1 | Price: 2769.00 | Comm: 0.28\n",
" 2022-10-11 14:00:00 | CLOSE_LONG | CZCE.MA301 | Vol: 1 | Price: 2778.00 | Comm: 0.28 | PnL: 9.00\n",
" 2022-10-13 11:00:00 | BUY | CZCE.MA301 | Vol: 1 | Price: 2733.00 | Comm: 0.27\n",
" 2022-10-13 13:00:00 | CLOSE_LONG | CZCE.MA301 | Vol: 1 | Price: 2745.00 | Comm: 0.27 | PnL: 12.00\n",
" 2022-10-31 09:00:00 | BUY | CZCE.MA301 | Vol: 1 | Price: 2509.00 | Comm: 0.25\n",
" 2022-10-31 10:00:00 | CLOSE_LONG | CZCE.MA301 | Vol: 1 | Price: 2478.00 | Comm: 0.25 | PnL: -31.00\n",
" 2022-11-09 11:00:00 | BUY | CZCE.MA301 | Vol: 1 | Price: 2546.00 | Comm: 0.25\n",
" 2022-11-09 21:00:00 | CLOSE_LONG | CZCE.MA301 | Vol: 1 | Price: 2528.00 | Comm: 0.25 | PnL: -18.00\n",
" 2022-11-16 22:00:00 | BUY | CZCE.MA301 | Vol: 1 | Price: 2556.00 | Comm: 0.26\n",
" 2022-11-17 09:00:00 | CLOSE_LONG | CZCE.MA301 | Vol: 1 | Price: 2539.00 | Comm: 0.25 | PnL: -17.00\n",
" 2022-11-21 09:00:00 | BUY | CZCE.MA301 | Vol: 1 | Price: 2570.00 | Comm: 0.26\n",
" 2022-11-21 10:00:00 | CLOSE_LONG | CZCE.MA301 | Vol: 1 | Price: 2531.00 | Comm: 0.25 | PnL: -39.00\n",
" 2022-11-23 11:00:00 | BUY | CZCE.MA301 | Vol: 1 | Price: 2535.00 | Comm: 0.25\n",
" 2022-11-24 09:00:00 | CLOSE_LONG | CZCE.MA301 | Vol: 1 | Price: 2552.00 | Comm: 0.26 | PnL: 17.00\n",
" 2022-11-28 09:00:00 | BUY | CZCE.MA301 | Vol: 1 | Price: 2572.00 | Comm: 0.26\n",
" 2022-11-28 14:00:00 | CLOSE_LONG | CZCE.MA301 | Vol: 1 | Price: 2550.00 | Comm: 0.26 | PnL: -22.00\n",
" 2022-11-30 13:00:00 | BUY | CZCE.MA301 | Vol: 1 | Price: 2595.00 | Comm: 0.26\n",
" 2022-11-30 14:00:00 | CLOSE_LONG | CZCE.MA301 | Vol: 1 | Price: 2575.00 | Comm: 0.26 | PnL: -20.00\n",
" 2022-12-01 10:00:00 | BUY | CZCE.MA301 | Vol: 1 | Price: 2565.00 | Comm: 0.26\n",
" 2022-12-01 21:00:00 | CLOSE_LONG | CZCE.MA301 | Vol: 1 | Price: 2576.00 | Comm: 0.26 | PnL: 11.00\n",
" 2022-12-05 13:00:00 | BUY | CZCE.MA301 | Vol: 1 | Price: 2532.00 | Comm: 0.25\n",
" 2022-12-05 21:00:00 | CLOSE_LONG | CZCE.MA301 | Vol: 1 | Price: 2541.00 | Comm: 0.25 | PnL: 9.00\n",
" 2022-12-16 11:00:00 | BUY | CZCE.MA301 | Vol: 1 | Price: 2535.00 | Comm: 0.25\n",
" 2022-12-16 14:00:00 | CLOSE_LONG | CZCE.MA301 | Vol: 1 | Price: 2554.00 | Comm: 0.26 | PnL: 19.00\n",
" 2023-01-03 09:00:00 | BUY | CZCE.MA305 | Vol: 1 | Price: 2626.00 | Comm: 0.26\n",
" 2023-01-03 10:00:00 | CLOSE_LONG | CZCE.MA305 | Vol: 1 | Price: 2639.00 | Comm: 0.26 | PnL: 13.00\n",
" 2023-01-09 11:00:00 | BUY | CZCE.MA305 | Vol: 1 | Price: 2570.00 | Comm: 0.26\n",
" 2023-01-09 14:00:00 | CLOSE_LONG | CZCE.MA305 | Vol: 1 | Price: 2581.00 | Comm: 0.26 | PnL: 11.00\n",
" 2023-01-16 09:00:00 | BUY | CZCE.MA305 | Vol: 1 | Price: 2615.00 | Comm: 0.26\n",
" 2023-01-16 14:00:00 | CLOSE_LONG | CZCE.MA305 | Vol: 1 | Price: 2625.00 | Comm: 0.26 | PnL: 10.00\n",
" 2023-01-30 09:00:00 | BUY | CZCE.MA305 | Vol: 1 | Price: 2771.00 | Comm: 0.28\n",
" 2023-01-30 10:00:00 | CLOSE_LONG | CZCE.MA305 | Vol: 1 | Price: 2785.00 | Comm: 0.28 | PnL: 14.00\n",
" 2023-01-30 11:00:00 | BUY | CZCE.MA305 | Vol: 1 | Price: 2742.00 | Comm: 0.27\n",
" 2023-01-30 14:00:00 | CLOSE_LONG | CZCE.MA305 | Vol: 1 | Price: 2753.00 | Comm: 0.28 | PnL: 11.00\n",
" 2023-02-02 14:00:00 | BUY | CZCE.MA305 | Vol: 1 | Price: 2690.00 | Comm: 0.27\n",
" 2023-02-02 22:00:00 | CLOSE_LONG | CZCE.MA305 | Vol: 1 | Price: 2677.00 | Comm: 0.27 | PnL: -13.00\n",
" 2023-02-07 13:00:00 | BUY | CZCE.MA305 | Vol: 1 | Price: 2634.00 | Comm: 0.26\n",
" 2023-02-07 14:00:00 | CLOSE_LONG | CZCE.MA305 | Vol: 1 | Price: 2665.00 | Comm: 0.27 | PnL: 31.00\n",
" 2023-02-08 11:00:00 | BUY | CZCE.MA305 | Vol: 1 | Price: 2629.00 | Comm: 0.26\n",
" 2023-02-08 14:00:00 | CLOSE_LONG | CZCE.MA305 | Vol: 1 | Price: 2644.00 | Comm: 0.26 | PnL: 15.00\n",
" 2023-02-15 14:00:00 | BUY | CZCE.MA305 | Vol: 1 | Price: 2545.00 | Comm: 0.25\n",
" 2023-02-15 22:00:00 | CLOSE_LONG | CZCE.MA305 | Vol: 1 | Price: 2556.00 | Comm: 0.26 | PnL: 11.00\n",
" 2023-03-08 13:00:00 | BUY | CZCE.MA305 | Vol: 1 | Price: 2575.00 | Comm: 0.26\n",
" 2023-03-09 22:00:00 | CLOSE_LONG | CZCE.MA305 | Vol: 1 | Price: 2585.00 | Comm: 0.26 | PnL: 10.00\n",
" 2023-03-24 09:00:00 | BUY | CZCE.MA305 | Vol: 1 | Price: 2479.00 | Comm: 0.25\n",
" 2023-03-24 11:00:00 | CLOSE_LONG | CZCE.MA305 | Vol: 1 | Price: 2504.00 | Comm: 0.25 | PnL: 25.00\n",
" 2023-03-29 11:00:00 | BUY | CZCE.MA305 | Vol: 1 | Price: 2463.00 | Comm: 0.25\n",
" 2023-03-29 21:00:00 | CLOSE_LONG | CZCE.MA305 | Vol: 1 | Price: 2481.00 | Comm: 0.25 | PnL: 18.00\n",
" 2023-04-03 10:00:00 | BUY | CZCE.MA305 | Vol: 1 | Price: 2500.00 | Comm: 0.25\n",
" 2023-04-03 13:00:00 | CLOSE_LONG | CZCE.MA305 | Vol: 1 | Price: 2477.00 | Comm: 0.25 | PnL: -23.00\n",
" 2023-04-06 09:00:00 | BUY | CZCE.MA305 | Vol: 1 | Price: 2444.00 | Comm: 0.24\n",
" 2023-04-06 11:00:00 | CLOSE_LONG | CZCE.MA305 | Vol: 1 | Price: 2462.00 | Comm: 0.25 | PnL: 18.00\n",
" 2023-04-06 14:00:00 | BUY | CZCE.MA305 | Vol: 1 | Price: 2424.00 | Comm: 0.24\n",
" 2023-04-06 22:00:00 | CLOSE_LONG | CZCE.MA305 | Vol: 1 | Price: 2402.00 | Comm: 0.24 | PnL: -22.00\n",
" 2023-04-10 09:00:00 | BUY | CZCE.MA305 | Vol: 1 | Price: 2379.00 | Comm: 0.24\n",
" 2023-04-11 10:00:00 | CLOSE_LONG | CZCE.MA305 | Vol: 1 | Price: 2392.00 | Comm: 0.24 | PnL: 13.00\n",
" 2023-04-20 13:00:00 | BUY | CZCE.MA309 | Vol: 1 | Price: 2418.00 | Comm: 0.24\n",
" 2023-04-20 14:00:00 | CLOSE_LONG | CZCE.MA309 | Vol: 1 | Price: 2435.00 | Comm: 0.24 | PnL: 17.00\n",
" 2023-04-27 13:00:00 | BUY | CZCE.MA309 | Vol: 1 | Price: 2363.00 | Comm: 0.24\n",
" 2023-04-27 21:00:00 | CLOSE_LONG | CZCE.MA309 | Vol: 1 | Price: 2331.00 | Comm: 0.23 | PnL: -32.00\n",
" 2023-05-10 21:00:00 | BUY | CZCE.MA309 | Vol: 1 | Price: 2239.00 | Comm: 0.22\n",
" 2023-05-11 11:00:00 | CLOSE_LONG | CZCE.MA309 | Vol: 1 | Price: 2260.00 | Comm: 0.23 | PnL: 21.00\n",
" 2023-05-11 14:00:00 | BUY | CZCE.MA309 | Vol: 1 | Price: 2246.00 | Comm: 0.22\n",
" 2023-05-12 09:00:00 | CLOSE_LONG | CZCE.MA309 | Vol: 1 | Price: 2257.00 | Comm: 0.23 | PnL: 11.00\n",
" 2023-05-18 21:00:00 | BUY | CZCE.MA309 | Vol: 1 | Price: 2198.00 | Comm: 0.22\n",
" 2023-05-19 09:00:00 | CLOSE_LONG | CZCE.MA309 | Vol: 1 | Price: 2171.00 | Comm: 0.22 | PnL: -27.00\n",
" 2023-05-22 09:00:00 | BUY | CZCE.MA309 | Vol: 1 | Price: 2090.00 | Comm: 0.21\n",
" 2023-05-22 11:00:00 | CLOSE_LONG | CZCE.MA309 | Vol: 1 | Price: 2061.00 | Comm: 0.21 | PnL: -29.00\n",
" 2023-05-23 14:00:00 | BUY | CZCE.MA309 | Vol: 1 | Price: 2044.00 | Comm: 0.20\n",
" 2023-05-23 21:00:00 | CLOSE_LONG | CZCE.MA309 | Vol: 1 | Price: 2061.00 | Comm: 0.21 | PnL: 17.00\n",
" 2023-06-06 13:00:00 | BUY | CZCE.MA309 | Vol: 1 | Price: 2048.00 | Comm: 0.20\n",
" 2023-06-06 21:00:00 | CLOSE_LONG | CZCE.MA309 | Vol: 1 | Price: 2034.00 | Comm: 0.20 | PnL: -14.00\n",
" 2023-07-26 13:00:00 | BUY | CZCE.MA309 | Vol: 1 | Price: 2244.00 | Comm: 0.22\n",
" 2023-07-26 21:00:00 | CLOSE_LONG | CZCE.MA309 | Vol: 1 | Price: 2253.00 | Comm: 0.23 | PnL: 9.00\n",
" 2023-08-04 21:00:00 | BUY | CZCE.MA309 | Vol: 1 | Price: 2297.00 | Comm: 0.23\n",
" 2023-08-07 09:00:00 | CLOSE_LONG | CZCE.MA309 | Vol: 1 | Price: 2319.00 | Comm: 0.23 | PnL: 22.00\n",
" 2023-08-10 22:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2426.00 | Comm: 0.24\n",
" 2023-08-11 09:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2444.00 | Comm: 0.24 | PnL: 18.00\n",
" 2023-08-14 11:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2429.00 | Comm: 0.24\n",
" 2023-08-14 14:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2416.00 | Comm: 0.24 | PnL: -13.00\n",
" 2023-08-24 14:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2529.00 | Comm: 0.25\n",
" 2023-08-24 21:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2516.00 | Comm: 0.25 | PnL: -13.00\n",
" 2023-09-04 09:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2584.00 | Comm: 0.26\n",
" 2023-09-04 21:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2571.00 | Comm: 0.26 | PnL: -13.00\n",
" 2023-09-07 09:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2548.00 | Comm: 0.25\n",
" 2023-09-07 11:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2536.00 | Comm: 0.25 | PnL: -12.00\n",
" 2023-09-13 11:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2526.00 | Comm: 0.25\n",
" 2023-09-14 11:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2535.00 | Comm: 0.25 | PnL: 9.00\n",
" 2023-09-25 09:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2498.00 | Comm: 0.25\n",
" 2023-09-25 21:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2473.00 | Comm: 0.25 | PnL: -25.00\n",
" 2023-10-16 09:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2427.00 | Comm: 0.24\n",
" 2023-10-16 10:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2452.00 | Comm: 0.25 | PnL: 25.00\n",
" 2023-10-17 13:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2456.00 | Comm: 0.25\n",
" 2023-10-17 14:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2442.00 | Comm: 0.24 | PnL: -14.00\n",
" 2023-10-30 22:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2442.00 | Comm: 0.24\n",
" 2023-10-31 11:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2428.00 | Comm: 0.24 | PnL: -14.00\n",
" 2023-11-01 22:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2383.00 | Comm: 0.24\n",
" 2023-11-02 13:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2392.00 | Comm: 0.24 | PnL: 9.00\n",
" 2023-11-07 14:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2470.00 | Comm: 0.25\n",
" 2023-11-08 11:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2485.00 | Comm: 0.25 | PnL: 15.00\n",
" 2023-11-14 11:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2457.00 | Comm: 0.25\n",
" 2023-11-14 22:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2484.00 | Comm: 0.25 | PnL: 27.00\n",
" 2023-11-16 22:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2512.00 | Comm: 0.25\n",
" 2023-11-17 10:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2482.00 | Comm: 0.25 | PnL: -30.00\n",
" 2023-11-20 22:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2431.00 | Comm: 0.24\n",
" 2023-11-21 10:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2440.00 | Comm: 0.24 | PnL: 9.00\n",
" 2023-11-21 11:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2415.00 | Comm: 0.24\n",
" 2023-11-21 14:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2401.00 | Comm: 0.24 | PnL: -14.00\n",
" 2023-11-22 21:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2362.00 | Comm: 0.24\n",
" 2023-11-23 10:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2344.00 | Comm: 0.23 | PnL: -18.00\n",
" 2023-12-04 09:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2431.00 | Comm: 0.24\n",
" 2023-12-04 13:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2443.00 | Comm: 0.24 | PnL: 12.00\n",
" 2023-12-08 22:00:00 | BUY | CZCE.MA401 | Vol: 1 | Price: 2442.00 | Comm: 0.24\n",
" 2023-12-11 09:00:00 | CLOSE_LONG | CZCE.MA401 | Vol: 1 | Price: 2429.00 | Comm: 0.24 | PnL: -13.00\n",
" 2023-12-13 10:00:00 | BUY | CZCE.MA405 | Vol: 1 | Price: 2383.00 | Comm: 0.24\n",
" 2023-12-13 14:00:00 | CLOSE_LONG | CZCE.MA405 | Vol: 1 | Price: 2372.00 | Comm: 0.24 | PnL: -11.00\n",
" 2023-12-26 22:00:00 | BUY | CZCE.MA405 | Vol: 1 | Price: 2418.00 | Comm: 0.24\n",
" 2023-12-27 21:00:00 | CLOSE_LONG | CZCE.MA405 | Vol: 1 | Price: 2428.00 | Comm: 0.24 | PnL: 10.00\n",
" 2024-01-02 09:00:00 | BUY | CZCE.MA405 | Vol: 1 | Price: 2402.00 | Comm: 0.24\n",
" 2024-01-02 10:00:00 | CLOSE_LONG | CZCE.MA405 | Vol: 1 | Price: 2390.00 | Comm: 0.24 | PnL: -12.00\n",
" 2024-01-09 21:00:00 | BUY | CZCE.MA405 | Vol: 1 | Price: 2369.00 | Comm: 0.24\n",
" 2024-01-10 10:00:00 | CLOSE_LONG | CZCE.MA405 | Vol: 1 | Price: 2356.00 | Comm: 0.24 | PnL: -13.00\n",
" 2024-01-10 11:00:00 | BUY | CZCE.MA405 | Vol: 1 | Price: 2340.00 | Comm: 0.23\n",
" 2024-01-10 13:00:00 | CLOSE_LONG | CZCE.MA405 | Vol: 1 | Price: 2316.00 | Comm: 0.23 | PnL: -24.00\n",
" 2024-01-10 14:00:00 | BUY | CZCE.MA405 | Vol: 1 | Price: 2298.00 | Comm: 0.23\n",
" 2024-01-11 09:00:00 | CLOSE_LONG | CZCE.MA405 | Vol: 1 | Price: 2309.00 | Comm: 0.23 | PnL: 11.00\n",
" 2024-01-31 21:00:00 | BUY | CZCE.MA405 | Vol: 1 | Price: 2462.00 | Comm: 0.25\n",
" 2024-02-02 09:00:00 | CLOSE_LONG | CZCE.MA405 | Vol: 1 | Price: 2450.00 | Comm: 0.25 | PnL: -12.00\n",
" 2024-02-05 21:00:00 | BUY | CZCE.MA405 | Vol: 1 | Price: 2429.00 | Comm: 0.24\n",
" 2024-02-06 10:00:00 | CLOSE_LONG | CZCE.MA405 | Vol: 1 | Price: 2439.00 | Comm: 0.24 | PnL: 10.00\n",
" 2024-02-08 11:00:00 | BUY | CZCE.MA405 | Vol: 1 | Price: 2510.00 | Comm: 0.25\n",
" 2024-02-19 09:00:00 | CLOSE_LONG | CZCE.MA405 | Vol: 1 | Price: 2530.00 | Comm: 0.25 | PnL: 20.00\n",
" 2024-02-19 21:00:00 | BUY | CZCE.MA405 | Vol: 1 | Price: 2484.00 | Comm: 0.25\n",
" 2024-02-20 14:00:00 | CLOSE_LONG | CZCE.MA405 | Vol: 1 | Price: 2471.00 | Comm: 0.25 | PnL: -13.00\n",
" 2024-02-28 13:00:00 | BUY | CZCE.MA405 | Vol: 1 | Price: 2536.00 | Comm: 0.25\n",
" 2024-02-28 21:00:00 | CLOSE_LONG | CZCE.MA405 | Vol: 1 | Price: 2525.00 | Comm: 0.25 | PnL: -11.00\n",
" 2024-03-12 13:00:00 | BUY | CZCE.MA405 | Vol: 1 | Price: 2511.00 | Comm: 0.25\n",
" 2024-03-14 10:00:00 | CLOSE_LONG | CZCE.MA405 | Vol: 1 | Price: 2523.00 | Comm: 0.25 | PnL: 12.00\n",
" 2024-03-15 21:00:00 | BUY | CZCE.MA405 | Vol: 1 | Price: 2543.00 | Comm: 0.25\n",
" 2024-03-18 13:00:00 | CLOSE_LONG | CZCE.MA405 | Vol: 1 | Price: 2556.00 | Comm: 0.26 | PnL: 13.00\n",
" 2024-03-25 14:00:00 | BUY | CZCE.MA405 | Vol: 1 | Price: 2526.00 | Comm: 0.25\n",
" 2024-03-26 09:00:00 | CLOSE_LONG | CZCE.MA405 | Vol: 1 | Price: 2536.00 | Comm: 0.25 | PnL: 10.00\n",
" 2024-03-28 09:00:00 | BUY | CZCE.MA405 | Vol: 1 | Price: 2450.00 | Comm: 0.25\n",
" 2024-03-28 11:00:00 | CLOSE_LONG | CZCE.MA405 | Vol: 1 | Price: 2470.00 | Comm: 0.25 | PnL: 20.00\n",
" 2024-04-02 13:00:00 | BUY | CZCE.MA405 | Vol: 1 | Price: 2509.00 | Comm: 0.25\n",
" 2024-04-02 21:00:00 | CLOSE_LONG | CZCE.MA405 | Vol: 1 | Price: 2529.00 | Comm: 0.25 | PnL: 20.00\n",
" 2024-04-08 21:00:00 | BUY | CZCE.MA405 | Vol: 1 | Price: 2481.00 | Comm: 0.25\n",
" 2024-04-10 11:00:00 | CLOSE_LONG | CZCE.MA405 | Vol: 1 | Price: 2493.00 | Comm: 0.25 | PnL: 12.00\n",
" 2024-04-19 11:00:00 | BUY | CZCE.MA409 | Vol: 1 | Price: 2583.00 | Comm: 0.26\n",
" 2024-04-19 14:00:00 | CLOSE_LONG | CZCE.MA409 | Vol: 1 | Price: 2566.00 | Comm: 0.26 | PnL: -17.00\n",
" 2024-04-25 11:00:00 | BUY | CZCE.MA409 | Vol: 1 | Price: 2487.00 | Comm: 0.25\n",
" 2024-04-26 09:00:00 | CLOSE_LONG | CZCE.MA409 | Vol: 1 | Price: 2497.00 | Comm: 0.25 | PnL: 10.00\n",
" 2024-04-30 13:00:00 | BUY | CZCE.MA409 | Vol: 1 | Price: 2548.00 | Comm: 0.25\n",
" 2024-04-30 14:00:00 | CLOSE_LONG | CZCE.MA409 | Vol: 1 | Price: 2557.00 | Comm: 0.26 | PnL: 9.00\n",
" 2024-05-13 22:00:00 | BUY | CZCE.MA409 | Vol: 1 | Price: 2619.00 | Comm: 0.26\n",
" 2024-05-14 09:00:00 | CLOSE_LONG | CZCE.MA409 | Vol: 1 | Price: 2593.00 | Comm: 0.26 | PnL: -26.00\n",
" 2024-05-15 10:00:00 | BUY | CZCE.MA409 | Vol: 1 | Price: 2563.00 | Comm: 0.26\n",
" 2024-05-15 21:00:00 | CLOSE_LONG | CZCE.MA409 | Vol: 1 | Price: 2599.00 | Comm: 0.26 | PnL: 36.00\n",
" 2024-05-24 14:00:00 | BUY | CZCE.MA409 | Vol: 1 | Price: 2595.00 | Comm: 0.26\n",
" 2024-05-27 09:00:00 | CLOSE_LONG | CZCE.MA409 | Vol: 1 | Price: 2614.00 | Comm: 0.26 | PnL: 19.00\n",
" 2024-06-12 21:00:00 | BUY | CZCE.MA409 | Vol: 1 | Price: 2545.00 | Comm: 0.25\n",
" 2024-06-13 11:00:00 | CLOSE_LONG | CZCE.MA409 | Vol: 1 | Price: 2532.00 | Comm: 0.25 | PnL: -13.00\n",
" 2024-06-25 13:00:00 | BUY | CZCE.MA409 | Vol: 1 | Price: 2510.00 | Comm: 0.25\n",
" 2024-06-26 10:00:00 | CLOSE_LONG | CZCE.MA409 | Vol: 1 | Price: 2495.00 | Comm: 0.25 | PnL: -15.00\n",
" 2024-07-08 09:00:00 | BUY | CZCE.MA409 | Vol: 1 | Price: 2516.00 | Comm: 0.25\n",
" 2024-07-08 22:00:00 | CLOSE_LONG | CZCE.MA409 | Vol: 1 | Price: 2547.00 | Comm: 0.25 | PnL: 31.00\n",
" 2024-07-17 13:00:00 | BUY | CZCE.MA409 | Vol: 1 | Price: 2540.00 | Comm: 0.25\n",
" 2024-07-18 09:00:00 | CLOSE_LONG | CZCE.MA409 | Vol: 1 | Price: 2527.00 | Comm: 0.25 | PnL: -13.00\n",
" 2024-07-29 10:00:00 | BUY | CZCE.MA409 | Vol: 1 | Price: 2466.00 | Comm: 0.25\n",
" 2024-07-29 11:00:00 | CLOSE_LONG | CZCE.MA409 | Vol: 1 | Price: 2477.00 | Comm: 0.25 | PnL: 11.00\n",
" 2024-07-29 14:00:00 | BUY | CZCE.MA409 | Vol: 1 | Price: 2481.00 | Comm: 0.25\n",
" 2024-07-30 10:00:00 | CLOSE_LONG | CZCE.MA409 | Vol: 1 | Price: 2460.00 | Comm: 0.25 | PnL: -21.00\n",
" 2024-08-01 22:00:00 | BUY | CZCE.MA409 | Vol: 1 | Price: 2498.00 | Comm: 0.25\n",
" 2024-08-05 09:00:00 | CLOSE_LONG | CZCE.MA409 | Vol: 1 | Price: 2485.00 | Comm: 0.25 | PnL: -13.00\n",
" 2024-08-05 13:00:00 | BUY | CZCE.MA409 | Vol: 1 | Price: 2470.00 | Comm: 0.25\n",
" 2024-08-06 21:00:00 | CLOSE_LONG | CZCE.MA409 | Vol: 1 | Price: 2453.00 | Comm: 0.25 | PnL: -17.00\n",
" 2024-08-08 14:00:00 | BUY | CZCE.MA409 | Vol: 1 | Price: 2456.00 | Comm: 0.25\n",
" 2024-08-08 22:00:00 | CLOSE_LONG | CZCE.MA409 | Vol: 1 | Price: 2443.00 | Comm: 0.24 | PnL: -13.00\n",
" 2024-09-03 22:00:00 | BUY | CZCE.MA501 | Vol: 1 | Price: 2448.00 | Comm: 0.24\n",
" 2024-09-04 10:00:00 | CLOSE_LONG | CZCE.MA501 | Vol: 1 | Price: 2430.00 | Comm: 0.24 | PnL: -18.00\n",
" 2024-09-18 09:00:00 | BUY | CZCE.MA501 | Vol: 1 | Price: 2367.00 | Comm: 0.24\n",
" 2024-09-18 10:00:00 | CLOSE_LONG | CZCE.MA501 | Vol: 1 | Price: 2378.00 | Comm: 0.24 | PnL: 11.00\n",
" 2024-10-08 10:00:00 | BUY | CZCE.MA501 | Vol: 1 | Price: 2572.00 | Comm: 0.26\n",
" 2024-10-08 14:00:00 | CLOSE_LONG | CZCE.MA501 | Vol: 1 | Price: 2560.00 | Comm: 0.26 | PnL: -12.00\n",
" 2024-10-14 13:00:00 | BUY | CZCE.MA501 | Vol: 1 | Price: 2489.00 | Comm: 0.25\n",
" 2024-10-15 09:00:00 | CLOSE_LONG | CZCE.MA501 | Vol: 1 | Price: 2473.00 | Comm: 0.25 | PnL: -16.00\n",
" 2024-10-21 09:00:00 | BUY | CZCE.MA501 | Vol: 1 | Price: 2394.00 | Comm: 0.24\n",
" 2024-10-21 22:00:00 | CLOSE_LONG | CZCE.MA501 | Vol: 1 | Price: 2415.00 | Comm: 0.24 | PnL: 21.00\n",
" 2024-10-29 11:00:00 | BUY | CZCE.MA501 | Vol: 1 | Price: 2450.00 | Comm: 0.25\n",
" 2024-10-30 11:00:00 | CLOSE_LONG | CZCE.MA501 | Vol: 1 | Price: 2435.00 | Comm: 0.24 | PnL: -15.00\n",
" 2024-11-01 14:00:00 | BUY | CZCE.MA501 | Vol: 1 | Price: 2476.00 | Comm: 0.25\n",
" 2024-11-05 10:00:00 | CLOSE_LONG | CZCE.MA501 | Vol: 1 | Price: 2486.00 | Comm: 0.25 | PnL: 10.00\n",
" 2024-11-06 14:00:00 | BUY | CZCE.MA501 | Vol: 1 | Price: 2477.00 | Comm: 0.25\n",
" 2024-11-06 22:00:00 | CLOSE_LONG | CZCE.MA501 | Vol: 1 | Price: 2466.00 | Comm: 0.25 | PnL: -11.00\n",
" 2024-11-08 22:00:00 | BUY | CZCE.MA501 | Vol: 1 | Price: 2489.00 | Comm: 0.25\n",
" 2024-11-11 10:00:00 | CLOSE_LONG | CZCE.MA501 | Vol: 1 | Price: 2473.00 | Comm: 0.25 | PnL: -16.00\n",
" 2024-11-15 14:00:00 | BUY | CZCE.MA501 | Vol: 1 | Price: 2485.00 | Comm: 0.25\n",
" 2024-11-18 10:00:00 | CLOSE_LONG | CZCE.MA501 | Vol: 1 | Price: 2520.00 | Comm: 0.25 | PnL: 35.00\n",
" 2024-12-02 21:00:00 | BUY | CZCE.MA501 | Vol: 1 | Price: 2540.00 | Comm: 0.25\n",
" 2024-12-03 22:00:00 | CLOSE_LONG | CZCE.MA501 | Vol: 1 | Price: 2551.00 | Comm: 0.26 | PnL: 11.00\n",
" 2024-12-04 11:00:00 | BUY | CZCE.MA501 | Vol: 1 | Price: 2523.00 | Comm: 0.25\n",
" 2024-12-05 09:00:00 | CLOSE_LONG | CZCE.MA501 | Vol: 1 | Price: 2512.00 | Comm: 0.25 | PnL: -11.00\n",
" 2024-12-19 10:00:00 | BUY | CZCE.MA505 | Vol: 1 | Price: 2597.00 | Comm: 0.26\n",
" 2024-12-19 21:00:00 | CLOSE_LONG | CZCE.MA505 | Vol: 1 | Price: 2613.00 | Comm: 0.26 | PnL: 16.00\n",
" 2024-12-24 10:00:00 | BUY | CZCE.MA505 | Vol: 1 | Price: 2631.00 | Comm: 0.26\n",
" 2024-12-24 14:00:00 | CLOSE_LONG | CZCE.MA505 | Vol: 1 | Price: 2645.00 | Comm: 0.26 | PnL: 14.00\n",
"正在计算绩效指标...\n",
2025-07-10 15:07:31 +08:00
"total_return: 0.0032182950000003707, annualized_return:0.000741765904585856, 252 / total_days:0.23076923076923078\n",
"绩效指标计算完成。\n",
"\n",
"--- 回测绩效报告 ---\n",
"初始资金 : 100000.00\n",
2025-07-10 15:07:31 +08:00
"最终资金 : 100321.83\n",
"总收益率 : 0.32%\n",
"年化收益率 : 0.07%\n",
"最大回撤 : 0.50%\n",
"夏普比率 : 0.10\n",
"卡玛比率 : 0.15\n",
"总交易次数 : 268\n",
"总实现盈亏 : 195.00\n",
"交易成本 : 68.17\n",
2025-06-23 22:21:59 +08:00
"\n",
"--- 交易详情 ---\n",
2025-07-10 15:07:31 +08:00
"盈利交易次数 : 73\n",
"亏损交易次数 : 61\n",
"胜率 : 54.48%\n",
"盈亏比 : 0.97\n",
"平均每次盈利 : 18.97\n",
"平均每次亏损 : -19.51\n",
"正在绘制绩效图表...\n"
]
},
{
"data": {
2025-07-10 15:07:31 +08:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAABWQAAAPdCAYAAAANmGE2AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3XeYE1XbBvA7yfals1QBBXQXXLroShNpigVpKhYEK1hQeVVELIjlE17sil0UUF4UpSugoKAgXUB6B+mwy7qwy/bNfH+Mk0z6TDJJZib377q4gGQyc5KcnJl55pnnWARBEEBEREREREREREREYWeNdgOIiIiIiIiIiIiIYgUDskREREREREREREQRwoAsERERERERERERUYQwIEtEREREREREREQUIQzIEhEREREREREREUUIA7JEREREREREREREEcKALBEREREREREREVGEMCBLREREREREREREFCEMyBIRERERERERERFFCAOyRERkWN27d0dGRobLnxYtWuDqq6/GyJEjsWHDhmg30cO+ffvw8MMPo0OHDmjevDkyMjLw/vvvB72+o0ePIiMjA927d/d4Tvp8jh49GkqTFfH2XXj7M3v27LC3xZ9nnnlGF+3Qo2A+m9mzZ3v9DWZlZeH666/Hk08+iW+//RYFBQVhbHn0+fsdmt0ff/yBMWPG4Nprr0W7du3QokULdO7cGffccw+mTJmC3NzcaDcxqqZOnYqMjAz89NNPfpf78ssvHb+hr776yu+ya9euRUZGBu666y6P56R1BGv//v0YP348+vXrh6ysLGRmZiIrKwuDBg3Cm2++if379we9bgrdhg0bkJGRgYkTJ0a7KUREFKK4aDeAiIgoVO3atcOFF14IADh37hy2bduGRYsWYfHixRg9ejTuueeesLdh9uzZGDNmDPr3748JEyZ4XaawsBDDhg3DsWPHHEELm82G5s2bh719kSL/Lrxp1KhRBFujnJLvj3xLSUnBtddeCwCw2+3Iz8/H0aNHsXDhQvzwww+YMGEC/vOf/+Cuu+6CxWKJcmtJC7m5uXjyySexatUqAMAFF1yArKwspKSkIDs7G5s2bcKqVavw7rvvYsqUKWjdunWUWxx5ubm5mDRpElq2bOn4ffjy/fffO/49a9Ysr8HWcCovL8fEiRPx1VdfwW63o1q1amjRogWqVauG/Px8bN++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
"text/plain": [
"<Figure size 1400x1000 with 2 Axes>"
2025-06-29 12:03:43 +08:00
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
2025-07-10 15:07:31 +08:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAABW0AAAKyCAYAAACuWPzHAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3XecE2X+B/DPTJLtjS2AdAR26U2kCIqCWE75CTa4o1hP9FTs4qmn2AA9UaTYEFEEDwtgBQuKCNLL0gSks/QtbG9JZn5/JDOZSSa7yW52N7v5vF+vOzMzzzzzJHkS4JvvfB9BlmUZRERERERERERERBQUxLoeABERERERERERERG5MGhLREREREREREREFEQYtCUiIiIiIiIiIiIKIgzaEhEREREREREREQURBm2JiIiIiIiIiIiIggiDtkRERERERERERERBhEFbIiIiIiIiIiIioiDCoC0RERERERERERFREGHQloiIiIiIiIiIiCiIMGhLREQh7cSJE0hLS0NaWhpOnDhRYdshQ4YgLS0NS5curZWxzZo1C2lpaZg1a1atXC/Q11Re2yFDhgRgZLVn/vz56pz45JNP6no4der06dN48803ceutt6J///7o0qUL+vTpg5EjR+Lll1/Gzp07Pc5RXruGYty4cepzUv7XtWtXDBo0CPfeey9+/fXXKvVbF5/vqpgyZQo6duyIXbt2eW1z6NAhTJ06FSNGjEC/fv3QpUsX9OvXD6NGjcL06dNx6NChWhwx1WdV+f4w+oympaWhR48euPbaa/HSSy/h1KlTNTTiwMjIyEDXrl3x0EMP1fVQiIgoiDBoS0RERKTx5Zdfqo+XLFlShyOpmqVLlyItLQ1PPfVUtfqZO3cuhg0bhnfffRcHDhxAx44dcc0116BPnz7Iy8vDJ598gltuuQWvvfZagEYe3Dp27IiRI0di5MiRGDJkCCIiIrBq1Srcd999ePnll+t6eDXi0KFDWLRoEa666ip069bN47jNZsOUKVNw/fXX46OPPsLp06fRtWtXXHPNNejRowdOnDiB999/H9dffz0WLlxYB8+gdtWXQHxlAvUdUtu0n9ERI0agT58+yMrKwsKFCzF8+HDDH5mCRcuWLXHrrbfihx9+wKZNm+p6OEREFCTMdT0AIiIiapiaNGmC5cuXw2Kx1PVQfJaeno6DBw8iLi4ONpsN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
"text/plain": [
"<Figure size 1400x700 with 1 Axes>"
2025-06-29 12:03:43 +08:00
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2025-06-23 23:49:43 +08:00
"图表绘制完成。\n",
2025-07-10 15:07:31 +08:00
"{'初始资金': 100000.0, '最终资金': np.float64(100321.82950000004), '总收益率': np.float64(0.0032182950000003707), '年化收益率': np.float64(0.000741765904585856), '最大回撤': np.float64(0.004971180776251698), '夏普比率': np.float64(0.1040337886744781), '卡玛比率': np.float64(0.1492132227678013), '总交易次数': 268, '交易成本': 68.1705, '总实现盈亏': 195.0, '胜率': 0.5447761194029851, '盈亏比': 0.9725451824565443, '盈利交易次数': 73, '亏损交易次数': 61, '平均每次盈利': 18.972602739726028, '平均每次亏损': -19.508196721311474, 'initial_capital': 100000.0, 'final_capital': np.float64(100321.82950000004), 'total_return': np.float64(0.0032182950000003707), 'annualized_return': np.float64(0.000741765904585856), 'max_drawdown': np.float64(0.004971180776251698), 'sharpe_ratio': np.float64(0.1040337886744781), 'calmar_ratio': np.float64(0.1492132227678013), 'total_trades': 268, 'transaction_costs': 68.1705, 'total_realized_pnl': 195.0, 'win_rate': 0.5447761194029851, 'profit_loss_ratio': 0.9725451824565443, 'winning_trades_count': 73, 'losing_trades_count': 61, 'avg_profit_per_trade': 18.972602739726028, 'avg_loss_per_trade': -19.508196721311474}\n"
]
}
],
"source": [
2025-06-29 12:03:43 +08:00
"from datetime import datetime\n",
"%load_ext autoreload\n",
"%autoreload 2\n",
"\n",
2025-06-29 12:03:43 +08:00
"from src.analysis.result_analyzer import ResultAnalyzer\n",
"# 导入所有必要的模块\n",
"from src.data_manager import DataManager\n",
"from src.backtest_engine import BacktestEngine\n",
"from src.strategies.SimpleLimitBuyStrategy import SimpleLimitBuyStrategy, SimpleLimitBuyStrategyLong, SimpleLimitBuyStrategyShort\n",
"from src.strategies.simple_limit_buy_strategy import TestStrategy\n",
2025-06-23 23:49:43 +08:00
"\n",
2025-06-29 12:03:43 +08:00
"\n",
"def main():\n",
" # --- 配置参数 ---\n",
" # 获取当前脚本所在目录,假设数据文件在项目根目录下的 data 文件夹内\n",
" # data_file_path = '/mnt/d/PyProject/NewQuant/data/data/SHFE_rb2510/SHFE_rb2510_min60.csv'\n",
2025-07-10 15:07:31 +08:00
" data_file_path = \"/mnt/d/PyProject/NewQuant/data/data/KQ_m@CZCE_MA/KQ_m@CZCE_MA_min60.csv\"\n",
2025-06-29 12:03:43 +08:00
"\n",
" initial_capital = 100000.0\n",
" slippage_rate = 0.000 # 假设每笔交易0.1%的滑点\n",
" commission_rate = 0.0001 # 假设每笔交易0.02%的佣金\n",
"\n",
" global_config = {\n",
2025-07-10 15:07:31 +08:00
" 'symbol': 'KQ_m@CZCE_MA',\n",
2025-06-29 12:03:43 +08:00
" }\n",
"\n",
" strategy_parameters = {\n",
" # 'symbol': \"SHFE_rb2501\", # 根据您的数据文件中的品种名称调整\n",
" 'trade_volume': 1,\n",
2025-07-10 15:07:31 +08:00
" 'open_range_factor_1_ago': 1.6, # 示例值,需要通过网格搜索优化\n",
" 'open_range_factor_7_ago': 0.2, # 示例值\n",
2025-07-01 10:14:28 +08:00
" # 'open_range_factor_1_ago': 0.4, # 示例值,需要通过网格搜索优化\n",
" # 'open_range_factor_7_ago': 1.4, # 示例值\n",
" # 'open_range_factor_1_long': 1.4, # 示例值,需要通过网格搜索优化\n",
" # 'open_range_factor_7_long': 0.7, # 示例值\n",
" # 'open_range_factor_1_short': 0.4, # 示例值,需要通过网格搜索优化\n",
" # 'open_range_factor_7_short': 1.4, # 示例值\n",
2025-06-29 12:03:43 +08:00
" 'max_position': 10,\n",
2025-07-10 15:07:31 +08:00
" 'enable_log': False\n",
2025-06-29 12:03:43 +08:00
" }\n",
2025-07-01 10:14:28 +08:00
" start_time = datetime(2022, 1, 1)\n",
2025-07-10 15:07:31 +08:00
" end_time = datetime(2025, 1, 1)\n",
2025-06-29 12:03:43 +08:00
"\n",
"\n",
" # --- 1. 初始化数据管理器 ---\n",
" print(\"初始化数据管理器...\")\n",
" data_manager = DataManager(file_path=data_file_path, symbol=global_config['symbol'], start_time=start_time, end_time=end_time)\n",
" # 确保 DataManager 能够重置以进行多次回测\n",
" # data_manager.reset() # 首次运行不需要重置\n",
"\n",
" # --- 2. 初始化回测引擎并运行 ---\n",
" print(\"\\n初始化回测引擎...\")\n",
" engine = BacktestEngine(\n",
" data_manager=data_manager,\n",
2025-07-01 10:14:28 +08:00
" strategy_class=SimpleLimitBuyStrategyLong,\n",
2025-06-29 12:03:43 +08:00
" # current_segment_symbol=strategy_parameters['symbol'],\n",
" strategy_params=strategy_parameters,\n",
" initial_capital=initial_capital,\n",
" slippage_rate=slippage_rate,\n",
" commission_rate=commission_rate,\n",
" roll_over_mode=True,\n",
" start_time=start_time,\n",
" end_time=end_time\n",
" )\n",
"\n",
" print(\"\\n开始运行回测...\")\n",
" engine.run_backtest()\n",
" print(\"\\n回测运行完毕。\")\n",
"\n",
" # --- 3. 获取回测结果 ---\n",
" results = engine.get_backtest_results()\n",
" portfolio_snapshots = results[\"portfolio_snapshots\"]\n",
" trade_history = results[\"trade_history\"]\n",
" initial_capital_result = results[\"initial_capital\"]\n",
" bars = results[\"all_bars\"]\n",
"\n",
" # --- 4. 结果分析与可视化 ---\n",
" if portfolio_snapshots:\n",
" analyzer = ResultAnalyzer(portfolio_snapshots, trade_history, bars, initial_capital_result)\n",
"\n",
" analyzer.generate_report()\n",
" analyzer.plot_performance()\n",
" metrics = analyzer.calculate_all_metrics()\n",
" print(metrics)\n",
" else:\n",
" print(\"\\n没有生成投资组合快照无法进行结果分析。\")\n",
"\n",
" # --- 4. 结果分析与可视化 (待实现) ---\n",
" # if portfolio_snapshots:\n",
" # analyzer = ResultAnalyzer(portfolio_snapshots, trade_history, initial_capital_result)\n",
" # metrics = analyzer.calculate_all_metrics()\n",
" # print(\"\\n--- 绩效指标 ---\")\n",
" # for key, value in metrics.items():\n",
" # print(f\" {key}: {value:.4f}\")\n",
" #\n",
" # print(\"\\n--- 绘制绩效图表 ---\")\n",
" # analyzer.plot_performance()\n",
" # else:\n",
" # print(\"\\n没有生成投资组合快照无法进行结果分析。\")\n",
"\n",
"\n",
"if __name__ == '__main__':\n",
" main()\n"
]
2025-06-18 10:25:05 +08:00
}
],
"metadata": {
"kernelspec": {
"display_name": "quant",
"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.12.11"
}
},
"nbformat": 4,
"nbformat_minor": 5
}