有汇友问我,说每天收盘后手动从MT5导出历史记录、再做Excel报表,来回切换平台很麻烦,有没有办法用Python自动把交易日报生成出来。老实说我也被这事磨过很久,刚搭脚本那会儿光是把MT5的接口调通就折腾了小半个月。今天就把我这套东西怎么跑起来的,原原本本说一下,能给各位省点时间就省点。
先说核心思路,其实就是让Python去读你终端里的账户和历史数据。MT5的话用官方 mt5 库最稳,比自己去扒文件省事。初始化要传终端路径和登录信息,像我本机路径是 C:/Program Files/MetaTrader 5/terminal64.exe,你第一次连如果报 init 失败,八成是路径不对或者终端没登录。连上后拉 history_deals_get 拿到成交明细,别用 positions 或 orders 混着取,容易两边对不齐。
具体几步,我按自己的流程走:
踩过的坑得专门提两句。一个是 mt5.initialize() 调用完忘了 shutdown,脚本跑两三次之后连接就挂,那时候我还以为是库坏了。另一个是 comment 字段里有中文,写进CSV要用 utf-8-sig,不然Excel打开全是乱码,这个坑查了好久才发现。还有VPS部署上,终端得常驻开着并且保持登录,断线后脚本拉出来的是空数据,我就吃过一次,日报全是0,白高兴一场。
最后说句心里话,自动报表的价值不在于省那几分钟,而在于数据口径统一了,复盘才不会骗自己。手动整理容易漏单,机器不会。你可以先把脚本跑在模拟盘上两周,确认数据结构稳定了再上实盘终端。
有兄弟已经在跑类似的脚本吗?你们是直接发邮件还是接的消息推送,取数那块有没有碰到时间错位的情况,一块聊聊。🙂
先说核心思路,其实就是让Python去读你终端里的账户和历史数据。MT5的话用官方 mt5 库最稳,比自己去扒文件省事。初始化要传终端路径和登录信息,像我本机路径是 C:/Program Files/MetaTrader 5/terminal64.exe,你第一次连如果报 init 失败,八成是路径不对或者终端没登录。连上后拉 history_deals_get 拿到成交明细,别用 positions 或 orders 混着取,容易两边对不齐。
具体几步,我按自己的流程走:
- 第一步,先拿 history_deals_get 限定起止时间,注意服务器时间别直接用本地UTC,差几个小时数据就错位了。
- 第二步,按 deal 的 type 和 profit 字段筛出平仓单,持仓中的不算日报。
- 第三步,用 pandas 做分品种汇总,欧元、黄金分开统计 手数、盈亏、最大单笔亏损。
- 第四步,导出 Excel 或者直接拼 HTML 发到 Telegram 机器人都行,看你自己习惯。
踩过的坑得专门提两句。一个是 mt5.initialize() 调用完忘了 shutdown,脚本跑两三次之后连接就挂,那时候我还以为是库坏了。另一个是 comment 字段里有中文,写进CSV要用 utf-8-sig,不然Excel打开全是乱码,这个坑查了好久才发现。还有VPS部署上,终端得常驻开着并且保持登录,断线后脚本拉出来的是空数据,我就吃过一次,日报全是0,白高兴一场。
最后说句心里话,自动报表的价值不在于省那几分钟,而在于数据口径统一了,复盘才不会骗自己。手动整理容易漏单,机器不会。你可以先把脚本跑在模拟盘上两周,确认数据结构稳定了再上实盘终端。
有兄弟已经在跑类似的脚本吗?你们是直接发邮件还是接的消息推送,取数那块有没有碰到时间错位的情况,一块聊聊。🙂
