Files
NewQuant/futures_trading_strategies/FG/AreaReversal/AreaReversalStrategy.ipynb

515 lines
261 KiB
Plaintext
Raw Normal View History

2025-11-07 16:37:16 +08:00
{
"cells": [
{
"cell_type": "code",
"id": "initial_id",
"metadata": {
"collapsed": true,
"ExecuteTime": {
"end_time": "2025-11-05T13:05:13.806965Z",
"start_time": "2025-11-05T13:05:13.789465Z"
}
},
"source": [
"from datetime import datetime\n",
"\n",
"import sys\n",
"\n",
"if '/mnt/d/PyProject/NewQuant/' not in sys.path:\n",
" sys.path.append('/mnt/d/PyProject/NewQuant/')\n",
"\n",
"from src.data_processing import load_raw_data\n",
"\n",
"%load_ext autoreload\n",
"%autoreload 2\n",
"\n",
"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 RSI, BollingerBandwidth, HistoricalRange, NormalizedATR, RateOfChange, \\\n",
" StochasticOscillator, ADX, Empty\n",
"\n",
"# --- 配置参数 ---\n",
"# 获取当前脚本所在目录,假设数据文件在项目根目录下的 data 文件夹内\n",
"data_file_path = 'D:/PyProject/NewQuant/data/data/KQ_m@CZCE_FG/KQ_m@CZCE_FG_min15.csv'\n",
"# data_file_path = \"/mnt/d/PyProject/NewQuant/data/data/KQ_m@DCE_m/KQ_m@DCE_m_min60.csv\"\n",
"# data_file_path = \"/mnt/d/PyProject/NewQuant/data/data/KQ_m@CZCE_FG/KQ_m@CZCE_FG_min15.csv\"\n",
"# data_file_path = \"/mnt/d/PyProject/NewQuant/data/data/KQ_m@DCE_m/KQ_m@DCE_m_min60.csv\""
],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The autoreload extension is already loaded. To reload it, use:\n",
" %reload_ext autoreload\n"
]
}
],
"execution_count": 5
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-11-05T13:05:13.828446Z",
"start_time": "2025-11-05T13:05:13.810447Z"
}
},
"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_FG', # 确保与数据文件中的 symbol 匹配\n",
"}\n",
"\n",
"# 回测时间范围\n",
"start_time = datetime(2021, 1, 1)\n",
"end_time = datetime(2024, 1, 1)\n",
"\n",
"# start_time = datetime(2024, 1, 1)\n",
"# end_time = datetime(2025, 8, 1)\n",
"\n",
"indicators = INDICATOR_LIST\n",
"indicators = []\n",
"\n",
"# 确保 DataManager 能够重置以进行多次回测\n",
"# data_manager.reset() # 首次运行不需要重置"
],
"id": "3686dee30354be0c",
"outputs": [],
"execution_count": 6
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-11-05T13:05:48.413024Z",
"start_time": "2025-11-05T13:05:13.832968Z"
}
},
"cell_type": "code",
"source": [
"from src.indicators.indicators import PriceRangeToVolatilityRatio\n",
"from src.indicators.base_indicators import CompositeIndicator\n",
"from src.strategies.AreaReversal.AreaReversalStrategy2 import AreaReversalStrategy\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': 'FG', # <-- 替换为你的交易品种代码,例如 'GC=F' (黄金期货), 'ZC=F' (玉米期货)\n",
" 'trade_volume': 1,\n",
" 'order_direction': ['SELL', 'BUY'],\n",
" 'ma_period': 5,\n",
" 'area_window': 11,\n",
" # 'indicators': [BollingerBandwidth(20, 2.0, 1.8, 5), BollingerBandwidth(20, 2.0, 1.8, 5),],\n",
" 'enable_log': False\n",
"}\n",
"\n",
"# --- 2. 初始化回测引擎并运行 ---\n",
"print(\"\\n初始化回测引擎...\")\n",
"engine = BacktestEngine(\n",
" data_manager=data_manager,\n",
" strategy_class=AreaReversalStrategy, # <--- 更改为您的 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\"]"
],
"id": "5d32105e37d922bd",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"初始化数据管理器...\n",
"数据加载成功: D:/PyProject/NewQuant/data/data/KQ_m@CZCE_FG/KQ_m@CZCE_FG_min15.csv\n",
"数据范围从 2020-12-31 14:45:00 到 2025-10-24 14:30:00\n",
"总计 26508 条记录。\n",
"\n",
"初始化回测引擎...\n",
"模拟器初始化:初始资金=100000.00, 滑点率=0.0, 佣金率=0.0\n",
"内存仓储已初始化管理ID: 'src.strategies.AreaReversal.AreaReversalStrategy2.AreaReversalStrategy_130a92cc4b57b5ef1f26d01ef8c40af3'\n",
"\n",
"--- 回测引擎初始化完成 ---\n",
" 策略: AreaReversalStrategy\n",
" 初始资金: 100000.00\n",
" 换月模式: 启用\n",
"\n",
"开始运行回测...\n",
"\n",
"--- 回测开始 ---\n",
"AreaReversalStrategy 策略初始化回调被调用。\n",
"开始将 DataFrame 转换为 Bar 对象流...\n",
"Bar 对象流生成完毕。\n",
"\n",
"--- 回测结束,检查并平仓所有剩余持仓 ---\n",
"--- 回测结束 ---\n",
"总计处理了 16561 根K线。\n",
"总计发生了 146 笔交易。\n",
"最终总净值: 100643.00\n",
"总收益率: 0.64%\n",
"\n",
"回测运行完毕。\n"
]
}
],
"execution_count": 7
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-11-05T13:05:48.777717Z",
"start_time": "2025-11-05T13:05:48.423885Z"
}
},
"cell_type": "code",
"source": [
"\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": "bf9f049302f9bfdf",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"--- 结果分析器初始化完成 ---\n",
"\n",
"--- 交易明细 ---\n",
" 2021-02-25 09:45:00 | BUY | CZCE.FG105 | Vol: 1 | Price: 2027.00 | Comm: 0.00\n",
" 2021-02-26 09:15:00 | CLOSE_LONG | CZCE.FG105 | Vol: 1 | Price: 2031.00 | Comm: 0.00 | PnL: 4.00\n",
" 2021-03-03 09:00:00 | BUY | CZCE.FG105 | Vol: 1 | Price: 2147.00 | Comm: 0.00\n",
" 2021-03-03 13:45:00 | CLOSE_LONG | CZCE.FG105 | Vol: 1 | Price: 2104.00 | Comm: 0.00 | PnL: -43.00\n",
" 2021-03-11 09:00:00 | SELL | CZCE.FG105 | Vol: 1 | Price: 1968.00 | Comm: 0.00\n",
" 2021-03-11 14:00:00 | CLOSE_SHORT | CZCE.FG105 | Vol: 1 | Price: 1968.00 | Comm: 0.00 | PnL: 0.00\n",
" 2021-03-17 22:15:00 | BUY | CZCE.FG105 | Vol: 1 | Price: 2075.00 | Comm: 0.00\n",
" 2021-03-19 13:45:00 | CLOSE_LONG | CZCE.FG105 | Vol: 1 | Price: 2068.00 | Comm: 0.00 | PnL: -7.00\n",
" 2021-03-26 22:30:00 | BUY | CZCE.FG105 | Vol: 1 | Price: 2130.00 | Comm: 0.00\n",
" 2021-03-29 09:45:00 | CLOSE_LONG | CZCE.FG105 | Vol: 1 | Price: 2114.00 | Comm: 0.00 | PnL: -16.00\n",
" 2021-04-01 22:45:00 | SELL | CZCE.FG105 | Vol: 1 | Price: 2089.00 | Comm: 0.00\n",
" 2021-04-02 10:00:00 | CLOSE_SHORT | CZCE.FG105 | Vol: 1 | Price: 2120.00 | Comm: 0.00 | PnL: -31.00\n",
" 2021-04-09 14:30:00 | SELL | CZCE.FG109 | Vol: 1 | Price: 2096.00 | Comm: 0.00\n",
" 2021-04-09 22:00:00 | CLOSE_SHORT | CZCE.FG109 | Vol: 1 | Price: 2116.00 | Comm: 0.00 | PnL: -20.00\n",
" 2021-04-12 21:15:00 | BUY | CZCE.FG109 | Vol: 1 | Price: 2138.00 | Comm: 0.00\n",
" 2021-05-13 13:30:00 | CLOSE_LONG | CZCE.FG109 | Vol: 1 | Price: 2834.00 | Comm: 0.00 | PnL: 696.00\n",
" 2021-06-15 10:00:00 | SELL | CZCE.FG109 | Vol: 1 | Price: 2660.00 | Comm: 0.00\n",
" 2021-06-17 21:30:00 | CLOSE_SHORT | CZCE.FG109 | Vol: 1 | Price: 2654.00 | Comm: 0.00 | PnL: 6.00\n",
" 2021-06-21 21:15:00 | SELL | CZCE.FG109 | Vol: 1 | Price: 2609.00 | Comm: 0.00\n",
" 2021-06-22 13:30:00 | CLOSE_SHORT | CZCE.FG109 | Vol: 1 | Price: 2661.00 | Comm: 0.00 | PnL: -52.00\n",
" 2021-06-23 22:30:00 | BUY | CZCE.FG109 | Vol: 1 | Price: 2747.00 | Comm: 0.00\n",
" 2021-07-19 21:15:00 | CLOSE_LONG | CZCE.FG109 | Vol: 1 | Price: 3004.00 | Comm: 0.00 | PnL: 257.00\n",
" 2021-07-19 21:30:00 | SELL | CZCE.FG109 | Vol: 1 | Price: 3019.00 | Comm: 0.00\n",
" 2021-07-20 21:15:00 | CLOSE_SHORT | CZCE.FG109 | Vol: 1 | Price: 3064.00 | Comm: 0.00 | PnL: -45.00\n",
" 2021-07-30 22:45:00 | SELL | CZCE.FG201 | Vol: 1 | Price: 2830.00 | Comm: 0.00\n",
" 2021-08-10 09:15:00 | CLOSE_SHORT | CZCE.FG201 | Vol: 1 | Price: 2824.00 | Comm: 0.00 | PnL: 6.00\n",
" 2021-08-10 14:00:00 | BUY | CZCE.FG201 | Vol: 1 | Price: 2849.00 | Comm: 0.00\n",
" 2021-08-11 13:45:00 | CLOSE_LONG | CZCE.FG201 | Vol: 1 | Price: 2849.00 | Comm: 0.00 | PnL: 0.00\n",
" 2021-08-19 09:15:00 | SELL | CZCE.FG201 | Vol: 1 | Price: 2627.00 | Comm: 0.00\n",
" 2021-08-19 14:30:00 | CLOSE_SHORT | CZCE.FG201 | Vol: 1 | Price: 2680.00 | Comm: 0.00 | PnL: -53.00\n",
" 2021-09-03 21:30:00 | BUY | CZCE.FG201 | Vol: 1 | Price: 2747.00 | Comm: 0.00\n",
" 2021-09-03 22:45:00 | CLOSE_LONG | CZCE.FG201 | Vol: 1 | Price: 2715.00 | Comm: 0.00 | PnL: -32.00\n",
" 2021-09-09 09:00:00 | SELL | CZCE.FG201 | Vol: 1 | Price: 2536.00 | Comm: 0.00\n",
" 2021-09-09 13:45:00 | CLOSE_SHORT | CZCE.FG201 | Vol: 1 | Price: 2571.00 | Comm: 0.00 | PnL: -35.00\n",
" 2021-10-13 14:30:00 | BUY | CZCE.FG201 | Vol: 1 | Price: 2475.00 | Comm: 0.00\n",
" 2021-10-13 22:00:00 | CLOSE_LONG | CZCE.FG201 | Vol: 1 | Price: 2376.00 | Comm: 0.00 | PnL: -99.00\n",
" 2021-10-28 09:15:00 | SELL | CZCE.FG201 | Vol: 1 | Price: 1854.00 | Comm: 0.00\n",
" 2021-11-24 13:45:00 | CLOSE_SHORT | CZCE.FG201 | Vol: 1 | Price: 1787.00 | Comm: 0.00 | PnL: 67.00\n",
" 2021-11-30 10:00:00 | SELL | CZCE.FG201 | Vol: 1 | Price: 1839.00 | Comm: 0.00\n",
" 2021-11-30 22:00:00 | CLOSE_SHORT | CZCE.FG201 | Vol: 1 | Price: 1867.00 | Comm: 0.00 | PnL: -28.00\n",
" 2021-12-02 14:15:00 | BUY | CZCE.FG201 | Vol: 1 | Price: 1942.00 | Comm: 0.00\n",
" 2021-12-03 14:30:00 | CLOSE_LONG | CZCE.FG201 | Vol: 1 | Price: 1938.00 | Comm: 0.00 | PnL: -4.00\n",
" 2021-12-20 09:00:00 | BUY | CZCE.FG205 | Vol: 1 | Price: 1876.00 | Comm: 0.00\n",
" 2021-12-20 09:30:00 | CLOSE_LONG | CZCE.FG205 | Vol: 1 | Price: 1839.00 | Comm: 0.00 | PnL: -37.00\n",
" 2021-12-20 10:30:00 | SELL | CZCE.FG205 | Vol: 1 | Price: 1814.00 | Comm: 0.00\n",
" 2021-12-21 14:30:00 | CLOSE_SHORT | CZCE.FG205 | Vol: 1 | Price: 1826.00 | Comm: 0.00 | PnL: -12.00\n",
" 2021-12-31 10:45:00 | SELL | CZCE.FG205 | Vol: 1 | Price: 1690.00 | Comm: 0.00\n",
" 2021-12-31 14:30:00 | CLOSE_SHORT | CZCE.FG205 | Vol: 1 | Price: 1720.00 | Comm: 0.00 | PnL: -30.00\n",
" 2022-01-13 22:15:00 | BUY | CZCE.FG205 | Vol: 1 | Price: 2034.00 | Comm: 0.00\n",
" 2022-01-24 22:30:00 | CLOSE_LONG | CZCE.FG205 | Vol: 1 | Price: 2066.00 | Comm: 0.00 | PnL: 32.00\n",
" 2022-02-11 13:30:00 | SELL | CZCE.FG205 | Vol: 1 | Price: 2271.00 | Comm: 0.00\n",
" 2022-02-14 09:15:00 | CLOSE_SHORT | CZCE.FG205 | Vol: 1 | Price: 2265.00 | Comm: 0.00 | PnL: 6.00\n",
" 2022-02-17 09:15:00 | SELL | CZCE.FG205 | Vol: 1 | Price: 2100.00 | Comm: 0.00\n",
" 2022-02-18 13:45:00 | CLOSE_SHORT | CZCE.FG205 | Vol: 1 | Price: 2102.00 | Comm: 0.00 | PnL: -2.00\n",
" 2022-02-25 11:00:00 | SELL | CZCE.FG205 | Vol: 1 | Price: 1918.00 | Comm: 0.00\n",
" 2022-02-25 21:15:00 | CLOSE_SHORT | CZCE.FG205 | Vol: 1 | Price: 1915.00 | Comm: 0.00 | PnL: 3.00\n",
" 2022-03-02 14:15:00 | SELL | CZCE.FG205 | Vol: 1 | Price: 1919.00 | Comm: 0.00\n",
" 2022-03-03 22:15:00 | CLOSE_SHORT | CZCE.FG205 | Vol: 1 | Price: 1941.00 | Comm: 0.00 | PnL: -22.00\n",
" 2022-04-07 09:15:00 | SELL | CZCE.FG209 | Vol: 1 | Price: 2014.00 | Comm: 0.00\n",
" 2022-04-08 14:30:00 | CLOSE_SHORT | CZCE.FG209 | Vol: 1 | Price: 2041.00 | Comm: 0.00 | PnL: -27.00\n",
" 2022-04-12 11:15:00 | BUY | CZCE.FG209 | Vol: 1 | Price: 2076.00 | Comm: 0.00\n",
" 2022-04-13 09:30:00 | CLOSE_LONG | CZCE.FG209 | Vol: 1 | Price: 2046.00 | Comm: 0.00 | PnL: -30.00\n",
" 2022-04-20 14:30:00 | SELL | CZCE.FG209 | Vol: 1 | Price: 2065.00 | Comm: 0.00\n",
" 2022-04-20 22:00:00 | CLOSE_SHORT | CZCE.FG209 | Vol: 1 | Price: 2091.00 | Comm: 0.00 | PnL: -26.00\n",
" 2022-06-23 14:30:00 | BUY | CZCE.FG209 | Vol: 1 | Price: 1656.00 | Comm: 0.00\n",
" 2022-06-24 09:15:00 | CLOSE_LONG | CZCE.FG209 | Vol: 1 | Price: 1638.00 | Comm: 0.00 | PnL: -18.00\n",
" 2022-06-28 11:00:00 | SELL | CZCE.FG209 | Vol: 1 | Price: 1634.00 | Comm: 0.00\n",
" 2022-06-28 14:15:00 | CLOSE_SHORT | CZCE.FG209 | Vol: 1 | Price: 1653.00 | Comm: 0.00 | PnL: -19.00\n",
" 2022-06-28 14:45:00 | BUY | CZCE.FG209 | Vol: 1 | Price: 1654.00 | Comm: 0.00\n",
" 2022-06-30 14:45:00 | CLOSE_LONG | CZCE.FG209 | Vol: 1 | Price: 1659.00 | Comm: 0.00 | PnL: 5.00\n",
" 2022-07-22 22:45:00 | BUY | CZCE.FG209 | Vol: 1 | Price: 1437.00 | Comm: 0.00\n",
" 2022-08-09 14:45:00 | CLOSE_LONG | CZCE.FG209 | Vol: 1 | Price: 1579.00 | Comm: 0.00 | PnL: 142.00\n",
" 2022-08-11 21:15:00 | BUY | CZCE.FG301 | Vol: 1 | Price: 1591.00 | Comm: 0.00\n",
" 2022-08-12 10:30:00 | CLOSE_LONG | CZCE.FG301 | Vol: 1 | Price: 1566.00 | Comm: 0.00 | PnL: -25.00\n",
" 2022-08-15 14:15:00 | SELL | CZCE.FG301 | Vol: 1 | Price: 1533.00 | Comm: 0.00\n",
" 2022-09-07 22:30:00 | CLOSE_SHORT | CZCE.FG301 | Vol: 1 | Price: 1491.00 | Comm: 0.00 | PnL: 42.00\n",
" 2022-10-13 21:15:00 | SELL | CZCE.FG301 | Vol: 1 | Price: 1508.00 | Comm: 0.00\n",
" 2022-10-14 09:45:00 | CLOSE_SHORT | CZCE.FG301 | Vol: 1 | Price: 1523.00 | Comm: 0.00 | PnL: -15.00\n",
" 2022-10-19 21:15:00 | SELL | CZCE.FG301 | Vol: 1 | Price: 1458.00 | Comm: 0.00\n",
" 2022-10-21 10:30:00 | CLOSE_SHORT | CZCE.FG301 | Vol: 1 | Price: 1467.00 | Comm: 0.00 | PnL: -9.00\n",
" 2022-10-24 10:00:00 | SELL | CZCE.FG301 | Vol: 1 | Price: 1452.00 | Comm: 0.00\n",
" 2022-11-04 11:15:00 | CLOSE_SHORT | CZCE.FG301 | Vol: 1 | Price: 1395.00 | Comm: 0.00 | PnL: 57.00\n",
" 2022-11-28 09:45:00 | SELL | CZCE.FG301 | Vol: 1 | Price: 1400.00 | Comm: 0.00\n",
" 2022-12-01 09:30:00 | CLOSE_SHORT | CZCE.FG301 | Vol: 1 | Price: 1405.00 | Comm: 0.00 | PnL: -5.00\n",
" 2022-12-09 09:30:00 | BUY | CZCE.FG301 | Vol: 1 | Price: 1420.00 | Comm: 0.00\n",
" 2022-12-09 14:45:00 | CLOSE_LONG | CZCE.FG301 | Vol: 1 | Price: 1442.00 | Comm: 0.00 | PnL: 22.00\n",
" 2022-12-27 10:30:00 | BUY | CZCE.FG305 | Vol: 1 | Price: 1630.00 | Comm: 0.00\n",
" 2022-12-28 09:00:00 | CLOSE_LONG | CZCE.FG305 | Vol: 1 | Price: 1620.00 | Comm: 0.00 | PnL: -10.00\n",
" 2023-01-18 21:30:00 | BUY | CZCE.FG305 | Vol: 1 | Price: 1732.00 | Comm: 0.00\n",
" 2023-01-19 14:00:00 | CLOSE_LONG | CZCE.FG305 | Vol: 1 | Price: 1732.00 | Comm: 0.00 | PnL: 0.00\n",
" 2023-02-20 22:30:00 | BUY | CZCE.FG305 | Vol: 1 | Price: 1554.00 | Comm: 0.00\n",
" 2023-02-21 21:15:00 | CLOSE_LONG | CZCE.FG305 | Vol: 1 | Price: 1550.00 | Comm: 0.00 | PnL: -4.00\n",
" 2023-02-22 22:30:00 | BUY | CZCE.FG305 | Vol: 1 | Price: 1548.00 | Comm: 0.00\n",
" 2023-02-23 21:15:00 | CLOSE_LONG | CZCE.FG305 | Vol: 1 | Price: 1543.00 | Comm: 0.00 | PnL: -5.00\n",
" 2023-02-28 22:45:00 | SELL | CZCE.FG305 | Vol: 1 | Price: 1508.00 | Comm: 0.00\n",
" 2023-03-01 10:00:00 | CLOSE_SHORT | CZCE.FG305 | Vol: 1 | Price: 1519.00 | Comm: 0.00 | PnL: -11.00\n",
" 2023-03-01 11:00:00 | BUY | CZCE.FG305 | Vol: 1 | Price: 1528.00 | Comm: 0.00\n",
" 2023-03-09 09:30:00 | CLOSE_LONG | CZCE.FG305 | Vol: 1 | Price: 1559.00 | Comm: 0.00 | PnL: 31.00\n",
" 2023-03-10 09:00:00 | BUY | CZCE.FG305 | Vol: 1 | Price: 1597.00 | Comm: 0.00\n",
" 2023-03-10 10:30:00 | CLOSE_LONG | CZCE.FG305 | Vol: 1 | Price: 1584.00 | Comm: 0.00 | PnL: -13.00\n",
" 2023-03-15 21:45:00 | SELL | CZCE.FG305 | Vol: 1 | Price: 1613.00 | Comm: 0.00\n",
" 2023-03-22 21:15:00 | CLOSE_SHORT | CZCE.FG305 | Vol: 1 | Price: 1603.00 | Comm: 0.00 | PnL: 10.00\n",
" 2023-04-14 10:00:00 | BUY | CZCE.FG309 | Vol: 1 | Price: 1701.00 | Comm: 0.00\n",
" 2023-04-21 11:15:00 | CLOSE_LONG | CZCE.FG309 | Vol: 1 | Price: 1826.00 | Comm: 0.00 | PnL: 125.00\n",
" 2023-04-26 22:30:00 | SELL | CZCE.FG309 | Vol: 1 | Price: 1777.00 | Comm: 0.00\n",
" 2023-04-28 10:45:00 | CLOSE_SHORT | CZCE.FG309 | Vol: 1 | Price: 1776.00 | Comm: 0.00 | PnL: 1.00\n",
" 2023-05-04 13:45:00 | SELL | CZCE.FG309 | Vol: 1 | Price: 1742.00 | Comm: 0.00\n",
" 2023-05-05 21:00:00 | CLOSE_SHORT | CZCE.FG309 | Vol: 1 | Price: 1757.00 | Comm: 0.00 | PnL: -15.00\n",
" 2023-05-08 10:45:00 | SELL | CZCE.FG309 | Vol: 1 | Price: 1716.00 | Comm: 0.00\n",
" 2023-06-02 13:45:00 | CLOSE_SHORT | CZCE.FG309 | Vol: 1 | Price: 1521.00 | Comm: 0.00 | PnL: 195.00\n",
" 2023-06-12 14:30:00 | SELL | CZCE.FG309 | Vol: 1 | Price: 1557.00 | Comm: 0.00\n",
" 2023-06-13 09:30:00 | CLOSE_SHORT | CZCE.FG309 | Vol: 1 | Price: 1597.00 | Comm: 0.00 | PnL: -40.00\n",
" 2023-06-19 10:00:00 | SELL | CZCE.FG309 | Vol: 1 | Price: 1529.00 | Comm: 0.00\n",
" 2023-06-29 21:30:00 | CLOSE_SHORT | CZCE.FG309 | Vol: 1 | Price: 1530.00 | Comm: 0.00 | PnL: -1.00\n",
" 2023-07-20 11:00:00 | SELL | CZCE.FG309 | Vol: 1 | Price: 1700.00 | Comm: 0.00\n",
" 2023-07-26 09:15:00 | CLOSE_SHORT | CZCE.FG309 | Vol: 1 | Price: 1713.00 | Comm: 0.00 | PnL: -13.00\n",
" 2023-08-04 09:15:00 | BUY | CZCE.FG309 | Vol: 1 | Price: 1855.00 | Comm: 0.00\n",
" 2023-08-04 21:15:00 | CLOSE_LONG | CZCE.FG309 | Vol: 1 | Price: 1825.00 | Comm: 0.00 | PnL: -30.00\n",
" 2023-08-16 10:30:00 | SELL | CZCE.FG401 | Vol: 1 | Price: 1533.00 | Comm: 0.00\n",
" 2023-08-16 14:30:00 | CLOSE_SHORT | CZCE.FG401 | Vol: 1 | Price: 1560.00 | Comm: 0.00 | PnL: -27.00\n",
" 2023-08-21 14:45:00 | BUY | CZCE.FG401 | Vol: 1 | Price: 1667.00 | Comm: 0.00\n",
" 2023-08-21 21:45:00 | CLOSE_LONG | CZCE.FG401 | Vol: 1 | Price: 1624.00 | Comm: 0.00 | PnL: -43.00\n",
" 2023-08-24 22:30:00 | SELL | CZCE.FG401 | Vol: 1 | Price: 1597.00 | Comm: 0.00\n",
" 2023-08-25 09:45:00 | CLOSE_SHORT | CZCE.FG401 | Vol: 1 | Price: 1629.00 | Comm: 0.00 | PnL: -32.00\n",
" 2023-08-30 09:00:00 | BUY | CZCE.FG401 | Vol: 1 | Price: 1666.00 | Comm: 0.00\n",
" 2023-09-08 13:30:00 | CLOSE_LONG | CZCE.FG401 | Vol: 1 | Price: 1726.00 | Comm: 0.00 | PnL: 60.00\n",
" 2023-09-13 14:30:00 | SELL | CZCE.FG401 | Vol: 1 | Price: 1685.00 | Comm: 0.00\n",
" 2023-09-13 21:15:00 | CLOSE_SHORT | CZCE.FG401 | Vol: 1 | Price: 1715.00 | Comm: 0.00 | PnL: -30.00\n",
" 2023-09-22 10:00:00 | BUY | CZCE.FG401 | Vol: 1 | Price: 1737.00 | Comm: 0.00\n",
" 2023-09-22 22:30:00 | CLOSE_LONG | CZCE.FG401 | Vol: 1 | Price: 1717.00 | Comm: 0.00 | PnL: -20.00\n",
" 2023-09-25 10:30:00 | SELL | CZCE.FG401 | Vol: 1 | Price: 1690.00 | Comm: 0.00\n",
" 2023-09-27 11:00:00 | CLOSE_SHORT | CZCE.FG401 | Vol: 1 | Price: 1702.00 | Comm: 0.00 | PnL: -12.00\n",
" 2023-10-26 21:00:00 | BUY | CZCE.FG401 | Vol: 1 | Price: 1620.00 | Comm: 0.00\n",
" 2023-10-27 09:30:00 | CLOSE_LONG | CZCE.FG401 | Vol: 1 | Price: 1607.00 | Comm: 0.00 | PnL: -13.00\n",
" 2023-11-09 22:45:00 | BUY | CZCE.FG401 | Vol: 1 | Price: 1760.00 | Comm: 0.00\n",
" 2023-11-10 10:45:00 | CLOSE_LONG | CZCE.FG401 | Vol: 1 | Price: 1736.00 | Comm: 0.00 | PnL: -24.00\n",
" 2023-11-21 14:30:00 | SELL | CZCE.FG401 | Vol: 1 | Price: 1745.00 | Comm: 0.00\n",
" 2023-11-21 21:30:00 | CLOSE_SHORT | CZCE.FG401 | Vol: 1 | Price: 1773.00 | Comm: 0.00 | PnL: -28.00\n",
" 2023-12-01 14:30:00 | BUY | CZCE.FG401 | Vol: 1 | Price: 1886.00 | Comm: 0.00\n",
" 2023-12-04 09:45:00 | CLOSE_LONG | CZCE.FG401 | Vol: 1 | Price: 1908.00 | Comm: 0.00 | PnL: 22.00\n",
" 2023-12-13 13:45:00 | SELL | CZCE.FG405 | Vol: 1 | Price: 1816.00 | Comm: 0.00\n",
" 2023-12-13 21:45:00 | CLOSE_SHORT | CZCE.FG405 | Vol: 1 | Price: 1839.00 | Comm: 0.00 | PnL: -23.00\n",
" 2023-12-15 22:45:00 | SELL | CZCE.FG405 | Vol: 1 | Price: 1781.00 | Comm: 0.00\n",
" 2023-12-19 10:30:00 | CLOSE_SHORT | CZCE.FG405 | Vol: 1 | Price: 1803.00 | Comm: 0.00 | PnL: -22.00\n",
" 2023-12-21 14:00:00 | BUY | CZCE.FG405 | Vol: 1 | Price: 1865.00 | Comm: 0.00\n",
" 2023-12-22 22:00:00 | CLOSE_LONG | CZCE.FG405 | Vol: 1 | Price: 1877.00 | Comm: 0.00 | PnL: 12.00\n",
"正在计算绩效指标...\n",
"total_return: 0.006429999999999936, annualized_return:0.0014842710261055991, 252 / total_days:0.23140495867768596\n",
"绩效指标计算完成。\n",
"\n",
"--- 回测绩效报告 ---\n",
"初始资金 : 100000.00\n",
"最终资金 : 100643.00\n",
"总收益率 : 0.64%\n",
"年化收益率 : 0.15%\n",
"最大回撤 : 0.55%\n",
"夏普比率 : 0.13\n",
"卡玛比率 : 0.27\n",
"总交易次数 : 146\n",
"总实现盈亏 : 643.00\n",
"交易成本 : 0.00\n",
"\n",
"--- 交易详情 ---\n",
"盈利交易次数 : 22\n",
"亏损交易次数 : 48\n",
"胜率 : 31.43%\n",
"盈亏比 : 3.39\n",
"平均每次盈利 : 81.86\n",
"平均每次亏损 : -24.12\n",
"正在绘制绩效图表...\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[autoreload of src.strategies.AreaReversal.AreaReversalStrategy2 failed: Traceback (most recent call last):\n",
" File \"D:\\Python\\conda\\envs\\quant\\Lib\\site-packages\\IPython\\extensions\\autoreload.py\", line 322, in check\n",
" elif self.deduper_reloader.maybe_reload_module(m):\n",
" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
" File \"D:\\Python\\conda\\envs\\quant\\Lib\\site-packages\\IPython\\extensions\\deduperreload\\deduperreload.py\", line 545, in maybe_reload_module\n",
" new_source_code = f.read()\n",
" ^^^^^^^^\n",
"UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 348: illegal multibyte sequence\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": "iVBORw0KGgoAAAANSUhEUgAABW0AAAKyCAYAAACuWPzHAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3QeYHHX5wPF3dvd6zd2lJySUkFBDIIRO6KCoICCKSpEuTQWUJkhRkI6AgEgvwl9AQAFR6b2T0CGNEELqXa63LfN/3rmbrbN3u3t7t+37eZ5kp+9vZ2fndt955/0ZpmmaAgAAAAAAAADICq5MNwAAAAAAAAAAEELQFgAAAAAAAACyCEFbAAAAAAAAAMgiBG0BAAAAAAAAIIsQtAUAAAAAAACALELQFgAAAAAAAACyCEFbAAAAAAAAAMgiBG0BAAAAAAAAIIsQtAUAACgQpmlmuglAzsi1z0uutRcAAAyMoC0AAMPszTfflOnTp8see+wx6LK6jC6r6wyXXXfd1XqOr7/+etieQ7ev/3w+X0rrH3744db6r732mmSbc88912rb5ptvLo2NjZIrnnjiCTn99NNTWvfjjz+Wiy++WL773e/KNttsI1tuuaXsu+++ctFFF8mXX34Z95g/7LDDJBfZn8Pof5tssonMmjVL9ttvP/nd734nX331Vc4f14FAQI444gg57rjjHOd3dHTIQw89JEcddZTstttu1nG/3XbbWeOPPPKI+P1+yUevvPKKHH300ZILVq1aJWeeeaa88cYbw/YcS5cuTfjvWPixHv1Pj5+dd95ZTj755Kz6HKj29narbddee22mmwIAgMXT9wAAAIDBdHZ2yr///W8pKSmRnp4eK2h1/PHHZ/2Oe/vtt+WMM86QrbfeOqn19DVedtll8sADD1jjG264oWy77bbi9Xrl888/l7/97W9WQO+KK66Qb3/725JvdtxxR6mvr4/IZOzq6pJPP/1UHnzwQSsQfuedd1pB7Fx1++23y3vvvSdPPvlkzLx33nnHCgauWLFCqqqqZOONN5YtttjCGtfA/Ouvv259Bv76179KRUWF5ItvvvlGjjnmGBk7dqzkgl//+tfW+3HQQQdJttGLHJMmTQqO9/b2WkHm5557Tp555hn57W9/awV4s0FlZaV1vJ9zzjnWxU29QAUAQCYRtAUAAFnn8ssvt4JjEyZMkGyiAVsN3B577LFy1113yf/93/9ZGYqGYUg202zKZGmA8tRTT5UXX3xRNt10UyurNjw4qYHbe++91wrYatBIg3q77LKL5JMTTzzRyiqNphnk5513njz22GNW0Omf//xnTh7Xy5cvlxtvvNHKiJ4yZUrEPA3kHnnkkdax88tf/tLKxg0PzC5atMi6EPDuu+/KCSecYB0L2f45GM7PSyZlc1mEQw891DGYbB9f+pnYZ599siZAfsABB1jnds2k18+3x8PPZQBA5lAeAQAAZB0NamlWZ1lZmWSTf/zjH9bj/vvvLzvssINVYuLll1+WfKRZtBqw1ffh7rvvjskmLSoqsm4f14CdBjGvuuoqKRQayNEyGW6328o4TrRMQrYd19dff70VfI8uA6AXJjTjUN/XCy+8UH7+85/HZNLq67jtttuktrbWyuTWrEkgUZr1v9dee1nH3wsvvJA1O04vPOhFuQULFsijjz6a6eYAAAocQVsAALLcDTfcYNUC1KCIBtF++tOfWrec6o9evYVXM92c6K3LP/vZz6zb2WfPni2/+tWvrNt+49HalJo5+oMf/MDavv774Q9/aAUqozO5dJq2STOStP6fPocuH69mqtZC1eW1TqSTCy64wJpv/0h2qv1pT2tubpZ77rlHvvOd71iBRL2FXW9njffannrqKfnRj35k3eo6Z84cK2tw2bJlVk3OZGr7ak1HvV1cMxI18/R73/ueNd0uHeBEbwPW1/atb33Laqs+v2YsOmVmtra2Wllnuq+22morq73a7vvvv9+xNrCWLtDb0rUdM2fOtJbXbettx+HOPvtsa7qd3aavOZHbkfW9VfqeVldXx11Oj0HdH/qvqalp0O0uXLhQfvOb31hZuXZ9S83U1elOGY+awanZerrv9HVqwFwDxOvWrYv7fuvr0/2hy9uZcxocSqeamhrrn7JrG9u1fP/whz9Y7dZjU9vw4x//2Hot8Wra6i3j2kbNSNTPkV4Q0PfspZdeGrbXuHLlSvnXv/4lO+20k4wfPz5i3n//+18rC1ffU9338TQ0NFgBX22vZhBHn0/02D344IOt41n/6fB9990XczyH77fFixfLaaedZmU462dG94mWYIhXg1QzhfVcoNvXY0qzo+fNmxez7JIlS6zPotZi1mV12xo01Axy/ZyGn2/33HNPa1inO9VxXb16tVxyySXWdD2G9X3W8+sXX3wR87ypnLe6u7utshv6+dfjfrPNNpPtt9/eyuoPP4fquUu3/dZbb1njer6PromezHld6TQt/fH973/f2k9aJkA/b9qmdBs3blywbnK0p59+2io9o8en7mM91vVY1GMqOhPa3se6//VzoyU89Lyin5PwrPC9997b2pbuS922/j11opm/ejFCL0pkcxYzACD/cb8HAAA5Qm/V/N///idTp061fshqJpD+gNcf6BoI0R/YNq0zev7551tZQxqw1aCbZoRqgFez6KJpEOWUU06R559/3rrNXQPCmk2owQANLOjjH//4x5j1NGCpAVBtT1tbm9U2Jxqs0dqo+hr0x3R0wErLDmgmn3bwNBi9HV0D2Br40ICCZvlpAEIDYVpjVNtv01v3tWZncXGxFQTSzEjN6tIOewYKRDqxA0caIFMaANAaiPrDXwNgdgDCpoG8Qw45xArwaC1Q7cSppaXFaq++ZxoE1vIDSgMiP/nJT6ygw3rrrWftIw2C6bLvv/++fPjhhxH7X4NVGqD54IMPpK6uzgpC6H60t63vpb1tDdJo8En3jy6r75VmSQ5En0+zR/U92X333QdcVvdjohlpGlDWoLkGnDXIoseZBtM0iK2Bwuuuuy7i+fQYfvjhh60Air4Off/mz59vBaufffZZ63jS+sI2DcppgKq0tNQ6PvRY0GNejz0NgN5yyy3WsZAO+v7aQerocgf6XPr+asBNP4M63+VyzpXQgJUGPjXQqEFgOwCqnzl9L/U16bGR7tf4+OOPWwE9O0AZTj+PSusUD1byQDOt9V84fX81KKafMz2G9LOn29HXo8FOfe/+8pe/xLRTA/caXNT3VN9vDXTq8a9ZzfrZCc8I1mNab6/X42f06NFWwFbfEz2H6Wfyz3/+czDYqhdbNHtS96sGQPW8odvTY0kzyvWcoAFs/TzrcanBXD3HaEa0DuvnxvbZZ59Z7dDn0gs4+rnWtmiAUF+XBn3nzp2b8nlL951emNPPoL4u/YzovtOMbn1/9TyugWptV3l5uXWRR7eh7dFjRwPp+i/V8/pZZ51lHRu6bd2eHUDWbaTbRx99ZD2G/+1Sv//9762LHrr/tc36vujnSd8v/afnJm1/ND3n6edJ979uWwO0GrDVY0qnazBXOxPUc7IeI/rv0ksvtf4+hdPjUs/B+r7oZ0v/hgIAkBEmAAAYVm+88Ya58cYbm7vvvvugy+oyuqyuY7v++uutafrvjjvuMAOBgDXd7/ebp512mjX91FNPDS7/zTffmFtuuaW5+eabR2ynsbHRPPDAA4PbWrZsWcxzHHHEEdZytjVr1gTX+fvf/x6c/sgjjwS389RTTwWna5uUPc/r9Qafe7PNNjNnzpxptre3R7zmJ5980lr23HPPDU776U9/ak179dVXY6ZttdVWEa9r3bp15t57723Nu++++4LTX3/9dWvazjvvbC5cuDA4/euvvw4uH70f4vH5fOYuu+xizpgxw9q/tvPPP9/axp/+9KeYdW688UZr3tVXXx0xff78+da+0Peoq6vLmvboo49ay55xxhnB91ctXbrU3Hbbba15X331VXD6WWedZU07/fTTzY6OjuD0JUuWBI+h8H1nH4M/+tGPzEQ89thj1vK6z1Ph9HyrV6+23rvp06eb//jHPyKWf+ihh6zps2bNMleuXGl
},
"metadata": {},
"output_type": "display_data",
"jetTransient": {
"display_id": null
}
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"图表绘制完成。\n",
"{'初始资金': 100000.0, '最终资金': np.float64(100643.0), '总收益率': np.float64(0.006429999999999936), '年化收益率': np.float64(0.0014842710261055991), '最大回撤': np.float64(0.0054687035606015575), '夏普比率': np.float64(0.13319589849531982), '卡玛比率': np.float64(0.2714118638279836), '总交易次数': 146, '交易成本': 0.0, '总实现盈亏': 643.0, '胜率': 0.3142857142857143, '盈亏比': 3.3933113518605746, '盈利交易次数': 22, '亏损交易次数': 48, '平均每次盈利': 81.86363636363636, '平均每次亏损': -24.125, 'initial_capital': 100000.0, 'final_capital': np.float64(100643.0), 'total_return': np.float64(0.006429999999999936), 'annualized_return': np.float64(0.0014842710261055991), 'max_drawdown': np.float64(0.0054687035606015575), 'sharpe_ratio': np.float64(0.13319589849531982), 'calmar_ratio': np.float64(0.2714118638279836), 'sortino_ratio': np.float64(0.09299374998590813), 'total_trades': 146, 'transaction_costs': 0.0, 'total_realized_pnl': 643.0, 'win_rate': 0.3142857142857143, 'profit_loss_ratio': 3.3933113518605746, 'winning_trades_count': 22, 'losing_trades_count': 48, 'avg_profit_per_trade': 81.86363636363636, 'avg_loss_per_trade': -24.125}\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": 8
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}