# tradingSystem 命令与自动动作的优先级梳理

> 日期：2026-08-18。用途：把"谁说了算、谁给谁让路"一次说清，作为宏观择时层开工前的信息同步底稿。
> 依据是当前源码，逐行核对过的文件包括：命令目录（app/core/command_spec.py）、命令服务（app/services/command_service.py）、方案生成器（app/core/planner.py）、规则闸（app/core/rule_gate.py）、执行器（app/services/executor.py）、自主提议（app/services/proposal_service.py）、信号消化（app/services/signal_service.py）、策略层（app/services/strategy_service.py 与 strategy_runner.py）、调度器（app/scheduler.py）。
> 一处与旧文档不一致：命令目录现在共有三十一类。README 里写的二十七类是旧数字，后来加过命令没有更新。

## 一、总纲

一句话：人最大，停机开关其次，用户命令再次，紧急风控可以插队，策略和自主提议排最后。有一条贯穿所有层的规矩：减持永远比增持畅通。

## 二、从高到低的七层

**第一层，休假模式，全局停机。** 它是任务命令里的"全局暂停执行"，按下后写进运行参数。调度器每一跳先查它，查到就跳过所有自动任务。规则闸也查它，买入和卖出的指令都会被拦下。只有对账、成交回放和日报照常跑。休假期间再下别的任务命令，会被判定冲突，需要先恢复，或者带强制标志并行。

**第二层，用户的参数命令。** 总规模、各类上限、档位开关这些。下达即生效，新的覆盖旧的，旧记录标记为已取代。互为反义的命令会互相取代，比如冻结和解冻。全局参数写进参数表，表值覆盖代码里的默认值。个股参数以命令表里最新生效的那条为准。参数命令不能撤销，只能用新的参数命令覆盖。

**第三层，用户的任务命令。** 降仓、升仓、建仓、清仓这些有生命周期的命令。三条要点。第一，命令之间的冲突由人裁决：新命令与在途命令方向相反时，新命令直接被拒，页面提示冲突对象，确认要并行就带强制标志重下。第二，命令压过系统的自主动作：降仓、暂停买入、休假、一键清仓这些命令在规划期就点名撤销在途的买入指令，而且是真撤到下游，不是只在本端划掉。清仓走完还会自动清场，撤掉该股的策略、在途建仓和挂着的提议。第三，命令只过规则闸，不过研判闸，系统不用人工智能去审用户。

**第四层，紧急通道。** 两个来源。一键清仓命令的指令带紧急标志，直通出手，不等开盘半小时，不等均价，限价更激进。决策系统置信度在零点八五以上的风控卖出，同样生成紧急清仓指令。还有一条叫确认即加速：你手动下的清仓还在途时，决策系统又喊卖同一只票，这条在途清仓会被升级成紧急直通。

**第五层，决策系统的盘中信号。** 卖出信号按置信度分三档。零点八五以上自动转清仓指令。零点六零到零点八五落成提议，等你拍板。低于零点六零不动作，但持仓票会留一条痕，防止你看不见风控在示警。挂着策略的票是例外：不自动清仓，只落提议，同时暂停该票策略的买入侧。买入信号一律只留痕，用来给建仓候选排序，不直接触发买入。

**第六层，个股策略，就是你特意挂的网格、做T和跟踪止盈。** 挂了活跃策略的票，自主提议引擎让开，不再对它自动提议。策略动作按命令口径过规则闸，不过研判闸。做T的指令当日强制平回，绝不过夜。

**第七层，自主提议，系统自己的想法，排最末。** 档位有三档，关、只提议、全自动，关是总闸。每条提议过两道闸：规则闸查合规，研判闸问决策系统该不该。分流时减持提议自动执行，增持提议按档位走，浮亏百分之十五及更深的补仓永远要人点头。自主新建仓有独立档位，而且比命令更严：拿不到真实资金快照就不建仓。

## 三、贯穿线：减持畅通，增持重重设卡

卖出指令只查可行性：不能超卖，不能超过 T+1 可卖量，部分减持要整百股，跌停只提示不拦。冻结、组合刹车、黑名单、全局暂停买入，这些全都不拦卖出。

买入指令要过全部硬闸，一共九道：数量整百、该股未冻结、全局暂停买入未生效、不在黑名单、决策系统昨夜没把它定性为形态恶化、组合没在刹车中（这条只拦自主动作，命令只收到提示）、没涨停、不追高（当日涨幅和距五日均线两道）、组合各上限和真实资金都够。

两边都拦的只有三样：休假模式、停牌、取不到现价。

## 四、六条容易记混的边界

1. 全局暂停买入拦得住命令的买入。升仓命令在暂停期间排出的买单，会被规则闸拦下。想升仓要先恢复买入。
2. 组合刹车只拦自主增持。命令和策略的买入照走，只是账本里多一条提示。
3. 黑名单有两道效力。候选池阶段就剔除黑名单票，升仓命令选不到它。即使点名建仓，规则闸也会把买单拦下。
4. 执行窗口的最后一天，强制完成只对命令类指令生效。自主类买入到期就作废，不追。
5. 昨夜形态恶化那道闸，只在择时实现A可用时才拿得到数据。退到实现B时这道闸自然不生效，属于已知降级，不是漏拦。
6. 休假模式是唯一双向全停的开关。它连清仓命令都会判冲突，是名副其实的总闸。

## 五、宏观择时层加进来后，站在哪里

宏观层下的命令是署名 macro 的普通任务命令，走第三层的轨道，但姿态永远比用户命令低：遇到冲突就放弃并留痕，从不带强制标志。它的加仓比用户命令更自律，主动让位于全局暂停买入和组合刹车。

宏观闸是又一道只拦增持的开关，和冻结、刹车、买入暂停并列。它拦自主提议的四类买入和策略的买入开腿，不拦减持，不拦平回，不拦用户命令。

按开关归拢一下，全系统拦增持的开关从此有五个，按范围从大到小：休假模式（双向全停）、全局暂停买入（全部买入）、宏观闸（系统自主买入，偏热期间）、组合刹车（自主增持，回撤后三天）、个股冻结（单票增持）。

## 六、验证方法

以下命令都在桥机 factorevaluation 上运行。

看命令全目录，核对三十一类：

```bash
make t-catalog
```

预期返回三十一条命令定义。行业划分数据源未配置时，行业类的两条显示置灰并附原因。

冲突裁决的实地演练，先下一条升仓，再下一条降仓：

```bash
make t-issue T=INCREASE_EXPOSURE P='{"pct":0.05}'
make t-issue T=REDUCE_EXPOSURE P='{"pct":0.05}'
```

预期第二条返回失败，错误里含 CONFLICT 字样，并指出与哪条命令冲突。演练完把第一条撤掉，命令编号从上一步的返回里取：

```bash
make t-cmds
curl -s -X POST http://127.0.0.1:38100/api/commands/CMD_编号/cancel | python3 -m json.tool --no-ensure-ascii
```

预期返回撤销成功，并报告作废的方案数和撤回的指令数。

日常盯层级是否按规矩运转，用一屏监视：

```bash
make watch
```

预期能看到指令的裁决栏区分等待和停止，紧急指令标注直通，被闸拦下的动作在原因栏写明是哪道闸。
