with one click
均线交叉策略。计算均线交叉点,生成买卖信号。用户说"均线策略"、"MA交叉"、"金叉死叉"时使用此 skill。
npx skills add https://github.com/jasonhu/xqshare --skill stock-strategy-ma-crossCopy and paste this command into Claude Code to install the skill
均线交叉策略。计算均线交叉点,生成买卖信号。用户说"均线策略"、"MA交叉"、"金叉死叉"时使用此 skill。
npx skills add https://github.com/jasonhu/xqshare --skill stock-strategy-ma-crossCopy and paste this command into Claude Code to install the skill
| name | stock-strategy-ma-cross |
| description | 均线交叉策略。计算均线交叉点,生成买卖信号。用户说"均线策略"、"MA交叉"、"金叉死叉"时使用此 skill。 |
当用户需要:
位置: 工作空间根目录 signals-ma-cross.md
格式示例:
# 均线交叉信号
## 策略参数
- 策略: ma_cross_enhanced
- 快线周期: 5
- 慢线周期: 10
- MA20周期: 20
- RSI周期: 14
- RSI超买阈值: 70
- RSI超卖阈值: 30
- 持续周期: 2
- K线周期: 5m
- 生成时间: 2026-03-05T15:00:00
## 信号列表
| 时间 | 代码 | 方向 | 价格 | MA20 | RSI | 持续周期 |
|------|------|------|------|------|-----|----------|
| 2026-03-05 14:35 | 000001.SZ | 买入 | 10.52 | 10.40 | 55.2 | 2 |
| 2026-03-06 10:00 | 000001.SZ | 卖出 | 10.85 | 10.92 | 68.5 | 2 |
| 参数 | 默认值 | 说明 |
|---|---|---|
| K线周期 | 5m | 5分钟K线 |
| 快线周期 | 5 | 短期均线周期 |
| 慢线周期 | 10 | 长期均线周期 |
| MA20 周期 | 20 | 趋势判断均线(可选) |
| RSI 周期 | 14 | RSI 计算周期 |
| RSI 超买阈值 | 70 | RSI 超买线(可选) |
| RSI 超卖阈值 | 30 | RSI 超卖线(可选) |
| 持续周期 | 2 | 信号确认周期(交叉后持续N根K线) |
⚠️ 持续周期说明:
支持的K线周期: 1d, 1m, 5m, 15m, 30m, 60m
基础金叉条件:
MA_fast[t-1] < MA_slow[t-1] 且 MA_fast[t] > MA_slow[t]
基础死叉条件:
MA_fast[t-1] > MA_slow[t-1] 且 MA_fast[t] < MA_slow[t]
为提高信号质量,减少假信号,策略采用多条件过滤:
要求交叉后的状态持续 >= N 根 K 线后才输出信号:
⚠️ 重要:正确的持续性确认逻辑
持续性确认是检查交叉后的K线,而不是交叉前的K线:
金叉发生时刻: T
确认检查: T+1, T+2, ..., T+N
输出信号时刻: T+N
关键点:
信号延迟输出机制:
| 时间点 | 事件 | 检查内容 | 输出 |
|---|---|---|---|
| T | 金叉发生 | 快线刚好上穿慢线 | 无输出(等待确认) |
| T+1 | 状态持续 | 快线 > 慢线 | 无输出 |
| T+2 | 状态持续 | 快线 > 慢线 | 输出买入信号(满足2周期) |
注意:输出的是"确认时刻"的信号,价格使用确认时刻的收盘价。
使用 RSI(14) 判断超买超卖状态:
1. 金叉发生:MA_fast[t-1] < MA_slow[t-1] 且 MA_fast[t] > MA_slow[t]
2. MA20 趋势过滤(可选):
- 价格 > MA20(当前在均线之上,趋势向上)
3. 持续性确认:
- 快线 > 慢线 的状态在交叉后已持续 >= N 根 K 线
- 即检查 T+1, T+2, ..., T+N 时刻的状态
4. RSI 辅助过滤(可选):
- RSI(14) < 70(非超买状态)
- RSI > 30 更佳(有反弹空间)
1. 死叉发生:MA_fast[t-1] > MA_slow[t-1] 且 MA_fast[t] < MA_slow[t]
2. MA20 趋势过滤(可选):
- 价格 < MA20(当前在均线之下,趋势向下)
3. 持续性确认:
- 快线 < 慢线 的状态在交叉后已持续 >= N 根 K 线
- 即检查 T+1, T+2, ..., T+N 时刻的状态
4. RSI 辅助过滤(可选):
- RSI(14) > 30(非超卖状态)
- RSI < 70 更佳(有下跌空间)
MA(n) = (P1 + P2 + ... + Pn) / n
其中 P 为收盘价,n 为周期。
RSI(n) = 100 - 100 / (1 + RS)
其中:
RS = 平均涨幅 / 平均跌幅
n = 14(默认周期)
计算步骤:
计算增强版均线交叉所需的最小 K 线数量:
数据量 = max(slow_period, 20) + sustain_period + RSI周期 + 缓冲
其中:
- slow_period: 慢线周期
- 20: MA20 周期
- sustain_period: 持续性确认周期(默认2)
- RSI周期: 14
- 缓冲: 建议 +10 根 K 线
示例(slow=10, sustain_period=2):
所需 K 线 = max(10, 20) + 2 + 14 + 10 = 20 + 2 + 14 + 10 = 46 根
推荐获取 = 46 × 1.5 ≈ 69 根
| slow_period | 最少 K 线数 | 推荐获取 |
|---|---|---|
| 5 | 46 | 69 |
| 10 | 46 | 69 |
| 20 | 56 | 84 |
| 指标 | 数据需求 | 说明 |
|---|---|---|
| MA(slow_period) | slow_period 根 K 线 | 计算慢线 |
| MA20 | 20 根 K 线 | 趋势过滤 |
| RSI(14) | 14 + 1 根 K 线 | 计算价格变化 |
| 持续性确认 | sustain_period 根 K 线 | 信号确认延迟(默认2) |
| 交叉检测 | 1 根 K 线 | 比较 t 和 t-1 |
| 总计 | max(slow_period, 20) + sustain_period + 15 | 含价格变化缓冲 |
根据 K 线周期和数据量计算 start_time:
| K线周期 | 每24小时K线数 | 计算公式 |
|---|---|---|
| 1d | 1 | N 天前 |
| 60m | 4 | N/4 天前(向上取整) |
| 30m | 8 | N/8 天前(向上取整) |
| 15m | 16 | N/16 天前(向上取整) |
| 5m | 48 | N/48 天前(向上取整) |
| 1m | 240 | N/240 天前(向上取整) |
示例(slow=10, sustain_period=2,推荐获取69根K线):
1d 周期:69 天前 → start_time = 当前日期 - 69天5m 周期:69/48 ≈ 2 天前 → start_time = 当前日期 - 2天日期格式:YYYYMMDD(如 20260305)
计算 start_time 的步骤:
bars_needed = max(slow_period, 20) + sustain_period + 14 + 10bars_recommended = bars_needed * 1.5days = ceil(bars_recommended / bars_per_day)当前日期 - days 天命令示例:
分析均线交叉 000001.SZMA策略 600519.SH --fast 5 --slow 10金叉死叉 300750.SZ --period 1d操作流程:
代码补全规则:
| 输入 | 补全为 |
|---|---|
000001 | 000001.SZ |
600000 | 600000.SH |
300750 | 300750.SZ |
交易所判断规则:
6 开头 → .SH(上海)0、3 开头 → .SZ(深圳)68 开头 → .SH(科创板)命令示例:查看均线信号、显示信号列表、列出买卖信号
操作流程:
命令示例:清除均线信号、清空信号、删除所有信号
操作流程:
确认格式:
⚠️ 危险操作检测!
操作类型:清除所有均线交叉信号
影响范围:将删除 signals-ma-cross.md 中的所有信号数据
风险评估:信号数据将被永久删除,无法恢复
请确认是否继续?
命令示例:导出信号、导出信号到CSV、信号导出
操作流程:
CSV 格式:
时间,代码,方向,价格,MA20,RSI,持续周期
2026-03-05 14:35,000001.SZ,买入,10.52,10.40,55.2,2
2026-03-06 10:00,000001.SZ,卖出,10.85,10.92,68.5,2
精确数据获取原则:仅获取计算所需的最小数据量,避免下载过多历史数据。
计算 start_time 的步骤:
bars_needed = slow_period * 3days = ceil(bars_needed / bars_per_day)当前日期 - days 天命令示例(假设 slow=10,当前日期 20260305):
# 5分钟K线,需要 69 根,约 2 天
xtdata download_history_data2 --stock-list "['000001.SZ']" --period "5m" --start-time "20260303"
# 日线,需要 69 根,69 天
xtdata download_history_data2 --stock-list "['000001.SZ']" --period "1d" --start-time "20251226"
动态计算模板:
bars_needed = max(slow_period, 20) + sustain_period + 14 + 10 # 最小需求
bars_recommended = bars_needed * 1.5 # 推荐数量
period=1d: start_time = today - ceil(bars_recommended / 1) (天)
period=60m: start_time = today - ceil(bars_recommended / 4) (天)
period=30m: start_time = today - ceil(bars_recommended / 8) (天)
period=15m: start_time = today - ceil(bars_recommended / 16) (天)
period=5m: start_time = today - ceil(bars_recommended / 48) (天)
period=1m: start_time = today - ceil(bars_recommended / 240) (天)
# 使用相同的 start_time 获取数据
xtdata get_market_data_ex --stock-list "['000001.SZ']" --period "5m" --start-time "20260304"
xtdata get_instrument_detail --stock-code "000001.SZ"
分析前应确保数据已下载:
推荐流程:
1. 计算数据量: bars_needed = max(slow_period, 20) + sustain_period + 14 + 10
2. 推荐数量: bars_recommended = bars_needed * 1.5
3. 计算 start_time: 根据 period 和 bars_recommended 推算
4. 优先获取数据: xtdata get_market_data_ex(直接查缓存)
5. 若数据不足: xtdata download_history_data2(下载缺失数据)
6. 计算 MA(快)、MA(慢)、MA20、RSI(14)
7. 检测交叉点并应用过滤条件
8. 生成信号并存储
示例(slow=10, sustain_period=2, period=5m, today=20260305):
bars_needed = max(10, 20) + 2 + 14 + 10 = 46 根K线
bars_recommended = 46 * 1.5 = 69 根
days = ceil(69 / 48) = 2 天
start_time = 20260305 - 2 = 20260303
命令: xtdata get_market_data_ex --stock-list "['000001.SZ']" --period "5m" --start-time "20260303"
分析完成后,输出以下信息:
📊 均线交叉分析结果
股票: 000001.SZ 平安银行
策略: MA交叉增强版 (快线5 / 慢线10 / MA20)
K线周期: 5分钟
📊 过滤条件:
- MA20 趋势过滤: ✅ 启用
- 持续性确认: ✅ 2周期
- RSI 过滤: ✅ RSI(14), 超买70/超卖30
📈 信号统计:
- 总信号数: 3
- 买入信号: 2
- 卖出信号: 1
📋 信号详情:
| 时间 | 方向 | 价格 | MA20 | RSI | 持续周期 |
|------|------|------|------|-----|----------|
| 2026-03-05 14:35 | 买入 | 10.52 | 10.40 | 55.2 | 2 |
| 2026-03-06 10:00 | 卖出 | 10.85 | 10.92 | 68.5 | 2 |
✅ 信号已保存至 signals-ma-cross.md
| K线周期 | 推荐持续周期 | 推荐MA20过滤 | 推荐RSI过滤 |
|---|---|---|---|
| 1分钟 | 3-5 | ❌ | 可选 |
| 5分钟 | 2-3 | 可选 | 可选 |
| 15分钟 | 2-3 | 可选 | 可选 |
| 30分钟 | 2-3 | ✅ | ✅ |
| 60分钟 | 2-3 | ✅ | ✅ |
| 日线 | 2-4 | ✅ | ✅ |
说明:
| 错误情况 | 处理方式 |
|---|---|
| 股票代码无效 | 提示用户检查代码格式 |
| 数据未下载 | 提示先执行下载命令 |
| 快线周期 >= 慢线周期 | 提示参数错误,要求重新输入 |
| K线数据不足 | 提示数据量不足以计算指标(需要至少46根K线) |
| RSI计算失败 | 检查数据连续性,确保无缺失数据 |
| MA20计算失败 | 检查数据量是否达到20根K线 |
| xtdata 服务不可用 | 提示检查 xtdata 服务状态 |