# 均线形态交易策略 v002 核心逻辑详解 ## 概述 本策略基于均线走势(前提条件)+ K线形态(跳空、价格验证)的期货交易策略,通过两阶段筛选和执行机制进行交易。 --- ## 开仓逻辑结构总览 开仓验证包含两个独立阶段,每个阶段都有明确的检查项: ### 第一阶段:均线走势和跳空检查 **位置**:`check_ma_trend_and_open_gap`函数 **目的**:筛选出符合均线趋势要求且满足跳空条件的品种 **检查内容**: 1. 均线贴近度 2. 极端趋势过滤 3. 均线排列模式 4. 历史模式一致性 5. **跳空方向检查**(必选)- 趋势跟随或逆势操作 6. **跳空幅度检查**(可选)- 是否达到阈值 ### 第二阶段:最终价格验证和开仓 **位置**:`check_open_and_stop`函数 **目的**:对候选品种进行最终价格验证,确认开仓时机 **检查内容**: - **策略1**:可选的日内价差检查 - **策略2**:强制的日内变化阈值检查 - **策略3**:价格回归到前日开盘收盘均值检查 --- ## 详细逻辑说明 开仓验证包含两个独立阶段,每个阶段都有明确的检查项: --- ### 第一阶段:均线走势和跳空检查(函数:check_ma_trend_and_open_gap) #### 执行时间点 - **夜盘开盘**:21:05:00(仅检查21:00开盘的品种) - **日盘早盘**:09:05:00(检查21:00和09:00开盘的品种) - **日盘晚开**:09:35:00(检查所有品种,包括09:30开盘的) #### 筛选条件(必须全部满足) **1. 均线贴近度检查** - 统计过去10天收盘价贴近各均线的次数 - MA5贴近次数 + MA10贴近次数 ≥ 8次(`g.ma_proximity_min_threshold = 8`) - 贴近定义为:收盘价距离某条均线最近的均线 **2. 极端趋势过滤** - 统计过去10天收盘价在所有均线上方/下方的天数 - 过滤条件:min(上方天数, 下方天数) ≥ 4天(`g.ma_pattern_extreme_days_threshold = 4`) - 如果多空极端趋势同时出现且都达到阈值,则跳过该品种 **3. 均线排列模式检查** - **多头模式**:满足以下任一模式 - MA30 ≤ MA20 ≤ MA10 ≤ MA5 - MA30 ≤ MA20 ≤ MA5 ≤ MA10 - **空头模式**:满足以下任一模式 - MA10 ≤ MA5 ≤ MA20 ≤ MA30 - MA5 ≤ MA10 ≤ MA20 ≤ MA30 **4. 历史均线模式一致性检查** - 检查过去10天的均线模式一致性 - 一致性比例 ≥ 80%(`g.ma_pattern_consistency_threshold = 0.8`) - 即10天中至少有8天符合当前方向的均线排列 **5. 跳空方向检查**(第一部分,必选) - **策略1 - 趋势跟随**(`g.ma_gap_strategy_mode = 1`): - 看涨趋势:必须向上跳空(开盘价 > 昨收价) - 看跌趋势:必须向下跳空(开盘价 < 昨收价) - **策略2 - 逆势操作**(`g.ma_gap_strategy_mode = 2`): - 看涨趋势:必须向下跳空(开盘价 < 昨收价) - 看跌趋势:必须向上跳空(开盘价 > 昨收价) - **策略3 - 逆势操作**(`g.ma_gap_strategy_mode = 3`): - 看涨趋势:必须向下跳空(开盘价 < 昨收价) - 看跌趋势:必须向上跳空(开盘价 > 昨收价) **6. 跳空幅度检查**(第二部分,可选) - **选项A**(`g.check_gap_magnitude = True`):检查跳空幅度与阈值比较 - 策略1:`|开盘价差比例| >= 0.2%`(`g.ma_open_gap_threshold = 0.002`) - 策略2/3:`|开盘价差比例| >= 0.2%`(`g.ma_open_gap_threshold2 = 0.002`) - **选项B**(`g.check_gap_magnitude = False`):不验证跳空幅度,只要方向正确即可 #### 通过条件后的处理 - 将品种加入候选列表 `g.daily_ma_candidates` - 记录方向、开盘价、昨收价、前一日开盘价、均线值等信息 --- ### 第二阶段:最终价格验证和开仓执行(函数:check_open_and_stop) #### 执行时间点 **夜盘**:21:05, 21:35, 22:05, 22:35 **日盘**:09:05, 09:35, 10:05, 10:35, 11:05, 11:25, 13:35, 14:05, 14:35, 14:55 #### 开仓前最后一道关卡:最终价格验证 在每个时间点,对候选列表中的品种进行最终价格验证检查: **策略1 - 趋势跟随**(`g.ma_gap_strategy_mode = 1`): - **选项A**(`g.check_intraday_spread = False`): - 跳过日内价差检查,直接通过验证 - **选项B**(`g.check_intraday_spread = True`): - 看涨趋势:当天价差 > 0(当前价 > 开盘价) - 看跌趋势:当天价差 < 0(当前价 < 开盘价) **策略2 - 逆势操作+强制阈值**(`g.ma_gap_strategy_mode = 2`): - 看涨趋势:当天变化比例 ≥ +0.5%(`g.ma_intraday_threshold_scheme2 = 0.005`) - 看跌趋势:当天变化比例 ≤ -0.5% - 说明:确保价格在下跳后有足够的反弹幅度 **策略3 - 逆势操作+价格回归**(`g.ma_gap_strategy_mode = 3`): - 看涨趋势:当前价格 ≥ (前一日开盘价 + 前一日收盘价) / 2 - 看跌趋势:当前价格 ≤ (前一日开盘价 + 前一日收盘价) / 2 - 说明:确保价格在下跳后回归到前一日开盘收盘均值附近 #### 开仓执行流程 1. 计算目标手数: - 单手保证金 = 当前价 × 合约乘数 × 保证金比例 - 最大开仓手数 = min(最大保证金限制/单手保证金, 可用资金×80%/单手保证金) - 单个标的最大持仓保证金限制:20,000元(`g.max_margin_per_position = 20000`) 2. 执行开仓并记录交易信息 3. 从候选列表中移除已开仓品种 #### 止损止盈检查 在完成开仓检查后,同时检查所有持仓的止损止盈条件(详见下方止损止盈逻辑部分) --- ## 止损逻辑 ### 执行时间点 与开仓检查同步执行(第二阶段的所有时间点) ### 止损条件 1. **固定止损** - 亏损比例 ≤ -1%(`g.fixed_stop_loss_rate = 0.01`) - 计算公式: - 多头:`(当前价 - 开仓价) / 开仓价` - 空头:`(开仓价 - 当前价) / 开仓价` - 触发后立即平仓,防止损失扩大 2. **交易时间适配性检查** - 夜盘时间只检查支持夜盘交易的品种 - 无夜盘品种在夜盘时间跳过止损检查 --- ## 止盈逻辑 ### 执行时间点 与开仓检查和止损检查同步执行(第二阶段的所有时间点) **建仓交易日内跳过动态止盈检查** ### 止盈策略:均线跟踪止盈 #### 启用条件 - 持仓超过建仓交易日 - 均线跟踪功能启用(`ma_trailing_enabled = True`) - 特殊情况:多头开仓价 < MA5时禁用均线跟踪 #### 动态止盈参数选择 1. **时间相关偏移量**: - 14:55之后:偏移量 1%(`g.ma_offset_ratio_close = 0.01`) - 其他时间:偏移量 0.3%(`g.ma_offset_ratio_normal = 0.003`) 2. **均线选择逻辑**: - 持仓天数 ≤ 4天(`g.days_for_adjustment = 4`):使用MA5 - 持仓天数 > 4天: - 当日变化率 ≥ 1.2倍日均变化率:使用MA5 - 当日变化率 < 1.2倍日均变化率:使用MA10 - 波动剧烈时(当日变化率 ≥ 1.5倍日均变化率):强制使用MA5 #### 止盈触发条件 1. **计算调整后均线值**: - 多头:调整后均线值 = 均线值 × (1 - 偏移量) - 空头:调整后均线值 = 均线值 × (1 + 偏移量) 2. **触发条件**: - 多头:当前价 < 调整后均线值 - 空头:当前价 > 调整后均线值 3. **平仓执行**: - 触发条件后立即平仓 - 记录止盈原因:使用的均线、均线值、调整后值、当前价、持仓天数 --- ## 其他重要机制 ### 自动换月移仓 - 在每次策略执行前检查 - 当主力合约发生变化时自动移仓 - 考虑涨跌停板限制,避免极端情况下的移仓失败 ### 缓存机制 - **排除缓存**:记录当日不符合条件的合约,避免重复检查 - **均线检查缓存**:记录每个品种在交易日的均线检查状态 - **候选列表**:存储通过第一阶段检查的候选品种 ### 风险控制参数 - 最大资金使用比例:80%(`g.usage_percentage = 0.8`) - 单个标的最大持仓保证金:20,000元 - 固定止损比例:1% - 均线贴近度最低要求:8次 - 极端趋势过滤阈值:4天 - 历史一致性要求:80% ### 策略参数配置 **基础参数** - 均线周期:[5, 10, 20, 30] - 历史数据天数:60天(确保足够计算MA30) - 历史均线模式检查天数:10天 **三种策略模式**(`g.ma_gap_strategy_mode`) **策略1 - 趋势跟随**: - 跳空方向:与趋势一致(看涨上跳/看跌下跳) - 跳空幅度:可选检查(`g.check_gap_magnitude`) - 最终价格验证:日内价差可选检查(`g.check_intraday_spread`) - 适用场景:追随趋势方向的强势突破 **策略2 - 逆势操作+强制阈值**: - 跳空方向:与趋势相反(看涨下跳/看跌上跳) - 跳空幅度:可选检查(`g.check_gap_magnitude`) - 最终价格验证:强制日内变化阈值≥0.5%(`g.ma_intraday_threshold_scheme2`) - 适用场景:捕捉回调后的强力反弹 **策略3 - 逆势操作+价格回归**: - 跳空方向:与趋势相反(看涨下跳/看跌上跳) - 跳空幅度:可选检查(`g.check_gap_magnitude`) - 最终价格验证:价格回归到前日开盘收盘均值 - 适用场景:捕捉回调后的均值回归行情