点数图指标·综合运用
📊

点数图指标·综合运用

(3/3)·从绘制逻辑到标准信号,一篇补齐前两部分未覆盖的落地用法与收尾要点

含代码示例实战向 第 3/3 篇
很多交易者把点数图当装饰:格值和转向值随手填,列反转规则没吃透就去找信号。结果同一段行情画出两种图,信号自然对不上。先把绘制底层跑通,再看信号才有意义。

键盘事件驱动的重绘与清屏逻辑

在 MT5 自定义指标里,OnChartEvent 能截获图表按键消息。上面这段把键盘 'C'(键码 67)和 'R'(键码 82)做成了手动控制开关:按 C 直接把 CandlesBufferOpen 整段置 0 并立刻 ChartRedraw,相当于清空重画;按 R 则重新跑拷贝、计算列数、上色、定尺寸、反转数组、画水平线一整套流程。 注意清空循环用的是 Bars(Symbol(),PERIOD_CURRENT) 取当前周期总柱数,x 从 0 跑到这个数把缓冲写 0。若你改了指标周期,这套上限会跟着变,不必硬编码。 R 键里 FuncCopy 返回 -1 会弹 Alert 提示拷贝失败,其余函数返回值(如 ColorCalculate、z、Turn)虽被接收却没做错误分支。实盘加载时若发现按 R 没反应,优先查 FuncCopy 是否拿到数据,而不是怀疑绘图函数。外汇与贵金属波动快,这类手动重绘仅作辅助验证,杠杆品种高风险,按键误操作也可能让你误判图形。

MQL5 / C++
class="type">void OnChartEvent(const class="type">int id,
                    const class="type">long &lparam,
                    const class="type">class="kw">double &dparam,
                    const class="type">class="kw">string &sparam)
  {
class=class="str">"cmt">//---
  if(id==CHARTEVENT_KEYDOWN)
    {
      class=class="str">"cmt">//--- class="num">67 - The "C" key code clears the indicator buffer
      if(lparam==class="num">67)
        {
         for(class="type">int x=class="num">0; x<Bars(Symbol(),PERIOD_CURRENT); x++)
            CandlesBufferOpen[x]=class="num">0;
         ChartRedraw();
        }
      class=class="str">"cmt">// class="num">82 - The "R" key code redraws the indicator
      if(lparam==class="num">82)
        {
         class=class="str">"cmt">//--- Start the copying function
         class="type">int ErrorCopy=FuncCopy(History);
         class=class="str">"cmt">//--- In case of error, print the message
         if(ErrorCopy==-class="num">1)
            Alert("Failed to copy data.");
         class=class="str">"cmt">//--- Call the function for calculating the number of columns
         Columns=FuncCalculate(History);
         class=class="str">"cmt">//--- Call the function for coloring columns
         class="type">int ColorCalculate=FuncColor(Columns);
         class=class="str">"cmt">//--- Call the function for determining column sizes
         class="type">int z=FuncDraw(History);
         class=class="str">"cmt">//--- Start the function for array reversal
         class="type">int Turn=FuncTurnArray(Columns);
         class=class="str">"cmt">//--- Start the function for drawing horizontal lines
         class="type">int Horizontal=FuncDrawHorizontal(true);
        }
    }
  }

◍ 给 C 和 R 键挂上清理重绘逻辑

在 MT5 指标或脚本里,给键盘事件绑定次级动作能省掉手动刷新图形的麻烦。原文仅留了一行注释,说明要为 "C" 键接「清空」、"R" 键接「重绘」两类行为,这属于交互层的基础设施,没它就得每次去对象列表里删。 具体实现时,通常在 OnChartEvent 里捕获 id==CHARTEVENT_KEYDOWN,再按参数 key 判断是 'C' 还是 'R'。清理倾向用 ObjectsDeleteAll 配合 ChartRedraw,重绘则直接 ChartRedraw 强制刷新。外汇与贵金属图表波动快,这类热键能降低误看旧图形的概率,但高频重绘本身也有轻微卡顿风险,实盘前先在模拟盘验证。

MQL5 / C++
class=class="str">"cmt">// +++ Secondary actions for the "С" key - clear and the "R" key - redraw +++

「点数图里的标准形态与信号判定」

点数图分析分两条路:看形态,或者看支撑阻力线。后者在理想状态下都用 45 度角画线,但挂到 MT5 主图用日本烛形承载时,画线角度会随主图缩放变形,实际标出来未必是严格的 45 度,验证时别死磕角度。 双顶和双底是最基础的翻转信号。双顶表现为价格先拉出 X 列、回落出 O 列、再上冲并超过前高 X 列一格值,倾向给出买入信号;双底完全反过来,下滑出 O 列、反弹 X 列、再出新 O 列且比前一 O 列低一格,可能触发卖出信号。 三顶和三底不常见但信号更强,本质是双顶底的重复确认。价格同一价位碰两次后向上突破即三顶买入;同一价位碰两次后向下破位即三底卖出。对称三角形突破、牛熊弹射器,逻辑都类似——向上破平等边或三角上沿偏买入,向下破则偏卖出,外汇与贵金属杠杆高,这类破位假突破概率不低。

  • 度趋势线本身是一条动态支撑或阻力。线被下破通常转卖出倾向,被上破转买入倾向。把上述形态套进开头提到的指标图,能在实时点数图里直接对照标出的形态区块。

记住这一条就够了

点数图没有被时代淘汰,在 MT5 里用方块代替 X/O 的改良指标虽不能在策略测试器里跑回测,但生成的图形对支撑阻力识别依旧够准。 把这份 apfd.mq5 稍作改动就能套到 Renko 上,或者合并成带菜单的单一文件;想直接画在主图窗口也得再动几行坐标代码,社区里就有人提过这种需求。 外汇和贵金属波动大、杠杆高,这类图表只帮你过滤时间噪音看价格本身,信号误判风险始终在,实盘前务必在模拟盘验过。

让小布替你跑这套
这些诊断小布盯盘的 AIGC 已内置,打开对应品种页即可看到当前格值与转向值下的 X/O 列分布,你只需判断信号,不必手绘。

常见问题

格值太小、转向值太低会频繁换列,建议先用品种近期平均波动估算格值,转向值取 2~3 倍格值,外汇贵金属波动大可适当放宽,但都要回测验证。
常见如 X 列突破前高列顶部、或 O 列未破前低就转 X,属于趋势延续概率较高的结构,但外汇贵金属高风险,需结合仓位控制。
小布会按你设定的格值与转向值渲染 X/O 列并标出标准信号区,但是否入场由你定,它不替代决策也不保证胜率。
时间轴常夹杂横盘噪音,点数图只记录达标的价格变动,趋势线接近 45 度时往往对应单边移动概率偏大。