EA没下单、突然停了,或者报了一串看不懂的错,这时候重装、换参数,往往是最费劲的做法。我是写代码的,程序出问题,我的第一步一定是翻日志:EA和交易终端会把运行中发生的事逐行记录下来,像行车记录仪,出了状况,先回放一遍。下面是我的排查顺序,另附一个免费的小脚本。
第1步:先别动设置
不要急着改参数或重装。原因往往已经写在日志里,乱改反而会把线索弄乱。
第2步:把日志分成4堆
连接:终端有没有连上服务器,中途有没有掉线重连。
下单:EA发出过哪些开仓、改单、平仓的请求。
拒单:请求被拒了,一般会写明原因,比如止损设得不合规、可用资金不够。
报错:运行出的错误,常常带着错误代码。
先分堆再找,比从头翻几千行快得多。
第3步:让小脚本帮忙整理
我写了一个单文件的Python脚本,只在你自己的电脑上跑,不上网,也不去读、不去写账号或密码之类的文件。它只干三件事:按上面4类归类(其余放进“其他”);遮蔽一部分内容(6位以上数字、邮箱、IP、密码类字样会变成“***”);统计各类条数,列出最常见的几种报错。(需要先装Python 3)
整理成表:
python ea_log_organizer.py 日志文件.txt -o 整理结果.csv
只看报错和拒单:
python ea_log_organizer.py 日志文件.txt --only 报错,拒单
查看说明:
python ea_log_organizer.py --help
第4步:先拿虚构的日志试一遍
示例数据,非真实:我拿一份虚构的17行日志试跑,结果是“拒单3条、报错3条、下单3条、连接4条、其他4条”,并列出了最常出现的几种报错写法。
第5步:要把整理结果发到论坛求助前,再过三关
一、别关“遮蔽”,不要加 --no-mask。
二、要清楚遮蔽是有边界的:它遮得了一部分,不保证全部。像5位的账号、服务器名、用户名、MAC地址、余额这些,它是不会遮蔽的。
三、所以发出去之前,请自己从头到尾通读一遍,确认里面没有账号、密码、邮箱这类个人信息。
脚本只有一个Python文件,旁边附了使用说明和一份样例日志(样例是虚构的,标注“示例数据,非真实”)。工具在帖内下方附件领取。
带走三句话
1. EA出状况,先翻日志,再决定要不要动设置。
2. 日志先分4堆:连接、下单、拒单、报错。
3. 脚本只能遮蔽一部分内容,发出去之前自己再通读一遍,这一关不能省。
风险提示:本文仅为技术交流,不构成投资建议;杠杆交易风险高,可能损失本金;回测和历史表现不代表未来。
下一篇讲:点差像换汇的买卖差价:为什么同一个EA在不同时段成本不同
想让我帮着看看某个EA的逻辑,或者想要某个小脚本,欢迎在帖子下留言。
—— 写代码的老K
|