用于 Renko 制图的指标(基础篇)
📘

用于 Renko 制图的指标(基础篇)

第 1/3 篇

在 MT5 里用 Renko 指标重画价格轴

MT5 原生图表走的是时间轴,但做价格行为的人更想要把波动本身摊开来看。Renko 制图指标干的事,就是把 K 线换成固定砖块:只有价格走过设定点数,才往上或往下叠一块,时间维度被直接抹掉。 这类指标在 MT5 里通常以脚本或自定义指标形式挂到图表,参数里最关键的就一个砖块大小(Brick Size)。比如设 10 点,欧美盘里价格每净动 10 点才出一块砖,震荡段会长时间不画新块,趋势段则连成一条斜砖带。 需要提醒的是,外汇和贵金属杠杆高、滑点突兀,Renko 只是过滤噪音的视角,不消除跳空风险,信号失效的概率始终存在。开 MT5 装一个 Renko 指标,把砖块大小从 5 调到 20 对比一下,你会直观看到小砖假突破多、大砖滞后明显的取舍。

「Renko 砖块到底怎么垒出来的」

Renko 一词源自日语“红砖”,本质是用固定尺寸的砖块把价格走势画出来,时间轴被完全丢弃。与点数图不同,Renko 每块新砖都落在新的垂直平面,砖块尺寸(点数或轮廓)先固定,后续分析都基于这个尺寸展开。 这种制图法约在19世纪出现于日本,欧美交易者在1994年才通过 Steeve Nison 的《Beyond Candlesticks》接触到。它只认价格行为:收盘价高于前砖区间就叠白砖(空心,实体底为开盘、顶为收盘),低于就叠黑砖(实心,实体顶为开盘、底为收盘)。 首块砖的开盘价取前一砖的最大最小值,之后每块都拿当前价和前砖最高最低比。想在 MT5 里验证,直接调出 Renko 指标看白黑砖交替节奏,外汇和贵金属波动大,Renko 会过滤噪音但也可能漏掉跳空风险,属于高风险品种下的辅助视图。

◍ 用 EURUSD H4 看 Renko 砖块怎么落地

Renko 砖块只在收盘价上画,先定时间帧和箱体点数。拿 EURUSD 的 H4 举例,箱体取 30 点,回看 2014 年 1 月整月(03.01–31.01),左边是原始 H4 蜡烛,右边是生成的 Renko 图,红色水平线标每块砖的 30 点边界,蓝色线对应实际日期。 具体看 03.01.2014 收盘:原蜡烛收在 1.3591 下方,而上一档红色边界在 1.3589,于是 Renko 图向下砌出一块砖。随后价格横盘,一直没破 1.3561(下边界)也没上破 1.3651(上边界),直到 10.01.2014 20:00 那根 H4 蜡烛(16:00 开盘)收在 1.3663,才向上补一块砖。

  • 01.2014 20:00 再次出现横盘突破,价格收在 1.3684,新砖生成。23.01.2014 12:00 那根(08:00 开盘)一口气向上穿了两个 30 点区间,连砌两块砖收在 1.3639——第一块清晰,第二块因与前一块并行开盘被拉成垂直线。外汇与贵金属杠杆高、滑点大,Renko 只是过滤噪音,不代表方向概率提升,开 MT5 用自定义 Renko 脚本复刻这段能直观验证砖块逻辑。

Renko 砖块背后的独立计算逻辑

这套指标把所有函数尽量拆成独立模块,核心目的是释放分析潜力,而不是绑死在某个图表周期上。它不在当前加载的时间帧里算价:你先在设置里挑一个周期,无论指标挂在哪个周期启动,吐出来的都是那个设定周期的数据。 实现方式很直接——把目标周期的柱线数据拷进独立的缓存数组,算完再填回指标的输出缓冲器。标准 Renko 只用收盘价垒砖,但这里把开高低也拉进来,用来补强对价格结构的判断。 砖块大小固定,反而让极端行情暴露得更清楚:少数几块砖就走出一大段,说明驱动很猛。为此砖块里塞了一根细小垂直影线(类似日式蜡烛的须),标出设定周期最后一根柱线相对前一块砖是升还是降。 想做图形扩展,可以直接在主图上叠 ZigZag。实测挂 EURUSD 日线、步长 25 点时,整套功能跑通,砖块与影线、ZigZag 同屏可见,开 MT5 设相同参数即可复现。

「Renko 指标的 900 行骨架与缓冲区分工」

这套 Renko 指标源码约 900 行,作者刻意把函数拆得很碎,读起来比普通指标绕,但好处是每个环节都能单独拎出来改。它建立在早前 Kagi 制图指标的一些基础函数之上,若某段逻辑看懵了,最好回头对照那部分再读。 输入参数一共 25 个,按用途可粗分为几组:step 与 type_step 决定砖块尺寸(点数或按当前价百分比);magic_numb 用来隔离图形对象,方便同图多实例时精准删除;time_frame 与 time_redraw 控制构建周期和刷新节奏;type_price 支持收盘 / 开盘 / 最高 / 最低四种构造基准;shadow_print、filter_number 以及 zig_zag_*、square_*、frame_* 系列则管绘制样式与反转逻辑。 缓冲区方面,前 5 个绑定到「彩色蜡烛条」图形构造,剩下 4 个只存数不画图:Price[] 存构建用复制价,Date[] 存主图绘制时间,Price_high[] 与 Price_low[] 存极值供 ZigZag 端点使用。初始化时这 4 个动态数组按普通数组寻址,不按时间序列倒排。 开始日期若直接吃输入值可能压垮指标,所以交给 func_calc_date_start 校正:函数量出所选周期柱线数,若超过缓冲区容量就每次把起点往前推 10 天,直到能全装下。复制数据走 func_copy_price / func_copy_date,其中价格复制用 switch 按 0~3 选收盘开盘高低,并删掉最后一根已复制柱以避免主图重绘错位。 砖块步长若选百分比,func_calc_dorstep 会拿当前价算出双精度值再强转只留整数。主函数 func_draw_renko 分两循环:先算砖数,再填图形缓冲;百分比步长下每根柱线重算尺寸。若可能砖数多于可显示柱线,会补算并提示下限,防图表显示崩坏。主图绘制和 ZigZag 由 func_draw_renko_main_chart 与 func_draw_zig_zag 基于计算缓冲区调用趋势线 / 矩形对象完成,删除则统一靠 magic_numb 走 func_delete_objects。外汇与贵金属品种波动跳空频繁,这类离线重绘指标在实盘只作概率参考,务必先在 MT5 策略测试器跑历史段验证。

MQL5 / C++
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//|                                                                 ABCR.mq5 |
class=class="str">"cmt">//|            Azotskiy Aktiniy ICQ:class="num">695710750 |
class=class="str">"cmt">//|      [MQL5官方文档] |
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//--- Auto Build Chart Renko

◍ Renko 自动构建指标的编译前配置

这段头部声明决定了一个 Renko 图表指标在 MT5 里的运行骨架:它用独立窗口(indicator_separate_window)承载 9 个缓冲区,但只绘制 1 个图形序列——彩色蜡烛(DRAW_COLOR_CANDLES),红蓝两色分别对应上涨与下跌砖块。 构造方式由 type_step_renko 枚举控制,可选 point(点数)或 percent(百分比);砖块基准价由 type_price_renko 枚举选定,支持 close / open / high / low 四种。默认 step=10、绘制层级 levels_number=1000,说明它倾向于把历史砖块网格一次性铺满约千行。 输入参数里 magic_numb 被写死成 65758473787389,仅作对象标识用;first_date_start 默认 2013.09.13,意味着回测或重绘时会从这一刻起追砖。外汇与贵金属品种波动跳空频繁,Renko 会吞掉时间轴,实盘前务必在 MT5 用 M1 重绘周期(time_redraw)跑一遍验证断层处理。

MQL5 / C++
class="macro">#class="kw">property copyright "Azotskiy Aktiniy ICQ:class="num">695710750"
class="macro">#class="kw">property link      "[MQL5官方文档]
class="macro">#class="kw">property version   "class="num">1.00"
class="macro">#class="kw">property description "Auto Build Chart Renko"
class="macro">#class="kw">property description "  "
class="macro">#class="kw">property description "This indicator used to draw Renko chart in the indicator window, and in the main chart window"
class="macro">#class="kw">property indicator_separate_window
class="macro">#class="kw">property indicator_buffers class="num">9
class="macro">#class="kw">property indicator_plots   class="num">1
class=class="str">"cmt">//--- plot RENKO
class="macro">#class="kw">property indicator_label1  "RENKO"
class="macro">#class="kw">property indicator_type1   DRAW_COLOR_CANDLES
class="macro">#class="kw">property indicator_color1  clrRed,clrBlue,C&class="macro">#x27;class="num">0,class="num">0,class="num">0&class="macro">#x27;,C&class="macro">#x27;class="num">0,class="num">0,class="num">0&class="macro">#x27;,C&class="macro">#x27;class="num">0,class="num">0,class="num">0&class="macro">#x27;,C&class="macro">#x27;class="num">0,class="num">0,class="num">0&class="macro">#x27;,C&class="macro">#x27;class="num">0,class="num">0,class="num">0&class="macro">#x27;,C&class="macro">#x27;class="num">0,class="num">0,class="num">0&class="macro">#x27;
class="macro">#class="kw">property indicator_style1  STYLE_SOLID
class="macro">#class="kw">property indicator_width1  class="num">1
class=class="str">"cmt">//--- construction method
enum type_step_renko
  {
  point=class="num">0,   class=class="str">"cmt">// Point
  percent=class="num">1, class=class="str">"cmt">// Percent
  };
class=class="str">"cmt">//--- type of price
enum type_price_renko
  {
  close=class="num">0, class=class="str">"cmt">// Close
  open=class="num">1,  class=class="str">"cmt">// Open
  high=class="num">2,  class=class="str">"cmt">// High
  low=class="num">3,   class=class="str">"cmt">// Low
  };
class=class="str">"cmt">//--- input parameters
input class="type">class="kw">double            step=class="num">10;                                            class=class="str">"cmt">// Step
input type_step_renko   type_step=point;                                    class=class="str">"cmt">// Type of step
input class="type">long              magic_numb=class="num">65758473787389;                          class=class="str">"cmt">// Magic number
input class="type">int               levels_number=class="num">1000;                                 class=class="str">"cmt">// Number of levels(class="num">0-no levels)
input class="type">color             levels_color=clrLavender;                           class=class="str">"cmt">// Color of levels
input ENUM_TIMEFRAMES   time_frame=PERIOD_CURRENT;                          class=class="str">"cmt">// Calculation period
input ENUM_TIMEFRAMES   time_redraw=PERIOD_M1;                              class=class="str">"cmt">// Chart redraw period
input class="type">class="kw">datetime          first_date_start=D&class="macro">#x27;class="num">2013.09.class="num">13 class="num">00:class="num">00:class="num">00&class="macro">#x27;;            class=class="str">"cmt">// Start date
input type_price_renko  type_price=close;                                   class=class="str">"cmt">// Price for construction

常见问题

加载 Renko 指标到图表即可重画价格轴,选 EURUSD H4 周期能让砖块落地更清晰,砖块按固定点数累积反向才翻砖。
砖块按设定点数独立计算,价格单向走满一个砖幅画一块,反向超幅才出新砖,实体大小直接决定砖幅阈值。
小布可自动识别当前图表 Renko 配置并标注砖幅与反转逻辑,你不用自己翻代码就能直接看盘口结构。
Renko 有独立计算逻辑,用自身缓冲区按砖块序列重算,不依赖主图每根蜡烛的 OHLC 顺序。
编译前需确认砖幅参数、缓冲区位宽和周期映射已配好,否则指标加载后可能不重绘或砖块错位。