Files
NewQuant/futures_trading_strategies/SA/TrendlineBreakoutStrategy/TrendlineHawkesStrategy.ipynb

460 lines
262 KiB
Plaintext
Raw Normal View History

2025-10-05 00:09:59 +08:00
{
"cells": [
{
"cell_type": "code",
"id": "522f09ca7b3fe929",
"metadata": {
"ExecuteTime": {
"end_time": "2025-09-28T12:13:24.473280Z",
"start_time": "2025-09-28T12:13:24.457367Z"
}
},
"source": [
"from datetime import datetime\n",
"\n",
"from src.data_processing import load_raw_data\n",
"%load_ext autoreload\n",
"%autoreload 2\n",
"\n",
"import sys\n",
"\n",
"if '/mnt/d/PyProject/NewQuant/' not in sys.path:\n",
" sys.path.append('/mnt/d/PyProject/NewQuant/')"
],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The autoreload extension is already loaded. To reload it, use:\n",
" %reload_ext autoreload\n"
]
}
],
"execution_count": 37
},
{
"cell_type": "code",
"id": "4f7e4b438cea750e",
"metadata": {
"ExecuteTime": {
"end_time": "2025-09-28T12:13:24.494014Z",
"start_time": "2025-09-28T12:13:24.478826Z"
}
},
"source": [
"from turtle import down\n",
"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.indicators.indicator_list import INDICATOR_LIST\n",
"from src.indicators.indicators import *\n",
"\n",
"# 导入您自己的 SMC 策略\n",
"from src.strategies.TrendlineBreakoutStrategy.TrendlineHawkesStrategyFast import TrendlineHawkesStrategy\n",
"\n",
"# --- 配置参数 ---\n",
"# 获取当前脚本所在目录,假设数据文件在项目根目录下的 data 文件夹内\n",
"data_file_path = '/mnt/d/PyProject/NewQuant/data/data/KQ_m@CZCE_SA/KQ_m@CZCE_SA_min15.csv'\n"
],
"outputs": [],
"execution_count": 38
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-09-28T12:13:24.511277Z",
"start_time": "2025-09-28T12:13:24.498458Z"
}
},
"cell_type": "code",
"source": [
"\n",
"initial_capital = 100000.0\n",
"slippage_rate = 0.000 # 假设每笔交易0.1%的滑点\n",
"commission_rate = 0.0000 # 假设每笔交易0.02%的佣金\n",
"\n",
"global_config = {\n",
" 'symbol': 'KQ_m@CZCE_SA', # 确保与数据文件中的 symbol 匹配\n",
"}\n",
"\n",
"# 回测时间范围\n",
"start_time = datetime(2021, 1, 1)\n",
"end_time = datetime(2024, 6, 1)\n",
"\n",
"start_time = datetime(2024, 1, 1)\n",
"end_time = datetime(2025, 8, 1)\n",
"\n",
"\n",
"indicators = INDICATOR_LIST\n",
"indicators = []\n",
"\n",
"# 确保 DataManager 能够重置以进行多次回测\n",
"# data_manager.reset() # 首次运行不需要重置"
],
"id": "9ee53c41eaaefabb",
"outputs": [],
"execution_count": 39
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-09-28T12:13:36.932569Z",
"start_time": "2025-09-28T12:13:24.518257Z"
}
},
"cell_type": "code",
"source": [
"from src.indicators.indicators import ROC_MA\n",
"\n",
"# --- 1. 初始化数据管理器 ---\n",
"print(\"初始化数据管理器...\")\n",
"data_manager = DataManager(file_path=data_file_path, symbol=global_config['symbol'], start_time=start_time,\n",
" end_time=end_time)\n",
"\n",
"strategy_parameters = {\n",
" 'main_symbol': 'SA', # <-- 替换为你的交易品种代码,例如 'GC=F' (黄金期货), 'ZC=F' (玉米期货)\n",
" 'trade_volume': 1,\n",
" 'trendline_n': 60,\n",
" 'hawkes_kappa': 0.1,\n",
" 'order_direction': ['SELL', 'BUY'],\n",
" 'reverse_logic': False,\n",
" # 'indicators': [ADX(240, 2.5, 10), PriceRangeToVolatilityRatio(7, 5, 3.2, 5)],\n",
" 'enable_log': False\n",
"}\n",
"\n",
"\n",
"\n",
"# --- 2. 初始化回测引擎并运行 ---\n",
"print(\"\\n初始化回测引擎...\")\n",
"engine = BacktestEngine(\n",
" data_manager=data_manager,\n",
" strategy_class=TrendlineHawkesStrategy, # <--- 更改为您的 SMC 策略类\n",
" # current_segment_symbol 参数已从 SMCPureH1LongStrategy 中移除,不需要设置\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",
" indicators=indicators # 如果您的 SMC 策略不使用这些指标,也可以考虑移除\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, INDICATOR_LIST)\n",
"\n",
" analyzer.generate_report()\n",
" analyzer.plot_performance()\n",
" metrics = analyzer.calculate_all_metrics()\n",
" print(metrics)\n",
"\n",
" analyzer.analyze_indicators()\n",
"else:\n",
" print(\"\\n没有生成投资组合快照无法进行结果分析。\")"
],
"id": "f903fd2761d446cd",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"初始化数据管理器...\n",
"数据加载成功: /mnt/d/PyProject/NewQuant/data/data/KQ_m@CZCE_SA/KQ_m@CZCE_SA_min15.csv\n",
"数据范围从 2020-12-31 14:45:00 到 2025-08-26 13:45:00\n",
"总计 25662 条记录。\n",
"\n",
"初始化回测引擎...\n",
"模拟器初始化:初始资金=100000.00, 滑点率=0.0, 佣金率=0.0\n",
"\n",
"--- 回测引擎初始化完成 ---\n",
" 策略: TrendlineHawkesStrategy\n",
" 初始资金: 100000.00\n",
" 换月模式: 启用\n",
"\n",
"开始运行回测...\n",
"\n",
"--- 回测开始 ---\n",
"TrendlineHawkesStrategy 策略初始化回调被调用。\n",
"开始将 DataFrame 转换为 Bar 对象流...\n",
"首次运行,正在初始化霍克斯状态和滚动窗口...\n",
"状态初始化完成。\n",
"Bar 对象流生成完毕。\n",
"\n",
"--- 回测结束,检查并平仓所有剩余持仓 ---\n",
"--- 回测结束 ---\n",
"总计处理了 8698 根K线。\n",
"总计发生了 114 笔交易。\n",
"最终总净值: 100250.00\n",
"总收益率: 0.25%\n",
"\n",
"回测运行完毕。\n",
"\n",
"--- 结果分析器初始化完成 ---\n",
"\n",
"--- 交易明细 ---\n",
" 2024-01-16 21:15:00 | BUY | CZCE.SA405 | Vol: 1 | Price: 1948.00 | Comm: 0.00\n",
" 2024-01-17 14:00:00 | CLOSE_LONG | CZCE.SA405 | Vol: 1 | Price: 1900.00 | Comm: 0.00 | PnL: -48.00\n",
" 2024-01-22 09:00:00 | BUY | CZCE.SA405 | Vol: 1 | Price: 1965.00 | Comm: 0.00\n",
" 2024-01-23 13:30:00 | CLOSE_LONG | CZCE.SA405 | Vol: 1 | Price: 2135.00 | Comm: 0.00 | PnL: 170.00\n",
" 2024-02-19 09:15:00 | SELL | CZCE.SA405 | Vol: 1 | Price: 1866.00 | Comm: 0.00\n",
" 2024-02-19 14:45:00 | CLOSE_SHORT | CZCE.SA405 | Vol: 1 | Price: 1846.00 | Comm: 0.00 | PnL: 20.00\n",
" 2024-02-26 09:15:00 | SELL | CZCE.SA405 | Vol: 1 | Price: 1792.00 | Comm: 0.00\n",
" 2024-02-27 09:45:00 | CLOSE_SHORT | CZCE.SA405 | Vol: 1 | Price: 1778.00 | Comm: 0.00 | PnL: 14.00\n",
" 2024-03-04 22:30:00 | BUY | CZCE.SA405 | Vol: 1 | Price: 1851.00 | Comm: 0.00\n",
" 2024-03-06 10:45:00 | CLOSE_LONG | CZCE.SA405 | Vol: 1 | Price: 1867.00 | Comm: 0.00 | PnL: 16.00\n",
" 2024-03-13 21:30:00 | SELL | CZCE.SA405 | Vol: 1 | Price: 1849.00 | Comm: 0.00\n",
" 2024-03-14 10:45:00 | CLOSE_SHORT | CZCE.SA405 | Vol: 1 | Price: 1835.00 | Comm: 0.00 | PnL: 14.00\n",
" 2024-03-25 21:45:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 1770.00 | Comm: 0.00\n",
" 2024-03-26 10:00:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 1786.00 | Comm: 0.00 | PnL: -16.00\n",
" 2024-03-29 21:00:00 | BUY | CZCE.SA409 | Vol: 1 | Price: 1784.00 | Comm: 0.00\n",
" 2024-04-01 22:15:00 | CLOSE_LONG | CZCE.SA409 | Vol: 1 | Price: 1784.00 | Comm: 0.00 | PnL: 0.00\n",
" 2024-04-10 22:00:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 1930.00 | Comm: 0.00\n",
" 2024-04-11 10:30:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 1932.00 | Comm: 0.00 | PnL: -2.00\n",
" 2024-04-17 21:00:00 | BUY | CZCE.SA409 | Vol: 1 | Price: 1938.00 | Comm: 0.00\n",
" 2024-04-19 09:00:00 | CLOSE_LONG | CZCE.SA409 | Vol: 1 | Price: 2072.00 | Comm: 0.00 | PnL: 134.00\n",
" 2024-04-25 09:00:00 | BUY | CZCE.SA409 | Vol: 1 | Price: 2226.00 | Comm: 0.00\n",
" 2024-04-26 10:45:00 | CLOSE_LONG | CZCE.SA409 | Vol: 1 | Price: 2264.00 | Comm: 0.00 | PnL: 38.00\n",
" 2024-05-14 14:45:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 2136.00 | Comm: 0.00\n",
" 2024-05-15 10:30:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 2127.00 | Comm: 0.00 | PnL: 9.00\n",
" 2024-05-23 09:15:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 2368.00 | Comm: 0.00\n",
" 2024-05-23 11:00:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 2377.00 | Comm: 0.00 | PnL: -9.00\n",
" 2024-05-29 21:30:00 | BUY | CZCE.SA409 | Vol: 1 | Price: 2438.00 | Comm: 0.00\n",
" 2024-05-29 22:45:00 | CLOSE_LONG | CZCE.SA409 | Vol: 1 | Price: 2426.00 | Comm: 0.00 | PnL: -12.00\n",
" 2024-06-04 21:15:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 2185.00 | Comm: 0.00\n",
" 2024-06-05 10:00:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 2222.00 | Comm: 0.00 | PnL: -37.00\n",
" 2024-06-24 09:15:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 2063.00 | Comm: 0.00\n",
" 2024-06-24 10:45:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 2064.00 | Comm: 0.00 | PnL: -1.00\n",
" 2024-07-05 09:00:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 2159.00 | Comm: 0.00\n",
" 2024-07-05 14:30:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 2128.00 | Comm: 0.00 | PnL: 31.00\n",
" 2024-07-10 13:30:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 1972.00 | Comm: 0.00\n",
" 2024-07-10 22:45:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 1956.00 | Comm: 0.00 | PnL: 16.00\n",
" 2024-07-15 09:00:00 | BUY | CZCE.SA409 | Vol: 1 | Price: 1977.00 | Comm: 0.00\n",
" 2024-07-16 09:15:00 | CLOSE_LONG | CZCE.SA409 | Vol: 1 | Price: 1937.00 | Comm: 0.00 | PnL: -40.00\n",
" 2024-07-18 21:30:00 | BUY | CZCE.SA409 | Vol: 1 | Price: 1964.00 | Comm: 0.00\n",
" 2024-07-19 10:30:00 | CLOSE_LONG | CZCE.SA409 | Vol: 1 | Price: 1947.00 | Comm: 0.00 | PnL: -17.00\n",
" 2024-08-22 22:15:00 | SELL | CZCE.SA501 | Vol: 1 | Price: 1544.00 | Comm: 0.00\n",
" 2024-08-23 14:15:00 | CLOSE_SHORT | CZCE.SA501 | Vol: 1 | Price: 1560.00 | Comm: 0.00 | PnL: -16.00\n",
" 2024-08-27 21:15:00 | BUY | CZCE.SA501 | Vol: 1 | Price: 1625.00 | Comm: 0.00\n",
" 2024-08-28 10:00:00 | CLOSE_LONG | CZCE.SA501 | Vol: 1 | Price: 1607.00 | Comm: 0.00 | PnL: -18.00\n",
" 2024-08-30 21:15:00 | SELL | CZCE.SA501 | Vol: 1 | Price: 1582.00 | Comm: 0.00\n",
" 2024-09-02 13:45:00 | CLOSE_SHORT | CZCE.SA501 | Vol: 1 | Price: 1526.00 | Comm: 0.00 | PnL: 56.00\n",
" 2024-09-05 09:15:00 | SELL | CZCE.SA501 | Vol: 1 | Price: 1464.00 | Comm: 0.00\n",
" 2024-09-05 14:45:00 | CLOSE_SHORT | CZCE.SA501 | Vol: 1 | Price: 1434.00 | Comm: 0.00 | PnL: 30.00\n",
" 2024-09-19 10:30:00 | BUY | CZCE.SA501 | Vol: 1 | Price: 1378.00 | Comm: 0.00\n",
" 2024-09-19 21:00:00 | CLOSE_LONG | CZCE.SA501 | Vol: 1 | Price: 1375.00 | Comm: 0.00 | PnL: -3.00\n",
" 2024-09-24 14:30:00 | BUY | CZCE.SA501 | Vol: 1 | Price: 1416.00 | Comm: 0.00\n",
" 2024-09-26 10:30:00 | CLOSE_LONG | CZCE.SA501 | Vol: 1 | Price: 1494.00 | Comm: 0.00 | PnL: 78.00\n",
" 2024-09-26 21:15:00 | BUY | CZCE.SA501 | Vol: 1 | Price: 1530.00 | Comm: 0.00\n",
" 2024-09-27 10:45:00 | CLOSE_LONG | CZCE.SA501 | Vol: 1 | Price: 1576.00 | Comm: 0.00 | PnL: 46.00\n",
" 2024-10-08 11:00:00 | SELL | CZCE.SA501 | Vol: 1 | Price: 1578.00 | Comm: 0.00\n",
" 2024-10-08 22:30:00 | CLOSE_SHORT | CZCE.SA501 | Vol: 1 | Price: 1491.00 | Comm: 0.00 | PnL: 87.00\n",
" 2024-10-11 22:30:00 | BUY | CZCE.SA501 | Vol: 1 | Price: 1578.00 | Comm: 0.00\n",
" 2024-10-15 09:45:00 | CLOSE_LONG | CZCE.SA501 | Vol: 1 | Price: 1537.00 | Comm: 0.00 | PnL: -41.00\n",
" 2024-11-11 10:00:00 | SELL | CZCE.SA501 | Vol: 1 | Price: 1461.00 | Comm: 0.00\n",
" 2024-11-11 13:45:00 | CLOSE_SHORT | CZCE.SA501 | Vol: 1 | Price: 1469.00 | Comm: 0.00 | PnL: -8.00\n",
" 2024-11-15 21:00:00 | SELL | CZCE.SA501 | Vol: 1 | Price: 1469.00 | Comm: 0.00\n",
" 2024-11-15 22:30:00 | CLOSE_SHORT | CZCE.SA501 | Vol: 1 | Price: 1472.00 | Comm: 0.00 | PnL: -3.00\n",
" 2024-11-22 22:15:00 | BUY | CZCE.SA501 | Vol: 1 | Price: 1521.00 | Comm: 0.00\n",
" 2024-11-25 13:45:00 | CLOSE_LONG | CZCE.SA501 | Vol: 1 | Price: 1505.00 | Comm: 0.00 | PnL: -16.00\n",
" 2024-11-28 22:30:00 | SELL | CZCE.SA501 | Vol: 1 | Price: 1465.00 | Comm: 0.00\n",
" 2024-11-29 10:30:00 | CLOSE_SHORT | CZCE.SA501 | Vol: 1 | Price: 1483.00 | Comm: 0.00 | PnL: -18.00\n",
" 2024-12-04 14:15:00 | SELL | CZCE.SA501 | Vol: 1 | Price: 1424.00 | Comm: 0.00\n",
" 2024-12-04 22:30:00 | CLOSE_SHORT | CZCE.SA501 | Vol: 1 | Price: 1423.00 | Comm: 0.00 | PnL: 1.00\n",
" 2024-12-19 21:30:00 | BUY | CZCE.SA505 | Vol: 1 | Price: 1465.00 | Comm: 0.00\n",
" 2024-12-20 10:30:00 | CLOSE_LONG | CZCE.SA505 | Vol: 1 | Price: 1468.00 | Comm: 0.00 | PnL: 3.00\n",
" 2025-01-03 22:45:00 | BUY | CZCE.SA505 | Vol: 1 | Price: 1420.00 | Comm: 0.00\n",
" 2025-01-06 13:30:00 | CLOSE_LONG | CZCE.SA505 | Vol: 1 | Price: 1419.00 | Comm: 0.00 | PnL: -1.00\n",
" 2025-01-13 09:00:00 | BUY | CZCE.SA505 | Vol: 1 | Price: 1432.00 | Comm: 0.00\n",
" 2025-01-13 14:15:00 | CLOSE_LONG | CZCE.SA505 | Vol: 1 | Price: 1421.00 | Comm: 0.00 | PnL: -11.00\n",
" 2025-02-17 09:15:00 | BUY | CZCE.SA505 | Vol: 1 | Price: 1498.00 | Comm: 0.00\n",
" 2025-02-18 10:00:00 | CLOSE_LONG | CZCE.SA505 | Vol: 1 | Price: 1506.00 | Comm: 0.00 | PnL: 8.00\n",
" 2025-02-27 21:00:00 | BUY | CZCE.SA505 | Vol: 1 | Price: 1568.00 | Comm: 0.00\n",
" 2025-02-28 14:30:00 | CLOSE_LONG | CZCE.SA505 | Vol: 1 | Price: 1566.00 | Comm: 0.00 | PnL: -2.00\n",
" 2025-03-13 14:00:00 | BUY | CZCE.SA505 | Vol: 1 | Price: 1436.00 | Comm: 0.00\n",
" 2025-03-14 10:30:00 | CLOSE_LONG | CZCE.SA505 | Vol: 1 | Price: 1440.00 | Comm: 0.00 | PnL: 4.00\n",
" 2025-03-24 09:45:00 | BUY | CZCE.SA505 | Vol: 1 | Price: 1436.00 | Comm: 0.00\n",
" 2025-03-24 22:15:00 | CLOSE_LONG | CZCE.SA505 | Vol: 1 | Price: 1445.00 | Comm: 0.00 | PnL: 9.00\n",
" 2025-04-07 09:15:00 | SELL | CZCE.SA505 | Vol: 1 | Price: 1366.00 | Comm: 0.00\n",
" 2025-04-07 22:45:00 | CLOSE_SHORT | CZCE.SA505 | Vol: 1 | Price: 1367.00 | Comm: 0.00 | PnL: -1.00\n",
" 2025-04-15 21:15:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1361.00 | Comm: 0.00\n",
" 2025-04-16 14:45:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1353.00 | Comm: 0.00 | PnL: -8.00\n",
" 2025-04-18 09:15:00 | SELL | CZCE.SA509 | Vol: 1 | Price: 1339.00 | Comm: 0.00\n",
" 2025-04-21 13:30:00 | CLOSE_SHORT | CZCE.SA509 | Vol: 1 | Price: 1342.00 | Comm: 0.00 | PnL: -3.00\n",
" 2025-04-22 22:15:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1348.00 | Comm: 0.00\n",
" 2025-04-23 22:30:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1369.00 | Comm: 0.00 | PnL: 21.00\n",
" 2025-04-28 09:15:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1381.00 | Comm: 0.00\n",
" 2025-04-28 13:30:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1379.00 | Comm: 0.00 | PnL: -2.00\n",
" 2025-05-12 21:15:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1335.00 | Comm: 0.00\n",
" 2025-05-13 11:15:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1297.00 | Comm: 0.00 | PnL: -38.00\n",
" 2025-05-14 14:45:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1348.00 | Comm: 0.00\n",
" 2025-05-15 14:00:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1335.00 | Comm: 0.00 | PnL: -13.00\n",
" 2025-05-19 09:15:00 | SELL | CZCE.SA509 | Vol: 1 | Price: 1278.00 | Comm: 0.00\n",
" 2025-05-19 11:00:00 | CLOSE_SHORT | CZCE.SA509 | Vol: 1 | Price: 1277.00 | Comm: 0.00 | PnL: 1.00\n",
" 2025-05-23 21:00:00 | SELL | CZCE.SA509 | Vol: 1 | Price: 1251.00 | Comm: 0.00\n",
" 2025-05-26 11:15:00 | CLOSE_SHORT | CZCE.SA509 | Vol: 1 | Price: 1259.00 | Comm: 0.00 | PnL: -8.00\n",
" 2025-06-04 14:45:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1225.00 | Comm: 0.00\n",
" 2025-06-05 09:45:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1206.00 | Comm: 0.00 | PnL: -19.00\n",
" 2025-06-12 21:45:00 | SELL | CZCE.SA509 | Vol: 1 | Price: 1158.00 | Comm: 0.00\n",
" 2025-06-13 22:00:00 | CLOSE_SHORT | CZCE.SA509 | Vol: 1 | Price: 1155.00 | Comm: 0.00 | PnL: 3.00\n",
" 2025-06-24 21:15:00 | SELL | CZCE.SA509 | Vol: 1 | Price: 1154.00 | Comm: 0.00\n",
" 2025-06-25 13:30:00 | CLOSE_SHORT | CZCE.SA509 | Vol: 1 | Price: 1161.00 | Comm: 0.00 | PnL: -7.00\n",
" 2025-07-02 13:45:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1200.00 | Comm: 0.00\n",
" 2025-07-03 13:45:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1186.00 | Comm: 0.00 | PnL: -14.00\n",
" 2025-07-09 21:15:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1200.00 | Comm: 0.00\n",
" 2025-07-11 14:00:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1223.00 | Comm: 0.00 | PnL: 23.00\n",
" 2025-07-18 11:00:00 | SELL | CZCE.SA509 | Vol: 1 | Price: 1220.00 | Comm: 0.00\n",
" 2025-07-21 22:15:00 | CLOSE_SHORT | CZCE.SA509 | Vol: 1 | Price: 1303.00 | Comm: 0.00 | PnL: -83.00\n",
" 2025-07-22 21:30:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1383.00 | Comm: 0.00\n",
" 2025-07-23 14:15:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1316.00 | Comm: 0.00 | PnL: -67.00\n",
"正在计算绩效指标...\n",
"total_return: 0.0024999999999999467, annualized_return:0.0010929819567884191, 252 / total_days:0.4375\n",
"绩效指标计算完成。\n",
"\n",
"--- 回测绩效报告 ---\n",
"初始资金 : 100000.00\n",
"最终资金 : 100250.00\n",
"总收益率 : 0.25%\n",
"年化收益率 : 0.11%\n",
"最大回撤 : 0.30%\n",
"夏普比率 : 0.16\n",
"卡玛比率 : 0.37\n",
"总交易次数 : 114\n",
"总实现盈亏 : 250.00\n",
"交易成本 : 0.00\n",
"\n",
"--- 交易详情 ---\n",
"盈利交易次数 : 24\n",
"亏损交易次数 : 32\n",
"胜率 : 42.86%\n",
"盈亏比 : 1.91\n",
"平均每次盈利 : 34.67\n",
"平均每次亏损 : -18.19\n",
"正在绘制绩效图表...\n"
]
},
{
"data": {
"text/plain": [
"<Figure size 1400x1000 with 2 Axes>"
],
"image/png": "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GKD27dt77La9dOlSPfbYYxoyZIgyMzPVvn17nXnmmbr99tu1du3aMtc5ffp0ZWRk6PHHHy9z3nXXXaeMjAz17NlTdrvd47xPPvlEGRkZXit5Fy1apJEjR6pz587q2rWrLr/8ci1cuLDS279161ZNmDDBeb+ffvrpGj16tObNmxfUcbv3GrVarXrzzTd1/vnnq2PHjsrMzNQtt9xS5Z6gO3bs0Oeffy5JmjBhgurWrVvh8mlpaR6BbGW9it3nQ3mne5snS5YsUUZGhs4999xyx1JcXKyePXsqIyNDGzdu9DivoKBAb7/9ti655BJ169bN2Wbgqaee0uHDhyu8jeXdjry8PA0ZMkRmc/kfufLy8pzz4J///KeGDx8uSfr8889VWFhY5eutKrvdrtdff12SdOmll1baWiI+Pl6dO3cuc/ratWt12223qVevXmrfvr26d++uG264QT/88IPX9bjPgx07dujuu+9Wz5491b59ew0YMEDPP/+8ioqKPC5T2Wu1obL3bKn6r7+SYx59/PHHuuqqqzxei6666iqP/r8ZGRnOCtZXXnnFY7zu83v//v16/PHHdc4556hDhw469dRT1adPH40ePVpTp071OoahQ4fKZrNp5syZ5Y4TABDZaFkAAKixjAMJJSQkOE974YUX9Nprr8lkMqlz585q2rSptm7dqvnz5+urr77So48+qn/+859e1/fFF1/ogw8+UKtWrdSjRw8dPXpUCQkJOuecc7RmzRr9/PPPatGihbp27eq8TKtWrZSWlqahQ4fqzz//9LqMYceOHRo9erR27dqlevXqqU+fPrJarVqxYoWeeeYZzZ8/X++8847q1Knj1/1y5MgRXXXVVdqwYYNSU1N1xhlnKD4+Xj/++KNef/11ff7555o2bZqaNWvm1/X4YtWqVbruuuuUl5en5s2bq2fPnjp8+LCef/55/fLLL0G/fkmVPn5ms1kjR47U5MmT9d5773kNI3JycjR37lyZzWZdfvnlPl3vxo0b9eCDD6pevXpq2bKl2rVr5+yB/Prrr2v+/Pn68MMPdfzxx3u9/KxZs/Taa6/plFNOUe/evbVr1y6tWbNG48ePdz7G7rKysnTFFVdo+/btqlOnjvr27SubzabPPvtMS5Ys0T/+8Q/f77RquPDCC/Xrr79qxYoVKi4uVlyc52bo4cOHNXz4cGVnZ6tr165q166dR3X3Qw89pD179ujkk09Wly5dFBcXp23btmn+/PlasGCBnnvuOY8+nT169JAkZ49Tg9VqdVbpZmVladOmTWrTpo3zfGN54/KGd999V5MmTZIkdezYUS1atND27dt18803V9inevHixbr11ltVWFioli1b6uyzz9bBgwe1cuVKLV++XN9//72efPLJoI3buOz111+v1atXq1u3bmrdurXWrl2rBQsWaMWKFZozZ47Pz/dFixappKRExx13XFgOYlbePOnZs6caN26sbdu2ac2aNerUqVOZy3733XfKyspSu3btPO67ffv26dprr9XmzZtVt25ddejQQbVq1dJvv/2mqVOn6osvvtCMGTN0wgkn+DxOI6j39ni4mzdvnnJzc50HxJMce1Fs375dX331lQYPHuzzdVbHpk2btGPHDkmOkK86PvroIz300EOy2Ww65ZRTlJmZqV27dmnRokVatGiRxo0
},
"metadata": {},
"output_type": "display_data",
"jetTransient": {
"display_id": null
}
},
{
"data": {
"text/plain": [
"<Figure size 1400x700 with 1 Axes>"
],
"image/png": "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vXs7nbNx40YsWLAAu3btQl5eHmJiYtCzZ0+MGzcOPXr08Hq8ldFqtejQoQMyMzPlnzvg3Xtt1qxZ+PDDDzFp0iSXmazHjx/HV199hY0bN+L8+fPQarVo1KgR+vTpg3vuuQepqamq/r7ME28sWLAAkiRh+PDhTsckScKnn34KALj77rvRrVs3j9fS6/Uuf+579uzB3LlzsX37dvn31K1bN4wZMwYDBgxw6v/8889jyZIlmDZtGnr37o2ZM2diw4YNyM/PR6NGjXDzzTfj0UcfdfklA2D9zJw/fz62bt2KrKwsREREoFGjRhgwYABGjx6Npk2byn3/+OMPrF27Frt378aFCxdgNBqRkpKCvn374qGHHsJll12murayDuuHH36IDz/8UN4fPnw4pk+fLu+bzWYsWbIEv/zyCw4fPoySkhI0aNAAV155JSZMmIDGjRurrr1582aMHTsWffr0wRdffIH09HT8/PPPyMzMREREBHr37o0nn3wSbdq0cXrNGzZswMqVK7Ft2zacP38excXFSExMRM+ePfHAAw+ga9euqv6+fob8/vvv+OGHH7B//34UFRUhISEBffv2xYQJE9C2bVuXv4edO3fio48+wq5du2CxWNC6dWvcc889uOOOO1z2r67k5GR522w2q45dunQJv/32G9atW4ejR48iOzsbOp0OrVq1wg033IB7773X5We/8u+wRYsW4fvvv0dGRgaKioqwcuVKNGvWrEqf97fffjtWrlyJBQsWuPxsIyKi+oVBWyIiIj9Zv3490tPT0aJFCwwYMABZWVnYvn073n77bZw7dw4vvfSSqn9paSnuu+8+7Nq1C5GRkRg4cCDCw8Oxfv16rFmzBldffbXbe3311VeYPn06RFFEhw4d0LVrV2RnZ2Pz5s1Yv349HnvsMUyaNMnluenp6fj666/RuXNnXHnllbh48aJThpzSP//5T3z22Wf49ddf8a9//QuxsbFOfRYsWAAAGDlyJHQ67//zYubMmfj444/Ro0cPDBo0CMeOHcPOnTsxfvx4zJo1yylomJGRgdGjRyM3NxcNGjTAkCFDUFpaivT0dGzatAmiKHp974qWLl2K4uJieaEpAGjVqhVOnDiBP/74A7feeqvTOR9++CFmzZoFnU6HHj16oGHDhigsLMS5c+fw448/om3btnLQtrS0FPfccw/+/vtvJCYmol+/foiMjERWVhaOHz+Ojz/+GPfff7/qH/EZGRkYN24czp07h5SUFFx++eXQ6XTYu3cv/vOf/+CPP/7A/PnzERMTAwC4/vrrsWvXLuzYsQMtWrTA5ZdfLl+rYpDJlYKCAmzbtg0AXAbrqiMzMxP33nsvzpw5g8TERAwaNAgmkwmbN2/Gu+++i2XLliE9PR1xcXHyOUuWLMELL7wAAOjatSv69u0Lo9GICxcuYOnSpUhISHAKbLz99tv44osvoNFo0LlzZ1x++eU4d+4cVq5cidWrV+ONN97AiBEj/Pa6ioqKAMBloNDX95rdr7/+ihdffBHl5eVo0qQJBg0aBFEUkZmZiYULFyIpKUkVtPV1nnhj5cqVAIArrrjC6djhw4eRmZkJoOrz5Pvvv8err74KURTRsWNH9O3bF2fOnMHq1auxevVqj59hBw8exFtvvYW4uDj07t0b+fn52LFjBz799FNkZGTgo48
},
"metadata": {},
"output_type": "display_data",
"jetTransient": {
"display_id": null
}
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"图表绘制完成。\n",
"{'初始资金': 100000.0, '最终资金': np.float64(100250.0), '总收益率': np.float64(0.0024999999999999467), '年化收益率': np.float64(0.0010929819567884191), '最大回撤': np.float64(0.002954048140043764), '夏普比率': np.float64(0.1603191323199815), '卡玛比率': np.float64(0.3699946327794871), '总交易次数': 114, '交易成本': 0.0, '总实现盈亏': 250.0, '胜率': 0.42857142857142855, '盈亏比': 1.9060710194730812, '盈利交易次数': 24, '亏损交易次数': 32, '平均每次盈利': 34.666666666666664, '平均每次亏损': -18.1875, 'initial_capital': 100000.0, 'final_capital': np.float64(100250.0), 'total_return': np.float64(0.0024999999999999467), 'annualized_return': np.float64(0.0010929819567884191), 'max_drawdown': np.float64(0.002954048140043764), 'sharpe_ratio': np.float64(0.1603191323199815), 'calmar_ratio': np.float64(0.3699946327794871), 'sortino_ratio': np.float64(0.08311903639710808), 'total_trades': 114, 'transaction_costs': 0.0, 'total_realized_pnl': 250.0, 'win_rate': 0.42857142857142855, 'profit_loss_ratio': 1.9060710194730812, 'winning_trades_count': 24, 'losing_trades_count': 32, 'avg_profit_per_trade': 34.666666666666664, 'avg_loss_per_trade': -18.1875}\n",
"指标 'rsi_5' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'rsi_7' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'rsi_10' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'rsi_14' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'rsi_15' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'rsi_20' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'rsi_25' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'rsi_30' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'rsi_35' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'rsi_40' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'range_0' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'range_1' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'range_6' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'range_13' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'range_20' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'stoch_k_14_3' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'stoch_k_5_3' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'stoch_k_21_5' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_5' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_10' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_15' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_20' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_ma_5_5' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_ma_5_10' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_ma_10_10' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_ma_10_20' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_ma_20_20' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_ma_20_40' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'natr_5' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'natr_14' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'natr_21' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'adx_7' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'adx_14' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'adx_30' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'adx_60' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'adx_120' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'adx_240' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'bbw_10_15' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'bbw_20_20' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'bbw_50_25' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'price_range_to_vol_ratio_n3_atr5' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'price_range_to_vol_ratio_n3_atr14' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'price_range_to_vol_ratio_n3_atr21' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'price_range_to_vol_ratio_n7_atr5' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'price_range_to_vol_ratio_n7_atr14' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'price_range_to_vol_ratio_n7_atr21' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'price_range_to_vol_ratio_n21_atr5' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'price_range_to_vol_ratio_n21_atr14' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'price_range_to_vol_ratio_n21_atr21' 没有对应的有效平仓交易数据。跳过绘图。\n",
"\n",
"所有指标的分析图表已生成。\n"
]
}
],
"execution_count": 40
}
],
"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
}