# 期货交易工具逻辑文档 ## 1. 交易训练工具 (trading_training_tool.py) ### 功能概述 交易训练工具是一个用于训练交易决策能力的交互式工具。它从交易记录中随机选择一笔开仓交易,只显示历史K线数据和当天的部分信息(当天收盘价被替换为实际成交价),让用户判断是否开仓,然后显示包含未来20天数据的完整K线图,并记录用户的决策结果。 ### 核心逻辑流程 #### 1.1 数据准备阶段 1. **读取交易数据** - 从CSV文件读取所有交易记录 - 支持多种编码格式(utf-8, gbk, gb2312等) - 自动识别文件编码 2. **加载历史处理记录** - 读取已存在的训练结果文件(training_results.csv) - 提取已处理的交易对ID列表,避免重复处理 3. **提取开仓交易** - 遍历所有交易记录,筛选出开仓交易(交易类型以"开"开头) - 提取合约代码、交易日期、成交价、方向等关键信息 - 跳过已处理的交易对 - 计算对应的平仓盈亏(考虑连续交易对ID的情况) #### 1.2 随机选择机制 - **完全随机选择**:使用random.shuffle打乱交易列表,然后随机选择 - **避免重复**:通过已处理的交易对ID列表确保不重复选择 - **显示统计**:显示剩余未处理的交易数量 #### 1.3 K线数据处理 1. **获取完整数据** - 获取历史100天 + 未来20天的完整K线数据 - 包含开高低收价格和5/10/20/30日均线 2. **部分K线图生成** - 截取历史数据+当天数据 - 将当天收盘价替换为实际成交价 - 生成只有历史信息的K线图 3. **完整K线图生成** - 使用原始数据(不修改当天收盘价) - 显示历史和未来20天的完整走势 - 用灰色背景标注未来数据区域 #### 1.4 用户交互 1. **显示交易信息** - 合约代码 - 交易日期 - 交易方向(多头/空头) - 成交价 2. **获取用户决策** - 提示用户输入'y'(开仓)或'n'(不开仓) - 循环验证输入直到获得有效决策 #### 1.5 结果记录 1. **计算判定收益** - 用户判定开仓:判定收益 = 实际平仓盈亏 - 用户判定不开仓:判定收益 = -实际平仓盈亏 2. **记录格式** - 包含原始交易信息(日期、时间、标的、类型、数量、价格) - 平仓盈亏(可能合并连续交易对) - 用户判定(开仓/不开仓) - 判定收益 - 交易对ID和连续交易对ID ### 特殊处理逻辑 #### 连续交易对ID处理 - 如果记录包含有效的连续交易对ID(非'N/A'),则合并所有同一连续交易对ID的平仓盈亏 - 这允许处理跨期换月等连续持仓的情况 #### 日期和时间处理 - 支持多种日期格式(YYYY-MM-DD, DD/MM/YYYY等) - 夜盘交易处理:委托时间>=21:00的交易,实际交易日为下一个交易日 - 使用JoinQuant的get_trade_days获取准确的交易日历 #### 合约代码提取 - 从"标的"列的括号中提取标准合约代码(如:"豆粕2501(DM2501)" -> "DM2501") - 自动添加交易所后缀(如.XDCE) ### 配置参数 所有参数集中在CONFIG字典中: - `csv_filename`: 输入交易记录文件名 - `result_filename`: 输出结果文件名 - `history_days`: 历史数据天数(默认100) - `future_days`: 未来数据天数(默认20) - `output_dir`: 图片输出目录 - `show_plots`: 是否显示图片 - `plot_dpi`: 图片分辨率 - `random_seed`: 随机数种子(确保可重复性) ### 输出文件 1. **训练结果CSV**(training_results.csv) - 追加模式写入,保留所有历史记录 - UTF-8编码,支持中文 2. **K线图片**(training_images/目录) - partial_*.png: 部分K线图 - full_*.png: 完整K线图 ### 使用场景 - 交易决策训练:通过历史数据练习判断开仓时机 - 策略验证:验证人工判断与策略信号的一致性 - 交易复盘:分析决策质量,改进交易技能 ## 2. K线复原工具 (kline_reconstruction.py) ### 功能概述 (待补充详细逻辑说明) ### 核心功能 - 从交易记录中提取所有开仓交易 - 为每个开仓交易生成对应的K线图 - 包含均线和技术指标 - 批量生成并打包成ZIP文件 --- *注:本文档主要介绍交易训练工具的详细逻辑,其他工具的逻辑说明将逐步补充。*