Summary: 本文分享两种从MT4导出账户历史数据的方法,重点介绍用MQL4脚本一键生成干净CSV的方式,配合Excel快速画出资金曲线,避免官方报表格式混乱的问题。




上周六晚上,我窝在椅子上想把自己2025年上半年的交易记录做个资金曲线出来。打开MT4,切到"账户历史"标签页,右键另存为报告,看着弹出来的HTML文件我就知道——今晚又得熬夜了。

那个官方报告长得花里胡哨的,表格里各种合并单元格、颜色标注、页眉页脚,用来给客户看确实体面。但我要的是数据,是能丢进Excel或者Python里画图的原始数字。用HTML硬解析?不是不行,是太折腾了。

后来我翻了一下MQL4官方文档里关于历史订单的函数,发现事情没那么复杂。HistorySelect()配合HistoryDealGetDouble()可以直接把每一笔成交记录的余额、盈亏全抓出来。写个脚本,几秒钟就能跑出一份干干净净的CSV。

方法一:官方报表(适合交差,不适合分析)

右键账户历史 > 另存为报告。生成的是.htm文件。用Excel打开,数据是散的,需要手动删合并单元格、调整格式。如果你的目标只是粗略看一下,那可以。但如果想算最大回撤、夏普比率,这种格式会让你崩溃。

方法二:自己写脚本导出CSV(推荐)

我在MQL4\Scripts里新建了一个脚本,贴了下面这段核心代码。跑完之后,去MQL4\Files文件夹里拿CSV,直接拖进Excel就能用。

``mql4
//+------------------------------------------------------------------+
//| 脚本程序启动函数 |
//+------------------------------------------------------------------+
void OnStart()
{
int total = HistoryDealsTotal();
if(total == 0) { Print("没有找到历史交易记录。"); return; }

int handle = FileOpen("EquityHistory.csv", FILE_WRITE|FILE_CSV, ",");
if(handle == INVALID_HANDLE) { Print("文件创建失败"); return; }

FileWrite(handle, "时间", "余额", "净值", "盈亏");

for(int i = 0; i < total; i++)
{
ulong ticket = HistoryDealGetTicket(i);
datetime dt = (datetime)HistoryDealGetInteger(ticket, DEAL_TIME);
double balance = HistoryDealGetDouble(ticket, DEAL_BALANCE);
double equity = HistoryDealGetDouble(ticket, DEAL_EQUITY);
double profit = HistoryDealGetDouble(ticket, DEAL_PROFIT);

// 过滤掉数值为0的无效记录
if(balance > 0 || equity > 0)
FileWrite(handle, TimeToString(dt), DoubleToString(balance, 2), DoubleToString(equity, 2), DoubleToString(profit, 2));
}
FileClose(handle);
Print("已导出 ", total, " 条交易记录到 EquityHistory.csv");
}
`

说一个官方文档里没写清楚的坑

DEAL_EQUITY这个字段,文档里只列了它是双精度浮点数,但没告诉你它只在订单平仓时才会记录。如果你的账户有浮盈浮亏的持仓单,平仓的那一瞬间记录的净值是包含浮盈的。但如果你想做一条连续的资金曲线(包含持仓过程中的净值波动),光靠历史订单表是不够的。我踩过这个坑,连续导了三遍数据,曲线都是断层的。

解决方案是:单独写一个EA,在1分钟K线收盘时用
AccountInfoDouble(ACCOUNT_EQUITY)记录当前净值,存成另一份文件。然后把两份数据合并——平仓数据用来做回撤校验,分钟级数据用来画曲线。这个思路是我在一个MQL4论坛帖子里看到的,官方文档确实没提过。

Excel里画图

拿到CSV之后,Excel里点"数据" > "自文本/CSV",分隔符选逗号。插入折线图,X轴选时间列,Y轴选净值列。两分钟,资金曲线就出来了。

参考来源:MQL4官方文档 - 历史交易函数(docs.mql4.com)。

本文首发于FXEAR.com,原创内容,未经授权禁止转载。
``