价格行为分析工具包开发(第二部分):分析注释脚本(基础篇)
📘

价格行为分析工具包开发(第二部分):分析注释脚本(基础篇)

第 1/3 篇

「给图表加注释的脚本怎么写」

在 MT5 里做价格行为分析,第一步往往是把关键 K 线、支撑阻力位直接标在图上。与其手动画线,不如写个脚本一次性把注释挂上去,省得每次切换周期都重画。 MQL5 的 Comment() 函数能把字符串打印到图表左上角,但要做持久标注得用 ObjectCreate() 建文本对象。下面这段脚本在最新一根 K 线的收盘价位置创建一个文本对象,内容写死成「PB 信号」,跑完脚本图表上就留痕了。

MQL5 / C++
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| Script to place a text label on the chart                       |
class=class="str">"cmt">//+------------------------------------------------------------------+
class="macro">#class="kw">property script_show_inputs
class="type">void OnStart()
  {
   class="type">class="kw">string name="NoteObj";
   class="type">class="kw">double price=Close[class="num">0];
   class="type">class="kw">datetime time=Time[class="num">0];
   ObjectCreate(class="num">0,name,OBJ_TEXT,class="num">0,time,price);
   ObjectSetString(class="num">0,name,OBJPROP_TEXT,"PB 信号");
   ObjectSetInteger(class="num">0,name,OBJPROP_COLOR,clrRed);
   ChartRedraw();
  }
代码逐行拆解: // 文件头注释块,声明这是图表标注脚本 #property script_show_inputs 让脚本在 MT5 里可带参数面板运行 void OnStart() 脚本入口,点「运行」后只跑这一遍 string name="NoteObj" 给对象起个唯一名,重名会建不出来 double price=Close[0] 取当前品种最新一根 K 线收盘价做锚点 datetime time=Time[0] 取同一根 K 线的时间坐标 ObjectCreate(0,name,OBJ_TEXT,0,time,price) 在 0 号子窗口(主图)按时间+价格建文本对象 ObjectSetString(0,name,OBJPROP_TEXT,"PB 信号") 把显示文字设成 PB 信号 ObjectSetInteger(0,name,OBJPROP_COLOR,clrRed) 文字染红,醒目 ChartRedraw() 立即重绘图表让对象可见 外汇和贵金属波动大、滑点频繁,脚本标注只是辅助记录,不等于交易依据;标注错了及时手动删对象,别让旧信号误导后续判断。开 MT5 新建脚本把上面代码贴进去,挂到 EURUSD 的 M15 跑一下,就能看到红字钉在最新 K 线旁。

MQL5 / C++
class=class="str">"cmt">//+------------------------------------------------------------------+
class=class="str">"cmt">//| Script to place a text label on the chart                       |
class=class="str">"cmt">//+------------------------------------------------------------------+
class="macro">#class="kw">property script_show_inputs
class="type">void OnStart()
  {
   class="type">class="kw">string name="NoteObj";
   class="type">class="kw">double price=Close[class="num">0];
   class="type">class="kw">datetime time=Time[class="num">0];
   ObjectCreate(class="num">0,name,OBJ_TEXT,class="num">0,time,price);
   ObjectSetString(class="num">0,name,OBJPROP_TEXT,"PB 信号");
   ObjectSetInteger(class="num">0,name,OBJPROP_COLOR,clrRed);
   ChartRedraw();
  }

◍ 把盘面关键数据压进一张投影表

做价格行为的人最怕来回切周期找昨天的开盘收盘、高低点和量能,这套脚本的思路就是一次跑完把核心字段直接投到图表左侧,省掉手动比对。它会在当前图加载后画出前一日开盘价、收盘价、最高价、最低价,以及自动识别的重要支撑阻力线,并在纵向数据表里列出来。 除了画线,脚本还会吐一段市场状态注释,比如波动区间是否被压缩、量能相对前值是放大还是萎缩,给日内方向判断提供背景。注意外汇和贵金属杠杆高、滑点大,投影只降低信息整理成本,不替代你的入场风控。 真正能落地的动作很简单:开 MT5 把脚本拖进 EURUSD 的 H1,看左侧表里的前日收盘和阻力线是否和你的 PB 结构重合,不一致就别硬做。

成交量和前日价位为什么值得盯

做方向判断最费时的,往往是翻历史数据、手动算关键位。这个脚本把前一日的开盘、收盘、最高、最低和阻力支撑直接画在图上,几秒内就能看完,不用自己筛。 它把当日成交量和前一日成交量放在一起比。成交量反映市场参与度:今日量明显高于昨日,说明活跃资金进场,波动可能放大,现有趋势(涨或跌)被加强的概率更高。外汇和贵金属杠杆高、回撤快,这种放量信号只能当作概率参考,不是方向保证。 前日高低价其实是心理位——碰到了容易涌出买卖压。图表上自动标线加上注释框,省掉来回切窗口的麻烦,适合快速定计划。新手也能借它弄懂价量怎么影响后面的走势。

「自动抓取前日关键位的脚本思路」

有个 MQL5 脚本能直接在 MT5 里把前一个交易日的数据拉出来,顺手算好关键技术水平。你不用再手动翻日线记开盘收盘,省下的时间能多盯几套策略。 它干了两件事:一是从交易平台取前一日行情,算出并画出前日开盘价、收盘价、关键阻力与支撑,以及价格对这些位的反应;二是在图表上做注释,当成即时参考贴在上面。图里能看到 MT5 图表上那些水平线和文字标签就是脚本输出的。 想验证就开 MT5 跑一遍:挂上脚本后切到日线,看它标出的前日开收和阻撑是否和手动读数的位置一致。外汇和贵金属波动大、杠杆高,这类辅助只管读数,不替你做方向判断。

常见问题

可用脚本在图表加载时自动读取前日高低收,并用文本对象把价位写在右轴;把循环写在OnStart里即可,每次换周期重跑一次。
前日价位常成日内反向触发区,成交量放大处多为筹码交换位;两者结合能过滤掉无意义的毛刺波动,贵金属和外汇都属高风险品种,仅作概率参考。
可以,小布能按品种页把前日价位、成交量分布等压成一张投影表,你打开对应页面就能看到,不必自己写脚本跑数据。
给Text对象设Anchor=RIGHT_PRICE并往右偏移几像素,或把BackgroundColor设半透明,就能少挡视线。
大概率是你用iBarShift取日线索引后没校验返回值,空数据时会断循环;加个if(shift<0) continue就能补全。