Files
NewQuant/futures_trading_strategies/fu/TrendlineBreakoutStrategy/DualModeTrendlineHawkesStrategy.ipynb

586 lines
292 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-28T06:22:51.900281Z",
"start_time": "2025-09-28T06:22:51.885267Z"
}
},
"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": 41
},
{
"cell_type": "code",
"id": "4f7e4b438cea750e",
"metadata": {
"ExecuteTime": {
"end_time": "2025-09-28T06:22:51.916418Z",
"start_time": "2025-09-28T06:22:51.903587Z"
}
},
"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.DualModeTrendlineHawkesStrategy import DualModeTrendlineHawkesStrategy\n",
"\n",
"# --- 配置参数 ---\n",
"# 获取当前脚本所在目录,假设数据文件在项目根目录下的 data 文件夹内\n",
"data_file_path = '/mnt/d/PyProject/NewQuant/data/data/KQ_m@DCE_c/KQ_m@DCE_c_min15.csv'\n"
],
"outputs": [],
"execution_count": 42
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-09-28T06:22:51.933235Z",
"start_time": "2025-09-28T06:22:51.920165Z"
}
},
"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@DCE_c', # 确保与数据文件中的 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": 43
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-09-28T06:22:57.388741Z",
"start_time": "2025-09-28T06:22:51.938784Z"
}
},
"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': 'c', # <-- 替换为你的交易品种代码,例如 'GC=F' (黄金期货), 'ZC=F' (玉米期货)\n",
" 'trade_volume': 1,\n",
" # 'indicators': [RateOfChange(10, -2.1, -0.5), ROC_MA(10, 10, -2.7, -0.4)],\n",
" 'enable_log': False,\n",
" 'trend_params': {\n",
" \"trendline_n\": 20,\n",
" \"hawkes_kappa\": 0.1,\n",
" },\n",
" 'reversion_params': {\n",
" \"trendline_n\": 70,\n",
" \"hawkes_kappa\": 0.1,\n",
" },\n",
" 'conflict_resolution': 'NONE'\n",
"}\n",
"\n",
"# --- 2. 初始化回测引擎并运行 ---\n",
"print(\"\\n初始化回测引擎...\")\n",
"engine = BacktestEngine(\n",
" data_manager=data_manager,\n",
" strategy_class=DualModeTrendlineHawkesStrategy, # <--- 更改为您的 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_FG/KQ_m@CZCE_FG_min15.csv\n",
"数据范围从 2020-12-31 14:45:00 到 2025-08-12 09:45:00\n",
"总计 25425 条记录。\n",
"\n",
"初始化回测引擎...\n",
"模拟器初始化:初始资金=100000.00, 滑点率=0.0, 佣金率=0.0\n",
"DualModeTrendlineHawkesStrategy initialized.\n",
"Enabled modes: ['TREND', 'REVERSION']\n",
"Conflict resolution: NONE\n",
"\n",
"--- 回测引擎初始化完成 ---\n",
" 策略: DualModeTrendlineHawkesStrategy\n",
" 初始资金: 100000.00\n",
" 换月模式: 启用\n",
"\n",
"开始运行回测...\n",
"\n",
"--- 回测开始 ---\n",
"DualModeTrendlineHawkesStrategy 策略初始化回调被调用。\n",
"开始将 DataFrame 转换为 Bar 对象流...\n",
"Initializing Hawkes state with lookback 50...\n",
"Initializing Hawkes state with lookback 50...\n",
"Bar 对象流生成完毕。\n",
"\n",
"--- 回测结束,检查并平仓所有剩余持仓 ---\n",
"--- 回测结束 ---\n",
"总计处理了 8698 根K线。\n",
"总计发生了 234 笔交易。\n",
"最终总净值: 100372.00\n",
"总收益率: 0.37%\n",
"\n",
"回测运行完毕。\n",
"\n",
"--- 结果分析器初始化完成 ---\n",
"\n",
"--- 交易明细 ---\n",
" 2024-01-05 21:30:00 | BUY | CZCE.FG405 | Vol: 1 | Price: 1909.00 | Comm: 0.00\n",
" 2024-01-05 22:30:00 | CLOSE_LONG | CZCE.FG405 | Vol: 1 | Price: 1904.00 | Comm: 0.00 | PnL: -5.00\n",
" 2024-01-16 21:15:00 | BUY | CZCE.FG405 | Vol: 1 | Price: 1776.00 | Comm: 0.00\n",
" 2024-01-16 22:00:00 | CLOSE_LONG | CZCE.FG405 | Vol: 1 | Price: 1765.00 | Comm: 0.00 | PnL: -11.00\n",
" 2024-01-22 11:15:00 | SELL | CZCE.FG405 | Vol: 1 | Price: 1823.00 | Comm: 0.00\n",
" 2024-01-23 10:00:00 | CLOSE_SHORT | CZCE.FG405 | Vol: 1 | Price: 1818.00 | Comm: 0.00 | PnL: 5.00\n",
" 2024-01-26 22:00:00 | BUY | CZCE.FG405 | Vol: 1 | Price: 1872.00 | Comm: 0.00\n",
" 2024-01-29 10:30:00 | CLOSE_LONG | CZCE.FG405 | Vol: 1 | Price: 1897.00 | Comm: 0.00 | PnL: 25.00\n",
" 2024-01-31 21:15:00 | SELL | CZCE.FG405 | Vol: 1 | Price: 1826.00 | Comm: 0.00\n",
" 2024-02-01 09:45:00 | CLOSE_SHORT | CZCE.FG405 | Vol: 1 | Price: 1783.00 | Comm: 0.00 | PnL: 43.00\n",
" 2024-02-06 13:45:00 | BUY | CZCE.FG405 | Vol: 1 | Price: 1803.00 | Comm: 0.00\n",
" 2024-02-06 21:45:00 | CLOSE_LONG | CZCE.FG405 | Vol: 1 | Price: 1791.00 | Comm: 0.00 | PnL: -12.00\n",
" 2024-02-19 09:15:00 | SELL | CZCE.FG405 | Vol: 1 | Price: 1769.00 | Comm: 0.00\n",
" 2024-02-19 14:00:00 | CLOSE_SHORT | CZCE.FG405 | Vol: 1 | Price: 1741.00 | Comm: 0.00 | PnL: 28.00\n",
" 2024-02-21 14:30:00 | BUY | CZCE.FG405 | Vol: 1 | Price: 1670.00 | Comm: 0.00\n",
" 2024-02-22 09:00:00 | CLOSE_LONG | CZCE.FG405 | Vol: 1 | Price: 1674.00 | Comm: 0.00 | PnL: 4.00\n",
" 2024-02-23 21:15:00 | SELL | CZCE.FG405 | Vol: 1 | Price: 1690.00 | Comm: 0.00\n",
" 2024-02-23 22:00:00 | CLOSE_SHORT | CZCE.FG405 | Vol: 1 | Price: 1697.00 | Comm: 0.00 | PnL: -7.00\n",
" 2024-02-26 21:15:00 | BUY | CZCE.FG405 | Vol: 1 | Price: 1695.00 | Comm: 0.00\n",
" 2024-02-26 22:15:00 | CLOSE_LONG | CZCE.FG405 | Vol: 1 | Price: 1690.00 | Comm: 0.00 | PnL: -5.00\n",
" 2024-02-28 10:45:00 | BUY | CZCE.FG405 | Vol: 1 | Price: 1669.00 | Comm: 0.00\n",
" 2024-02-29 10:45:00 | CLOSE_LONG | CZCE.FG405 | Vol: 1 | Price: 1635.00 | Comm: 0.00 | PnL: -34.00\n",
" 2024-03-13 21:15:00 | BUY | CZCE.FG405 | Vol: 1 | Price: 1592.00 | Comm: 0.00\n",
" 2024-03-13 22:30:00 | CLOSE_LONG | CZCE.FG405 | Vol: 1 | Price: 1588.00 | Comm: 0.00 | PnL: -4.00\n",
" 2024-03-14 14:30:00 | BUY | CZCE.FG405 | Vol: 1 | Price: 1589.00 | Comm: 0.00\n",
" 2024-03-14 22:30:00 | CLOSE_LONG | CZCE.FG405 | Vol: 1 | Price: 1587.00 | Comm: 0.00 | PnL: -2.00\n",
" 2024-03-20 13:45:00 | SELL | CZCE.FG405 | Vol: 1 | Price: 1539.00 | Comm: 0.00\n",
" 2024-03-20 14:45:00 | CLOSE_SHORT | CZCE.FG405 | Vol: 1 | Price: 1538.00 | Comm: 0.00 | PnL: 1.00\n",
" 2024-03-27 21:15:00 | BUY | CZCE.FG405 | Vol: 1 | Price: 1469.00 | Comm: 0.00\n",
" 2024-03-27 22:45:00 | CLOSE_LONG | CZCE.FG405 | Vol: 1 | Price: 1476.00 | Comm: 0.00 | PnL: 7.00\n",
" 2024-03-29 14:00:00 | SELL | CZCE.FG405 | Vol: 1 | Price: 1472.00 | Comm: 0.00\n",
" 2024-04-01 13:30:00 | CLOSE_SHORT | CZCE.FG405 | Vol: 1 | Price: 1470.00 | Comm: 0.00 | PnL: 2.00\n",
" 2024-04-08 09:45:00 | BUY | CZCE.FG409 | Vol: 1 | Price: 1461.00 | Comm: 0.00\n",
" 2024-04-10 10:45:00 | CLOSE_LONG | CZCE.FG409 | Vol: 1 | Price: 1528.00 | Comm: 0.00 | PnL: 67.00\n",
" 2024-04-10 14:15:00 | SELL | CZCE.FG409 | Vol: 1 | Price: 1510.00 | Comm: 0.00\n",
" 2024-04-10 21:45:00 | CLOSE_SHORT | CZCE.FG409 | Vol: 1 | Price: 1516.00 | Comm: 0.00 | PnL: -6.00\n",
" 2024-04-16 21:15:00 | SELL | CZCE.FG409 | Vol: 1 | Price: 1445.00 | Comm: 0.00\n",
" 2024-04-16 22:00:00 | CLOSE_SHORT | CZCE.FG409 | Vol: 1 | Price: 1452.00 | Comm: 0.00 | PnL: -7.00\n",
" 2024-04-17 21:00:00 | BUY | CZCE.FG409 | Vol: 1 | Price: 1472.00 | Comm: 0.00\n",
" 2024-04-18 10:45:00 | CLOSE_LONG | CZCE.FG409 | Vol: 1 | Price: 1506.00 | Comm: 0.00 | PnL: 34.00\n",
" 2024-04-23 21:15:00 | BUY | CZCE.FG409 | Vol: 1 | Price: 1544.00 | Comm: 0.00\n",
" 2024-04-24 09:45:00 | CLOSE_LONG | CZCE.FG409 | Vol: 1 | Price: 1551.00 | Comm: 0.00 | PnL: 7.00\n",
" 2024-04-30 14:15:00 | BUY | CZCE.FG409 | Vol: 1 | Price: 1525.00 | Comm: 0.00\n",
" 2024-05-07 13:30:00 | CLOSE_LONG | CZCE.FG409 | Vol: 1 | Price: 1597.00 | Comm: 0.00 | PnL: 72.00\n",
" 2024-05-09 13:45:00 | BUY | CZCE.FG409 | Vol: 1 | Price: 1611.00 | Comm: 0.00\n",
" 2024-05-09 14:30:00 | CLOSE_LONG | CZCE.FG409 | Vol: 1 | Price: 1604.00 | Comm: 0.00 | PnL: -7.00\n",
" 2024-05-14 21:15:00 | SELL | CZCE.FG409 | Vol: 1 | Price: 1564.00 | Comm: 0.00\n",
" 2024-05-14 22:15:00 | CLOSE_SHORT | CZCE.FG409 | Vol: 1 | Price: 1556.00 | Comm: 0.00 | PnL: 8.00\n",
" 2024-05-16 22:45:00 | SELL | CZCE.FG409 | Vol: 1 | Price: 1618.00 | Comm: 0.00\n",
" 2024-05-20 10:45:00 | CLOSE_SHORT | CZCE.FG409 | Vol: 1 | Price: 1646.00 | Comm: 0.00 | PnL: -28.00\n",
" 2024-05-21 21:15:00 | BUY | CZCE.FG409 | Vol: 1 | Price: 1681.00 | Comm: 0.00\n",
" 2024-05-21 22:15:00 | CLOSE_LONG | CZCE.FG409 | Vol: 1 | Price: 1676.00 | Comm: 0.00 | PnL: -5.00\n",
" 2024-05-23 10:45:00 | BUY | CZCE.FG409 | Vol: 1 | Price: 1662.00 | Comm: 0.00\n",
" 2024-05-24 22:00:00 | CLOSE_LONG | CZCE.FG409 | Vol: 1 | Price: 1717.00 | Comm: 0.00 | PnL: 55.00\n",
" 2024-06-04 10:30:00 | BUY | CZCE.FG409 | Vol: 1 | Price: 1673.00 | Comm: 0.00\n",
" 2024-06-04 11:00:00 | CLOSE_LONG | CZCE.FG409 | Vol: 1 | Price: 1670.00 | Comm: 0.00 | PnL: -3.00\n",
" 2024-06-13 21:15:00 | BUY | CZCE.FG409 | Vol: 1 | Price: 1655.00 | Comm: 0.00\n",
" 2024-06-13 22:00:00 | CLOSE_LONG | CZCE.FG409 | Vol: 1 | Price: 1652.00 | Comm: 0.00 | PnL: -3.00\n",
" 2024-06-17 09:15:00 | BUY | CZCE.FG409 | Vol: 1 | Price: 1610.00 | Comm: 0.00\n",
" 2024-06-17 14:00:00 | CLOSE_LONG | CZCE.FG409 | Vol: 1 | Price: 1602.00 | Comm: 0.00 | PnL: -8.00\n",
" 2024-06-20 09:00:00 | BUY | CZCE.FG409 | Vol: 1 | Price: 1575.00 | Comm: 0.00\n",
" 2024-06-20 11:00:00 | CLOSE_LONG | CZCE.FG409 | Vol: 1 | Price: 1588.00 | Comm: 0.00 | PnL: 13.00\n",
" 2024-06-28 09:15:00 | SELL | CZCE.FG409 | Vol: 1 | Price: 1524.00 | Comm: 0.00\n",
" 2024-06-28 13:30:00 | CLOSE_SHORT | CZCE.FG409 | Vol: 1 | Price: 1550.00 | Comm: 0.00 | PnL: -26.00\n",
" 2024-07-09 21:15:00 | SELL | CZCE.FG409 | Vol: 1 | Price: 1493.00 | Comm: 0.00\n",
" 2024-07-09 21:45:00 | CLOSE_SHORT | CZCE.FG409 | Vol: 1 | Price: 1491.00 | Comm: 0.00 | PnL: 2.00\n",
" 2024-07-12 21:15:00 | SELL | CZCE.FG409 | Vol: 1 | Price: 1459.00 | Comm: 0.00\n",
" 2024-07-15 11:00:00 | CLOSE_SHORT | CZCE.FG409 | Vol: 1 | Price: 1458.00 | Comm: 0.00 | PnL: 1.00\n",
" 2024-07-17 21:15:00 | BUY | CZCE.FG409 | Vol: 1 | Price: 1448.00 | Comm: 0.00\n",
" 2024-07-17 21:45:00 | CLOSE_LONG | CZCE.FG409 | Vol: 1 | Price: 1447.00 | Comm: 0.00 | PnL: -1.00\n",
" 2024-07-30 22:30:00 | BUY | CZCE.FG409 | Vol: 1 | Price: 1357.00 | Comm: 0.00\n",
" 2024-07-31 10:30:00 | CLOSE_LONG | CZCE.FG409 | Vol: 1 | Price: 1369.00 | Comm: 0.00 | PnL: 12.00\n",
" 2024-08-02 21:15:00 | SELL | CZCE.FG409 | Vol: 1 | Price: 1356.00 | Comm: 0.00\n",
" 2024-08-02 21:45:00 | CLOSE_SHORT | CZCE.FG409 | Vol: 1 | Price: 1355.00 | Comm: 0.00 | PnL: 1.00\n",
" 2024-08-06 21:15:00 | BUY | CZCE.FG409 | Vol: 1 | Price: 1326.00 | Comm: 0.00\n",
" 2024-08-07 10:00:00 | CLOSE_LONG | CZCE.FG409 | Vol: 1 | Price: 1323.00 | Comm: 0.00 | PnL: -3.00\n",
" 2024-08-08 21:15:00 | BUY | CZCE.FG409 | Vol: 1 | Price: 1322.00 | Comm: 0.00\n",
" 2024-08-08 22:15:00 | CLOSE_LONG | CZCE.FG409 | Vol: 1 | Price: 1321.00 | Comm: 0.00 | PnL: -1.00\n",
" 2024-08-12 09:15:00 | BUY | CZCE.FG409 | Vol: 1 | Price: 1306.00 | Comm: 0.00\n",
" 2024-08-12 10:45:00 | CLOSE_LONG | CZCE.FG409 | Vol: 1 | Price: 1304.00 | Comm: 0.00 | PnL: -2.00\n",
" 2024-08-14 21:15:00 | BUY | CZCE.FG409 | Vol: 1 | Price: 1252.00 | Comm: 0.00\n",
" 2024-08-14 21:45:00 | CLOSE_LONG | CZCE.FG409 | Vol: 1 | Price: 1245.00 | Comm: 0.00 | PnL: -7.00\n",
" 2024-08-16 21:15:00 | BUY | CZCE.FG501 | Vol: 1 | Price: 1273.00 | Comm: 0.00\n",
" 2024-08-16 22:45:00 | CLOSE_LONG | CZCE.FG501 | Vol: 1 | Price: 1290.00 | Comm: 0.00 | PnL: 17.00\n",
" 2024-08-19 21:15:00 | BUY | CZCE.FG501 | Vol: 1 | Price: 1296.00 | Comm: 0.00\n",
" 2024-08-19 22:15:00 | CLOSE_LONG | CZCE.FG501 | Vol: 1 | Price: 1286.00 | Comm: 0.00 | PnL: -10.00\n",
" 2024-08-20 21:15:00 | SELL | CZCE.FG501 | Vol: 1 | Price: 1298.00 | Comm: 0.00\n",
" 2024-08-21 11:00:00 | CLOSE_SHORT | CZCE.FG501 | Vol: 1 | Price: 1303.00 | Comm: 0.00 | PnL: -5.00\n",
" 2024-08-21 21:30:00 | SELL | CZCE.FG501 | Vol: 1 | Price: 1324.00 | Comm: 0.00\n",
" 2024-08-21 22:30:00 | CLOSE_SHORT | CZCE.FG501 | Vol: 1 | Price: 1320.00 | Comm: 0.00 | PnL: 4.00\n",
" 2024-08-27 21:15:00 | SELL | CZCE.FG501 | Vol: 1 | Price: 1272.00 | Comm: 0.00\n",
" 2024-08-28 10:30:00 | CLOSE_SHORT | CZCE.FG501 | Vol: 1 | Price: 1261.00 | Comm: 0.00 | PnL: 11.00\n",
" 2024-08-30 13:45:00 | SELL | CZCE.FG501 | Vol: 1 | Price: 1277.00 | Comm: 0.00\n",
" 2024-09-02 22:45:00 | CLOSE_SHORT | CZCE.FG501 | Vol: 1 | Price: 1172.00 | Comm: 0.00 | PnL: 105.00\n",
" 2024-09-03 21:15:00 | BUY | CZCE.FG501 | Vol: 1 | Price: 1155.00 | Comm: 0.00\n",
" 2024-09-03 22:00:00 | CLOSE_LONG | CZCE.FG501 | Vol: 1 | Price: 1148.00 | Comm: 0.00 | PnL: -7.00\n",
" 2024-09-04 22:15:00 | SELL | CZCE.FG501 | Vol: 1 | Price: 1152.00 | Comm: 0.00\n",
" 2024-09-05 22:45:00 | CLOSE_SHORT | CZCE.FG501 | Vol: 1 | Price: 1133.00 | Comm: 0.00 | PnL: 19.00\n",
" 2024-09-09 09:45:00 | SELL | CZCE.FG501 | Vol: 1 | Price: 1094.00 | Comm: 0.00\n",
" 2024-09-09 11:00:00 | CLOSE_SHORT | CZCE.FG501 | Vol: 1 | Price: 1105.00 | Comm: 0.00 | PnL: -11.00\n",
" 2024-09-09 21:15:00 | SELL | CZCE.FG501 | Vol: 1 | Price: 1104.00 | Comm: 0.00\n",
" 2024-09-09 22:00:00 | CLOSE_SHORT | CZCE.FG501 | Vol: 1 | Price: 1108.00 | Comm: 0.00 | PnL: -4.00\n",
" 2024-09-11 21:15:00 | SELL | CZCE.FG501 | Vol: 1 | Price: 1080.00 | Comm: 0.00\n",
" 2024-09-12 09:45:00 | CLOSE_SHORT | CZCE.FG501 | Vol: 1 | Price: 1058.00 | Comm: 0.00 | PnL: 22.00\n",
" 2024-09-12 21:15:00 | BUY | CZCE.FG501 | Vol: 1 | Price: 1063.00 | Comm: 0.00\n",
" 2024-09-12 22:15:00 | CLOSE_LONG | CZCE.FG501 | Vol: 1 | Price: 1045.00 | Comm: 0.00 | PnL: -18.00\n",
" 2024-09-18 09:00:00 | SELL | CZCE.FG501 | Vol: 1 | Price: 1015.00 | Comm: 0.00\n",
" 2024-09-18 10:00:00 | CLOSE_SHORT | CZCE.FG501 | Vol: 1 | Price: 1016.00 | Comm: 0.00 | PnL: -1.00\n",
" 2024-09-19 11:15:00 | SELL | CZCE.FG501 | Vol: 1 | Price: 1064.00 | Comm: 0.00\n",
" 2024-09-19 22:00:00 | CLOSE_SHORT | CZCE.FG501 | Vol: 1 | Price: 1064.00 | Comm: 0.00 | PnL: 0.00\n",
" 2024-09-23 09:15:00 | BUY | CZCE.FG501 | Vol: 1 | Price: 1069.00 | Comm: 0.00\n",
" 2024-09-23 10:30:00 | CLOSE_LONG | CZCE.FG501 | Vol: 1 | Price: 1053.00 | Comm: 0.00 | PnL: -16.00\n",
" 2024-09-25 09:15:00 | SELL | CZCE.FG501 | Vol: 1 | Price: 1166.00 | Comm: 0.00\n",
" 2024-09-26 09:45:00 | CLOSE_SHORT | CZCE.FG501 | Vol: 1 | Price: 1135.00 | Comm: 0.00 | PnL: 31.00\n",
" 2024-10-14 09:00:00 | BUY | CZCE.FG501 | Vol: 1 | Price: 1233.00 | Comm: 0.00\n",
" 2024-10-14 14:15:00 | CLOSE_LONG | CZCE.FG501 | Vol: 1 | Price: 1219.00 | Comm: 0.00 | PnL: -14.00\n",
" 2024-10-15 14:15:00 | SELL | CZCE.FG501 | Vol: 1 | Price: 1305.00 | Comm: 0.00\n",
" 2024-10-16 10:45:00 | CLOSE_SHORT | CZCE.FG501 | Vol: 1 | Price: 1320.00 | Comm: 0.00 | PnL: -15.00\n",
" 2024-10-25 21:15:00 | BUY | CZCE.FG501 | Vol: 1 | Price: 1358.00 | Comm: 0.00\n",
" 2024-10-25 22:15:00 | CLOSE_LONG | CZCE.FG501 | Vol: 1 | Price: 1369.00 | Comm: 0.00 | PnL: 11.00\n",
" 2024-10-29 21:15:00 | BUY | CZCE.FG501 | Vol: 1 | Price: 1414.00 | Comm: 0.00\n",
" 2024-10-29 22:45:00 | CLOSE_LONG | CZCE.FG501 | Vol: 1 | Price: 1387.00 | Comm: 0.00 | PnL: -27.00\n",
" 2024-11-08 09:15:00 | BUY | CZCE.FG501 | Vol: 1 | Price: 1398.00 | Comm: 0.00\n",
" 2024-11-08 11:15:00 | CLOSE_LONG | CZCE.FG501 | Vol: 1 | Price: 1369.00 | Comm: 0.00 | PnL: -29.00\n",
" 2024-11-08 13:30:00 | BUY | CZCE.FG501 | Vol: 1 | Price: 1369.00 | Comm: 0.00\n",
" 2024-11-11 10:45:00 | CLOSE_LONG | CZCE.FG501 | Vol: 1 | Price: 1341.00 | Comm: 0.00 | PnL: -28.00\n",
" 2024-11-14 21:00:00 | SELL | CZCE.FG501 | Vol: 1 | Price: 1290.00 | Comm: 0.00\n",
" 2024-11-14 22:45:00 | CLOSE_SHORT | CZCE.FG501 | Vol: 1 | Price: 1284.00 | Comm: 0.00 | PnL: 6.00\n",
" 2024-11-21 09:15:00 | BUY | CZCE.FG501 | Vol: 1 | Price: 1267.00 | Comm: 0.00\n",
" 2024-11-21 10:30:00 | CLOSE_LONG | CZCE.FG501 | Vol: 1 | Price: 1269.00 | Comm: 0.00 | PnL: 2.00\n",
" 2024-11-21 14:15:00 | SELL | CZCE.FG501 | Vol: 1 | Price: 1269.00 | Comm: 0.00\n",
" 2024-11-21 21:45:00 | CLOSE_SHORT | CZCE.FG501 | Vol: 1 | Price: 1271.00 | Comm: 0.00 | PnL: -2.00\n",
" 2024-11-22 22:15:00 | BUY | CZCE.FG501 | Vol: 1 | Price: 1261.00 | Comm: 0.00\n",
" 2024-11-25 09:00:00 | CLOSE_LONG | CZCE.FG501 | Vol: 1 | Price: 1257.00 | Comm: 0.00 | PnL: -4.00\n",
" 2024-12-02 09:15:00 | SELL | CZCE.FG501 | Vol: 1 | Price: 1290.00 | Comm: 0.00\n",
" 2024-12-02 21:45:00 | CLOSE_SHORT | CZCE.FG501 | Vol: 1 | Price: 1285.00 | Comm: 0.00 | PnL: 5.00\n",
" 2024-12-04 10:30:00 | SELL | CZCE.FG501 | Vol: 1 | Price: 1249.00 | Comm: 0.00\n",
" 2024-12-04 13:30:00 | CLOSE_SHORT | CZCE.FG501 | Vol: 1 | Price: 1257.00 | Comm: 0.00 | PnL: -8.00\n",
" 2024-12-12 21:15:00 | BUY | CZCE.FG505 | Vol: 1 | Price: 1399.00 | Comm: 0.00\n",
" 2024-12-12 22:30:00 | CLOSE_LONG | CZCE.FG505 | Vol: 1 | Price: 1398.00 | Comm: 0.00 | PnL: -1.00\n",
" 2024-12-18 21:15:00 | BUY | CZCE.FG505 | Vol: 1 | Price: 1381.00 | Comm: 0.00\n",
" 2024-12-18 22:30:00 | CLOSE_LONG | CZCE.FG505 | Vol: 1 | Price: 1385.00 | Comm: 0.00 | PnL: 4.00\n",
" 2024-12-19 14:45:00 | SELL | CZCE.FG505 | Vol: 1 | Price: 1396.00 | Comm: 0.00\n",
" 2024-12-19 22:45:00 | CLOSE_SHORT | CZCE.FG505 | Vol: 1 | Price: 1376.00 | Comm: 0.00 | PnL: 20.00\n",
" 2024-12-26 14:30:00 | BUY | CZCE.FG505 | Vol: 1 | Price: 1346.00 | Comm: 0.00\n",
" 2024-12-27 09:45:00 | CLOSE_LONG | CZCE.FG505 | Vol: 1 | Price: 1343.00 | Comm: 0.00 | PnL: -3.00\n",
" 2024-12-30 09:15:00 | BUY | CZCE.FG505 | Vol: 1 | Price: 1338.00 | Comm: 0.00\n",
" 2024-12-30 11:15:00 | CLOSE_LONG | CZCE.FG505 | Vol: 1 | Price: 1345.00 | Comm: 0.00 | PnL: 7.00\n",
" 2025-01-03 14:30:00 | BUY | CZCE.FG505 | Vol: 1 | Price: 1343.00 | Comm: 0.00\n",
" 2025-01-06 10:00:00 | CLOSE_LONG | CZCE.FG505 | Vol: 1 | Price: 1354.00 | Comm: 0.00 | PnL: 11.00\n",
" 2025-01-10 21:30:00 | BUY | CZCE.FG505 | Vol: 1 | Price: 1325.00 | Comm: 0.00\n",
" 2025-01-13 10:30:00 | CLOSE_LONG | CZCE.FG505 | Vol: 1 | Price: 1347.00 | Comm: 0.00 | PnL: 22.00\n",
" 2025-01-20 09:15:00 | SELL | CZCE.FG505 | Vol: 1 | Price: 1429.00 | Comm: 0.00\n",
" 2025-01-20 11:00:00 | CLOSE_SHORT | CZCE.FG505 | Vol: 1 | Price: 1414.00 | Comm: 0.00 | PnL: 15.00\n",
" 2025-01-23 21:15:00 | SELL | CZCE.FG505 | Vol: 1 | Price: 1383.00 | Comm: 0.00\n",
" 2025-01-23 22:15:00 | CLOSE_SHORT | CZCE.FG505 | Vol: 1 | Price: 1383.00 | Comm: 0.00 | PnL: 0.00\n",
" 2025-01-24 21:15:00 | SELL | CZCE.FG505 | Vol: 1 | Price: 1380.00 | Comm: 0.00\n",
" 2025-01-24 22:15:00 | CLOSE_SHORT | CZCE.FG505 | Vol: 1 | Price: 1376.00 | Comm: 0.00 | PnL: 4.00\n",
" 2025-02-05 10:00:00 | BUY | CZCE.FG505 | Vol: 1 | Price: 1338.00 | Comm: 0.00\n",
" 2025-02-05 22:15:00 | CLOSE_LONG | CZCE.FG505 | Vol: 1 | Price: 1340.00 | Comm: 0.00 | PnL: 2.00\n",
" 2025-02-13 11:15:00 | BUY | CZCE.FG505 | Vol: 1 | Price: 1299.00 | Comm: 0.00\n",
" 2025-02-14 14:45:00 | CLOSE_LONG | CZCE.FG505 | Vol: 1 | Price: 1267.00 | Comm: 0.00 | PnL: -32.00\n",
" 2025-02-19 21:15:00 | BUY | CZCE.FG505 | Vol: 1 | Price: 1289.00 | Comm: 0.00\n",
" 2025-02-19 22:15:00 | CLOSE_LONG | CZCE.FG505 | Vol: 1 | Price: 1288.00 | Comm: 0.00 | PnL: -1.00\n",
" 2025-02-21 14:00:00 | BUY | CZCE.FG505 | Vol: 1 | Price: 1270.00 | Comm: 0.00\n",
" 2025-02-21 22:45:00 | CLOSE_LONG | CZCE.FG505 | Vol: 1 | Price: 1265.00 | Comm: 0.00 | PnL: -5.00\n",
" 2025-02-24 09:15:00 | SELL | CZCE.FG505 | Vol: 1 | Price: 1258.00 | Comm: 0.00\n",
" 2025-02-24 10:30:00 | CLOSE_SHORT | CZCE.FG505 | Vol: 1 | Price: 1269.00 | Comm: 0.00 | PnL: -11.00\n",
" 2025-03-03 09:15:00 | BUY | CZCE.FG505 | Vol: 1 | Price: 1229.00 | Comm: 0.00\n",
" 2025-03-03 14:15:00 | CLOSE_LONG | CZCE.FG505 | Vol: 1 | Price: 1226.00 | Comm: 0.00 | PnL: -3.00\n",
" 2025-03-05 09:30:00 | BUY | CZCE.FG505 | Vol: 1 | Price: 1207.00 | Comm: 0.00\n",
" 2025-03-05 22:00:00 | CLOSE_LONG | CZCE.FG505 | Vol: 1 | Price: 1196.00 | Comm: 0.00 | PnL: -11.00\n",
" 2025-03-11 21:15:00 | BUY | CZCE.FG505 | Vol: 1 | Price: 1169.00 | Comm: 0.00\n",
" 2025-03-11 22:00:00 | CLOSE_LONG | CZCE.FG505 | Vol: 1 | Price: 1159.00 | Comm: 0.00 | PnL: -10.00\n",
" 2025-03-14 21:30:00 | SELL | CZCE.FG505 | Vol: 1 | Price: 1165.00 | Comm: 0.00\n",
" 2025-03-17 14:45:00 | CLOSE_SHORT | CZCE.FG505 | Vol: 1 | Price: 1170.00 | Comm: 0.00 | PnL: -5.00\n",
" 2025-03-24 09:45:00 | SELL | CZCE.FG505 | Vol: 1 | Price: 1216.00 | Comm: 0.00\n",
" 2025-03-25 10:30:00 | CLOSE_SHORT | CZCE.FG505 | Vol: 1 | Price: 1230.00 | Comm: 0.00 | PnL: -14.00\n",
" 2025-03-25 21:00:00 | BUY | CZCE.FG505 | Vol: 1 | Price: 1262.00 | Comm: 0.00\n",
" 2025-03-25 22:00:00 | CLOSE_LONG | CZCE.FG505 | Vol: 1 | Price: 1255.00 | Comm: 0.00 | PnL: -7.00\n",
" 2025-03-28 22:45:00 | BUY | CZCE.FG505 | Vol: 1 | Price: 1181.00 | Comm: 0.00\n",
" 2025-03-31 10:30:00 | CLOSE_LONG | CZCE.FG505 | Vol: 1 | Price: 1180.00 | Comm: 0.00 | PnL: -1.00\n",
" 2025-03-31 22:00:00 | SELL | CZCE.FG505 | Vol: 1 | Price: 1213.00 | Comm: 0.00\n",
" 2025-04-01 22:00:00 | CLOSE_SHORT | CZCE.FG505 | Vol: 1 | Price: 1232.00 | Comm: 0.00 | PnL: -19.00\n",
" 2025-04-08 21:30:00 | SELL | CZCE.FG505 | Vol: 1 | Price: 1177.00 | Comm: 0.00\n",
" 2025-04-08 22:45:00 | CLOSE_SHORT | CZCE.FG505 | Vol: 1 | Price: 1171.00 | Comm: 0.00 | PnL: 6.00\n",
" 2025-04-16 21:15:00 | SELL | CZCE.FG509 | Vol: 1 | Price: 1170.00 | Comm: 0.00\n",
" 2025-04-17 10:45:00 | CLOSE_SHORT | CZCE.FG509 | Vol: 1 | Price: 1176.00 | Comm: 0.00 | PnL: -6.00\n",
" 2025-04-17 21:15:00 | SELL | CZCE.FG509 | Vol: 1 | Price: 1157.00 | Comm: 0.00\n",
" 2025-04-18 10:30:00 | CLOSE_SHORT | CZCE.FG509 | Vol: 1 | Price: 1138.00 | Comm: 0.00 | PnL: 19.00\n",
" 2025-04-18 21:45:00 | BUY | CZCE.FG509 | Vol: 1 | Price: 1116.00 | Comm: 0.00\n",
" 2025-04-21 10:45:00 | CLOSE_LONG | CZCE.FG509 | Vol: 1 | Price: 1129.00 | Comm: 0.00 | PnL: 13.00\n",
" 2025-04-23 09:15:00 | BUY | CZCE.FG509 | Vol: 1 | Price: 1157.00 | Comm: 0.00\n",
" 2025-04-23 10:00:00 | CLOSE_LONG | CZCE.FG509 | Vol: 1 | Price: 1149.00 | Comm: 0.00 | PnL: -8.00\n",
" 2025-05-06 09:15:00 | SELL | CZCE.FG509 | Vol: 1 | Price: 1073.00 | Comm: 0.00\n",
" 2025-05-06 11:00:00 | CLOSE_SHORT | CZCE.FG509 | Vol: 1 | Price: 1074.00 | Comm: 0.00 | PnL: -1.00\n",
" 2025-05-07 21:15:00 | SELL | CZCE.FG509 | Vol: 1 | Price: 1061.00 | Comm: 0.00\n",
" 2025-05-08 09:30:00 | CLOSE_SHORT | CZCE.FG509 | Vol: 1 | Price: 1050.00 | Comm: 0.00 | PnL: 11.00\n",
" 2025-05-13 21:45:00 | BUY | CZCE.FG509 | Vol: 1 | Price: 1033.00 | Comm: 0.00\n",
" 2025-05-14 09:30:00 | CLOSE_LONG | CZCE.FG509 | Vol: 1 | Price: 1038.00 | Comm: 0.00 | PnL: 5.00\n",
" 2025-05-21 14:45:00 | BUY | CZCE.FG509 | Vol: 1 | Price: 1032.00 | Comm: 0.00\n",
" 2025-05-21 22:00:00 | CLOSE_LONG | CZCE.FG509 | Vol: 1 | Price: 1031.00 | Comm: 0.00 | PnL: -1.00\n",
" 2025-05-22 22:00:00 | BUY | CZCE.FG509 | Vol: 1 | Price: 1002.00 | Comm: 0.00\n",
" 2025-05-23 10:45:00 | CLOSE_LONG | CZCE.FG509 | Vol: 1 | Price: 1006.00 | Comm: 0.00 | PnL: 4.00\n",
" 2025-05-23 21:00:00 | SELL | CZCE.FG509 | Vol: 1 | Price: 1000.00 | Comm: 0.00\n",
" 2025-05-26 09:45:00 | CLOSE_SHORT | CZCE.FG509 | Vol: 1 | Price: 1014.00 | Comm: 0.00 | PnL: -14.00\n",
" 2025-06-03 21:30:00 | BUY | CZCE.FG509 | Vol: 1 | Price: 965.00 | Comm: 0.00\n",
" 2025-06-03 22:45:00 | CLOSE_LONG | CZCE.FG509 | Vol: 1 | Price: 964.00 | Comm: 0.00 | PnL: -1.00\n",
" 2025-06-04 14:30:00 | SELL | CZCE.FG509 | Vol: 1 | Price: 987.00 | Comm: 0.00\n",
" 2025-06-05 10:45:00 | CLOSE_SHORT | CZCE.FG509 | Vol: 1 | Price: 962.00 | Comm: 0.00 | PnL: 25.00\n",
" 2025-06-13 09:15:00 | BUY | CZCE.FG509 | Vol: 1 | Price: 979.00 | Comm: 0.00\n",
" 2025-06-13 14:00:00 | CLOSE_LONG | CZCE.FG509 | Vol: 1 | Price: 982.00 | Comm: 0.00 | PnL: 3.00\n",
" 2025-06-16 09:15:00 | SELL | CZCE.FG509 | Vol: 1 | Price: 973.00 | Comm: 0.00\n",
" 2025-06-16 09:45:00 | CLOSE_SHORT | CZCE.FG509 | Vol: 1 | Price: 975.00 | Comm: 0.00 | PnL: -2.00\n",
" 2025-06-24 09:15:00 | BUY | CZCE.FG509 | Vol: 1 | Price: 1012.00 | Comm: 0.00\n",
" 2025-06-24 10:30:00 | CLOSE_LONG | CZCE.FG509 | Vol: 1 | Price: 1012.00 | Comm: 0.00 | PnL: 0.00\n",
" 2025-06-24 21:30:00 | BUY | CZCE.FG509 | Vol: 1 | Price: 1007.00 | Comm: 0.00\n",
" 2025-06-25 09:30:00 | CLOSE_LONG | CZCE.FG509 | Vol: 1 | Price: 1012.00 | Comm: 0.00 | PnL: 5.00\n",
" 2025-06-30 21:15:00 | SELL | CZCE.FG509 | Vol: 1 | Price: 1001.00 | Comm: 0.00\n",
" 2025-06-30 21:45:00 | CLOSE_SHORT | CZCE.FG509 | Vol: 1 | Price: 1001.00 | Comm: 0.00 | PnL: 0.00\n",
" 2025-07-02 10:45:00 | BUY | CZCE.FG509 | Vol: 1 | Price: 1013.00 | Comm: 0.00\n",
" 2025-07-02 22:00:00 | CLOSE_LONG | CZCE.FG509 | Vol: 1 | Price: 1048.00 | Comm: 0.00 | PnL: 35.00\n",
" 2025-07-08 13:45:00 | BUY | CZCE.FG509 | Vol: 1 | Price: 1033.00 | Comm: 0.00\n",
" 2025-07-08 14:45:00 | CLOSE_LONG | CZCE.FG509 | Vol: 1 | Price: 1025.00 | Comm: 0.00 | PnL: -8.00\n",
" 2025-07-09 21:15:00 | SELL | CZCE.FG509 | Vol: 1 | Price: 1036.00 | Comm: 0.00\n",
" 2025-07-11 21:30:00 | CLOSE_SHORT | CZCE.FG509 | Vol: 1 | Price: 1087.00 | Comm: 0.00 | PnL: -51.00\n",
" 2025-07-18 10:45:00 | SELL | CZCE.FG509 | Vol: 1 | Price: 1090.00 | Comm: 0.00\n",
" 2025-07-18 13:45:00 | CLOSE_SHORT | CZCE.FG509 | Vol: 1 | Price: 1087.00 | Comm: 0.00 | PnL: 3.00\n",
" 2025-07-18 21:15:00 | BUY | CZCE.FG509 | Vol: 1 | Price: 1116.00 | Comm: 0.00\n",
" 2025-07-21 10:45:00 | CLOSE_LONG | CZCE.FG509 | Vol: 1 | Price: 1164.00 | Comm: 0.00 | PnL: 48.00\n",
" 2025-07-22 13:45:00 | BUY | CZCE.FG509 | Vol: 1 | Price: 1220.00 | Comm: 0.00\n",
" 2025-07-22 22:15:00 | CLOSE_LONG | CZCE.FG509 | Vol: 1 | Price: 1234.00 | Comm: 0.00 | PnL: 14.00\n",
" 2025-07-25 21:15:00 | SELL | CZCE.FG509 | Vol: 1 | Price: 1330.00 | Comm: 0.00\n",
" 2025-07-28 09:45:00 | CLOSE_SHORT | CZCE.FG509 | Vol: 1 | Price: 1253.00 | Comm: 0.00 | PnL: 77.00\n",
"正在计算绩效指标...\n",
"total_return: 0.0037199999999999456, annualized_return:0.0016258005194040859, 252 / total_days:0.4375\n",
"绩效指标计算完成。\n",
"\n",
"--- 回测绩效报告 ---\n",
"初始资金 : 100000.00\n",
"最终资金 : 100372.00\n",
"总收益率 : 0.37%\n",
"年化收益率 : 0.16%\n",
"最大回撤 : 0.16%\n",
"夏普比率 : 0.32\n",
"卡玛比率 : 1.03\n",
"总交易次数 : 234\n",
"总实现盈亏 : 372.00\n",
"交易成本 : 0.00\n",
"\n",
"--- 交易详情 ---\n",
"盈利交易次数 : 52\n",
"亏损交易次数 : 61\n",
"胜率 : 46.02%\n",
"盈亏比 : 1.90\n",
"平均每次盈利 : 18.71\n",
"平均每次亏损 : -9.85\n",
"正在绘制绩效图表...\n"
]
},
{
"data": {
"text/plain": [
"<Figure size 1400x1000 with 2 Axes>"
],
"image/png": "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
},
"metadata": {},
"output_type": "display_data",
"jetTransient": {
"display_id": null
}
},
{
"data": {
"text/plain": [
"<Figure size 1400x700 with 1 Axes>"
],
"image/png": "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
},
"metadata": {},
"output_type": "display_data",
"jetTransient": {
"display_id": null
}
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"图表绘制完成。\n",
"{'初始资金': 100000.0, '最终资金': np.float64(100372.0), '总收益率': np.float64(0.0037199999999999456), '年化收益率': np.float64(0.0016258005194040859), '最大回撤': np.float64(0.0015844859887591183), '夏普比率': np.float64(0.3208694932492714), '卡玛比率': np.float64(1.0260744057934668), '总交易次数': 234, '交易成本': 0.0, '总实现盈亏': 372.0, '胜率': 0.46017699115044247, '盈亏比': 1.8991744528350183, '盈利交易次数': 52, '亏损交易次数': 61, '平均每次盈利': 18.71153846153846, '平均每次亏损': -9.852459016393443, 'initial_capital': 100000.0, 'final_capital': np.float64(100372.0), 'total_return': np.float64(0.0037199999999999456), 'annualized_return': np.float64(0.0016258005194040859), 'max_drawdown': np.float64(0.0015844859887591183), 'sharpe_ratio': np.float64(0.3208694932492714), 'calmar_ratio': np.float64(1.0260744057934668), 'sortino_ratio': np.float64(0.1910052165737694), 'total_trades': 234, 'transaction_costs': 0.0, 'total_realized_pnl': 372.0, 'win_rate': 0.46017699115044247, 'profit_loss_ratio': 1.8991744528350183, 'winning_trades_count': 52, 'losing_trades_count': 61, 'avg_profit_per_trade': 18.71153846153846, 'avg_loss_per_trade': -9.852459016393443}\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": 44
}
],
"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
}