如果说 BI (笔)和 FX (分型)是高楼大厦,那 Tick 、 RawBar 和 NewBar 就是地基和砖块。
我们按数据的 颗粒度从细到粗 ,也就是数据处理的流水线顺序来讲解。
1. Tick:最原始的交易原子(已过时)
定位 :这是最微观的数据单位,代表交易所撮合的每一笔成交(或快照)。
-
通俗理解 :就像超市收银台打印的小票,上面记录了"几点几分,卖了什么,多少钱,多少个"。
-
代码现状 : 请注意! 在 czsc 的这个文件中, Tick 类已经被标记为 @deprecated (已弃用) 。
- 代码明确写着: reason="请使用 RawBar" 。
- 这意味着在目前的 czsc 体系中,尽量不要直接用这个类来写策略,只需知道它是最基础的数据概念即可。
-
代码引用 : objects.py:L24
2. RawBar:原始 K 线(标准砖块)
定位 :这是我们最常见的 K 线(蜡烛图) 。它把一段时间内的 Tick 数据打包汇总了。
-
通俗理解 :不管这一分钟内发生了多少笔交易,我只关心 4 个价格:
- O (Open) :开盘价(一开始卖多少钱)
- H (High) :最高价(最高卖到多少)
- L (Low) :最低价(最低跌到多少)
- C (Close) :收盘价(最后定格在多少)
-
核心属性 :
- symbol : 股票代码。
- dt : 时间。
- freq : 周期(比如 1分钟、5分钟、日线)。
- open / close / high / low : 四大金刚价格。
- vol (成交量) / amount (成交额)。
-
有趣的计算属性 : RawBar 提供了几个方便的属性来描述这根 K 线的"长相":
- solid (实体) :身体部分。 abs(open - close) ,涨跌的幅度。
- upper (上影线) :头上的辫子。最高价和实体顶部的距离,代表上方的压力。
- lower (下影线) :脚下的腿。最低价和实体底部的距离,代表下方的支撑。
-
代码引用 : objects.py:L32
3. NewBar:去包含 K 线(精炼砖块)
定位 :这是 缠论特有 的 K 线。它是 RawBar 经过"去除包含关系"处理后生成的。
-
为什么要发明 NewBar ?
- 在缠论中,如果两根 K 线一根长、一根短,且短的完全被长的包在里面(或者反过来),这叫"包含关系"。
- 缠论认为这种包含关系是"犹豫不决"的表现,为了分析趋势,需要把它们 合并成一根新的 K 线 ,简化走势。
- NewBar 就是合并处理后的结果。 所有的后续分析(分型、笔、线段)都是基于 NewBar 进行的,而不是原始的 RawBar 。
-
核心属性 :
- 它长得和 RawBar 几乎一样(也有 OHLC 价格),但它的价格是经过合并计算的。
- elements : 基因记忆 。
- 这是一个列表,里面装了 构成这根 NewBar 的原始 RawBar 。
- 比如:有时候 1 根 NewBar 对应 1 根 RawBar (没有包含关系)。
- 有时候 1 根 NewBar 对应 3 根 RawBar (发生了连续包含合并)。
- 这个设计保证了数据不丢失,你随时可以查到这根"合成 K 线"背后真实的原始走势。
-
代码引用 : objects.py:L64
总结:数据的一生
在 czsc 库中,数据流转的过程是这样的:
- Tick (原子):市场上发生的每一笔交易。
⬇️ (聚合) - RawBar (原始素材):我们看到的普通 K 线图。
⬇️ (缠论包含处理) - NewBar (核心建材):去除了噪声的 K 线,用于画图分析。
⬇️ (寻找顶底) - FX (分型):3 根 NewBar 构成的山顶或山谷。
⬇️ (连接顶底) - BI (笔):一段完整的上涨或下跌趋势。
一句话总结 : RawBar 是给人看的普通 K 线, NewBar 是给缠论算法看的精简 K 线,而 Tick 在这里只是个过客。