---
name: a-share-strategy-mainboard-multi-swing-defensive
description: A 股主板流动性池内按趋势回踩（trend_pullback）产出买入候选与持仓卖出信号；另有 realtime_quotes 批量拉取现价快照。供下单前决策；不跑回测、不自动下单。Use when 用户要选股、看实时报价、判断买卖信号或检查持仓是否触发离场条件。
---

# 主板多波段防御型 · 决策信号

本 skill 核心做三件事：**选股范围**、**买入侧信号**、**卖出侧信号**；并可选使用 **`realtime_quotes.py`** 对指定代码批量拉取**现价类快照**（基于 `MarketDataProvider.get_quote`，腾讯报价 + 分钟 K 聚合）。
输出的是**决策参考**（结构化列表或 JSON），**不包含**历史回测撮合、**不包含**自动报单；真实下单请用券商或另接 `a-share-paper-trading` 等执行通道。
策略信号定位为**条件有效**：在市场结构与交易成本变化下，信号强度可能衰减，需持续复核。

## 能力边界

| 做 | 不做 |
|----|------|
| 从主板高流动性股票中取前 N 只构成当日股票池 | 分钟级回测、混合回测、收益曲线 |
| 用日线 `trend_pullback` 标出入场/离场条件 | 保证收益或替代投顾 |
| 给出两类「买入参考」列表（见下） | 直接向交易所或模拟盘服务下单 |
| 可选：读取持仓列表文件，标出「策略离场」标的 | 替你保存实盘持仓（除非你自建文件） |
| 批量拉取多只股票现价、涨跌幅、涨跌停参考价等（`realtime_quotes.py`） | 替代 `a-share-data` 的全市场实时板块、资金流等重接口 |

## 策略逻辑（与参数）

默认参数见 `scripts/strategy_lab/strategy_params.py`（均线快慢、回踩幅度、RSI 区间与离场 RSI 等）。
信号计算在 `scripts/strategy_lab/strategies.py` 的 `trend_pullback`。
脚本会额外应用两层过滤：

- **成本过滤**：按 `--roundtrip-cost-bps` 估算往返成本，只有 `edge_after_cost > 0` 的候选才进入最终买入列表。
- **鲁棒性过滤**：在 `ROBUSTNESS_PARAM_GRID` 参数邻域内计算 `entry_consensus_ratio`，低于 `--entry-consensus-min` 的候选会被过滤。

**买入参考（两组，请区分语义）：**

- **`from_previous_day_close`**：上一根已收盘日线满足 `entry`。与「前一日收盘后出信号、当日再执行」的习惯一致，**更贴近事前计划**。
- **`from_last_close`**：最新一根日线也满足 `entry`，偏**形态展示**；若与上一日重复，请避免重复计数。

列表内按策略内 **`score`（均线强弱）** 降序；默认**每种买入列表最多保留 5 只**（`strategy_params.MAX_BUY_CANDIDATES`），与「同时关注仓位不宜过多」一致。需要更多或全部时加 `--max-buys 0` 表示不截断，或 `--max-buys 10` 等。

**卖出参考：**
对 `--holdings` 文件中的代码，若**最新一根日线**满足 `exit`（破慢线或 RSI 过高等规则内条件），则列入卖出参考。文件格式：一行一只代码，可含注释行（`#` 开头）。

**风控参考（仅文档与 JSON 字段）：**
`REFERENCE_INTRADAY_STOP_PCT` 表示历史上与策略文档一致的**日内止损比例参考**，本脚本**不**替你监控盘中止损，需自行在下单软件中设置。

## 环境与依赖

```bash
pip install akshare pandas numpy requests
```

## 运行

```bash
SKILL_DIR="<本 skill 绝对路径>"
python3 "$SKILL_DIR/scripts/daily_decisions.py" --json
```

常用参数：

- `--top-n`：股票池大小，默认 120
- `--max-buys`：买入侧列表在排序后最多保留几条，默认 5；传 `0` 不截断
- `--holdings`：持仓代码文件路径
- `--workers`：拉日线并发数
- `--json`：输出一份 JSON，便于程序消费（JSON 内含截断前数量 `*_total`）
- `--roundtrip-cost-bps`：往返交易成本估计（单位 bps），默认 45
- `--entry-consensus-min`：参数邻域入场一致性阈值，默认 0.67
- `--disable-robust-check`：关闭参数邻域一致性过滤（仅在调试时使用）

示例：

```bash
python3 "$SKILL_DIR/scripts/daily_decisions.py" --top-n 120 --holdings "$HOME/my_holdings.txt"
```

JSON 输出中会同时包含原始候选与过滤后候选：

- `from_previous_day_close_raw` / `from_last_close_raw`：仅满足信号的原始候选
- `from_previous_day_close` / `from_last_close`：通过成本与鲁棒过滤后的候选
- 单条候选附带 `entry_consensus_ratio`、`edge_after_cost`、`cost_filter_passed`、`consensus_filter_passed`
- `todo_confirm_items`：当前采用口径的记录项（roundtrip=45bps、consensus=0.67、RSI 区间偏移）

### 实时行情快照（增强）

对**已知代码列表**批量取报价（并发），可与 `daily_decisions` 输出的代码配合使用：

```bash
python3 "$SKILL_DIR/scripts/realtime_quotes.py" 600519 000001 601318 --json
python3 "$SKILL_DIR/scripts/realtime_quotes.py" -f "$HOME/my_holdings.txt" --workers 10
```

- `--json`：输出统一 JSON（含 `quotes` 与逐条 `details`）
- `--intraday`：额外拉取**最后一根**分钟 K（`--intraday-freq` 默认 `5m`），便于核对与日线快照的时间对齐
- 数据来自 `paper_trading/market_data.py`：与全市场深度行情相比为**轻量快照**，盘中价格随最新分钟 K 更新

## 脚本布局

| 路径 | 作用 |
|------|------|
| `scripts/daily_decisions.py` | 入口：拉池、算信号、打印或 `--json` |
| `scripts/realtime_quotes.py` | 批量现价快照，可选附带最后一根分钟 K |
| `scripts/paper_trading/market_data.py` | 行情与 `get_mainboard_universe` |
| `scripts/strategy_lab/strategies.py` | `trend_pullback` |
| `scripts/strategy_lab/indicators.py` | 均线、RSI |
| `scripts/strategy_lab/strategy_params.py` | 默认参数与策略名 |

## 与执行层衔接

若要将信号落到模拟盘，可在 Agent 中组合使用 **`a-share-paper-trading`**：先读本 skill 输出，再调用模拟盘 CLI 或 HTTP API 下单；本 skill **不**依赖模拟盘进程。
