闲聊 我花近 5000 元,用 Claude、Codex、DeepSeek 搭了一套 A 股价格行为选股系统
先说一件事。
这篇文章会完整拆解我的 A 股价格行为的策略逻辑、代码架构和 AI 协作方法。大约 8000 字,因为我不打算藏着掖着。
关于 AI 交易系统,我想先说清楚一件事:我不推荐你轻易去跑这套模型。 AI 写不出圣杯。这套系统的核心逻辑——PA 框架、setup 判定、闸门设计——全都是人脑推演之后,用 AI 来工程化的。AI 替代不了你的交易思想。如果你的策略逻辑还没有经过手动验证,先别急着用 AI 跑。如果你觉得麻烦、没有那么多时间或预算,但又想用这套方法——进Qun是最低成本的方式。我每天在里面公开选股结果,大家可以一起跟、一起复盘、一起迭代。等你觉得这套方法确实有用,也形成了自己的交易逻辑,再考虑搭自己的 AI 系统。
这个策略写了一个月。从 5 月上旬到现在,43 个版本迭代,3419 行进度记录,花了差不多 5000 块。钱倒不算太多——用的都是中转站,比直接订阅便宜不少。真正贵的是时间:每天晚上搞到一两点,改代码、调参数、验证输出。最晚的一次修止损逻辑,搞到凌晨快两点,第二天早上九点还要看开盘。
最近群里有不少朋友问这套策略具体怎么设计的。后台留言也在问。那我不如直接写一篇完整的——把所有东西摊开。
另外,群里有朋友在研究题材、热点方向的量化,也有人在做其他市场。如果你有好的资料、策略笔记、或者觉得我哪里写得有问题——欢迎在评论区留言或进Q分享。我一个人搞不了所有方向,大家的交叉验证比一个人的迭代快得多。
一、为什么要用三个模型搭一套系统
先说钱。我用的中转站,不是 direct API。三个模型加起来,从立项到现在大概花了 4000-5000 元。
这 5000 块买的是什么?不是圣杯。是把人的决策框架变成可运行、可验证、可复制的代码流水线。
三个模型各有分工,缺一个都不行:
Claude 做策略。 PA 框架的落地、setup 分类、评分体系、闸门逻辑、迭代方向——所有"这东西能不能赚钱"的判断,由我和 Claude 反复推演。Claude 能扛住 Brooks 价格行为学书籍的阅读压力,在 3419 行的进度记录里保持语义一致性。单一个人做不到这个带宽。
Codex 做工程。 v2_pipeline.py(近三万行)、sector_index_model.py(131K)、并行调度脚本、数据拉取链路——这些部分是codex 写的。我没有写过一行 Python。Codex 把策略文档直接转成可运行代码,而且能在我反馈"这里不对,那个逻辑反了"之后精准修改。
DeepSeek 做外部校验。 这是关键——你不能用同一个模型去验证同一个模型产出的东西。每次大迭代之后,我把策略文件、评分逻辑、输出报告全部扔给 DeepSeek,让它挑刺。
三个模型互相不信任,互相校验。用 AI 做交易系统,单模型是死路。
二、底层支柱:Brooks PA 五层决策金字塔
在讲系统架构之前,必须先讲 PA 框架。没有框架前全是幻觉。
Al Brooks 的三卷本——《价格行为学之趋势》《价格行为学之区间》《价格行为学之反转》——加起来快 2000 页。Claude 读完之后的产出不是"这本书讲了什么",而是一个五层决策金字塔:
<span leaf="">背景 Context → 周线趋势方向(HTF)</span><br><span leaf="">位置 Position → 日线在趋势中的位置(MTF)</span><br><span leaf="">结构 Structure → 1H K 线组合形态 + 磁体/压力位(LTF)</span><br><span leaf="">K 线 Candlestick → 5Min 触发确认 + 入场信号</span><br><span leaf="">辅助 Auxiliary → 量能、板块、RSI 背离(不作为独立入场理由)</span><br>
含义很简单:上层决定能不能做,下层决定什么时候做。
很多人用 AI 做交易的问题是反过来的——先看 5 分钟 K 线,找到一个看起来很漂亮的 Pin Bar,然后往上找理由。Brooks 整本书的核心就一句话:背景决定一切。 周线在下跌趋势里,日线的阳线只配考虑做空;周线上涨,日线的阴线才是找买点的机会。
YTC 的时间框架映射跟 Brooks 完全对齐:
| 框架层
|
Brooks 层级
|
YTC 映射
|
作用
周线
|
Context 背景
|
HTF 高阶
|
定趋势,不许逆势开仓
| |
日线
|
Position 位置
|
MTF 中阶
|
定结构位置,磁体/压力在哪
| |
1H + 5Min
|
Structure+K线+辅助
|
LTF 低阶
|
定入场,精确到 tick
|
四周期缺一不可。CLAUDE.md 写死了拉取顺序:周线→日线→1H→5Min。顺序反了,判断就不可靠。
三、双模型架构:为什么要拆成两套独立系统
现在的系统由两个完全独立的模型组成——V2 涨停股池和 Sector 板块下钻。独立到什么程度?共用的只有两样东西:数据拉取链路,和最终的合并呈现报告。中间的选股逻辑、评分权重、出入池标准,完全不相干。
V2 涨停股池的逻辑是"龙回头"——历史上涨停过的股票,回调之后找二次入场机会。数据源是历史涨停股池,选股用 PA 形态识别 + earn_score 排序。2026 年 6 月 5 日实跑,V2 没有出票——不是系统坏了,是当天没有符合条件的龙回头。零输出本身就是信息。
Sector 板块下钻的逻辑完全不同。先扫描全市场 90 个行业板块指数,对每个板块指数做 PA 检测,按赚钱分排序取前 5,然后对这 5 个板块的成分股逐一做个股 PA 检测。6 月 5 日:90 个板块→68 个被周线闸门挡掉→16 个通过→5 个下了钻→245 只成分股筛出 50 个机会→Top 3 盯盘票:冰山冷热、广安爱众、电投产融,全来自电力/通用设备。
两种逻辑覆盖完全不同的机会空间。V2 抓"活跃过的票又回来了",Sector 抓"板块共振的票刚开始启动"。如果混在一起评分,涨停股的历史波动率会把板块股的评分拉歪。
我当时想做一个统一模型加两个数据源。Claude 直接反对:“两个数据源的本质差异太大,涨停股是事件驱动的滞后池,板块股是结构驱动的先行池。强行合并会让评分权重变成一坨浆糊。”
Codex 的工程实现很干净。run_parallel_selection.py 并行调度两个模型,各自跑各自的产出,然后 trade_plan_format.py 统一生成合并报告。两个模型的 buy/watch/missed 表在报告里各自独立呈现,前面硬标注一句:“本模块所有票均来自涨停股池,不掺杂板块下钻成份股”。
四、赚钱分 & 信号分:两个数字怎么算的
这是系统最核心的产出。每只票两个分:赚钱分(earn_score) 和 信号分(signal_score,0-10)。
赚钱分
赚钱分的本质是 Brooks 期望价值公式。系统内部的实际计算(v2_pipeline.py:28237):
<span leaf="">E_R = WR × avg_reward - (1 - WR)</span><br><span leaf="">avg_reward = α × RR_T1 + (1-α) × β × RR_T2</span><br>
参数(Code 硬编码,Brooks 高级波段:1666/1676 锚定):
-
α = 0.5
:T1 出 50% 仓位(朗西冻结:1R 保本→2R 减半→3R+ 移动止损)
-
β = 0.5
:T2 条件概率折扣。Brooks 原文:“当上行通道完成等距上涨的约一半时,等距行情的方向概率降至约 50%-55%”
-
WR
:该 setup × 市场状态下的胜率,经 R43 正面/负面因子加成后(严格不超过该 setup 的 cap)
-
RR_T1 / RR_T2
:(目标价 - 入场价) / (入场价 - 止损)
赚钱分 = E_R 数值本身,>0 才进池,越高越优先。
举个简化例子。假设一只票:入场 10 元,止损 9.80 元,T1 11.20 元,T2 12.40 元,WR 55%:
<span leaf="">RR_T1 = (11.20 - 10.00) / 0.20 = 6.00</span><br><span leaf="">RR_T2 = (12.40 - 10.00) / 0.20 = 12.00</span><br><span leaf="">avg_reward = 0.5 × 6.00 + 0.25 × 12.00 = 3.00 + 3.00 = 6.00</span><br><span leaf="">E_R = 0.55 × 6.00 - 0.45 = 3.30 - 0.45 = 2.85</span><br>
每承担 1 块钱风险,预期赚 2.85 块钱。
以 6 月 5 日的实盘候选冰山冷热(000530)为例:触发价 6.21 / 止损 6.09 / T1 7.64 / T2 8.30,WR 57%,系统输出赚钱分 6.019。
信号分
信号分是纯入场时机评分,R41(2026-06-03 朗西)重构后满分 10 分,四维组成(v2_pipeline.py:11359):
| 分值
|
来源
|
内容
0-5
|
1H BP 评分
|
在 1H 级别重跑 PA 检测器子集:背景结构 + 入场信号棒质量
| |
0-2
|
1H 入场区位置
|
现价距 entry_mid 的 ATR 标准差:≤0.2 ATR→2 分,0.2-0.5→1 分,>0.5→0 分
| |
0-2
|
5M 入场结构
|
96 根 5min K 线:阳线占比 + 收盘强位 + 连续阳线
| |
0-1
|
5M 触发确认
|
现价在入场区内 + K 线收阳 + 量比 > 1.2
|
信号分不参与排序——排序只看赚钱分(R37d)。信号分的作用是给手动交易员一个入场时机参考:赚钱分告诉你这票值不值得买,信号分告诉你今天适不适合下单。
6 月 5 日三只盯盘票信号分都在 1.9-3.0 之间——偏低,因为它们全是 🟠 二次入场状态,现价已突破 trigger 又回来,1H 入场区位置那项自然扣分。系统不为了好看去动数字。
五、四态入场:为什么不是简单的"买/不买"
传统选股输出是二元的:推荐/不推荐。实际交易不是这样。
R36(2026-05-31)朗西拍板了四态分类:
| 状态
|
判定条件
|
入场指令
🟢 直接买
|
现价在入场区内(trigger ± 0.2×ATR)
|
挂单 + 等 1H 收阳确认 / 5Min 突破前高
| |
🟡 等回踩
|
现价低于入场区
|
等回到 trigger 附近 + 1H 收阳 + 量比 > 1.2
| |
🟠 二次入场
|
现价已突破 trigger 但 R29 七衰竭 < 2
|
等回踩 trigger + 反转 K(锤子/吞没)+ 量能放大
| |
🔴 已错过
|
现价已突破 trigger 且 R29 七衰竭 ≥ 2
|
不建议追,等新 setup,仍进池供复盘
|
R29 七衰竭判定(DeepSeek 校验后改进),三个维度:
-
D2 TL Break
:趋势线被跌破
-
D3 Slope Decay
:K 线斜率衰减(连续 3 根 K 线实体递减)
-
D4 Truncation
:主推浪截断,后续 K 线不能创新高/新低
≥2 个触发 → 趋势衰竭确认 → 🔴 已错过。
这解决了最常见的困境:“已经涨上去了,追不追?” 系统告诉你:如果衰竭 ≥ 2,不要追。如果没有,可以等回踩。
已错过的票不删——单独分段供复盘。如果系统直接剔除,你就不知道系统看到了什么但放弃了什么。透明性是改进的基础。
六、9 种 Setup 类型 & 胜率天花板
PA 形态识别是整个系统的前端。目前支持 9 种做多 setup,每种都有独立的默认胜率和天花板——直接硬编码在 v2_pipeline.py 里。
| Setup
|
中文
|
默认胜率
|
胜率上限
|
来源锚定
A_VCP
|
波动收缩蓄势
|
50%
|
70%
|
Minervini + 简一 VCP 笔记,v2_pipeline.py:224
| |
H2_long
|
二次回踩做多
|
55%
|
75%
|
Brooks 百科:1676,v2_pipeline.py:243
| |
BPB_long
|
突破回踩做多
|
55%
|
72%
|
Brooks 百科:2218,v2_pipeline.py:234
| |
D_TrendContinuation
|
趋势延续回踩
|
55%
|
72%
|
Brooks 百科:1455,v2_pipeline.py:269
| |
H1_long
|
首次回踩做多
|
50%
|
72%
|
Brooks 百科:1650,v2_pipeline.py:252
| |
H3_wedge_flag
|
三推楔形牛旗
|
45%
|
62%
|
Brooks 百科:1768,v2_pipeline.py:261
| |
C_DoubleBottom
|
双底反转
|
40%
|
45%
|
Brooks 百科延伸,v2_pipeline.py:287
| |
BOF_long_reversal
|
假跌破反转做多
|
35%
|
45%
|
Brooks 百科延伸,v2_pipeline.py:296
| |
B_RangeBottom
|
区间底部反转
|
35%
|
45%
|
Brooks 百科:2350,v2_pipeline.py:278
|
上限是硬编码的(v2_pipeline.py:443-458),R43 正面因子只能在"上限 - 默认"的预算里加分。
这个设计源于一个对 PA 的深刻理解:没有任何 setup 能突破其内在的统计上限。 你发现的再多利好因素,H2 回调做多的胜率也不可能超过 75%。如果评分系统把 WR 加到了 80%,要么是加了冗余因子,要么是 overfitting。
R43 正面因子体系分四个质量等级(v2_pipeline.py:525-552),22 个因子共享 budget:
-
★★★★(权重 10,7 项)
:周线与日线趋势一致、强趋势激活、跟随确认强信号、信号棒收盘位置 ≥ 75%、长下影线 Pin Bar、AI 顺势方向、趋势强度升级
-
★★★(权重 7,5 项)
:跟随确认中等信号、信号棒收盘 ≥ 55%、跳空突破强跟随、强反转棒、连续 ≥ 5 阳线
-
★★(权重 4,5 项)
:量比阳阴比、D4 低截断、阳量增长、阴量衰退、连续 3-4 阳线
-
★(权重 2,5 项)
:D3 斜率反转、B2 分段高位、连续阳实体、阳线渐进增长、EMA20 占比 ≥ 14/20
同时还有 5 个负面因子(权重 7-15),包括末端衰竭、末端旗形、Brooks 80% 法则、AI 反向等。
数学保证:全部正权触发 → adjusted_wr = cap(精准撞顶)。全部负权触发 → adjusted_wr ≈ base - budget。部分触发 → 按权重比例。
七、十道闸门:为什么大部分票到不了你眼前
从全市场 5000 多只票到最终输出的 0-5 只,中间过了十几道闸门。每一道闸门解决一个具体问题。
| 闸门
|
作用
|
6/5 实测
L1 基本面否决
|
ST/*ST/次新/市值<30亿→直接踢
|
~20%
| |
周线趋势闸门
|
周线下跌趋势→不做多
|
Sector: 68/90 板块挡掉
| |
PA 形态识别
|
无 9 种可识别 setup→不进后续
|
~70%
| |
R38b 距离闸门
|
|现价 - trigger|/trigger > 3%→排除
|
~30%
| |
赚钱分闸门
|
earn_score ≤ 0→负期望→不进池
|
~50%
| |
R29 衰竭闸门
|
七衰竭 ≥ 2→🔴 已错过
|
~20%
| |
板块共振闸门
|
板块内 < 2 只共振→降优先级
|
—
| |
板块集中度闸门
|
同板块 > 1 票→Kelly × 70%
|
广安爱众/电投产融 触发
| |
四态分类
|
现价 vs trigger 关系→四态判定
|
—
|
R38b 距离闸门是个典型设计。有的票 PA 形态完美,但现价距入场区太远——触发价 10 块,现价 10.50,差距 5%。追进去,RR 已被压缩得不值得。3% 阈值迭代两轮定下来的:太宽(5%)放进低 RR 票,太窄(1.5%)把正常入场区波动也排掉。
Sector 周线闸门是最猛的一刀。 6 月 5 日跑了 90 个行业板块,只有 16 个过了。Brooks 的 Context 层在周线这一步就已经做完了大部分筛选——不是后面评分多聪明,是前面挡得够果断。
八、止损 / 止盈 / 仓位:不留模糊空间
量化系统最怕的不是错——是模糊。模糊意味着不可复盘,不可复盘意味着无法改进。
止损
每种 setup 止损都有精确规则:
-
趋势类(H2/BPB/A_VCP/H3/D)
:起涨点 - 1tick(Brooks 高级波段:776 急速拉升最低 K)
-
回调特化(H1/H2/BPB)
:入场理由是回调→止损用回调 swing low - 1tick(Brooks 百科:990/1198)。R37e 实测:皖能电力通用规则止损 9.31,回调 swing low 止损 9.20——多出 0.09 是精确性给的安全垫
-
反转类
:反转点低 - 1tick
-
区间类
:入场区低 - 1tick
止盈
-
T1
:Brooks MM 标准版 =
Spike_FirstOpen + (Spike_LastClose - Spike_FirstOpen)(Brooks 高级波段:1664 主推) -
T2
:下一 prior swing high 磁体;无更高磁体则 T1 + 0.5×MM_length(Brooks 高级波段:1668)
-
出场节奏
:1R 保本 → 2R 减 50% → 3R+ 移动止损(朗西冻结标准)
T2 的条件概率折扣(β=0.5)为什么必要:T1 是数学外推,T2 在赌趋势延续到下一个磁体。Brooks 写得很清楚:趋势通道走到一半时,继续走完的概率降到 50%-55%。按 T2 满算配仓位,就是在 55% 概率上下 100% 的注——这个错误复利下来会吃掉所有 T1 利润。
Kelly 仓位
<span leaf="">f* = E_R / RR_avg</span><br><span leaf="">实际仓位 = f* × (1 - ρ̄ × 0.4) ← 板块相关性折减</span><br><span leaf="">同板块多票 → Kelly × 70%(自动触发)</span><br>
R35++ 五层仓位框架:
<span leaf="">L1: 账户总风险 = 净值 × 2%</span><br><span leaf="">L2: 单笔风险 = L1 × 50%</span><br><span leaf="">L3: 初始仓位 = L2 / (entry - stop) × entry</span><br><span leaf="">L4: 折减后仓位 = L3 × (1 - ρ̄ × 0.4)</span><br><span leaf="">L5: 实际下单 = L4 / entry,取整到 100 股</span><br>
每一步可追溯。赚了为什么赚,亏了为什么亏,仓位有没有下错——全有数字答案。
九、为什么不能让同一个模型既写策略又写代码
回到三个模型的协作,我想展开讲一件真事。
R28 迭代时,Claude 在评分逻辑里加了一条:“板块内有 3 只以上涨停,自动加分”。逻辑上没毛病,板块共振是利好。
Codex 把这个规则精确地翻译成了 Python,写进了 compute_master_score() 函数。代码没有 bug,语法完美,跟文档一字不差。
DeepSeek 校验时提了一个问题:“这个板块共振加分跟 R43 正面因子体系里的 ★★★ 板块共振因子,是同一件事吧?你加了两遍。”
一查,确实。Claude 在设计时把"板块共振"放进了两个不同层级——一次在 PA 检测后的 earn_score 计算里,一次在 R43 胜率加成里。两层单独看都对,叠在一起重复计分了。
这是单模型永远查不出来的 bug。 Claude 不会质疑自己的设计。Codex 不会质疑 Claude 的策略文档——它的任务是"按文档实现",不是"检查文档逻辑"。但 DeepSeek 可以——它没有"这个设计是我做的"这种所有权偏见。
用 AI 做交易系统,最少用两个不同厂商的模型。一个写,一个审。这不是功能需求,是认知偏差上的需求。
十、这套系统能干什么,不能干什么
说到实处。
能干什么:
-
盘中盘后给你一份不超过 5 只票的盯盘清单,每只票带精确到 tick 的入场价和止损价
-
帮你避免逆势操作——周线闸门就是干这个的
-
帮你避免追高——R29 七衰竭 + 四态分类就是干这个的
-
帮你算清每笔交易的数学期望——不靠"感觉这股要涨"
-
帮你控仓——Kelly 公式 + 板块相关性折减 + 五层仓位框架
-
最关键:把盘中直觉变成盘前计划
不能干什么:
-
不能预测市场
-
不能在没有机会的时候硬造机会(6 月 5 日 V2 出 0 票就是 0 票)
-
不能替代你的执行纪律——信号给了你不执行,或者盘中乱改,系统管不了
-
不能保证赚钱——胜率 50%-60% 的票,10 笔里 4-5 笔是亏的,这是 PA 的数学本质,不是系统的错
PA 体系的根本逻辑不是"高胜率",而是低时间成本 + 正期望值 + 可复制。Brooks 本人在书里也说他胜率就在 50%-60%,但 RR 做得好、仓位控得住,长期是正的。
写在最后
5000 块,43 个迭代,3419 行进度记录,近三万行主策略代码,131K 板块模型代码,90 个行业板块每周扫描。
这篇文章如果你读到了这里,说明你不是随便划过的。我再说一次:这套系统还在持续迭代中,远没有"完成"。 目前还有很多问题在修——闸门参数要校准、WR 表要跑更长的回测、Sector 模型的板块联动判定要改进。搞好了之后,我会上线一个网站,把每日选股结果公开出来,敬请期待。
如果你也在做类似的事——或者准备开始——我想说的不是"这套系统多厉害",而是这条路走得通。AI 可以帮你把一整套交易方法论从书里的文字变成每天跑一遍的代码。它需要你投入大量迭代时间、大量校验精力、以及持续质疑自己的勇气——但它值得。
如果你对这套方法感兴趣,又不想自己搭系统——进群是最低成本的参与方式。 每天的选股结果、策略迭代讨论、PA 框架的落地细节。点这里进去赞赏 ¥8.8 。这个门槛不是为了赚钱——是为了让进来的每个人都在认真做这件事。
另外,系统网站上线后会在Q里第一时间通知。期待在Q里见到你。
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/stock002/post/20260816/%E9%97%B2%E8%81%8A-%E6%88%91%E8%8A%B1%E8%BF%91-5000-%E5%85%83%E7%94%A8-ClaudeCodexDeepSeek-%E6%90%AD%E4%BA%86%E4%B8%80%E5%A5%97-A-%E8%82%A1%E4%BB%B7%E6%A0%BC%E8%A1%8C%E4%B8%BA%E9%80%89%E8%82%A1%E7%B3%BB%E7%BB%9F/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com