均线形态交易策略 v002 核心逻辑详解
概述
本策略基于均线走势(前提条件)+ K线形态(跳空、价格验证)的期货交易策略,通过两阶段筛选和执行机制进行交易。
开仓逻辑结构总览
开仓验证包含两个独立阶段,每个阶段都有明确的检查项:
第一阶段:均线走势和跳空检查
位置:check_ma_trend_and_open_gap函数
目的:筛选出符合均线趋势要求且满足跳空条件的品种
检查内容:
- 均线贴近度
- 极端趋势过滤
- 均线排列模式
- 历史模式一致性
- 跳空方向检查(必选)- 趋势跟随或逆势操作
- 跳空幅度检查(可选)- 是否达到阈值
第二阶段:最终价格验证和开仓
位置: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
- 说明:确保价格在下跳后回归到前一日开盘收盘均值附近
开仓执行流程
- 计算目标手数:
- 单手保证金 = 当前价 × 合约乘数 × 保证金比例
- 最大开仓手数 = min(最大保证金限制/单手保证金, 可用资金×80%/单手保证金)
- 单个标的最大持仓保证金限制:20,000元(
g.max_margin_per_position = 20000)
- 执行开仓并记录交易信息
- 从候选列表中移除已开仓品种
止损止盈检查
在完成开仓检查后,同时检查所有持仓的止损止盈条件(详见下方止损止盈逻辑部分)
止损逻辑
执行时间点
与开仓检查同步执行(第二阶段的所有时间点)
止损条件
固定止损
- 亏损比例 ≤ -1%(
g.fixed_stop_loss_rate = 0.01)
- 计算公式:
- 多头:
(当前价 - 开仓价) / 开仓价
- 空头:
(开仓价 - 当前价) / 开仓价
- 触发后立即平仓,防止损失扩大
交易时间适配性检查
- 夜盘时间只检查支持夜盘交易的品种
- 无夜盘品种在夜盘时间跳过止损检查
止盈逻辑
执行时间点
与开仓检查和止损检查同步执行(第二阶段的所有时间点)
建仓交易日内跳过动态止盈检查
止盈策略:均线跟踪止盈
启用条件
- 持仓超过建仓交易日
- 均线跟踪功能启用(
ma_trailing_enabled = True)
- 特殊情况:多头开仓价 < MA5时禁用均线跟踪
动态止盈参数选择
时间相关偏移量:
- 14:55之后:偏移量 1%(
g.ma_offset_ratio_close = 0.01)
- 其他时间:偏移量 0.3%(
g.ma_offset_ratio_normal = 0.003)
均线选择逻辑:
- 持仓天数 ≤ 4天(
g.days_for_adjustment = 4):使用MA5
- 持仓天数 > 4天:
- 当日变化率 ≥ 1.2倍日均变化率:使用MA5
- 当日变化率 < 1.2倍日均变化率:使用MA10
- 波动剧烈时(当日变化率 ≥ 1.5倍日均变化率):强制使用MA5
止盈触发条件
计算调整后均线值:
- 多头:调整后均线值 = 均线值 × (1 - 偏移量)
- 空头:调整后均线值 = 均线值 × (1 + 偏移量)
触发条件:
- 多头:当前价 < 调整后均线值
- 空头:当前价 > 调整后均线值
平仓执行:
- 触发条件后立即平仓
- 记录止盈原因:使用的均线、均线值、调整后值、当前价、持仓天数
其他重要机制
自动换月移仓
- 在每次策略执行前检查
- 当主力合约发生变化时自动移仓
- 考虑涨跌停板限制,避免极端情况下的移仓失败
缓存机制
- 排除缓存:记录当日不符合条件的合约,避免重复检查
- 均线检查缓存:记录每个品种在交易日的均线检查状态
- 候选列表:存储通过第一阶段检查的候选品种
风险控制参数
- 最大资金使用比例: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)
- 最终价格验证:价格回归到前日开盘收盘均值
- 适用场景:捕捉回调后的均值回归行情