MT4策略测试器 - MT4电脑版交易工具添加方法详解_那当时代码翻了天我也在骂娘

安装程序自带的快捷方式选项
其实MT4在安装过程中就提供了创建桌面快捷方式的选项,只不过很多人安装时没注意,一路狂点“下一步”就给跳过了。如果你还没安装MT4,或者准备重装一遍,那么在安装向导进行到“选择组件”或“附加任务”那一步时,会看到一个勾选框,上面写着“创建桌面图标”或者类似字样,把那个勾打上就行。
安装完成后,你就能在电脑桌面上看到MT4的图标了,通常是那个蓝色的、带个类似字母M标识的圆形图标。
这个图标默认会在桌面左下角,如果你用的是Windows系统,位置可能因系统版本不同而略有差异,但找起来肯定不难。
不过说实话,很多人电脑里的MT4都是很早以前装的,那时候可能没勾选这个选项,又或者系统清理时误删了桌面图标,这种情况下就需要我们手动来创建了。别担心,手动创建的方法也很简单,而且还能自己决定图标放在什么位置。
那当时代码翻了天我也在骂娘
在那段琢磨的时间里面,我脑子里一堆乱七八糟的碎片念头,你有这种感觉吗,就写着写着开始怀疑自己之前在别的地方学的那一招半式是不是全都白搭,感觉快把MQL4里面每个函数都研究到底了,可不光一个TimeHour的问题,当时因为搞不清小时偏移量,我整个下午都在MetaEditor里面反反复复改那个if后面的数字,把那一行代码改来改去然后按编译,再插到图表上去看效果,反反复复改动不下二十次,有时候为了测试一个时间点我还专门把系统时间跟服务器时间拉开到完全不同的时差,直接在Strategy Tester里面来回跑,跑那个几分钟的数据看看到底在哪个点开了单,想想也是挺佩服自己那股子钻牛角尖的劲,但是你也别想着这就结束了,在你好不容易把这个条件加上去理解了之后,你可能又会在另一个奇怪的地方碰到坑,就比如在服务器经过周末休市时间切换的时候,TimeHour仍然有可能在你完全没有预期的时间框架下面给你返回一个奇怪的值,你自己不亲眼盯着看根本发现不了开单没有。
有些人在论坛里面张口就是“用TimeHour()还有Hour()”,也不跟你解释服务器时区的偏差到底是多少,更不跟你说你那平台因为调了夏令时导致整条时间线都跟着变,这就是我碰上的“夏令时背刺”,我用了同一个EA在夏季和冬季跑出来的数据完全不一样,就因为在编程逻辑里面压根没有考虑那两个小时的移动,我还自己写了一个把服务器时间到本地时间的偏移量打进输出日志的小工具来确认这个差异,每次改动之后都得打印出来看看,要是不打印光凭猜那真是纯靠运气。最后发现稳定下来得先确认那台VPS的时间跟经纪商服务器时间的差值,然后在计算那个过滤时间的时候把这个差值给加上去,说起来简单,可是这中间的错乱和返工是真的让人头秃。
后来我还捋了一下这个问题的本质,其实TimeHour这个函数就是某时间点的小时部分嘛,不复杂,真正把人搞崩的点是整个MQL4里面没有所谓的“当前交易时段”的官方函数,你得自己搭这个架构,自己在初始化的部分把允许交易的时间窗口什么的定义好,然后每次检测到分钟变化(一般在OnTick的开头判断一下时间有没有跳到下一分钟)再去执行那个时间判断,不能每分钟都去扫描所有条件因为那样浪费资源,但加了那个分钟判断就又要小心别出现数据漏过一条的那种问题,MQL4老说你是线性执行,你还得照顾好那些新来的一根根bar,因为它们也很容易干扰你基于TimeHour的某些开盘或者收盘判断,感觉自己不光是在学写代码还在学一门玄学。
官方渠道下载的可靠性考量
说到下载MT4,很多交易者忽略了一个更重要的问题,就是下载源的安全性。不管用什么下载管理器,最终都得从某个服务器拉取文件,如果下载源本身有问题,再快的加速工具也是白搭。MetaTrader4的官方下载渠道主要是mt4官网和各大经纪商官网,这两个渠道的服务器稳定性都相当不错。
我见过不少交易者为了追求下载速度,去一些第三方软件下载站找MT4安装包,这种做法风险极大。这些站点提供的安装包很可能被捆绑了恶意软件或者篡改过,下载管理器虽然能加速下载,但无法保证文件的安全性。说句不好听的,为了省那几十秒下载时间,把自己电脑搞出问题,这笔账怎么算都不划算。
如果你真的觉得官方渠道下载速度太慢,正确的做法是换个时间段再试,或者直接用经纪商提供的备用下载链接。很多大型经纪商在全球都有CDN节点,自动会选择离你最近的服务器,下载速度本身就不会太慢。这种情况下再叠加下载管理器,其实有点画蛇添足了。
另外还要提醒一点,下载管理器本身也有安全风险。市面上很多所谓的破解版IDM、绿色版迅雷,里面都藏着后门程序。
你要是为了下载MT4去装这些来路不明的软件,那就等于把一个定时炸弹装进了自己的电脑里。
配置完成后如何验证和排查常见故障
配置好SMTP之后,别急着跑EA,先在MT4的"电邮"设置页面点一下"测试"按钮。如果测试成功,MT4会弹出一个提示框,告诉你测试邮件已发送,这时去你的收件箱里检查一下,看看邮件是否真的收到了。有时候测试显示成功但邮件没收到,那可能是被邮箱的垃圾邮件过滤器拦了,去垃圾箱里翻一翻就能找到。
如果测试直接失败,先检查端口和SSL设置是否匹配。很多邮箱的465端口必须配合SSL使用,而587端口则要用STARTTLS,这两个搞混了就会出现连接失败的错误。另外检查一下登录名是否填了完整的邮箱地址,有些邮箱服务器要求必须包含@后缀,漏掉的话也会认证失败。
还有一种情况是,MT4的日志文件里会记录详细的错误信息,路径在MT4安装目录下的MQL4文件夹里,找到Logs子文件夹,打开当天的日志,搜索"mail"关键词就能看到具体的报错原因。常见的错误有"SMTP authentication failed"表示授权码错误,"Connection timed out"表示端口不对或者防火墙拦截了连接。
最后提醒一下,EA代码里调用SendMail函数时,邮件内容不要太长,有些SMTP服务器对邮件大小有限制。另外邮件的收件人地址是在MT4的"电邮"设置里填的,不是写在EA代码里的,这个位置很多人会找错,以为要在EA里改收件人,其实改的是MT4界面上的那个"收件人"输入框。