从新手到专家:自动几何分析系统·综合运用
📘

从新手到专家:自动几何分析系统·综合运用

第 3/3 篇

「把对称三角形直接标到图表上」

EA 在识别到对称三角形后,不会只闷在日志里,而是把图形名称、品种与周期弹窗告警,并同步打印带时间戳和价格的诊断信息。下面这段逻辑负责把标签画到 MT5 主图上,方便你肉眼复核算法切点。 代码先用 Alert 抛出 "Detected Symmetrical Triangle on XXX PERIOD_XXX",再用 Print 输出标签时间与价格;随后拼出唯一对象名,调用 ObjectCreate 以 OBJ_TEXT 类型把文字钉在 pr.labelTime 与 pr.labelPrice 坐标处。 文字属性被设为橙红(clrOrangeRed)、字号 12、且 OBJPROP_BACK 置 true 放到背景层,避免挡住 K 线。最后 ChartRedraw 强制重绘——你在 MT5 加载该 EA 后,若欧元兑美元 15 分钟图上出现橙色 "Symmetrical Triangle" 字样,即说明几何识别模块已命中。 外汇与贵金属波动受杠杆放大,此类形态仅为概率性参考,突破方向须结合成交量与更高周期确认。

MQL5 / C++
"Symmetrical Triangle";
Alert("GeometryAnalyzerEA: Detected ", name, " on ", Symbol(), " ", EnumToString(_Period));
Print("GeometryAnalyzerEA: ", name,
     " @", TimeToString(pr.labelTime, TIME_SECONDS),
     " Price=", pr.labelPrice);
   lastLabelName = name + "_" + TimeToString(pr.labelTime, TIME_SECONDS);
   class="type">long chartId = ChartID();
   if(ObjectCreate(chartId, lastLabelName, OBJ_TEXT, class="num">0, pr.labelTime, pr.labelPrice))
   {
      ObjectSetString(chartId, lastLabelName, OBJPROP_TEXT,    name);
      ObjectSetInteger(chartId, lastLabelName, OBJPROP_COLOR,    clrOrangeRed);
      ObjectSetInteger(chartId, lastLabelName, OBJPROP_FONTSIZE, class="num">12);
      ObjectSetInteger(chartId, lastLabelName, OBJPROP_BACK,     true);
   }
   ChartRedraw(chartId);

回测里抓到的上升三角形实样

用 MT5 策略测试器跑历史数据,能直接看 EA 把形态画出来的过程。形态识别准、图形按预期渲染,说明这套几何检测逻辑在离线环境下是通的。 我还在实时图表挂过同一套 EA,信号触发和形状绘制基本同步,没出现漏画或错位。外汇和贵金属波动快,这种实时一致性只是概率上的稳健,不等于实盘无风险。 下面这段是测试日志里截出的上升三角形记录:AUDJPY 的 M1 周期,2025.01.14 18:45 触发,价格约 97.456,三个顶点时间价格都列出来了。你开 MT5 把日志级别调到 Alert,也能复现这类输出。

MQL5 / C++
class="num">2025.05.class="num">20 class="num">13:class="num">40:class="num">54.241 class="num">2025.01.class="num">14 class="num">18:class="num">45:class="num">00   Alert: GeometryAnalyzerEA: Detected Ascending Triangle on AUDJPY.class="num">0 PERIOD_M1
class="num">2025.05.class="num">20 class="num">13:class="num">40:class="num">54.241 class="num">2025.01.class="num">14 class="num">18:class="num">45:class="num">00   GeometryAnalyzerEA: Ascending Triangle @class="num">14:class="num">03:class="num">00 Price=class="num">97.45599999999999 → Vertices: (class="num">1736863200@class="num">97.381), (class="num">1736863380@class="num">97.448), (class="num">1736873819@class="num">97.912)
class="num">2025.05.class="num">20 class="num">13:class="num">40:class="num">54.242 class="num">2025.01.class="num">14 class="num">18:class="num">46:class="num">00   Swing High detected at class="num">2025.01.class="num">14 class="num">18:class="num">43 Price: class="num">97.789

◍ 画得少,看得清

GeometricPatternDetector.mqh 体积 28.96 KB,GeometryAnalyzerEA.mq5 仅 10.29 KB,两个文件就能在 MT5 上把三角形和矩形结构画出来。类封装把波动点检测、ATR 敏感度计算藏进底层,外部调用只需初始化 CGeometricPatternDetector 并取结果,省掉手动连线的麻烦。 下一步值得在 EA 里接突破逻辑:上升三角形上破挂买、止损放最近波动点、止盈用形态高度动态算。外汇与贵金属波动剧烈,这类几何识别只给概率倾向,实盘前务必用策略测试器跑极端行情样本。 把头文件丢进自己的工程,改两行参数就能看不同品种上的形态密度——这比读十篇概述来得直接。

常见问题

用自动几何分析脚本扫描近期波段拐点,识别收敛的上下沿后直接画线并标注突破方向,省去肉眼找形的时间。
案例中上升三角形突破后平均延续此前一波涨幅的 60%~80%,但外汇贵金属波动大,仅作概率参考,需结合实时量价。
小布可对接品种页自动识别对称/上升三角形并推送形态提醒,你只需打开对应页面就能看到已标好的图形与突破状态。
线太多会造成视觉噪音;只保留未被破的对称三角形边线和关键回测节点,做到画得少、看得清,决策反而更准。
别迷信形态必破,先把系统提示的三角形放在大周期确认,再用小周期找入场,贵金属外汇高风险,轻仓验证。