MAPatternStrategy_v002_核心逻辑.md 9.2 KB

均线形态交易策略 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. 跳空幅度检查(第二部分,可选)

  • 选项Ag.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
  • 选项Bg.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):

  • 选项Ag.check_intraday_spread = False):
    • 跳过日内价差检查,直接通过验证
  • 选项Bg.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
  • 最终价格验证:价格回归到前日开盘收盘均值
  • 适用场景:捕捉回调后的均值回归行情