从新手到专家:自动几何分析系统·综合运用
「把对称三角形直接标到图表上」
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" 字样,即说明几何识别模块已命中。 外汇与贵金属波动受杠杆放大,此类形态仅为概率性参考,突破方向须结合成交量与更高周期确认。
"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,也能复现这类输出。
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 里接突破逻辑:上升三角形上破挂买、止损放最近波动点、止盈用形态高度动态算。外汇与贵金属波动剧烈,这类几何识别只给概率倾向,实盘前务必用策略测试器跑极端行情样本。 把头文件丢进自己的工程,改两行参数就能看不同品种上的形态密度——这比读十篇概述来得直接。