首页 / SYS·04
SYS · 04 价格行为

仙统价格行为
Al Brooks Price Action

按 Al Brooks 的价格行为学识别 SPY / QQQ 的 5 分钟 setup,带图推到频道。 下单口径完全按他的书:信号棒 = 最后一根已收盘的 K 棒, 进场是信号棒极值外 1 tick 的停止单,初始止损在信号棒另一端外 1 tick。

⚠️ 先读这一条

77 个交易日的 SPY / QQQ 样本上,本系统的信号平均期望为负−0.090 R 每笔), 且把样本按时间对半切开后,前半段 −0.251 R、后半段 +0.108 R —— 结论不一致

它确实比"随机进场"好(零假设基准 −0.140 R,增量 +0.050 R),信号也确实出现在 Brooks 意义上的合理位置,但"能赚钱"这件事没有被证明。

请当看盘助手用,不要当自动交易信号。 完整证据在下面,一个数字都没有删。

标的SPY / QQQ
信号周期5 分钟
信号频率约 5 条 / 天
回测期望−0.090 R
01

它认哪些形态

信号发出时还没进场(停止单挂在信号棒之外),所以不存在用未来数据的可能。

形态代码说明
回调第 1/2/3 次尝试H1 H2 H3 / L1 L2 L3Brooks 的主力 setup,H2 / L2 最经典
双底牛旗 / 双顶熊旗DB / DT必须是确认过的摆动点,且两脚间有 ≥1×ATR 的真实反弹
微型双底 / 双顶MDB / MDT相邻两棒极值几乎相同
楔形三推WEDGE_BULL / BEAR三推动能递减,牛旗/熊旗或反转
突破回踩BOPB_L / S突破后第一次回调守住突破棒实体
假突破陷阱FBO_L / S区间边缘假突破 —— Brooks:区间里约 80% 的突破会失败
大趋势反转MTR_L / S破趋势线 → 回测极值 → 反转棒,三步全齐才算
区间反抽TR_FADE_L / S区间上下沿高卖低买
20EMA 回踩EMA_L / S趋势中回到均线的顺势位置
Always-In 翻转AIF_L / S已按实测证据停用 —— 训练 −0.179 / 验证 −0.122,两边都负

位置门控 —— Brooks 的硬门槛

「形态对了但位置不对,就不是 setup。」

一根反转棒出现在半空中毫无意义。每条信号都必须落在 20EMA / 前摆动高低点 / 交易区间边缘 / 趋势线 之一上, 位置分低于门槛直接丢弃。

02

实测结果

逐棒回放(只喂到第 i 根,模拟当时的信息状态)。口径包含两条"往难了算"的修正: 尾盘不跨夜、当日强制平仓,以及每笔扣 0.05 R 的摩擦成本 —— 信号与基准同等扣除。

有没有 edge?跟零假设基准比

基准 = 对每一根 K 棒都做多也做空,用与信号完全相同的进场 / 止损 / 目标机制。 这是判断形态识别有没有提供信息量的唯一诚实办法。

SPY + QQQ,77 个交易日。信号频率约 2.4 条 / 标的 / 交易日。
笔数平均 R胜率
零假设基准13,804−0.140 R32.0%
本引擎281−0.090 R37.0%

引擎比基准好 +0.050 R / 笔,但绝对期望是负的。

时间切分:这套阈值是拟合到最近这段行情的

全文最重要的一张表。
时段笔数平均 R胜率
前半段155−0.251 R31.0%
后半段126+0.108 R44.4%

调参过程中用的是"最近 38 个交易日"的数据,而那 38 天整个落在后半段里。 在那个窗口上,引擎显示 +0.13 R / 笔、相对基准 +0.31 R,看起来很漂亮。 把样本往前扩一倍之后,前半段是 −0.251 R —— 结论直接翻转。

所以:两道硬门槛是过拟合的产物。它们在选它们的那段行情上有效,换一段就不成立。

把门槛全关掉,看贡献怎么拆

笔数平均 R相对随机
随机基准13,804−0.140
引擎,门槛全关1,607−0.098+0.042
引擎,当前门槛281−0.090+0.050
  • 形态识别本身贡献了 +0.042 R —— 小,但在两个窗口上符号一致。
  • 两道门槛只再贡献 +0.008 R,几乎可以忽略。它们真正的作用是把信号量从约 26 条/天砍到约 5 条/天。 对一个推送系统来说这个价值是真的(没人看得完 26 条),但请不要以为"过了门槛所以质量更高"。

我们把这个结论原样留着,而不是回去把参数再调到"两段都为正"—— 因为在同一份数据上反复调到好看,只会制造更隐蔽的过拟合。 真正能解决它的只有两件事:更长的样本,和积累真实的前向记录。

03

唯一有效的结构性改善方向:拉长周期

本引擎 零假设基准(每根 K 棒都做)
三个信号周期上引擎与基准的平均 R 对比 横向分组条形图,以零为基准。5 分钟:引擎 −0.090 R,基准 −0.140 R,增量 +0.050;15 分钟:引擎 +0.008 R,基准 −0.126 R,增量 +0.134;30 分钟:引擎 +0.016 R,基准 −0.152 R,增量 +0.167。相对随机的增量随周期拉长单调上升,但引擎的绝对期望始终在零附近。 0 −0.090 −0.140 +0.008 −0.126 +0.016 −0.152 5 分钟 15 分钟 30 分钟 增量 +0.050 增量 +0.134 增量 +0.167 −0.14 −0.09 −0.04 0 +0.04 平均 R / 笔(已扣 0.05 R 摩擦成本)
周期拉长 → 单根 K 棒信噪比提高 → 停止单进场的结构性成本相对下降, 相对随机的增量单调上升(+0.050 → +0.134 → +0.167),这个趋势是可信的。 但绝对期望始终在零附近,且 15 / 30 分钟都没能通过时间切分(30 分钟两段符号相反)。

多重比较警告

到这里已经试过 17 种口径 + 3 个周期。一直换下去总能试出一个正的,那是运气不是边际。 规矩:任何正结果必须通过时间切分(前后两段都为正)才算数。 这条规矩已经救过两次 —— 揭穿了那个 +0.127 R 的假象,也拦下了 30 分钟这个 +0.016 R。 排查到此为止,不再继续试参数。

04

为什么期望这么低

被问到"是不是算法错了"之后做的系统性排查。结论:不是算法错误,但低收益是真的,且与测量口径基本无关。

同一批 281 笔信号,换 5 个维度共 17 种口径全部为负(−0.093 ~ −0.040 R): 同棒歧义算止损还是算目标、目标取 1R/1.5R/2R/3R、到 1R 移成本价、持有 12/24/48 根、 进场用停止单/市价/限价 —— 一个都没救回来。

48.0%固定 1R 目标时的命中率一个对称赌局上只有 48% —— 这个进场点在它自己的时间尺度上,方向性预测力约等于抛硬币
40.9%摸到 1R 的比例若在 1R 全部平仓,期望 ≈ 0.409 − 0.591 − 0.05 = −0.23 R,必亏
+0.05 R"比随机好"的全部来源不是因为找到了好机会,而是因为门槛避开了最差的一批进场点。避开烂牌 ≠ 拿到好牌

更根本的原因

Brooks 是主观交易方法,本系统是它的几何投影。 他真正下判断的东西 —— 今天是趋势日还是区间日、跟随棒有没有急迫感 —— 是读盘经验, 不是 K 棒的几何关系。再加上 SPY / QQQ 的 5 分钟数据是全世界被套利得最彻底的价格序列之一, 纯形状特征剩不下多少东西。这是合理的先验,不是意外。

而"在信号棒高点上方挂停止单、拿整根 K 棒当止损"这个动作本身的结构性成本 (随机基准 −0.140 R)远大于那 +0.05 R 的增量。

一个不该用的出场方式

图上的「目标1 (1R)」是减仓参考位,不是出场位。 本系统之所以还能比基准好,靠的是让盈利单跑到目标 2。看到 1R 就全平,期望是 −0.23 R。

05

三个失败的改进方向

都做了完整验证,都失败了。记录在此,以免有人重复劳动。

① 只做胜率高的形态 —— 做不了

15 个形态做时间切分(要求前后两段都为正、每段至少 12 笔):

判定数量形态
✅ 通过0 个
❌ 两段都为负1 个MDB
⚠ 符号翻转 = 噪声2 个FBO_L(−0.507 / +0.254)、MTR_S(−0.414 / +0.605)
样本太少,不可判12 个其余全部

15 个形态里 12 个连判断样本都不够。DB 两段各只有 2 笔和 4 笔; L1 前半段 1 笔 +1.950 R —— 按平均 R 排名它是"最强形态",实际只有一笔交易。

注意 FBO_L:它曾是唯一在标的训练/验证集上都为正的形态(+0.146 / +0.215), 加上时间切分后符号翻转。按标的切分不够,必须同时按时间切分。

② 用 5 分 K 给 15 分 K 的信号找更精细的进场点 —— 结果相反

思路针对已诊断的根因(进场棒太大导致止损太宽),88% 的 15 分 K 信号确实能在 5 分 K 上找到同向的合格信号棒。但:

口径笔数平均 R胜率时间切分
A 基准(15 分 K 进场)107+0.04244.9%−0.011 / +0.099 ⚠
B 5 分收窄(同 R 倍数)94−0.06035.1%−0.022 / −0.108 ❌
C 5 分收窄(同绝对目标)94−0.17027.7%−0.377 / +0.086 ⚠

收窄止损让胜率从 44.9% 崩到 27.7%。风险确实变小了, 但你在行情展开之前就被日内噪声扫出局,R 倍数的增益远不够补偿多出的止损次数。

这个实验在 n=25 的小样本上曾显示 C = +0.146 R,全样本变成 −0.170 R。这是本项目第三次小样本反转。

③ Brooks 式自上而下级联过滤 —— 唯一可复现的负面结果

5 分 K 信号 + 60 分钟 + 日线,n=281。
过滤条件笔数平均 R胜率时间切分
无过滤(基准)281−0.09037.0%−0.251 / +0.108 ⚠
★ Brooks 级联(趋势顺/区间逆)127−0.14533.9%−0.153 / −0.134 ❌
60 分趋势中 且顺势49−0.23130.6%−0.088 / −0.439 ❌
60 分 + 日线 双同向75−0.12833.3%−0.228 / −0.007 ❌
60 分钟反向177−0.05139.0%−0.197 / +0.144 ⚠
60 分区间中 且逆势(反抽)78−0.09135.9%−0.200 / +0.030 ⚠

这三个 ❌ 是整个项目里唯一"前后两段都为负"的结果。 其它所有失败都是符号翻转(噪声),而这个是可复现的负面效应: 要求与高级别同向,会让结果稳定变差。

一个必须说清的保留意见:这检验的是本系统的 Always-In 判定,不是 Brooks 本人的判断。 已知本系统的 Always-In 在单根强棒后就翻转,很可能把趋势认得太晚 —— 于是"顺大周期"实际变成"在一段走完的行情末端追进去"。 所以失败的可能是这个分类器,而不是 Brooks 的框架。 但修分类器又是一轮新的参数搜索,正是本项目反复证明会自欺的做法,故不做。

06

最终判定

分档结论。证据强度是判断这些结论各自有多可信的口径。
命题证据强度
形态识别比随机进场好较可信 +0.042 R,多窗口符号一致,基准样本 1.4 万笔
信号出现在 Brooks 意义上的合理位置可信 位置门控是硬约束,图上可逐条肉眼复核
门槛提升了单笔质量不成立 只 +0.008 R;它的作用是控制信号数量
当前阈值有正期望不成立 77 天样本 −0.090 R,时间切分前后不一致

信息量是真的,边际不足以覆盖交易成本。

这两件事可以同时成立,本系统就是同时成立的那种情况。 所以它挂在频道里的定位是「在合理的位置提醒你看一眼」 —— 它负责提醒,最终判断和仓位是你的。

样本量的天花板也要说清楚:系统是刻意筛得很严的(这是对的), 代价是 30 分钟周期上 154 个交易日只产生 82 笔。 要把样本做到能下统计结论的 500 笔以上,需要好几年的数据。 这不是多跑几次回测能解决的问题。

07

三条不会让它乱发的保险

  1. 只用已收盘的 K 棒(数据层直接剥掉未收盘的最后一根)。
  2. 陈旧数据守卫:最后一根 K 棒比现在旧超过 15 分钟就本轮不发。 这条独立于节假日表,休市 / 半日市 / 取数中断全都挡得住。
  3. 去重键(标的|周期|K棒时间|形态代码)落盘,重启也不会重复推同一根 K 棒的同一形态。

它管不住什么

  • 没有可验证的正期望。这是本页反复说的第一件事,不是免责套话。
  • 样本只覆盖了一种市场环境。真正的考验(趋势市、崩盘、财报跳空)都没在样本里。
  • 摩擦按固定 0.05 R 估算,不是你真实的滑点。停止单在快速行情里的滑点可能远大于此。
  • 没有移动止损、没有分批止盈 —— 而 Brooks 本人是一定会做这两件事的。这里的口径比他的实际打法更笨。
  • 方向拆分不要照搬。只做空 +0.31 / 只做多 −0.03(n=67/76),样本太小,不要据此只做空。
  • 评分 → 胜率的映射是启发式的,未经你账户的历史数据校准。请把分数当相对排序用,不是绝对胜率。