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