tradingSystem/COMMAND_PRIORITY.md

87 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
```
预期能看到指令的裁决栏区分等待和停止,紧急指令标注直通,被闸拦下的动作在原因栏写明是哪道闸。