返回 Skill 列表
extension
分类: 数据与分析无需 API Key

MA20 均线趋势跟踪策略分析器

MA20 均线趋势跟踪策略分析器 — 对任意指数 / ETF(A股 / 港股 / 美股)做结构化策略可行性分析。量化"价格>MA20且均线向上→买入/持有;跌破MA20→卖出"规则,输出五段式报告(逻辑评估 / 风险分析 / 回测建议 / 指数特性对比与适配度 / 优化建议),并附可直接调用的 MA20 信号计算函数与数据采集路径。当用户问"XX指数适合均线趋势跟踪吗""帮我分析XX的MA20策略""均线策略在XX上表现会怎样"时激活。

person作者: user_0d959560hubcommunity

MA20 趋势跟踪策略分析器

把"价格位于 MA20 上方且均线平行向上 → 买入/持有;跌破 MA20 → 立即卖出"这套右侧顺势规则,套到任意指数 / ETF 上做结构化可行性分析。核心信条:先量化规则,再谈适配;适配度取决于"趋势性 / 波动性"比值

本 skill 来自实战:曾用其对创业板指(399006)、科创50(000688)、纳斯达克100(NDX) 做完整对比分析,结论可复用。本 skill 只做分析,不做实盘喊单。


When to Activate

  • 用户要分析某指数 / ETF 是否适合 MA20 均线趋势跟踪策略
  • 用户要评估"价格>MA20且上行→买;跌破MA20→卖"规则在某标的上的可行性
  • 用户要对比多个指数对趋势策略的适配度
  • 用户要给某指数写均线策略的回测方案 / 优化方案
  • 关键词:MA20、20日均线、趋势跟踪、均线策略、指数适配度、趋势策略回测、跌破均线卖出

一、策略规则量化定义(分析前必明确)

原规则的"平行向上趋势"是主观描述,必须转化为可计算信号,否则分析不可复现、回测无意义。

| 原表述 | 量化定义 | 说明 | |--------|----------|------| | 位于 MA20 上方 | close > MA20 | 用收盘价而非盘中价,过滤毛刺 | | 与 MA20 平行向上 | MA20_t > MA20_{t-1}(斜率向上)<br>更严格:(MA20_t - MA20_{t-20}) / MA20_{t-20} > 阈值(默认 0.5%) | "平行"=价格与均线同步上行、非背离;斜率阈值需回测标定 | | 买入 / 持有 | 满足上述两条件 → 持仓;否则空仓 | 无加仓规则,单信号满仓/空仓 | | 跌破 MA20 下方 | close < MA20 → 次日开盘(或收盘)卖出 | 关键决策:用盘中价触发更提前但假信号多;用收盘价确认更稳但回撤更大。默认推荐收盘价确认 |

信号三态(贯穿全分析):

  • 多头:价>MA20 且均线上行 → 持仓持有 / 空仓买入
  • 弱势:价<MA20 → 卖出 / 空仓观望
  • 震荡:价在MA20附近 且均线走平 → 观望

二、分析框架(五步结构化输出)

对任一标的,固定输出以下五段。每段结论必须有数字支撑(波动率 / 回撤 / 斜率阈值等),禁止纯叙述。

2.1 策略逻辑评估

  • 买入/卖出规则合理性(均线=平均持仓成本,右侧顺势逻辑自洽)
  • 优点 / 缺点对照表(机械可回溯、顺势控回撤 vs 滞后、单指标脆弱、震荡磨损、无仓位管理)
  • 适用市场环境表:单边上行(极佳) / 单边下行(良好,空仓避险) / 宽幅震荡(差) / 高波动急涨跌(中性偏差)

2.2 风险分析

  • 最大回撤:策略不消除回撤只控制回撤;跳空暴跌时单笔回撤可达 10%~20%+(高波动标的尤甚)
  • 假突破(whipsaw):MA20 周期短→对噪声敏感;假突破频率排序:高波动 > 低波动
  • 震荡市表现:胜率~30%~40%,靠少数大趋势盈利;踏空反弹、滞后成本、交易成本、样本/幸存偏差

2.3 回测建议(多市场差异)

  • 给出预期表现差异的方向性判断(基于波动/趋势特征推导),明确标注"非精确回测数值"
  • 落地要求:用统一时点日线实跑,输出 年化收益 / 最大回撤 / 胜率 / 换手 / 夏普

2.4 指数特性对比与适配度

必填维度表(对照分析时逐列填充): | 维度 | 标的A | 标的B | ... | |------|-------|-------|-----| | 年化波动率 | | | | 历史最大回撤 | | | | 长期年化收益 | | | | 行业集中度 | | | | 历史长度 | | | | 趋势性/波动性比 | | | | 策略适配度(星级) | | |

适配度排序依据:趋势越平滑、波动噪声越低 → MA20 假突破越少 → 趋势策略越有效。

2.5 优化建议(三级)

  • 必做(基础加固):量化斜率阈值 + 收盘价确认 + 初始硬止损(-6%~-8%) + 移动止盈
  • 推荐(提升胜率):ATR 动态止损(波动越高止损越宽)、成交量确认、多周期确认(日线+周线多头排列)、ADX>25 趋势过滤
  • 进阶:双均线系统(MA20↔MA60 金叉死叉)、风险平价仓位(波动率越高仓位越低)、参数标定+样本外验证防过拟合

三、数据采集路径(按市场,优先用已连连接器)

| 市场 | 首选工具 | 取数要点 | |------|----------|----------| | A股指数 | westock-mcp(腾讯自选股,已连) 或 a-stock-datatencent_quote / baidu_kline_with_ma | 实时报价取点位/涨跌幅/成交量;日线 K 线取近 60 根计算 MA20 与斜率(百度接口自带 ma20avgprice) | | 美股指数 | westock-mcpyfinance(需装) | NDX / QQQ 日线;注意时区(北京时间分析时用"上一收盘"口径) | | 港股指数 | westock-mcp | 恒生科技等 | | 特性数据 | WebSearch | 年化波动率、历史最大回撤、长期收益来自公开研报/Wind/iFinD,时点不一仅作特征参考,须标注来源 |

铁律:取不到真实数据明确报错,绝不编造点位。特性数据若跨多个时点,标注"[STALE]"或时点。


四、可复用计算函数(Python)

分析时直接调用,保证信号口径一致。

def ma20_signal(closes: list[float], price: float,
                slope_thresh: float = 0.5, name: str = "",
                chg_pct: float = 0.0, volume: str = "",
                data_date: str = "", base_pos: int = 60,
                risk: str = "") -> dict:
    """
    MA20 趋势信号计算(与策略框架一致)。
    closes: 至少 20 根收盘价序列(建议 40+ 以算斜率)
    price : 判定价(实时点位 或 最新收盘)
    slope_thresh: 均线斜率阈值%,默认 0.5
    返回结构化信号 dict。
    """
    if len(closes) < 20:
        return {"error": "收盘价不足20根,无法计算MA20"}
    ma20 = sum(closes[-20:]) / 20.0
    ma20_prev = sum(closes[-40:-20]) / 20.0 if len(closes) >= 40 else closes[-21]
    slope = (ma20 - ma20_prev) / ma20_prev * 100
    gap = (price - ma20) / ma20 * 100

    if price > ma20 and slope > slope_thresh:
        trend = "多头(价在MA20上方且均线上行)"
        action = "持有(已持仓)/ 买入(空仓)"
        pos = base_pos
    elif price < ma20:
        trend = "偏弱(价格跌破MA20)"
        action = "卖出 / 空仓观望"
        pos = 10
    else:
        trend = "震荡(价格贴近MA20、均线走平)"
        action = "观望"
        pos = int(base_pos * 0.5)

    return {
        "symbol": name, "point": round(price, 2), "chg_pct": round(chg_pct, 2),
        "volume": volume, "ma20": round(ma20, 2), "slope_pct": round(slope, 2),
        "gap_pct": round(gap, 2), "trend": trend, "action": action,
        "position_pct": pos, "risk": risk, "data_date": data_date,
    }

def adaptability_score(volatility: float, trend_smoothness: float = 1.0) -> float:
    """
    适配度粗评(0-100):趋势平滑度越高、波动越低 → 分越高。
    volatility: 年化波动率(%)
    trend_smoothness: 主观趋势平滑系数(0.5~1.5),纳指类给高、科创类给低
    """
    base = 100 - volatility * 1.6          # 波动每+1% 扣1.6分
    return max(0, min(100, base * trend_smoothness))

适配度星级换算:≥85→★★★★★, 70-84→★★★★, 55-69→★★★, 40-54→★★, <40→★。


五、输出模板(结构化 · 带时间戳)

【MA20趋势策略分析 · <指数名称>】 分析时间 <时间戳>
📌 核心结论:<一句话适配度判断>
1. 策略逻辑:<合理性 + 适用市环境>
2. 风险:最大回撤预期 <X%> | 假突破频率 <高/中/低> | 震荡市 <磨损程度>
3. 回测预期:年化≈<X%> | 最大回撤≈<X%> | 夏普 <vs 买入持有>
4. 特性:波动率 <X%> | 历史回撤 <X%> | 趋势/波动比 <高/中/低>
5. 适配度:<★★★☆☆> | 优化必做:<量化斜率+收盘确认+ATR止损>
💡 落地建议:<先用/主战场/谨慎 + 下一步回测>

六、量化参数库(回测标定参考,非固定值)

| 参数 | 默认 | 说明 | |------|------|------| | MA 周期 | 20 日 | 过短→噪声大;过长→滞后。可对比 MA10/MA60 | | 斜率阈值 | 20日变化率 > 0.5% | "上行"判定,需回测标定最优值 | | 初始止损 | -6%~-8% | 防止刚买就崩 | | ATR 止损 | 2~3 × ATR | 高波动标的(科创类)取宽(3×),低波动(纳指类)取窄(2×) | | ADX 过滤 | > 25 才参与 | 砍掉震荡磨损段 | | 多周期确认 | 日线金叉 + 周线 MA20/MA60 向上 | 过滤日线噪声 | | 双均线 | MA20↔MA60 金叉买/死叉卖 | 比单 MA20 换手低、假信号少 |


七、实战参考(创业板/科创50/纳指100 结论速览)

来自已完成的对比分析,作为新指数分析的对照基准:

| 指数 | 年化波动 | 历史最大回撤 | 趋势/波动比 | 适配度 | 关键风险 | |------|----------|--------------|-------------|--------|----------| | 纳斯达克100 (NDX) | ~20-24% | -82.9%(2000)/-35.6%(2022) | 高 | ★★★★☆ 最高 | 趋势平滑、假突破最少,三者最适 | | 创业板指 (399006) | ~26-32% | 近10年 -57% | 中高 | ★★★☆☆ 中高 | 历史长含牛熊,回测可信度高 | | 科创50 (000688) | ~29-40% | 近1年 -19%(样本短) | 中 | ★★★☆☆ 中等 | 半导体68%极集中、波动最高、样本短幸存偏差 |

分析心法:高波动标的(如科创50)务必叠加 ATR 宽止损 + ADX 过滤后再用,否则易被毛刺反复止损;趋势平滑标的(如纳指100)最适合练手与验证。


边界与原则

  • 不构成投资建议:所有分析末尾标注"本报告仅供参考,不构成投资建议"。
  • 数据不编造:真实数据取不到则报错;特性数据跨时点标注来源与时点。
  • 可复现优先:所有信号必须基于量化定义,不依赖主观"平行向上"描述。
  • 本 skill 只做策略分析,实盘/自动化监控请另见对应自动化任务配置。

参考实现:~/.workbuddy/skills/ma20-trend-analyzer/ 仅本 SKILL.md;配套分析底稿与监控自动化见用户项目目录 策略跟踪/