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

505 lines
273 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-29T09:09:02.312723Z",
"start_time": "2025-09-29T09:09:02.296165Z"
}
},
"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": 21
},
{
"cell_type": "code",
"id": "4f7e4b438cea750e",
"metadata": {
"ExecuteTime": {
"end_time": "2025-09-29T09:09:02.333268Z",
"start_time": "2025-09-29T09:09:02.319997Z"
}
},
"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.AtrVol.TrendlineHawkesStrategy 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": 22
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-09-29T09:09:02.352750Z",
"start_time": "2025-09-29T09:09:02.337550Z"
}
},
"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": 23
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-09-29T09:09:13.383380Z",
"start_time": "2025-09-29T09:09:02.358231Z"
}
},
"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': 1.1,\n",
" 'order_direction': ['SELL', 'BUY'],\n",
" 'reverse_logic': False,\n",
" 'indicators': [RSI(7, 65, 85), Empty()],\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",
"状态初始化完成。\n",
"Bar 对象流生成完毕。\n",
"\n",
"--- 回测结束,检查并平仓所有剩余持仓 ---\n",
"--- 回测结束 ---\n",
"总计处理了 8698 根K线。\n",
"总计发生了 158 笔交易。\n",
"最终总净值: 100284.00\n",
"总收益率: 0.28%\n",
"\n",
"回测运行完毕。\n",
"\n",
"--- 结果分析器初始化完成 ---\n",
"\n",
"--- 交易明细 ---\n",
" 2024-01-15 21:15:00 | BUY | CZCE.SA405 | Vol: 1 | Price: 1873.00 | Comm: 0.00\n",
" 2024-01-16 22:45:00 | CLOSE_LONG | CZCE.SA405 | Vol: 1 | Price: 1943.00 | Comm: 0.00 | PnL: 70.00\n",
" 2024-01-26 21:00:00 | SELL | CZCE.SA405 | Vol: 1 | Price: 1987.00 | Comm: 0.00\n",
" 2024-01-26 22:45:00 | CLOSE_SHORT | CZCE.SA405 | Vol: 1 | Price: 1990.00 | Comm: 0.00 | PnL: -3.00\n",
" 2024-01-30 14:00:00 | SELL | CZCE.SA405 | Vol: 1 | Price: 1954.00 | Comm: 0.00\n",
" 2024-01-30 22:30:00 | CLOSE_SHORT | CZCE.SA405 | Vol: 1 | Price: 1944.00 | Comm: 0.00 | PnL: 10.00\n",
" 2024-02-19 09:15:00 | SELL | CZCE.SA405 | Vol: 1 | Price: 1866.00 | Comm: 0.00\n",
" 2024-02-19 11:15:00 | CLOSE_SHORT | CZCE.SA405 | Vol: 1 | Price: 1842.00 | Comm: 0.00 | PnL: 24.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-02-29 11:15:00 | BUY | CZCE.SA405 | Vol: 1 | Price: 1786.00 | Comm: 0.00\n",
" 2024-02-29 14:15:00 | CLOSE_LONG | CZCE.SA405 | Vol: 1 | Price: 1774.00 | Comm: 0.00 | PnL: -12.00\n",
" 2024-03-04 21:00:00 | BUY | CZCE.SA405 | Vol: 1 | Price: 1833.00 | Comm: 0.00\n",
" 2024-03-05 13:30:00 | CLOSE_LONG | CZCE.SA405 | Vol: 1 | Price: 1888.00 | Comm: 0.00 | PnL: 55.00\n",
" 2024-03-13 21:30:00 | SELL | CZCE.SA405 | Vol: 1 | Price: 1849.00 | Comm: 0.00\n",
" 2024-03-14 09:45:00 | CLOSE_SHORT | CZCE.SA405 | Vol: 1 | Price: 1838.00 | Comm: 0.00 | PnL: 11.00\n",
" 2024-03-29 21:00:00 | BUY | CZCE.SA409 | Vol: 1 | Price: 1784.00 | Comm: 0.00\n",
" 2024-04-01 09:30:00 | CLOSE_LONG | CZCE.SA409 | Vol: 1 | Price: 1770.00 | Comm: 0.00 | PnL: -14.00\n",
" 2024-04-17 09:15:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 1872.00 | Comm: 0.00\n",
" 2024-04-17 10:45:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 1887.00 | Comm: 0.00 | PnL: -15.00\n",
" 2024-04-17 21:00:00 | BUY | CZCE.SA409 | Vol: 1 | Price: 1938.00 | Comm: 0.00\n",
" 2024-04-18 22:00:00 | CLOSE_LONG | CZCE.SA409 | Vol: 1 | Price: 2073.00 | Comm: 0.00 | PnL: 135.00\n",
" 2024-04-24 09:15:00 | BUY | CZCE.SA409 | Vol: 1 | Price: 2171.00 | Comm: 0.00\n",
" 2024-04-24 10:45:00 | CLOSE_LONG | CZCE.SA409 | Vol: 1 | Price: 2169.00 | Comm: 0.00 | PnL: -2.00\n",
" 2024-04-24 21:15:00 | BUY | CZCE.SA409 | Vol: 1 | Price: 2184.00 | Comm: 0.00\n",
" 2024-04-25 14:30:00 | CLOSE_LONG | CZCE.SA409 | Vol: 1 | Price: 2248.00 | Comm: 0.00 | PnL: 64.00\n",
" 2024-04-29 21:15:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 2208.00 | Comm: 0.00\n",
" 2024-04-29 21:45:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 2226.00 | Comm: 0.00 | PnL: -18.00\n",
" 2024-05-08 22:00:00 | BUY | CZCE.SA409 | Vol: 1 | Price: 2214.00 | Comm: 0.00\n",
" 2024-05-08 22:45:00 | CLOSE_LONG | CZCE.SA409 | Vol: 1 | Price: 2216.00 | Comm: 0.00 | PnL: 2.00\n",
" 2024-05-14 14:45:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 2136.00 | Comm: 0.00\n",
" 2024-05-15 09:00:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 2115.00 | Comm: 0.00 | PnL: 21.00\n",
" 2024-05-21 10:00:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 2324.00 | Comm: 0.00\n",
" 2024-05-21 11:15:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 2348.00 | Comm: 0.00 | PnL: -24.00\n",
" 2024-05-28 22:00:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 2341.00 | Comm: 0.00\n",
" 2024-05-29 09:30:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 2363.00 | Comm: 0.00 | PnL: -22.00\n",
" 2024-06-04 21:15:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 2185.00 | Comm: 0.00\n",
" 2024-06-04 22:30:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 2206.00 | Comm: 0.00 | PnL: -21.00\n",
" 2024-06-06 22:30:00 | BUY | CZCE.SA409 | Vol: 1 | Price: 2260.00 | Comm: 0.00\n",
" 2024-06-07 10:30:00 | CLOSE_LONG | CZCE.SA409 | Vol: 1 | Price: 2246.00 | Comm: 0.00 | PnL: -14.00\n",
" 2024-06-12 21:45:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 2144.00 | Comm: 0.00\n",
" 2024-06-13 10:45:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 2143.00 | Comm: 0.00 | PnL: 1.00\n",
" 2024-06-18 21:00:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 2071.00 | Comm: 0.00\n",
" 2024-06-18 22:15:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 2068.00 | Comm: 0.00 | PnL: 3.00\n",
" 2024-06-20 21:00:00 | BUY | CZCE.SA409 | Vol: 1 | Price: 2125.00 | Comm: 0.00\n",
" 2024-06-21 14:00:00 | CLOSE_LONG | CZCE.SA409 | Vol: 1 | Price: 2136.00 | Comm: 0.00 | PnL: 11.00\n",
" 2024-06-24 09:15:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 2063.00 | Comm: 0.00\n",
" 2024-06-24 10:00:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 2067.00 | Comm: 0.00 | PnL: -4.00\n",
" 2024-07-05 09:00:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 2159.00 | Comm: 0.00\n",
" 2024-07-05 10:30:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 2159.00 | Comm: 0.00 | PnL: 0.00\n",
" 2024-07-10 11:15:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 1989.00 | Comm: 0.00\n",
" 2024-07-10 22:30:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 1954.00 | Comm: 0.00 | PnL: 35.00\n",
" 2024-07-15 09:00:00 | BUY | CZCE.SA409 | Vol: 1 | Price: 1977.00 | Comm: 0.00\n",
" 2024-07-15 09:15:00 | CLOSE_LONG | CZCE.SA409 | Vol: 1 | Price: 1949.00 | Comm: 0.00 | PnL: -28.00\n",
" 2024-07-18 21:30:00 | BUY | CZCE.SA409 | Vol: 1 | Price: 1964.00 | Comm: 0.00\n",
" 2024-07-18 22:30:00 | CLOSE_LONG | CZCE.SA409 | Vol: 1 | Price: 1952.00 | Comm: 0.00 | PnL: -12.00\n",
" 2024-07-26 14:45:00 | SELL | CZCE.SA409 | Vol: 1 | Price: 1849.00 | Comm: 0.00\n",
" 2024-07-26 22:15:00 | CLOSE_SHORT | CZCE.SA409 | Vol: 1 | Price: 1822.00 | Comm: 0.00 | PnL: 27.00\n",
" 2024-08-02 21:00:00 | BUY | CZCE.SA409 | Vol: 1 | Price: 1808.00 | Comm: 0.00\n",
" 2024-08-02 22:00:00 | CLOSE_LONG | CZCE.SA409 | Vol: 1 | Price: 1805.00 | Comm: 0.00 | PnL: -3.00\n",
" 2024-09-04 13:30:00 | SELL | CZCE.SA501 | Vol: 1 | Price: 1497.00 | Comm: 0.00\n",
" 2024-09-04 22:00:00 | CLOSE_SHORT | CZCE.SA501 | Vol: 1 | Price: 1491.00 | Comm: 0.00 | PnL: 6.00\n",
" 2024-09-05 09:15:00 | SELL | CZCE.SA501 | Vol: 1 | Price: 1464.00 | Comm: 0.00\n",
" 2024-09-05 10:30:00 | CLOSE_SHORT | CZCE.SA501 | Vol: 1 | Price: 1452.00 | Comm: 0.00 | PnL: 12.00\n",
" 2024-09-19 10:30:00 | BUY | CZCE.SA501 | Vol: 1 | Price: 1378.00 | Comm: 0.00\n",
" 2024-09-19 14:00:00 | CLOSE_LONG | CZCE.SA501 | Vol: 1 | Price: 1380.00 | Comm: 0.00 | PnL: 2.00\n",
" 2024-09-23 22:15:00 | BUY | CZCE.SA501 | Vol: 1 | Price: 1390.00 | Comm: 0.00\n",
" 2024-09-23 22:45:00 | CLOSE_LONG | CZCE.SA501 | Vol: 1 | Price: 1378.00 | Comm: 0.00 | PnL: -12.00\n",
" 2024-10-17 10:30:00 | SELL | CZCE.SA501 | Vol: 1 | Price: 1496.00 | Comm: 0.00\n",
" 2024-10-17 22:45:00 | CLOSE_SHORT | CZCE.SA501 | Vol: 1 | Price: 1425.00 | Comm: 0.00 | PnL: 71.00\n",
" 2024-10-24 14:30:00 | BUY | CZCE.SA501 | Vol: 1 | Price: 1542.00 | Comm: 0.00\n",
" 2024-10-25 09:15:00 | CLOSE_LONG | CZCE.SA501 | Vol: 1 | Price: 1527.00 | Comm: 0.00 | PnL: -15.00\n",
" 2024-11-06 14:45:00 | SELL | CZCE.SA501 | Vol: 1 | Price: 1499.00 | Comm: 0.00\n",
" 2024-11-06 21:00:00 | CLOSE_SHORT | CZCE.SA501 | Vol: 1 | Price: 1508.00 | Comm: 0.00 | PnL: -9.00\n",
" 2024-11-08 09:00:00 | BUY | CZCE.SA501 | Vol: 1 | Price: 1561.00 | Comm: 0.00\n",
" 2024-11-08 10:00:00 | CLOSE_LONG | CZCE.SA501 | Vol: 1 | Price: 1550.00 | Comm: 0.00 | PnL: -11.00\n",
" 2024-11-15 09:00:00 | SELL | CZCE.SA501 | Vol: 1 | Price: 1500.00 | Comm: 0.00\n",
" 2024-11-15 10:30:00 | CLOSE_SHORT | CZCE.SA501 | Vol: 1 | Price: 1500.00 | Comm: 0.00 | PnL: 0.00\n",
" 2024-11-22 22:15:00 | BUY | CZCE.SA501 | Vol: 1 | Price: 1521.00 | Comm: 0.00\n",
" 2024-11-25 09:15: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-28 22:45:00 | CLOSE_SHORT | CZCE.SA501 | Vol: 1 | Price: 1477.00 | Comm: 0.00 | PnL: -12.00\n",
" 2024-12-03 21:15:00 | SELL | CZCE.SA501 | Vol: 1 | Price: 1454.00 | Comm: 0.00\n",
" 2024-12-03 21:30:00 | CLOSE_SHORT | CZCE.SA501 | Vol: 1 | Price: 1464.00 | Comm: 0.00 | PnL: -10.00\n",
" 2024-12-24 09:15:00 | BUY | CZCE.SA505 | Vol: 1 | Price: 1458.00 | Comm: 0.00\n",
" 2024-12-24 13:30:00 | CLOSE_LONG | CZCE.SA505 | Vol: 1 | Price: 1463.00 | Comm: 0.00 | PnL: 5.00\n",
" 2025-01-08 14:45:00 | SELL | CZCE.SA505 | Vol: 1 | Price: 1391.00 | Comm: 0.00\n",
" 2025-01-09 10:00:00 | CLOSE_SHORT | CZCE.SA505 | Vol: 1 | Price: 1387.00 | Comm: 0.00 | PnL: 4.00\n",
" 2025-01-10 21:30:00 | BUY | CZCE.SA505 | Vol: 1 | Price: 1417.00 | Comm: 0.00\n",
" 2025-01-13 11:00:00 | CLOSE_LONG | CZCE.SA505 | Vol: 1 | Price: 1422.00 | Comm: 0.00 | PnL: 5.00\n",
" 2025-01-22 13:45:00 | BUY | CZCE.SA505 | Vol: 1 | Price: 1491.00 | Comm: 0.00\n",
" 2025-01-22 14:00:00 | CLOSE_LONG | CZCE.SA505 | Vol: 1 | Price: 1483.00 | Comm: 0.00 | PnL: -8.00\n",
" 2025-01-24 21:15:00 | SELL | CZCE.SA505 | Vol: 1 | Price: 1493.00 | Comm: 0.00\n",
" 2025-01-24 22:00:00 | CLOSE_SHORT | CZCE.SA505 | Vol: 1 | Price: 1491.00 | Comm: 0.00 | PnL: 2.00\n",
" 2025-02-07 10:30:00 | BUY | CZCE.SA505 | Vol: 1 | Price: 1450.00 | Comm: 0.00\n",
" 2025-02-07 22:00:00 | CLOSE_LONG | CZCE.SA505 | Vol: 1 | Price: 1454.00 | Comm: 0.00 | PnL: 4.00\n",
" 2025-02-12 14:45:00 | BUY | CZCE.SA505 | Vol: 1 | Price: 1472.00 | Comm: 0.00\n",
" 2025-02-12 22:00:00 | CLOSE_LONG | CZCE.SA505 | Vol: 1 | Price: 1465.00 | Comm: 0.00 | PnL: -7.00\n",
" 2025-02-19 21:15:00 | BUY | CZCE.SA505 | Vol: 1 | Price: 1526.00 | Comm: 0.00\n",
" 2025-02-20 09:15:00 | CLOSE_LONG | CZCE.SA505 | Vol: 1 | Price: 1516.00 | Comm: 0.00 | PnL: -10.00\n",
" 2025-02-20 13:45:00 | BUY | CZCE.SA505 | Vol: 1 | Price: 1537.00 | Comm: 0.00\n",
" 2025-02-20 22:15:00 | CLOSE_LONG | CZCE.SA505 | Vol: 1 | Price: 1533.00 | Comm: 0.00 | PnL: -4.00\n",
" 2025-03-04 21:15:00 | SELL | CZCE.SA505 | Vol: 1 | Price: 1505.00 | Comm: 0.00\n",
" 2025-03-04 21:45:00 | CLOSE_SHORT | CZCE.SA505 | Vol: 1 | Price: 1513.00 | Comm: 0.00 | PnL: -8.00\n",
" 2025-03-05 09:30:00 | SELL | CZCE.SA505 | Vol: 1 | Price: 1482.00 | Comm: 0.00\n",
" 2025-03-05 22:00:00 | CLOSE_SHORT | CZCE.SA505 | Vol: 1 | Price: 1461.00 | Comm: 0.00 | PnL: 21.00\n",
" 2025-03-07 14:00:00 | SELL | CZCE.SA505 | Vol: 1 | Price: 1443.00 | Comm: 0.00\n",
" 2025-03-07 22:00:00 | CLOSE_SHORT | CZCE.SA505 | Vol: 1 | Price: 1443.00 | Comm: 0.00 | PnL: 0.00\n",
" 2025-03-11 21:15:00 | BUY | CZCE.SA505 | Vol: 1 | Price: 1443.00 | Comm: 0.00\n",
" 2025-03-11 22:00:00 | CLOSE_LONG | CZCE.SA505 | Vol: 1 | Price: 1433.00 | Comm: 0.00 | PnL: -10.00\n",
" 2025-03-11 22:15:00 | SELL | CZCE.SA505 | Vol: 1 | Price: 1426.00 | Comm: 0.00\n",
" 2025-03-12 10:00:00 | CLOSE_SHORT | CZCE.SA505 | Vol: 1 | Price: 1431.00 | Comm: 0.00 | PnL: -5.00\n",
" 2025-03-21 10:00:00 | SELL | CZCE.SA505 | Vol: 1 | Price: 1406.00 | Comm: 0.00\n",
" 2025-03-21 14:00:00 | CLOSE_SHORT | CZCE.SA505 | Vol: 1 | Price: 1415.00 | Comm: 0.00 | PnL: -9.00\n",
" 2025-03-28 10:45:00 | SELL | CZCE.SA505 | Vol: 1 | Price: 1401.00 | Comm: 0.00\n",
" 2025-03-28 21:45:00 | CLOSE_SHORT | CZCE.SA505 | Vol: 1 | Price: 1389.00 | Comm: 0.00 | PnL: 12.00\n",
" 2025-04-07 09:15:00 | SELL | CZCE.SA505 | Vol: 1 | Price: 1366.00 | Comm: 0.00\n",
" 2025-04-07 22:00:00 | CLOSE_SHORT | CZCE.SA505 | Vol: 1 | Price: 1368.00 | Comm: 0.00 | PnL: -2.00\n",
" 2025-04-15 21:15:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1361.00 | Comm: 0.00\n",
" 2025-04-16 14:15:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1353.00 | Comm: 0.00 | PnL: -8.00\n",
" 2025-04-22 22:45:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1356.00 | Comm: 0.00\n",
" 2025-04-23 22:15:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1369.00 | Comm: 0.00 | PnL: 13.00\n",
" 2025-04-28 09:15:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1381.00 | Comm: 0.00\n",
" 2025-04-28 11:00:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1378.00 | Comm: 0.00 | PnL: -3.00\n",
" 2025-04-29 14:00:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1378.00 | Comm: 0.00\n",
" 2025-04-29 21:15:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1369.00 | Comm: 0.00 | PnL: -9.00\n",
" 2025-05-07 21:15:00 | SELL | CZCE.SA509 | Vol: 1 | Price: 1312.00 | Comm: 0.00\n",
" 2025-05-08 10:00:00 | CLOSE_SHORT | CZCE.SA509 | Vol: 1 | Price: 1304.00 | Comm: 0.00 | PnL: 8.00\n",
" 2025-05-09 21:15:00 | SELL | CZCE.SA509 | Vol: 1 | Price: 1292.00 | Comm: 0.00\n",
" 2025-05-09 22:30:00 | CLOSE_SHORT | CZCE.SA509 | Vol: 1 | Price: 1290.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-12 21:30:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1325.00 | Comm: 0.00 | PnL: -10.00\n",
" 2025-05-19 09:15:00 | SELL | CZCE.SA509 | Vol: 1 | Price: 1278.00 | Comm: 0.00\n",
" 2025-05-19 10:30:00 | CLOSE_SHORT | CZCE.SA509 | Vol: 1 | Price: 1278.00 | Comm: 0.00 | PnL: 0.00\n",
" 2025-05-21 14:45:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1288.00 | Comm: 0.00\n",
" 2025-05-21 22:45:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1286.00 | Comm: 0.00 | PnL: -2.00\n",
" 2025-05-23 10:45:00 | SELL | CZCE.SA509 | Vol: 1 | Price: 1265.00 | Comm: 0.00\n",
" 2025-05-23 14:15:00 | CLOSE_SHORT | CZCE.SA509 | Vol: 1 | Price: 1263.00 | Comm: 0.00 | PnL: 2.00\n",
" 2025-06-04 14:15:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1221.00 | Comm: 0.00\n",
" 2025-06-04 21:15:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1210.00 | Comm: 0.00 | PnL: -11.00\n",
" 2025-06-06 21:45:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1230.00 | Comm: 0.00\n",
" 2025-06-06 22:15:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1222.00 | Comm: 0.00 | PnL: -8.00\n",
" 2025-06-18 09:30:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1176.00 | Comm: 0.00\n",
" 2025-06-18 10:00:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1169.00 | Comm: 0.00 | PnL: -7.00\n",
" 2025-06-18 21:15:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1178.00 | Comm: 0.00\n",
" 2025-06-19 09:30:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1176.00 | Comm: 0.00 | PnL: -2.00\n",
" 2025-06-26 21:45:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1190.00 | Comm: 0.00\n",
" 2025-06-27 10:00:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1195.00 | Comm: 0.00 | PnL: 5.00\n",
" 2025-07-02 11:00:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1188.00 | Comm: 0.00\n",
" 2025-07-03 10:45:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1179.00 | Comm: 0.00 | PnL: -9.00\n",
" 2025-07-09 21:15:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1200.00 | Comm: 0.00\n",
" 2025-07-10 13:30:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1213.00 | Comm: 0.00 | PnL: 13.00\n",
" 2025-07-10 21:15:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1236.00 | Comm: 0.00\n",
" 2025-07-10 21:45:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1224.00 | Comm: 0.00 | PnL: -12.00\n",
" 2025-07-17 21:30:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1227.00 | Comm: 0.00\n",
" 2025-07-18 11:15:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1218.00 | Comm: 0.00 | PnL: -9.00\n",
" 2025-07-18 21:15:00 | BUY | CZCE.SA509 | Vol: 1 | Price: 1244.00 | Comm: 0.00\n",
" 2025-07-21 10:45:00 | CLOSE_LONG | CZCE.SA509 | Vol: 1 | Price: 1288.00 | Comm: 0.00 | PnL: 44.00\n",
"正在计算绩效指标...\n",
"total_return: 0.0028399999999999537, annualized_return:0.001241509018453879, 252 / total_days:0.4375\n",
"绩效指标计算完成。\n",
"\n",
"--- 回测绩效报告 ---\n",
"初始资金 : 100000.00\n",
"最终资金 : 100284.00\n",
"总收益率 : 0.28%\n",
"年化收益率 : 0.12%\n",
"最大回撤 : 0.15%\n",
"夏普比率 : 0.26\n",
"卡玛比率 : 0.83\n",
"总交易次数 : 158\n",
"总实现盈亏 : 284.00\n",
"交易成本 : 0.00\n",
"\n",
"--- 交易详情 ---\n",
"盈利交易次数 : 33\n",
"亏损交易次数 : 42\n",
"胜率 : 44.00%\n",
"盈亏比 : 2.11\n",
"平均每次盈利 : 21.64\n",
"平均每次亏损 : -10.24\n",
"正在绘制绩效图表...\n"
]
},
{
"data": {
"text/plain": [
"<Figure size 1400x1000 with 2 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAABWUAAAPdCAYAAADiWgoIAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3Xd4k+X+x/FPkm7KkJYhAopoC7IRRZbIUpwsBVTAgQfkCMrRn4J6RHCBCE4cqIigHHAwXIAyRNmCgAgyBBwgIC2zk678/ohJkzZtkzSzeb+ui4s267mT3E2efPJ9vrfBbDabBQAAAAAAAADwC2OgBwAAAAAAAAAA4YRQFgAAAAAAAAD8iFAWAAAAAAAAAPyIUBYAAAAAAAAA/IhQFgAAAAAAAAD8iFAWAAAAAAAAAPyIUBYAAAAAAAAA/IhQFgAAAAAAAAD8iFAWAAAAAAAAAPyIUBYAUGF07dpVycnJDv+aNm2qq666SqNHj9bmzZsDPcRi9u3bp3//+99q166dGjdurOTkZL322mse396hQ4eUnJysrl27FjvP+vgcOnSoPEN2ibPnwtm/BQsW+HwspRk7dmxQjCMYefLYLFiwwOnfYNu2bXXdddfpoYce0kcffaT09HQfjjzwSvs7rOjWrl2rRx99VNdcc41at26tpk2bqmPHjrrrrrv0/vvv68SJE4EeYkDNmjVLycnJ+vrrr0u93MyZM21/Qx988EGpl924caOSk5M1ePDgYudZb8NT+/fv18SJE9W7d2+1bdtWTZo0Udu2bTVgwABNnTpV+/fv9/i2UX6bN29WcnKyJk+eHOihAAA8EBHoAQAA4G2tW7fW+eefL0k6c+aMduzYoSVLlmjp0qUaM2aM7rrrLp+PYcGCBXr00UfVp08fTZo0yellMjMzNWzYMP3111+24MJkMqlx48Y+H5+/2D8XztSvX9+Po3GdK88fShYXF6drrrlGklRQUKC0tDQdOnRIixcv1pdffqlJkybpP//5jwYPHiyDwRDg0cIbTpw4oYceekjr1q2TJJ133nlq27at4uLilJKSoq1bt2rdunV65ZVX9P7776tFixYBHrH/nThxQtOmTVOzZs1sfx8l+fTTT20/z58/32ng6kt5eXmaPHmyPvjgAxUUFKhatWpq2rSpqlWrprS0NO3cuVPbtm3Tu+++q8cff1yDBg3y6/isQu21+rXXXtO0adM0cuRIjRo1qty316ZNG1111VWaPXu2+vfvrwsuuKD8gwQA+A2hLACgwrnlllvUt29f2+9nz57VuHHjtGjRIr3wwgu66qqr1KBBgwCO0OLnn3/WX3/9pVatWmnevHk+397777+v3Nxc1apVy+fbsir6XASbBx98UP/6179Us2bNQA+lQjnnnHOcBiTHjh3Tu+++q9mzZ+vZZ5/V0aNH9cgjjwRghPCmtLQ03Xbbbfrtt9904YUX6umnn1abNm0cLpOTk6OFCxfqtddeU0pKSoBGGljTpk3TmTNnygzjtm3bpn379qlKlSrKy8vTrl27tHPnTjVp0sRPI5UefvhhLV68WPHx8Xr88cfVq1cvmUwm2/lms1lr167Viy++qD/++MNv40Jxo0aN0qpVqzRlyhRNmzYt0MMBALiB9gUAgAovOjpa48aNU1xcnPLz87Vs2bJAD0mSdOTIEUnyW2VL/fr11bBhQ0VGRvple6GgZs2aatiwoSpXrhzooYSFmjVr6rHHHtMTTzwhSZoxY0ZQthWBe55++mn99ttvOu+88zR37txigawkRUVFacCAAVq0aJEuvPDCAIwysM6cOaOFCxeqVq1a6tSpU6mXtVbJXn/99erZs6fDaf7w6aefavHixYqMjNR7772nvn37OgSykmQwGNSxY0d99NFHuu666/w2NhTXtGlTNWrUSCtWrPBLeyIAgPcQygIAwkKlSpVs1bFFP7SsXr1aw4cPV7t27WxtBEaPHq2ff/7Z6W0NHjxYycnJ2rhxozZv3qx7771XV1xxhRo1aqQFCxaoa9euevTRRyVJCxcudOivOXjwYFv/vzFjxji9jL1Tp07pxRdf1PXXX68WLVqoVatW6tu3r9555x1lZ2e79RiU1lM2KytLb7/9tvr06aNWrVqpRYsWuv766/XSSy/p9OnTbm2nvPbt26f7779fbdu2VfPmzXXDDTdoxowZys/PL/E+lNU30f45s+esb2pZz19BQYG6deum5ORkbd26tcRtjh8/3q1ef+np6fr44481cuRIXX311WrZsqVatmypG2+8US+99JLOnDnj9Hr2j8mGDRt0991367LLLlPz5s3Vp08fLVq0qMRtnjp1Ss8++6y6dOli67/81FNP6dSpUy6N2VO33367mjVrJkl69913Hc6z9qUdO3asbXzdu3dX06ZNHQ7hXrdunZ5++mn16tVLbdu2VdOmTXXllVdq9OjR2r59e7Ftzp49W8nJyXrmmWeKnfevf/1LycnJ6tChg8xms8N5ixYtUnJystOK3m+//VaDBg1Sq1atdOmll+q2227T8uXLy7z/+/fv16OPPmp73C+//HLdcccdWrx4sU/Hbd97NDc3V2+//bauv/56NW/eXG3bttXIkSPd7hF68OBBffnll5KkRx99VNWqVSv18omJiQ6hbFm9i+3nQ0mnO5snq1evVnJysq699toSx5KXl6cOHTooOTlZu3fvdjgvOztb7733nvr37682bdrYWg5MnjxZJ0+eLPU+lnQ/MjMz1atXLxmNJX8Ey8zMtM2Dm2++Wf369ZMkffnllzp79qzb23WX2WzWW2+9JUkaOHBgmW0mIiMj1apVq2Knb9++XQ888IA6duyopk2bql27drr33nu1du1ap7djPw8OHjyohx9+WB06dFDTpk3VvXt3vfTSS8rJyXG4Tlmv1VZlvWdLnr/+SpZ59Omnn+rOO+90eC268847HfoBJycn2ypZp02b5jBe+/l97NgxPfPMM7rmmmvUrFkztWjRQp07d9Ydd9yhGTNmOB1Dnz59VFBQoLlz55Y4TgBA8KF9AQAgbFgXF4qKirKd9vLLL+vNN9+UwWBQq1atVKdOHe3fv19LlizRN998o6eeeko333yz09tbunSp5s2bpwsvvFDt27fX6dOnFRUVpWuuuUbbtm3Tli1bVL9+fV166aW261x44YVKTExUnz599Mcffzi9jNXBgwd1xx136K+//lL16tXVuXNn5ebmauPGjZoyZYqWLFmimTNnqmrVquV6XE6dOqU777xTu3btUnx8vK644gpFRkbqhx9+0FtvvaUvv/xSs2bNUt26dcu1HVds3rxZ//rXv5SZmal69eqpQ4cOOnnypF566SX99NNPPt++pDKfP6PRqEGDBmnSpEn68MMPnQYS6enp+uyzz2Q0GnXbbbe5tN3du3friSeeUPXq1dWgQQM1adLE1hP5rbfe0pIlS/TRRx/pnHPOcXr9+fPn680339Qll1yiTp066a+//tK2bds0ZswY23NsLzU1Vbfffrt+//13Va1aVV26dFFBQYG++OILrV69WhdddJHrD5oHbrrpJv3888/auHGj8vLyFBHhuFt68uRJ9evXT2lpabr00kvVpEkThyrvJ598UkeOHNHFF1+s1q1bKyIiQgcOHNCSJUu0bNkyvfjiiw59O9u3by9Jtp6nVrm5ubZq3dTUVO3Zs0eNGjWynW+9vPX6Vu+//74mTpwoSWrevLnq16+v33//Xffdd1+pfatXrVql+++/X2fPnlWDBg109dVX6/jx49q0aZM2bNigNWvW6LnnnvPZuK3XHTZsmLZu3ao2bdqoYcOG2r59u5YtW6aNGzdq4cKFLv+9f/vtt8rPz1eVKlUCsrBZSfOkQ4cOql27tg4cOKBt27apZcuWxa77/fffKzU1VU2aNHF47P7++2/dc8892rt3r6pVq6ZmzZqpUqVK+uWXXzRjxgwtXbpUH3zwgc477zyXx2kN6509H/YWL16sjIwM2yJ5kuVoit9//13ffPONbrzxRpe36Yk9e/bo4MGDkixBnyc+/vhjPfnkkyooKNAll1yitm3b6q+//tK3336rb7/9VqN
},
"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(100284.0), '总收益率': np.float64(0.0028399999999999537), '年化收益率': np.float64(0.001241509018453879), '最大回撤': np.float64(0.0015041338778762825), '夏普比率': np.float64(0.25731948851127845), '卡玛比率': np.float64(0.8253979494210922), '总交易次数': 158, '交易成本': 0.0, '总实现盈亏': 284.0, '胜率': 0.44, '盈亏比': 2.1133192389006346, '盈利交易次数': 33, '亏损交易次数': 42, '平均每次盈利': 21.636363636363637, '平均每次亏损': -10.238095238095237, 'initial_capital': 100000.0, 'final_capital': np.float64(100284.0), 'total_return': np.float64(0.0028399999999999537), 'annualized_return': np.float64(0.001241509018453879), 'max_drawdown': np.float64(0.0015041338778762825), 'sharpe_ratio': np.float64(0.25731948851127845), 'calmar_ratio': np.float64(0.8253979494210922), 'sortino_ratio': np.float64(0.13443261397381054), 'total_trades': 158, 'transaction_costs': 0.0, 'total_realized_pnl': 284.0, 'win_rate': 0.44, 'profit_loss_ratio': 2.1133192389006346, 'winning_trades_count': 33, 'losing_trades_count': 42, 'avg_profit_per_trade': 21.636363636363637, 'avg_loss_per_trade': -10.238095238095237}\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": 24
}
],
"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
}