第 1 课
买进以后,什么时候卖?
在同一批买入事件上比较少量退出方案,并按事前标准选择和冻结卖出规则。
蛙兄打开上一课留下的研究交接单。
买哪些、什么时候买,都已经写清楚了。只有卖出那一栏,还留着“暂定第十天”。
“我还是觉得有点随意。”他说,“如果第六天就开始不对劲了,也要硬等到第十天吗?”
蛙博士把文档往下翻了翻。
“那你准备怎么看出不对劲?”
“比如 MACD 开始往下走,或者成交量明显少了。总比光盯着日历强吧?”
这句话听起来挺有道理。
但我们已经知道,听起来有道理,还需要下一步:试一试。
这次,买入规则不动。我们只换卖法,看看结果会不会更好。
上次问买不买,这次问什么时候卖
上一课的筛选器,像是在买入名单上打勾。
符合条件的九拍留下,不符合的跳过。留下来的事件,仍然是在数字 9 收盘确认后,下一根有效 K 线开盘进入。
这次不同。我们已经决定参与这些事件,不再把它们筛掉。
假设同一笔交易都是周一开盘买入:一种卖法等到约定日期,另一种卖法则每天看一眼指标,条件出现就准备退出。
买入筛选器决定“这次买不买”,卖出规则决定“买了以后什么时候走”。
所以,这一课研究的是卖出规则,也可以叫“退出规则”。正文里,我们就直接说“卖法”。

不看日历,还能看什么?
我们先试两个熟悉的指标,不急着塞进更多花样。
第一个是 MACD 柱。
之前,我们用它观察九拍完成时有没有开始改善。这次换个问题:买入之后,如果柱值开始回落,是不是可以考虑结束这笔交易?
为了能动手测试,我们把“回落”说得简单一点:今天的柱值,严格小于前一根的柱值。
注意,这里比较的是数值,不是柱子在图上看着长不长。例如,从 -0.1 变成 -0.2,数值也是下降。
第二个是相对成交量。
如果一只股票此前二十根 K 线的平均成交量是 100 万股,今天只有 70 万股,那么今天的相对成交量就是 0.7,相当于平时的七成。
我们的猜想是:买入后,如果成交量缩到平时的八成以下,就准备退出,会不会更合适?
缩量不代表接下来一定跌,MACD 回落也不是卖出的命令。它们只是我们准备交给数据检查的两个想法。
卖法不能只说一半
“MACD 回落就卖”,听起来很明确,其实还漏了两句话。
从什么时候开始看?如果一直没回落呢?
这一课把它们补齐:
| 卖法 | 什么时候卖 | 一直没等到条件怎么办 |
|---|---|---|
| 固定十根 | 买入当天算第 1 根,第 10 根有效 K 线收盘退出 | 到期退出,不等待指标 |
| 看 MACD | 从买入当天收盘开始看;柱值首次低于前一根后,下一根开盘退出 | 最晚第 20 根收盘退出 |
| 看量能 | 从买入当天收盘开始看;相对成交量首次低于 0.8 后,下一根开盘退出 | 最晚第 20 根收盘退出 |
卖出时间按这只股票实际有行情的 K 线根数来算,不是日历上往后数十天、二十天。后面说的“十根退出”,就是买入当天算第 1 根,在第 10 根有效日 K 收盘卖出。
为什么看到条件以后,要等下一根开盘?
因为我们用了当天完整的收盘价或成交量。等这些信息到齐,当天已经收盘了,不能假装自己提前知道结果,又按这个收盘价卖掉。
例如,买入后的第 6 根 K 线收盘时,MACD 柱第一次回落,我们就在第 7 根开盘退出。它也可能在买入当天就回落,那就下一根开盘退出,不必等满十根。
如果第 19 根收盘才触发,就第 20 根开盘退出;如果始终没有触发,才用第 20 根收盘兜底。
二十根在这里是最长等待期限,不是在重新比较“固定二十根卖出”。 有了这个上限,AI 才不会把一笔一直没等到条件的交易无限期留在那里。

先把你的想法告诉 AI
打开之前的研究项目,让 Codex 读一读你保存的买入交接单。使用 WorkBuddy 也可以。
如果这是一个新对话,先告诉它交接单放在哪里。AI 不需要记得我们前面的聊天,但需要拿到项目里真实留下的记录。
你可以从这样一段话开始:
交给 AI 研究助手
请先读取当前项目已保存的买入规则、数据位置和实验记录,用几句话告诉我:目前买哪些事件、什么时候买、原来怎样计算十根收益。如果找不到交接单,请让我提供,不要猜测我的选择。
我想保持买入不变,以固定十根有效 K 线收盘退出为对照,分别尝试“MACD 柱回落后退出”和“相对成交量低于 0.8 后退出”。两种指标方案分开测试,不叠加。先别计算,请用大白话和一个简单例子,帮我说清:从何时观察、什么情况触发、什么时候实际卖、一直没有触发怎么办。
暂时不要改变买入规则,不加入资金和成本,不读取或计算 2023 年的价格、指标、信号或收益。
接下来,你可以继续追问。
比如:“我本来以为 MACD 要跌到零以下才算回落,我们说的是不是同一种情况?”
或者:“缩量以后也可能继续涨,为什么我们还要试这个卖法?”
这些对话不是绕远路。它们正是在帮你把“我觉得这样卖会更好”,变成一条双方都理解的规则。
如果你想使用另一种定义,也可以。但要先记录成自己的版本,再运行。不要看过结果以后悄悄换个阈值,却仍然叫它同一次实验。
如果你想跟随课程,直接使用文末的完整参考任务。它把本课的三个方案写清楚了,可以整段交给 AI,不需要自己拼公式。
动手以前,先约定怎么比
我们这次不需要一个资金账户,只把每次买入单独拿出来,分别试三种卖法。
但三种卖法得比较同一批事件。
两种指标方案最多可能等二十根。如果研究期已经结束,后面凑不齐二十根,就不把这次事件放进主比较。十根方案也要使用同一批名单,不能一边多算几次,一边少算几次。
这只是回看历史时,为了公平比较做的样本约定,不是买入当天能预知未来行情是否齐全的筛选器。
我们还提前定一个简单标准:新卖法的收益中位数至少比十根方案高 0.20 个百分点,平均收益和正收益比例都不能下降,才考虑换过去。还要一起看持有多久,不能只看收益数字。
这不是市场通用标准,只是本次实验约好的选择方法。没有方案通过,就保留十根,不为了换方案而换方案。
规则说清楚以后,就让 AI 实际运行,生成结果摘要和一张对比图。代码怎么组织、缺什么依赖,可以交给它处理;你要关心的是,它有没有按你同意的规则在做。
我们跑出来的结果:没有换掉十根
课程参考路线继续使用 PY-10“出行网络”行业的下行九拍,信号确认后的下一根开盘进入,只看 2021—2022 年。
上一课有 151 次完整十根事件。这次其中 1 次在研究期内凑不齐二十根,于是三种卖法统一比较剩下的 150 次事件,覆盖 22 家公司。
这意味着十根结果也要重新算。它的平均收益四舍五入后仍是 2.71%,但中位数从上一课的 1.93% 变成了 1.71%,正收益比例也变了。不是改了算法,而是少了一个样本。
| 卖法 | 平均收益 | 收益中位数 | 正收益比例 | 平均持有根数 |
|---|---|---|---|---|
| 固定十根 | 2.71% | 1.71% | 62.00% | 10.00 |
| MACD 柱回落后退出 | 1.80% | -0.06% | 47.33% | 6.89 |
| 相对成交量低于八成后退出 | 0.83% | 0.33% | 52.67% | 3.59 |
这些数字来自虚构教学数据,描述的是每次事件的结果,不是账户收益,也不构成投资建议。

蛙兄看完表格,有点不甘心。
“我还以为加了指标,会比到日子就卖更聪明。”
这次数据没有支持他的预期。
MACD 方案平均持有约七根,比十根短,但平均收益、中位数和正收益比例都下降了。中位数接近零且略为负数,也提醒我们,不能只盯着 1.80% 的平均值。
量能方案离场更早,平均只拿了约三根半,持有时长的中位数甚至只有两根。也就是说,至少一半的事件在买入后的下一根开盘就退出了。
这不一定是程序着急了,而是我们把退出条件定义成“缩到八成以下”,它在这些事件里很快就出现了。
两种卖法都没有通过我们约定的改善标准。因此,在这三个方案之间,课程继续保留固定十根退出。
别只问 AI 谁赢了,也问它具体怎么卖的
汇总表告诉我们大致情况,一笔实际记录则能帮我们看见:规则究竟在什么时候生效。
例如,虚拟公司“飞泉出行”的一次事件:
- 下行九拍在 2021 年 1 月 29 日收盘确认;
- 2 月 1 日开盘买入;
- 当天收盘时,相对成交量已经低于
0.8; - 所以 2 月 2 日开盘就按量能规则退出,事件收益约为
-0.39%。
它没有等到第十根。它的退出条件也不是“股价下跌”,而是我们事先写下的量能条件。
当然,也有一直等不到的。150 次量能实验中,有 2 次最后用到了第二十根收盘的兜底;MACD 实验则全部在上限以内触发了退出。
你不必照着课程挑同一笔,也不需要手算全部交易。可以直接追问 AI:
和 AI 一起验收
请从刚刚实际运行的结果中,找一笔较早触发的退出,再找一笔用到最长持有期限的退出;如果没有,就直接说没有。逐笔告诉我:哪天买入,哪天出现什么条件,当时已经知道哪些数据,最后哪天、按开盘价还是收盘价退出。请引用实际交易记录,不要编示意结果。
再检查三种卖法是否使用同一批事件,指标触发后是否确实等到下一根开盘。请把检查发现的问题与“规则收益不好”分开说明。
如果 AI 用收盘后才知道的指标,却按同一天收盘价卖出,那是实现与约定不一致,需要修。
如果时间都对,只是新卖法赚得更少,那就是实验结果,不是需要“修好”的程序错误。
没换方案,也不是白忙一场
这次,我们没有找到比十根更好的卖法。
但这不等于什么都没得到。原来只是猜“多看一个指标应该会更好”,现在我们知道:在这批事件和这两种定义下,没有看到改善。
这句话也别说过头。它不是“MACD 没用”,更不是“成交量没用”。我们只试了它们各自的一种用法,没有检查所有可能的定义。
你可以另开一份研究记录,继续探索自己的想法。但不用为了交出一个看起来更高级的方案,反复改到出现漂亮结果才肯停。
规则多加一条,收益不会自动多一分。试过以后保留原方案,也是一种有依据的决定。
如果你跟随课程,现在可以让 AI 把决定补进交接单:
保存退出规则交接单
请在当前买入规则不变的前提下,将本次三个退出方案的实际结果和选择理由另存到研究交接单中,保留所有旧实验。课程参考卖法继续采用:实际买入当天算第 1 根,在第 10 根有效日 K 的前复权收盘价退出。请不要将其他探索版本的候选自动当成这次选择,也不要把完整二十根的历史样本要求写成账户买入条件。尚未进行有限资金、成本和 2023 年留出验证,请一并注明。
如果你走的是自己的路线,就把其中的卖法换成你实际选定的版本。后续结果可以和课程不同,重要的是交接单与真实实验一致。
蛙兄把“固定十根”重新填回了卖出那一栏。
这一次,它不再只是一个随口接上的日期,而是和两种具体卖法比较之后,暂时保留下来的选择。
“那现在总能看看真正的账户会怎样了吧?”
快了。之前每次机会都单独算,钱从来没拦过路。接下来,如果账户里只有 100 点资金,还要支付买卖成本,就得先把钱怎样用、交易怎样执行说清楚。
那是下一课要补上的约定。
准备运行时,把完整任务交给 AI
不必背下面的公式。上面的解释帮你理解我们在问什么,下面这段负责把具体版本交给 AI。你也可以通过几轮对话逐步说清楚,再让 AI 整理;不要求一次就写出这么完整的任务。
需要实际运行?展开并复制完整参考任务
课程参考实验|可直接复制
请在当前项目中实际运行一轮退出规则比较,保存程序、逐事件记录、大白话摘要和一张三方案对比图。先读取已保存的九拍规则、合格公司名单、买入交接单及数据位置。缺少必要记录时请让我提供,不要自行拼出另一套九拍或资格规则。
先复述当前买入选择。如果不是下面的参考路线,请问我是继续自己的路线还是另建参考实验,不要覆盖已有选择。参考路线为:沿用已冻结的292家合格虚构公司,只保留 companies.parquet 中 industry_id = PY-10(出行网络)的完整下行九拍;数字9收盘确认,下一根该股有效日K的 adjusted_open 进入。只使用2021-01-04至2022-12-30的价格和指标。不要读取或计算2023年的价格、指标、信号、收益,不重做跨期资格筛选,不加入资金、手续费、滑点或指数对比。
买入当天计为第1根,所有日数按单股有效日K计数。只比较以下三种退出,彼此独立,不组合:
- 十根对照:第10根有效日K的
adjusted_close退出。 - MACD退出:从买入第1根至第19根收盘逐根观察。柱值
H[t] < H[t-1]首次成立后,下一根有效日K的adjusted_open退出;相等不触发,不要求零轴、金叉或先上涨再回落。MACD使用前复权收盘价:EMA12 = adjusted_close.ewm(span=12, adjust=False, min_periods=12).mean();EMA26 = adjusted_close.ewm(span=26, adjust=False, min_periods=26).mean();DIF = EMA12 - EMA26;DEA = DIF.ewm(span=9, adjust=False, min_periods=9).mean();H = DIF - DEA。沿研究期单股历史计算,不在每笔买入时重置。 - 量能退出:观察及执行时点同上,首次出现
R[t] < 0.8后下一根开盘退出,等于0.8不触发。R[t]为当天trading_volume_shares除以此前20根有效日K的平均成交量,分母不含当天。
两种指标方案若一直没有触发,均在第20根收盘退出;第19根收盘触发时,第20根开盘退出优先。不要观察到第20根收盘才再决定按它的开盘价卖出。MACD两根柱无法比较,或量能历史不足、所需值缺失、分母不大于零时,当天记为不可判断,继续观察;不补数、不因此删除事件。买入前的触发不直接用于买入后的退出。
从冻结的买入事件出发,选择研究期内自买入开始拥有完整20根、这些根的所需开收盘价均有限且买入价大于零的共同样本,三种卖法全部使用同一批事件。报告原始事件数、旧十根样本数、共同样本数及排除原因;遇到零或负复权价格,先核对字段口径并说明,不自动改价。共同样本的十根结果要重新计算,不能沿用另一批样本的汇总。若不足100次事件、10家公司或50个信号完成日期,先报告覆盖情况,暂停选择,不读2023年来补齐。这些是历史对照的样本条件,不是实际买入条件。
每个事件独立计算 退出价 ÷ 买入价 - 1,允许同股或同日事件重叠记录,但不把它们宣称为统计上相互独立。保存买入与退出日期、价格、触发日期、退出原因、持有根数及收益。汇报三组事件数、平均收益、中位数、正收益比例、平均与中位持有根数;两种指标方案还要汇报触发退出和到期兜底各多少次、多少事件在实际观察路径中遇到指标不可判断。不要把事件收益当作账户收益,也不要机械年化。
选择标准是:相对共同样本的十根对照,中位数至少提高0.20个百分点,均值和正收益比例都不下降,才列为候选。用未四舍五入数值判断;两者都通过时先比中位数,再选平均持有较短者,再比正收益比例,最后仍并列则MACD优先。没有通过者就保留十根,不新增参数搜索,也不自动更改研究交接单中的最终选择。
请自行检查首次触发、下一根执行、相等不触发、指标缺失继续观察、第19根触发及第20根兜底等边界。实际运行后,用大白话解释结果,并报告程序核验是否通过。不要为了对上某个示例数字调整结果。到此停止,不运行账户或打开留出期。
如果结果看起来不对,可以直接追问:
结果异常时检查
请先检查程序是否忠实执行了我提供的三方案规则,尤其是买入名单、共同样本、指标定义和退出时点。给我指出最早出现差异的环节,并引用实际文件或交易记录。没有外部参考表时,不要假设自己知道课程数字;不要把收益不理想当作程序错误。若确认是实现问题,说明最小修复方案并按原规则重跑,保留原记录;如果本来就是我的自定义版本,请说明差异,不要强行改成参考版本。2023年继续封存。
课后讨论
留下你的问题、理解或不同意见,也看看其他学习者怎么想。