在MQL5中创建交易管理员面板(第八部分):分析面板·综合运用
📊

在MQL5中创建交易管理员面板(第八部分):分析面板·综合运用

(3/3)·手动算盈亏比和品种分布太慢?这篇把实时饼图直接嵌进管理员面板

实战向进阶 第 3/3 篇
很多管理员面板只管下单和通信,绩效分析还靠导出报表手动算,错失盘中调整窗口。把盈亏比和交易类型分布做成实时饼图,决策延迟能从分钟级降到零。本篇收尾整个面板系列,直接给你可跑的可视化扩展。

「饼图绘制里的越界自检与扇区填充」

这段 CPieChart::DrawPie 的实现里,最该先抄走的是数组越界 guard:每次用 p[idx+1] 前都判断 idx+1 >= ArraySize(p),越界就 Print 报错并 return,避免图表对象在脏数据上崩。 扇区几何靠 Arc 画弧、Line 画两条半径,填充点取扇区角中线、半径乘 0.99 处:xf = m_x0 + (int)(0.99*m_r*cos(fi)),yf = m_y0 - (int)(0.99*m_r*sin(fi)),再调 Fill 上色。 当扇区夹角 fi4-fi3 <= M_PI_4(即不超过 45°)时,额外补一条中心到填充点的 Line,防止小扇区因抗锯齿出现漏缝。外汇与贵金属图表叠加此类自定义控件时,注意高频重绘可能拖慢 MT5 终端,属高风险环境下的性能权衡。

MQL5 / C++
if (idx + class="num">1 >= ArraySize(p)) {
   Print("Array out of range error: idx = ", idx, ", ArraySize = ", ArraySize(p));
   class="kw">return;
}
class=class="str">"cmt">//--- draw arc
Arc(m_x0, m_y0, m_r, m_r, fi3, fi4, p[idx].x, p[idx].y, p[idx + class="num">1].x, p[idx + class="num">1].y, clr);
class=class="str">"cmt">//--- variables
class="type">int x3 = p[idx].x;
class="type">int y3 = p[idx].y;
class="type">int x4 = p[idx + class="num">1].x;
class="type">int y4 = p[idx + class="num">1].y;
class=class="str">"cmt">//--- draw radii
if (idx == class="num">0)
   Line(m_x0, m_y0, x3, y3, clr);
if (idx != m_data_total - class="num">1)
   Line(m_x0, m_y0, x4, y4, clr);
class=class="str">"cmt">//--- fill
class="type">class="kw">double fi = (fi3 + fi4) / class="num">2;
class="type">int xf = m_x0 + (class="type">int)(class="num">0.99 * m_r * cos(fi));
class="type">int yf = m_y0 - (class="type">int)(class="num">0.99 * m_r * sin(fi));
Fill(xf, yf, clr);
class=class="str">"cmt">//--- for small pie
if (fi4 - fi3 <= M_PI_4)
   Line(m_x0, m_y0, xf, yf, clr);

面板重做后到底改了什么

V1.23 到 V1.24 这版主要动了管理员主面板的结构,原先堆在一起的按钮被拆开重排,新增了几个直接触发子面板的快捷键。 分析面板这次接进了交易数据分布的可视化,H4 周期下看 Boom 300 指数的持仓分布比旧版直观。官方给的截图里,V1.24 在终端图表上部署 EA 是用一段动画录屏演示的,从拖入到跑起来没有明显卡顿。 如果你手上有 MT5 终端,直接装 V1.24 对比 V1.23 的完整视图,重点看子面板呼出速度——外汇与贵金属品种波动大、滑点高,这类面板延迟会直接吃掉进场时机,属于高风险环境下的效率损耗。

◍ 把工具请下神坛

这套管理员面板从 V1.0 到 V1.24 的 mq5 文件体积到了 90.68 KB,配套的 PieChart.mqh 也有 13.75 KB,说明动态控件和画布渲染已经不是 demo 级玩具,而是能直接挂进 MT5 跑的真东西。 之前踩过的对象分层混乱、动态创建控件闪退,本质都是把 MQL5 当静态脚本写留下的坑;用类封装主题管理和饼图绘制后,面板响应和扩展性才真正放开。 外汇和贵金属交易本身高杠杆、高风险,任何面板都只是把历史表现可视化,不预设下一步涨跌。 真要验证价值,去把 ZIP 里的 Admin_Panel_V1.24.mq5 拖进 MetaEditor 编译,缺 Controls 扩展文件就按作者说的覆盖 Include 目录,跑起来看自己的成交分布比看结论实在。

把重复劳动交给小布
这些诊断小布盯盘的 AIGC 已内置,打开对应品种页即可看到盈亏与品种分布的实时切片,你专注决策而不是抄数据。

常见问题

在 CDialog 派生类里创建 ChartCanvas 实例并绑定绘图区域,再用 PieChart 对象加载交易历史数组,每 tick 或定时重绘即可。
小布盯盘已内置类似实时分布视图,适合快速看盘;若要在自有 EA 内做定制交互,仍可用本篇的 MQL5 类自行扩展。
倾向用 HistorySelect 按时间窗筛选,再遍历 HistoryDealsTotal 取每笔成交的盈亏与品种符号做分类聚合。
可接绩效折线、交易量柱状、连亏追踪与风险敞口图;外汇贵金属波动大,叠加情绪过滤可能更实用。