样本:BTC-USD | 10d / 5m | 生成时间:2026-03-11 10:48 UTC
pytrendline 研究结果| question | answer |
|---|---|
| 为什么不直接搬外部 breakout 代码 | 因为来源语义不干净;这次改成学习逻辑后 clean reimplementation。 |
| 这次正式入库的是什么 | `trendline_breakout_navigator.py` —— 我们自己的状态机实现。 |
| 和 pytrendline 的关系 | 同页对照:前者偏逐 bar 趋势状态,后者偏趋势线搜索/scoring。 |
| label | meaning |
|---|---|
| support line(实线) | bullish active line,按当前仓库逻辑分开绘制;不会再和 resistance 硬连成一条折线。 |
| resistance line(虚线) | bearish active line,和 support 分开画,趋势切换处自然断线。 |
| anchor(方块) | 当前这条线的起点,也就是 anchor pivot。 |
| slope pivot(菱形) | 当前这条线真正用于定斜率的第二个 pivot;如果还没出现,说明这条线仍是 provisional。 |
| wick_bull | 支撑线被下探但收盘守住,等价于 bullish rebound / false break down。 |
| wick_bear | 压力线被上刺但收盘压回,等价于 bearish rejection / false break up。 |
| breakout_bear | 收盘真正跌破 active support line,记作真 bearish breakout。 |
| breakout_bull | 收盘真正站上 active resistance line,记作真 bullish breakout。 |
先记这个:上升结构常见是 HL + HH;下降结构常见是 LH + LL。
短理解:先确认 HH / LL,再从前一个关键 swing 点启动水平 provisional line;等后续同侧 pivot 出现后,才更新成真正斜线。
这套 navigator 不是“上下轨同时存在”的 channel 模型,而是“结构刚转强/转弱后,先盯最关键失效边”的状态机模型。
| 框架 | 核心对象 | 你在图上真正看的是什么 |
|---|---|---|
| navigator active line | 单边结构失效线 | HH 后优先盯支撑;LL 后优先盯压力 |
| channel assumption | 双边边界区间 | 上轨/下轨同时存在,真假突破相对于整个通道定义 |
| 阶段 | active line 怎么定义 | 你应该怎么理解 |
|---|---|---|
| 第 0 步:还没 HH | 还没有 bullish 结构被确认 | 不要把未来可能的上升线画出来 |
| 第 1 步:HH 刚确认 | 先从前一个 swing low 启动水平 provisional support line | 这不是最终斜率,只是先声明:若结构转强,最该守住的是这个低点 |
| 第 2 步:价格继续运行 | active line 暂时保持水平 | 此时它更像‘结构失效线’,不是成熟通道下轨 |
| 第 3 步:后续 pivot low 确认 | 用 anchor low + 新 pivot low 计算 slope,线更新为 low→low 斜线 | 到这一步才真正有了‘动态支撑线’ |
| 第 4 步:后续交易 | 看价格是守住这条线、下探收回,还是收盘真跌破 | 分别对应 rebound / breakdown 两类含义 |
最关键一句:HH 刚出现时的那条水平线,不是成熟趋势线本身,而是一个 provisional 结构底线。 先用它回答“转强结构最起码不能跌回哪里下面”,等后续同侧 pivot 出现,再把它升级成真正 low→low / high→high 斜线。
| 盘面现象 | 业务解释 | 交易含义(更稳妥的理解) |
|---|---|---|
| close 仍在线上方 | bullish 结构仍存活 | 继续观察,不等于立刻追多 |
| low 跌破但 close 收回线之上 | 更像测试支撑 / wick_bull / false break down | 可作为‘结构仍在’的证据,但最好叠加别的确认 |
| close 真跌破 support | bullish 结构失效 | 更像退出多头 / 禁止新多,而不是单独作为主入场 |
| 后续再形成新 HH + 新 HL | 结构重新转强 | 才考虑新一轮顺势入场 |
更稳妥的教学口径:这条线首先是 risk / invalidation line,其次才可能被你拿来做入场辅助。也就是说,它更擅长回答“什么时候结构失效”,而不是单独回答“现在该不该冲进去买”。
短理解:下探支撑但收盘收回,记作 wick_bull;收盘真正跌破支撑,记作 breakout_bear。
短理解:上刺压力但收盘压回,记作 wick_bear;收盘真正站上压力,记作 breakout_bull。
| step | how_to_read |
|---|---|
| 1 | 先看 HH / LL 标记:它们是趋势切换的触发点。 |
| 2 | 看到 HH 后,会先从前一个 swing low 启动一条水平 provisional support line;看到 LL 后,会先从前一个 swing high 启动水平 provisional resistance line。 |
| 3 | 只有后续同侧 pivot 出现后,active line 才会从水平线更新成真正的 low→low / high→high 斜线。 |
| 4 | 现在 support 和 resistance 会分开画:support 用实线,resistance 用虚线,趋势切换处断线,不再强行相连。 |
| 5 | 方块是 anchor 点,菱形是当前 slope pivot,所以你能直接看到这条线到底连的是哪两个点。 |
| 6 | 如果是 wick_bull / wick_bear,表示线被测试但收盘仍守在正确一侧,更像反弹 / rejection。 |
| 7 | 如果是 breakout_bear / breakout_bull,表示收盘真正穿过 active line,这才算真突破。 |
| 8 | 现在每条线也会以 segment state 存档:可以看到它的 start/end、end_reason,以及它是 provisional 还是 final。 |
| 9 | 你还可以在 Segment Replay 里点选某一段,查看它何时被计算出来、何时结束、以及它使用了哪些点。 |
| 10 | 最后看 `tbn_composite_trend` / `tbn_signal`,它们是 long/medium/short 三层结果的合成。 |
| window | why | bars_with_active_line |
|---|---|---|
| 最近 288 根 | 保留纯最近视角 | 288 |
| 最近 1000 根 | 给更长上下文,避免最近窗口刚好没有 active line | 1000 |
| 自动挑出的 576 根窗口 | 按 active line 最密集原则自动选择,优先保证看得到线 | 576 |
| metric | value |
|---|---|
| bars | 2721 |
| HH count | 39 |
| LL count | 42 |
| wick bull / rebound | 0 |
| wick bear / rejection | 1 |
| true breakout bull | 42 |
| true breakout bear | 44 |
| composite bullish bars | 972 |
| composite bearish bars | 1680 |
| active long bars | 2406 |
| active medium bars | 1901 |
| active short bars | 1793 |
| segment count | 175 |
| segment ended by breakout | 89 |
| segment ended by pivot_update | 82 |
| segment ended by trend_switch | 3 |
| segment ended by window_end | 1 |
| timeframe | segment_id | side_label | is_provisional | start_timestamp | end_timestamp | bars_visible | end_reason | anchor_price | pivot_price | slope |
|---|---|---|---|---|---|---|---|---|---|---|
| tbn_long | 16 | resistance | 0 | 2026-03-10T13:45:00Z | 2026-03-10T14:10:00Z | 6 | breakout | 65660.515625 | 69762.796875 | 8.709727 |
| tbn_medium | 40 | support | 0 | 2026-03-10T13:30:00Z | 2026-03-10T14:50:00Z | 17 | breakout | 71266.882812 | 70907.703125 | -7.642121 |
| tbn_short | 104 | support | 1 | 2026-03-10T15:10:00Z | 2026-03-10T15:55:00Z | 10 | pivot_update | 69508.351562 | NaN | 0.000000 |
| tbn_short | 105 | resistance | 0 | 2026-03-10T16:00:00Z | 2026-03-10T16:10:00Z | 3 | breakout | 69508.351562 | 70945.703125 | 68.445312 |
| tbn_medium | 41 | support | 1 | 2026-03-10T15:10:00Z | 2026-03-10T17:45:00Z | 32 | pivot_update | 69508.351562 | NaN | 0.000000 |
| tbn_medium | 42 | resistance | 0 | 2026-03-10T17:50:00Z | 2026-03-10T18:10:00Z | 5 | breakout | 69508.351562 | 70619.226562 | 25.834302 |
| tbn_short | 106 | resistance | 1 | 2026-03-10T18:25:00Z | 2026-03-10T20:40:00Z | 28 | pivot_update | 71699.726562 | NaN | 0.000000 |
| tbn_short | 107 | support | 0 | 2026-03-10T20:45:00Z | 2026-03-10T20:50:00Z | 2 | breakout | 71699.726562 | 70320.632812 | -27.041054 |
| tbn_medium | 43 | resistance | 1 | 2026-03-10T18:25:00Z | 2026-03-10T21:05:00Z | 33 | pivot_update | 71751.718750 | NaN | 0.000000 |
| tbn_medium | 44 | support | 0 | 2026-03-10T21:10:00Z | 2026-03-10T23:30:00Z | 29 | breakout | 71751.718750 | 70390.609375 | -18.904297 |
| tbn_long | 17 | resistance | 1 | 2026-03-10T21:50:00Z | 2026-03-11T04:55:00Z | 86 | pivot_update | 71751.718750 | NaN | 0.000000 |
| tbn_short | 108 | support | 1 | 2026-03-11T05:00:00Z | 2026-03-11T05:20:00Z | 5 | pivot_update | 69526.820312 | NaN | 0.000000 |
| tbn_short | 109 | resistance | 0 | 2026-03-11T05:25:00Z | 2026-03-11T05:30:00Z | 2 | breakout | 69526.820312 | 69936.304688 | 17.803668 |
| tbn_medium | 45 | support | 1 | 2026-03-11T05:00:00Z | 2026-03-11T05:40:00Z | 9 | breakout | 69526.820312 | NaN | 0.000000 |
| tbn_short | 110 | resistance | 1 | 2026-03-11T08:35:00Z | 2026-03-11T09:45:00Z | 15 | pivot_update | 69987.226562 | NaN | 0.000000 |
| tbn_long | 18 | support | 0 | 2026-03-11T05:00:00Z | 2026-03-11T10:40:00Z | 69 | breakout | 71751.718750 | 70256.460938 | -9.007577 |
| tbn_medium | 46 | resistance | 1 | 2026-03-11T05:45:00Z | 2026-03-11T10:40:00Z | 60 | window_end | 70256.460938 | NaN | 0.000000 |
| tbn_short | 111 | support | 0 | 2026-03-11T09:50:00Z | 2026-03-11T10:40:00Z | 11 | breakout | 69987.226562 | 69732.140625 | -7.729877 |
点选某个 segment 后,会展示它何时被计算出来(computed at)、何时结束、用了哪些点(anchor / slope pivot),以及对应的局部 K 线回放图。
| id | is_breakout | num_points | m | b | score | starts_at_date | ends_at_date |
|---|---|---|---|---|---|---|---|
| S-[8,12,58,59,68,74,81,95] | True | 8 | 0.064453 | 69526.304687 | 62037.201783 | 2026-03-11 03:25:00+00:00 | 2026-03-11 10:40:00+00:00 |
| S-[8,12,58,59,68,73,81] | True | 7 | 0.010263 | 69526.738205 | 40035.675221 | 2026-03-11 03:25:00+00:00 | 2026-03-11 09:30:00+00:00 |
| S-[23,48,65,87,88] | True | 5 | -7.8175 | 70117.818125 | 10849.429944 | 2026-03-11 04:40:00+00:00 | 2026-03-11 10:05:00+00:00 |
| S-[39,68,73,81,95] | True | 5 | 0.419807 | 69496.299403 | 9534.160779 | 2026-03-11 06:00:00+00:00 | 2026-03-11 10:40:00+00:00 |
| S-[16,58,59,68,73] | True | 5 | -0.213542 | 69542.408854 | 9476.733908 | 2026-03-11 04:05:00+00:00 | 2026-03-11 08:50:00+00:00 |
| S-[15,17,37,38,60,67,78] | True | 7 | 0.195561 | 69541.347842 | 8142.824099 | 2026-03-11 04:00:00+00:00 | 2026-03-11 09:15:00+00:00 |
| S-[17,58,59,68,73] | True | 5 | -0.315549 | 69548.325267 | 7495.209313 | 2026-03-11 04:10:00+00:00 | 2026-03-11 08:50:00+00:00 |
| S-[35,52,53] | True | 3 | 26.263787 | 68534.470588 | 7165.428743 | 2026-03-11 05:40:00+00:00 | 2026-03-11 07:10:00+00:00 |
| S-[31,51,52] | True | 3 | -1.694531 | 69988.835156 | 5762.299525 | 2026-03-11 05:20:00+00:00 | 2026-03-11 07:05:00+00:00 |
| S-[59,68,73,74,81,95] | True | 6 | 0.217014 | 69514.539931 | 5641.570469 | 2026-03-11 07:40:00+00:00 | 2026-03-11 10:40:00+00:00 |
| id | is_breakout | num_points | m | b | score | starts_at_date | ends_at_date |
|---|---|---|---|---|---|---|---|
| R-[9,65,66,74,75,79,85,95] | True | 8 | 0.160268 | 69633.385714 | 59047.386168 | 2026-03-11 03:30:00+00:00 | 2026-03-11 10:40:00+00:00 |
| R-[13,65,66,74,75,79,80] | True | 7 | -0.048513 | 69648.529108 | 24973.140307 | 2026-03-11 03:50:00+00:00 | 2026-03-11 09:25:00+00:00 |
| R-[26,49,52,53,72,77] | True | 6 | -12.325747 | 70576.930367 | 18156.724254 | 2026-03-11 04:55:00+00:00 | 2026-03-11 09:10:00+00:00 |
| R-[46,74,92] | True | 3 | -9.392299 | 70342.897321 | 16253.776229 | 2026-03-11 06:35:00+00:00 | 2026-03-11 10:25:00+00:00 |
| R-[70,80,83,91,93] | True | 5 | -9.625 | 70412.203125 | 14918.362137 | 2026-03-11 08:35:00+00:00 | 2026-03-11 10:30:00+00:00 |
| R-[46,64,72,78,90] | True | 5 | -8.50434 | 70302.051215 | 9479.175736 | 2026-03-11 06:35:00+00:00 | 2026-03-11 10:15:00+00:00 |
| R-[3,74,75,78] | True | 4 | -2.834727 | 69857.636994 | 8987.804262 | 2026-03-11 03:00:00+00:00 | 2026-03-11 09:15:00+00:00 |
| R-[9,38,68,82,94] | True | 5 | -1.13847 | 69645.074353 | 5399.53109 | 2026-03-11 03:30:00+00:00 | 2026-03-11 10:35:00+00:00 |
| R-[0,9,16] | True | 3 | -8.225694 | 69708.859375 | 4953.314696 | 2026-03-11 02:45:00+00:00 | 2026-03-11 04:05:00+00:00 |
| R-[26,46,47] | True | 3 | -17.280469 | 70705.753125 | 4666.023753 | 2026-03-11 04:55:00+00:00 | 2026-03-11 06:40:00+00:00 |