1市场状态定义
系统对市场的认知从"当前市场处于什么状态"开始。这是所有后续判断的前提。
市场状态是一个枚举值,由趋势识别模块(模块1)负责输出,整个系统在同一时刻只认可一个有效状态。
趋势还需要携带两个附加维度,供后续模块使用:
| 字段 | 类型 | 含义 | 用途 |
|---|---|---|---|
| direction | 枚举 | BULL / BEAR / RANGING / UNKNOWN | 决定系统是否进入后续分析 |
| phase | 枚举 | EARLY / MID / LATE | 影响信号过滤严格程度 |
| strength | 0.0 ~ 1.0 | 市场客观强度(斜率、排列整齐度等) | 影响仓位大小计算 |
2趋势识别框架
本节定义趋势识别模块的接口契约,不规定具体使用哪种算法。具体算法(均线法、裸K法、趋势线法等)是 L4 算法规格的内容,可以插拔替换,只要遵守此处定义的接口即可。
输入契约
- candles
- K 线数组,包含 OHLCV,时间周期由调用方指定
- timeframe
- 分析所用周期(M15 / H1 / H4 等)
- config
- 策略实现所需的参数(由具体策略定义,框架不关心内容)
输出契约
- direction
- BULL / BEAR / RANGING / UNKNOWN(必须输出,不允许为空)
- phase
- EARLY / MID / LATE(仅在 BULL/BEAR 时有意义)
- strength
- 0.0 ~ 1.0,低于框架配置的最低阈值时,系统自动降级为 UNKNOWN
- basis
- 字符串列表,说明本次判断的依据(用于复盘,不影响决策)
- timeframe
- 原样返回,供调用方区分多周期结果
多周期融合规则
系统会对 M15、H1、H4 三个周期分别运行趋势识别,融合规则如下:
趋势阶段判断准则(框架层面的定义)
| 阶段 | 定义 | 系统行为 |
|---|---|---|
| EARLY | 趋势方向刚形成,尚未经过第一次有效回调确认 | 提高信号过滤门槛,等待确认 |
| MID | 趋势已有至少一次回调但方向未变,处于最佳持续阶段 | 正常执行,这是主要交易窗口 |
| LATE | 趋势运行时间较长,出现疲软迹象(回调深度增加、动能减弱) | 收紧止盈、降低新仓位,不加仓 |
3关键位定义框架
关键位是"价格对其历史上产生过明显反应的价格区间"。注意是区间,不是单条线。
关键位的类型
| 类型 | 定义 | 对应操作方向 |
|---|---|---|
| SUPPORT | 价格历史上在此区间多次受到支撑反弹 | 优先做多,平空单 |
| RESISTANCE | 价格历史上在此区间多次受到压制回落 | 优先做空,平多单 |
| SUPPLY_DEMAND | 由供需不平衡形成的大级别压力/支撑区域 | 同上,但权重更高 |
关键位的数据结构
- id
- 唯一标识符
- type
- SUPPORT / RESISTANCE / SUPPLY_DEMAND
- zone_low
- 区间下边界价格
- zone_high
- 区间上边界价格
- strength
- 0.0 ~ 1.0,触及次数、时间跨度、多周期重合度的综合评分
- mtf_weight
- 多周期权重(M15=1 / H1=2 / H4=3),多周期重合时叠加
- state
- ACTIVE / HIDDEN / EXPIRED(见下方状态机)
- touch_count
- 被价格触及的次数(每次触及不破坏则+1)
- created_at
- 首次识别时间
- last_touched_at
- 最后一次被价格触及的时间
关键位状态机
关键位的有效性条件
一个关键位被认定为有效,必须满足:
位置判断(价格相对于关键位的状态)
每次循环,系统判断当前价格相对于所有 ACTIVE 关键位的位置,输出一个位置状态,供下一步信号判断使用:
| 位置状态 | 含义 | 系统行为 |
|---|---|---|
| AT_LEVEL | 价格在关键位区间内或刚刚触及区间边缘 | 进入信号检测流程 |
| APPROACHING | 价格距最近关键位 ≤ N%(N 由策略配置) | 进入信号检测流程(预备状态) |
| IN_TRANSIT | 价格处于两个关键位之间,离两侧均远 | 不入场("不赚途中的钱") |
| NEAR_TARGET | 价格已接近目标关键位(潜在止盈位) | 不开新仓,已有仓位考虑止盈 |
4入场信号定义框架
信号是"在关键位上出现的、指向某个方向的市场行为迹象"。信号不等于入场指令,它是入场判断的必要条件之一。
信号的数据结构
- type
- 信号类型标识符(由具体策略定义,框架不枚举)
- direction
- LONG / SHORT
- confidence
- 0.0 ~ 1.0,本次信号的可靠程度评估
- at_level
- 触发该信号时关联的关键位 ID
- candle_index
- 信号在 K 线序列中的位置
- basis
- 字符串列表,说明信号判断依据(用于复盘)
- is_valid
- 布尔值,框架根据过滤条件统一设置
信号有效性的必要条件(框架层强制校验)
以下条件由框架统一校验,具体策略无法绕过:
任意一条不满足,signal.is_valid = false,不进入计划生成。
confidence 的含义
confidence 不是信号"一定会成功"的概率,而是"当前判断方法在当前市场条件下的可靠程度"。
| 影响 confidence 的因素 | 方向 |
|---|---|
| 关键位被触及次数多 | + 提升 |
| 多周期信号方向一致 | + 提升 |
| 量能配合(关键位附近放量) | + 提升 |
| 近期假突破频繁 | - 降低 |
| K 线样本数不足(数据量少) | - 降低 |
| 信号形态不完整(变形) | - 降低 |
5交易计划定义框架
交易计划是系统在下单前必须生成的完整决策文档。没有完整计划,不允许下单。
计划是系统的决策中心。趋势、关键位、信号都是计划的输入;订单执行、仓位管理、风控都是计划的落地和约束。
TradePlan 数据结构
- id
- 唯一标识符
- symbol
- 交易标的(如 BTCUSDT)
- direction
- LONG / SHORT
- category
- SHORT_TERM / MID_TERM(由系统根据趋势阶段和信号自动分类)
- entry_price
- 计划入场价格(或区间)
- stop_loss
- 止损价格,必须在计划生成时确定,不允许为空
- take_profit
- 止盈价格列表(支持多档)
- position_size
- 计划仓位大小(由风险模块计算,见第6节)
- risk_amount
- 本次交易愿意承受的最大亏损金额(以损定仓的基准)
- rr_ratio
- 盈亏比((take_profit[0] - entry) / (entry - stop_loss))
- basis
- 入场理由列表,长度必须 ≥ 2(少于2条理由不生成计划)
- signal_ref
- 触发本计划的 Signal ID
- trend_ref
- 本计划依据的 TrendState 快照
- level_ref
- 关联的 KeyLevel ID
- status
- PENDING / ACTIVE / COMPLETED / CANCELLED
- created_at
- 计划生成时间
- expires_at
- 计划有效期,超过则自动取消(防止信号过期后仍执行)
计划生成的必要条件
6仓位与风险认知框架
仓位大小不由"预期能赚多少"决定,而由"愿意亏损多少"决定。这是"以损定仓"原则。
其中:风险金额 = 账户资金 × 单笔风险比例;单位亏损 = 入场价 - 止损价
strength 对仓位的影响
在基础仓位之上,用 TrendState.strength 做系数调整,strength 高则可以配更多仓位,strength 低则收缩:
风险边界(框架层强制约束)
| 约束 | 触发条件 | 系统行为 |
|---|---|---|
| 单笔最大亏损 | 单笔计划的 risk_amount 超过配置上限 | 拒绝生成该计划 |
| 日内累计亏损上限 | 当日已实现亏损达到配置值 | 停止所有新计划生成,等待次日重置 |
| 大单不过夜 | position_size 超过"底仓"定义阈值,且临近收盘 | 自动触发平仓 |
| 趋势破坏 | H1 趋势方向发生反转 | 触发当前持仓的紧急减仓/清仓评估 |
7复盘框架
复盘不是事后分析盈亏,而是系统进化的驱动机制。每一笔交易都要能追溯"为什么入场、依据是否成立、结果是否符合预期"。
ReviewRecord 数据结构
- plan_id
- 关联的 TradePlan ID
- entry_actual
- 实际入场价(可能与计划价有偏差)
- exit_actual
- 实际出场价
- pnl
- 实际盈亏(金额)
- pnl_ratio
- 实际盈亏比(与计划的 rr_ratio 对比)
- exit_reason
- 出场原因:TAKE_PROFIT / STOP_LOSS / MANUAL / TREND_BREAK / EXPIRY
- signal_verdict
- 复盘对信号有效性的评估:VALID / FALSE_SIGNAL / PREMATURE
- level_verdict
- 复盘对关键位有效性的评估:HELD / BROKEN / IRRELEVANT
- notes
- 人工注释(可空)
必须记录的内容
系统每次触发都自动记录以下内容,无论是否下单:
复盘维度
| 维度 | 分析什么 |
|---|---|
| 信号质量 | 信号触发后成功率是否与 confidence 分布一致 |
| 关键位有效性 | 关键位被触及后是否起到支撑/阻力作用 |
| 计划执行偏差 | 实际执行与计划的偏差(滑点、提前平仓等) |
| 趋势判断准确性 | 趋势方向判断的事后准确率 |
| 系统整体绩效 | 胜率、平均盈亏比、最大回撤、夏普比率 |
8不确定性与冲突处理原则
当系统内部各模块之间出现矛盾,或外部市场条件超出正常范围时,系统需要有明确的降级行为,而不是"随机选一个"或"崩溃"。
冲突类型与处理规则
| 冲突场景 | 处理规则 |
|---|---|
| M15 与 H1 趋势方向相反 | 降级为 UNKNOWN,本次不交易,等待周期对齐 |
| 多个关键位密集重叠(区间互相包含) | 合并为一个关键位,取权重叠加值 |
| 同一方向同时出现多个信号 | 取 confidence 最高的一个,其余忽略 |
| 信号方向与趋势方向相反 | 默认拒绝;仅在 phase=LATE 且 confidence 极高时允许反转操作(需配置开启) |
| 数据延迟超过 1 个周期 | 暂停当次分析,不基于过期数据生成计划 |
| API 连接中断 | 立即暂停所有新计划,已有订单不操作,恢复后同步状态再继续 |
不确定性的处理原则
当任何必要判断的置信度低于阈值、或模块间存在未解决的冲突时,系统的正确行为是输出 UNKNOWN 并停止本次执行,而不是选择其中一个可能的答案继续推进。
这意味着:系统的设计目标不是"尽量多交易",而是"在条件清晰时精准交易"。宁可错过机会,不承担不必要的风险。