目录

MT4正版下载 - MT4图表对象保存失败背后真相与实操解法_TimeHour到底是个啥玩意儿

MT4图表对象保存失败背后真相与实操解法_TimeHour到底是个啥玩意儿
很多做交易的朋友都遇到过这样一个怪现象:在MetaTrader4的图表上辛辛苦苦画好了趋势线、斐波那契回调线或者水平支撑阻力位,当时看着好好的,可一旦关闭图表或者重启软件,这些精心绘制的对象就像被橡皮擦抹掉一样消失得无影无踪。明明在画图的时候软件没有任何报错提示,保存操作也执行了,可结果就是留不住。这个问题困扰了不少人,尤其是那些习惯用图表对象来做交易计划的朋友,每次重画一遍既浪费时间又容易出错。 其实MT4的图表对象保存机制本身是存在的,软件设计时也考虑了持久化存储的需求。但实际操作中,对象丢失的原因往往藏在一些不太起眼的设置和操作习惯里。我花了不少时间反复测试,也翻阅了官方文档和论坛里的各种讨论,最终把最常见的几个原因和对应的解决办法整理了出来。如果你也在为这个问题头疼,不妨对照下面的情况逐一排查。

TimeHour到底是个啥玩意儿

说实话我一开始连TimeHour返回的是服务器时间还是本地时间都没搞清楚,就傻乎乎地在代码里写了个if(TimeHour(TimeCurrent())>=8 && TimeHour(TimeCurrent())<20)想着这样就能让EA只在早上八点到晚上八点干活,结果挂上去一看,我这边是白天它倒是老实,等到了晚上六点多的时候它就开始抽风,有时候该开单不开单该平仓不平仓的,后来才明白MT4里那个TimeCurrent用的全是服务器时间,我的服务器设在英国那指标时间跟咱这边差了七八个小时,你想想我按北京时间写过滤条件那不是全乱套了嘛,(1)我还得先搞清楚当前图表的时间是什么基准,这里头就牵扯到夏令时冬令时那种乱七八糟的时区换算,(2)然后你还得考虑跨天的问题,比如你想过滤到凌晨两点到五点不交易,要是写成小时数从2到4的情况一到午夜或者接近0点的时候就彻底失灵了,(3)再就是OrderSend之前这个过滤条件放到哪一步才合适,放在开仓条件最前面跟放在最底下的结果有时候都能不一样,(4)还有一个就是快收盘那几分钟要怎么处理,有人想过滤掉最后十分钟有人想过滤掉头五分钟,这个TimeHour压根儿不够用得加上TimeMinute来回配合,(5)最后你还要注意那种周五收盘然后周一开盘之间的各种跳空窗口,要是不过滤掉那一小段你单子挂在那里特别容易被那种大跳空的行情莫名其妙的扫掉。

所以说到底这个TimeHour只是个返回当前小时数字的函数,它本身不复杂,复杂的是你拿它配合什么时间来用,我就犯过一个大错,直接用TimeHour(TimeCurrent()),其实准确的说法是应该写TimeHour(TimeLocal())还是TimeHour(TimeCurrent())得看你想要的是本地时间还是经纪商的服务器时间,当时我还贴代码上去问人家,人家跟我说你用TimeCurrent就是服务器时间啊我真想把自己拍论坛上,后来我干脆直接在图表上画了一条竖线来对比当前时间和我想开单的那个时间点,搞了老半天才明白MT4的测试策略里那个可视化模式你选成控制整段时间的时候还可以把那个“每tick基于实时价格”的模拟方式打开,这样会看到跟真实跑更接近的情况,但我绕了这么大一圈无非就是想告诉你,这时间过滤你看着是几行if判断的问题,实际上牵扯到你的交易时段和经纪商数据库那边一大串时区转换的事,大家不要觉得那么不长心就完事了。

说到这我又想起我当时还想着把那个TimeHour用在一个叫做交易俱乐部那种群里面下载过来的EA上,那EA本来是没有时间过滤这功能的,我硬给它加上去了,结果它原本一天只开一次单的那个逻辑跟我的过滤条件打架了,俩条件都得满足才开导致它一天啥也没干,那叫一个郁闷,最后你还是得弄清楚这个EA本身是怎么控制时间的,有的EA自带一个StartHour变量有的EA自带个模数那种值,你自己往里填数字就行,有的EA用了循环判断可以设置多个交易时段,你得小心别把这些不同玩法给混着用,我就碰上了那个写法顺序的问题,我把最基础的bar的波动幅度条件放在了前面,导致后来的时间判断根本没有被真正执行到,你自己写得时候把时间过滤放在第一条件上应该会更顺一些。

最简单的解决方案利用Excel导入功能

其实不需要去折腾MT4的导出设置,直接在Excel里就能解决这个问题。打开Excel后,不要直接双击CSV文件,而是先打开一个空白工作簿,然后点击“数据”选项卡,找到“从文本/CSV”这个导入功能。选择你要导入的CSV文件后,Excel会弹出一个预览窗口,这时候重点来了,在预览窗口的文件原始格式下拉菜单里,把默认的UTF-8改成简体中文GBK。

改完编码后,预览窗口里的数据就会立刻变成正常显示的中文。这时候点击加载按钮,数据就会以正确的编码格式导入到Excel中。
这个方法的好处是完全不需要安装任何额外软件,也不需要修改MT4的任何配置,而且一次设置后,下次再导入时Excel会记住你上次选择的编码格式,操作起来非常方便。

如果你用的是WPS表格,操作方式也大同小异。在WPS里点击“数据”选项卡,找到“导入数据”功能,选择CSV文件后,在编码选择那里同样改成GBK或简体中文即可。这个方法我用了很长时间,唯一的缺点就是每次都要通过导入功能来操作,不能直接双击打开文件,但胜在稳定可靠,不会出现任何乱码问题。

切换离线模式的操作细节

MT4的离线模式切换入口在文件菜单里。点击顶部“文件”,下拉菜单最底部有一个“离线状态”选项,点击它之后MT4会重新启动,重新打开后就会以离线模式运行。这时候再去导航窗口找到自定义品种,进入品种规格的数据源标签页,你会发现报价输入框直接就是可编辑状态,省去了点击“编辑”按钮的步骤。

如果找不到“离线状态”这个选项,可能是因为你的MT4版本太老。较旧版本的MT4把这个功能放在了“工具”菜单的“选项”里,路径不一样。检查一下你的MT4版本,如果是2016年之前的老版本,建议先升级到新版本再操作。新版本的离线模式切换更直观,而且对自定义品种的支持也更好。

还有一个容易忽略的地方是,离线模式下修改完报价后,重新连接服务器时,MT4会弹出一个提示框,问你是否要保留本地修改的报价。这时候一定要选择“是”,否则你辛苦输入的报价会被服务器数据覆盖掉。很多人就是在这最后一步点错了,导致之前的工作白费。

模板保存让滚动设置一劳永逸

刚才提到模板保存,这确实是解决多图表设置问题的好方法。当你把某一张图表的自动滚动功能关闭之后,右键点击图表,选择“模板”菜单,然后点击“保存模板”,给这个模板起一个容易记住的名字,比如“手动滚动模式”。保存好之后,以后每次新建图表窗口或者打开新的图表时,只需要右键选择“模板”,再点击你保存的那个模板,图表就会自动应用关闭自动滚动的设置。

这个方法的好处在于,它不只是保存了自动滚动的开关状态,连带着图表上的所有其他设置——比如K线颜色、背景色、网格样式、指标参数等等——都会一并保存下来。也就是说,你可以创建一套完全符合自己看盘习惯的图表配置,然后反复使用,不需要每次开新图表都要重新调整一遍所有设置。对于每天要开很多图表的交易者来说,这节省的时间相当可观。

在实际操作中,模板的保存路径默认是在MT4安装目录下的“Profiles”文件夹中,如果你重装了MT4软件或者更换了电脑,记得备份这个文件夹,否则之前保存的模板就会丢失。另外,如果你在某个图表上已经添加了一些自定义指标,保存模板时这些指标也会被记录进去,下次应用模板时会自动加载,这算是一个隐藏的加分项。不过也要注意,如果某些指标在另一台电脑上没有安装,应用模板时可能会提示找不到指标文件。

文章目录