作 者:老余捞鱼
原创不易,转载请标明出处及原作者。

写在前面的话:我是老余,这篇文章将带你彻底搞懂砖形图(Renko)。它不是被人误解成的信号发生器,而是价格压缩算法:专门帮你过滤噪音、减少无效决策。接下来我会讲砖块怎么建、砖块大小怎么选、回测怎么避坑、摩擦力怎么算,最后再送你一个Python砖块生成器。
当你做中频交易(持仓几分钟到几小时,而不是微秒级别)的时候,最大的敌人不是缺乏信号,而是太多”几乎可以动手”的信号。砖形图(Renko Chart)是为数不多能真正减少决策数量的工具之一,而且它不假装自己能预测未来。
这篇文章我想把砖形图的核心逻辑、实战工作流、回测避坑方法和摩擦力计算,一并用大白话讲清楚。最后还会送你一个可以直接跑的Python砖块生成器。
一、什么是砖形图?
普通的K线图是按时间来切割行情的。比如5分钟K线图,每过5分钟就画一根线,不管这5分钟里价格动了多少。这就带来一个问题:当行情陷入窄幅震荡的时候,一堆很小的K线就摆在眼前,而这些小K线完全可以把一个趋势交易者折腾到怀疑人生。
砖形图的思路完全不同——它从价格本身出发来画图,忽略时间维度。具体来说:
- 你设定一个砖块大小(比如3个点),只有当价格变动超过这个值的时候,才会画出一块新砖。
- 顺着当前方向走,移动一个砖块的高度就生成下一块砖。
- 逆着当前方向走,需要移动两个砖块的高度才会生成反转砖。这意味着反转信号天然延迟。
举个例子:假设行情从3000开始,砖块大小为3个点。那么只有当行情达到3003或2997时才形成第一块砖。如果第一块砖是从3000涨到3003,那么接下来继续上涨需要达到3006才出第二块砖;而如果要反转向下,需要跌到2997才会出现反转砖。
这种画法有两个直接的后果:
- 趋势看起来更干净:因为小幅度的来回波动根本不会出砖,噪音被自动过滤掉了。
- 路径信息被隐藏了:你不知道价格在两块砖之间走了什么路。而那些被隐藏的路径,恰恰是很多止损单”阵亡”的地方。
第二点,就是整篇文章的核心。
二、砖块不是K线
核心警告:大多数砖形图策略失败的原因只有一个:把砖块当K线用。
砖块不是K线。砖块是你主动选择丢弃信息的结果。每一块砖的本质是:我决定忽略这段时间内的价格细节,只保留”价格动了这么多个单位”这个事实。
所以,砖形图真正适合做的事情是:
- 市场状态识别:当前是趋势还是震荡?砖形图比K线直观得多。
- 止损位统一管理:用砖块数量来定义风险,简单一致。
- 交易频率控制:砖形图天然就是一个”信号节流阀”,减少你手痒的次数。
然后,具体的进出场操作要在真实的价格K线上做,带真实的时间戳、真实的滑点、真实的手续费。是的,这比直接在砖形图上回测看起来没那么”漂亮”,但那是诚实的做法。
小贴士
在砖形图上直接回测,就像自己给自己出考卷然后自己打分——看起来分数很高,但到了实战就会原形毕露。
三、平台差异:你的砖形图可能是”假的”
这可能是砖形图最大的坑。不同平台、不同设置下,同样的行情数据可能生成完全不同的砖形图。原因很简单:砖块的构建需要高分辨率数据才能知道每一块砖应该在什么时候出现。
TradingView的坑
TradingView自己说了:精确的砖块计算需要Tick级数据。而在实际操作中,砖块可以基于收盘价来推算,也可以基于OHLC(开高低收)来推算,取决于你的设置。这两者出来的砖块形状可能差异很大。
更大的坑在这里:我之前直接在砖形图上回测了一个策略,结果漂亮得像楼梯一样,结果实盘之后信号开始漂移。后来发现是砖块构建的输入参数被我不经意间改了,我等于是在给自己的作业打分。更离谱的是,TradingView明确警告过:在非标准图表类型(包括砖形图)上运行策略可能产生不真实的结果,因为策略计算使用的是合成的砖块价格。他们专门提供了一个选项,让你用标准OHLC数据来处理订单和成交。请务必打开这个选项。
MetaTrader的坑
如果你用的是MT4/MT5这类平台,还有另一个坑:很多砖形图是以离线图表或模拟图表的方式生成的,有些工具明确告诉你不能直接在模拟图表上执行订单。你需要准备一个”双图表工作流”:砖形图看方向,K线图做执行。
各平台砖形图差异对比
| 平台 | 数据源 | 回测可靠性 | 核心风险 |
|---|---|---|---|
| TradingView | 收盘价 或 OHLC | 需开启OHLC成交选项 | 合成价格导致虚假结果 |
| MT4/MT5 | 离线模拟图表 | 不可直接在砖形图上回测 | 不能直接执行订单 |
| 自研Python | Tick级数据(最佳) | 可控,但需自己实现 | 数据质量和完整性 |
四、实战工作流三步走
下面是我作为中频交易者使用砖形图的完整工作流。没有什么花哨的东西,但很实用。
第一步:像风控工程师一样选砖块大小
砖块大小选得好不好,直接决定你的交易体验。砖块太小,出砖太频繁,和K线图没啥区别;砖块太大,出砖太慢,趋势都走完了你还没反应过来。
我的原则很简单:选一个让你的交易时段内出砖数量”可控”的砖块大小,而不是”刺激”的。
具体做法:
- 在你正常的K线时间周期上,计算ATR(平均真实波动范围,14周期)。
- 选砖块大小为ATR的一个分数(比如1/2或1/3)。
- 锁定这个砖块大小,在整个测试窗口内不要变。否则你的统计数据毫无意义。
为什么要锁死?因为很多图表工具提供”动态砖块大小”选项,看起来很智能,但动态砖块等于动态策略:你回测的其实不是一个策略,而是一系列不同的策略。
具体案例
假设标的当前价格100元,5分钟K线图上ATR(14)为0.40元。
砖块大小 = 0.20元(ATR的一半)
2块砖的止损 = 0.40元风险/股
如果你每笔交易的风险预算是100元:
股数 = 100 / 0.40 = 250股
名义持仓 ≈ 250 x 100 = 25,000元
这就是为什么我从仓位计算开始,而不是从信号开始。
第二步:用砖形图判断方向和市场状态
砖形图只负责两件事:告诉我现在该看哪个方向,以及现在的市场是不是在折腾人。
方向判断规则(故意设计得很无聊):
- 看多方向:至少2块连续上升砖出现,且最近一次回调没有超过2块下降砖。
- 看空方向:镜像对称,至少2块连续下降砖出现,且最近一次反弹没有超过2块上升砖。
震荡过滤规则:
- 如果最近N块砖的方向每隔1-3块就翻转一次,那就不要动手。砖形图在告诉你:当前市场正在用来回打脸的方式赚钱。
这套规则无聊吗?无聊就对了。好的规则应该无聊。
第三步:在标准K线上执行
只在砖块闭合的时候考虑进场,但具体的委托单要在K线图上挂,这样你才能诚实地计算滑点、手续费和时间延迟。
一个我实际在用的回调延续进场策略:
- 趋势确认:当前方向上出现2块或更多同向砖。
- 回调出现:出现1块逆势砖(偶尔2块,但绝不超过2块)。
- 触发信号:下一块砖重新沿原方向出现。
- 止损:入场点下方2块砖的价格距离。
- 目标:入场点上方3块砖,或者在2块砖处部分离场后用2块砖距离跟踪。
这个策略没什么神奇的。它的本质就是:控制交易频率 + 统一止损标准。砖形图给你的不是超能力,而是一个减少乱动次数的框架。
五、摩擦力计算:你以为的利润可能不存在
所有策略都要过这一关:手续费和滑点。砖形图可以把你的进场点清理得更干净,但摩擦力决定了你需要的最低正确率。我们来算一笔账。
假设在一个流动性较好的加密货币永续合约上交易:
| 参数 | 数值 | 说明 |
|---|---|---|
| 砖块大小 | 0.25% | 价格的0.25% |
| 止损距离 | 2块砖 = 0.50% | 逆势0.50% |
| 目标距离 | 3块砖 = 0.75% | 顺势0.75% |
| 往返手续费 | 0.12% | 进+出 |
| 滑点 | 0.06% | 进+出 |
总摩擦力 = 0.12% + 0.06% = 0.18%
现在算净结果:
净盈利 = 0.75% − 0.18% = 0.57%
净亏损 = 0.50% + 0.18% = 0.68%
盈亏平衡正确率 = 0.68 / (0.57 + 0.68) = 54.4%
这就是最核心的结论:砖形图可以清理你的进场点,但摩擦力决定了你的盈亏平衡正确率。 如果你在流动性差的时段交易,摩擦力数字会膨胀,你的策略会安静地死去。摩擦力膨胀的影响
如果你在非活跃时段交易,滑点可能从0.06%飙升到0.20%以上,总摩擦力从0.18%变成0.32%以上。重新计算:
净盈利 = 0.75% − 0.32% = 0.43%
净亏损 = 0.50% + 0.32% = 0.82%
盈亏平衡正确率 = 0.82 / (0.43 + 0.82) = 65.6%
你需要的正确率从54.4%直接跳到65.6%——这就是流动性差的代价。
不同摩擦力下的盈亏平衡正确率
| 总摩擦力 | 净盈利 | 净亏损 | 盈亏平衡正确率 |
|---|---|---|---|
| 0.10% | 0.65% | 0.60% | 48.0% |
| 0.18% | 0.57% | 0.68% | 54.4% |
| 0.32% | 0.43% | 0.82% | 65.6% |
| 0.50% | 0.25% | 1.00% | 80.0% |
看到了吧?摩擦力每增加一点,你需要的正确率就往上跳一大截。这就是为什么我一直强调:先算摩擦力,再谈策略。
六、一个Python砖块生成器
下面这段代码是确定性的,用的是模拟收盘价。你之后可以把 closes 替换成自己的真实价格序列。
renko_demo.py
def renko_from_closes(closes, brick):
bricks = []
last = closes[0]
for px in closes[1:]:
while px >= last + brick:
last += brick
bricks.append(("up", round(last, 2)))
while px <= last - brick:
last -= brick
bricks.append(("down", round(last, 2)))
return bricks
closes = [100.0, 100.1, 100.4, 100.3, 100.9, 100.6, 100.2, 99.6, 99.4]
brick_size = 0.25
bricks = renko_from_closes(closes, brick_size)
print("brick_count:", len(bricks))
print("last_5:", bricks[-5:])预期输出:
brick_count: 8
last_5: [('up', 100.75), ('up', 101.0), ('down', 100.75), ('down', 100.5), ('down', 100.25)]关键提示
一组收盘价序列可能在某个价位附近产生多块砖的”爆发”。这种爆发正是你回测看起来很干净、但实盘成交看起来很乱的地方。因为砖块图上一块砖可能对应了好几笔快速成交,你的实际滑点远比回测假设的要大。
七、砖形图的优势与局限
结合我自己的经验和国内一些资深交易者的观点,砖形图的优劣势可以做一个比较全面的梳理。
核心优势
- 趋势更清晰:小幅度来回波动被过滤,趋势线在砖形图上更少被假突破干扰。
- 信号更少但更干净:减少了交易次数,也减少了情绪化操作的机会。
- 止损标准统一:用”几块砖”来定义风险,简单一致,不需要纠结具体点位。
- 反转天然延迟:反转砖需要2倍砖块大小的反向移动,这意味着在假突破面前你更不容易被甩出去。
核心局限
- 丢失了时间维度:你无法从砖形图上判断趋势的动量(同一块砖可以是1秒走完也可以是1小时走完)。
- 丢失了高低点信息:砖形图只看收盘价变动,可能忽略掉重要的盘中高低点。这些高低点在实盘中的参考价值很大。
- 缺乏配套技术指标:K线图上有均线、MACD、布林带等大量成熟指标,砖形图上的指标少得多,均线的意义也存疑。
- 震荡期不好用:在方向频繁翻转的行情中,砖形图也会跟着来回变色,这时候它和K线图一样会让你亏损。
- 等待砖块形成时可能出现滑点:重大消息公布时,价格可能在砖块形成前已经剧烈变动,你看到的砖块和实际可成交价格之间可能有巨大差距。
砖形图 vs K线图 关键差异
| 维度 | K线图 | 砖形图 |
|---|---|---|
| 横轴 | 时间 | 价格变动 |
| 噪音过滤 | 弱(所有波动都显示) | 强(小波动不出砖) |
| 路径信息 | 完整保留 | 主动丢弃 |
| 时间信息 | 完整保留 | 丢失 |
| 高低点 | 可见 | 可能丢失 |
| 反转灵敏度 | 实时 | 延迟(需2倍砖块大小) |
| 配套指标 | 丰富 | 有限 |
| 回测可靠性 | 较高 | 需双图表验证 |
八、砖形图实战检查清单
在真正用砖形图做决策之前,过一遍这张清单。每一项都必须是”是”。
| 序号 | 检查项 | 是否通过 |
|---|---|---|
| 1 | 砖块大小是否以具体数值(元/点/百分比)定义,并与波动率挂钩? | □ |
| 2 | 砖块构建方法是否明确(收盘价 vs OHLC),你是否知道自己在用哪种? | □ |
| 3 | 回测是否在标准OHLC数据上执行,而非合成砖块价格? | □ |
| 4 | 是否设置了交易时段过滤(即使你做的是24小时市场)? | □ |
| 5 | 止损和目标是否以砖块单位定义,仓位计算是否基于该风险? | □ |
| 6 | 是否记录了实际的手续费和滑点,而不是假设它们为零? | □ |
| 7 | 你能否用一句话说清楚,这笔交易为什么不是震荡行情? | □ |
一句话测试
如果你不能用一句话解释”这笔交易为什么不是震荡”,那就不要做。砖形图最大的价值就是帮你识别市场状态,如果你连这个都没搞清楚就进场,那砖形图对你来说只是另一张好看的图。
九、常见问题
砖块大小应该选多大?
没有标准答案,但有基本原则:用ATR的1/2或1/3作为起点,然后根据你的交易频率偏好调整。砖块小则交易多、噪音多;砖块大则交易少、信号少。我建议你先从ATR的一半开始,跑一圈回测看看出砖频率是否合理,再微调。
砖形图能不能单独用?
能,但不推荐。单独用砖形图的最大问题是丢失了路径信息和时间信息。我的建议永远是”双图表工作流”:砖形图判断方向,K线图执行操作。
动态砖块大小好不好?
理论上看起来更”智能”,但实践中等于你在回测一串不同的策略。如果你一定要用动态砖块,至少要分开记录每个时段的砖块大小和对应的策略表现,否则你的统计数据是无效的。
砖形图在什么品种上效果最好?
趋势性强的品种。趋势越明显,砖形图过滤噪音的价值越大;震荡越厉害,砖形图和K线图一样会让你反复亏损。根据有经验的交易者反馈,趋势性较好的外汇货币对和部分大宗商品上砖形图效果较好。
写在最后
砖形图是一种价格压缩算法,它帮你把市场噪音压缩掉,留下更干净的趋势信号。但它压缩信息的同时也丢失了信息:路径、时间、高低点。所以,永远不要把砖块当成K线的替代品来用。
我用了砖形图这么多年,最大的体会是:砖形图清理的不是市场,而是我的决策。它让我减少了无效操作,统一了止损标准,把注意力从”什么时候动手”转移到了”该不该动手”。这才是它真正的价值。
如果你之前用过砖形图,不妨回想一下:你最先遇到的问题是什么?是砖块大小选择、回测不真实,还是执行中的摩擦力?欢迎告诉我你做的品种和你最终选定的砖块大小。咱们一起把这个问题想透。
免责声明:本文分享的是交易研究和工程实践经验,砖形图是一种可视化和采样选择,本身不构成交易优势。手续费、滑点、流动性和平台特有的砖块构建方式都可能将正期望值翻转为负期望值。在用真金白银之前,请务必重新验证当前平台的设置和回测假设。
风险提示:本文仅供参考,不构成投资建议。投资有风险,入市需谨慎。
版权声明:本文为原创内容,转载请注明出处。
#砖形图 #Renko #量化交易 #趋势过滤 #ATR #回测避坑 #Python量化 #交易系统 #价格压缩 #摩擦力计算 #技术分析 #中频交易
Be First to Comment