目录

Mac运行MT4 - MT4长期交易记录管理从查找到备份详细操作_修改服务器配置解决长期数据缺失

MT4长期交易记录管理从查找到备份详细操作_修改服务器配置解决长期数据缺失
做交易时间长了,MT4里的历史记录会越来越多,尤其是那些做了几年的老账户,打开“账户历史”标签页时,密密麻麻的单子堆在一起,想找某一条特定记录简直像大海捞针。很多人以为交易记录就只能那样放着不管,其实MT4提供了一整套管理长期交易记录的工具和方法,只是这些功能藏得比较深,平时不太容易注意到。我用了MT4差不多五年时间,中间换过好几个经纪商,积累了一套管理长期记录的经验,今天就把这些操作细节全部摊开来讲。

为什么你的MT4图表上会有那么多指标

MT4平台允许用户在同一个图表窗口中叠加多个技术指标,这是它的核心功能之一。但正因为添加指标的操作太方便,很多交易者在研究新策略时随手就拖几个指标上去,用完又懒得删除,久而久之图表就变成了"指标超市"。还有一种常见情况是,你下载了别人的交易模板或者EA程序,这些文件会自动加载一系列预设指标,甚至有些指标被隐藏了,平时根本看不到它们的存在。

另外一个容易被忽略的因素是,MTMac运行MT44默认会把指标保存在两个不同的位置:一个是全局性的"自定义指标"文件夹,另一个是当前图表模板中引用的指标列表。如果你只删除了图表上的显示,但模板中仍然记录着这些指标,那么下次新建图表或者切换周期时,它们又会重新出现。这就是为什么有些人明明删了指标,过段时间又冒出来的根本原因。

搞清楚这些底层逻辑后,你就能明白,删除多余指标不能只盯着图表看,还需要从平台的文件系统和模板设置两个层面入手。接下来我会按照从简到繁的顺序,把三种最常用的删除方法全部讲清楚,你可以根据自己的实际情况选择最合适的方式。

利用品种特性判断具体开市时间

外汇市场有个特点,就是不同货币对的活跃时间段差异很大。比如澳元兑美元在亚洲时段最活跃,欧元兑美元和英镑兑美元则在伦敦时段和纽约时段波动最剧烈。如果你打开MT4,发现某个货币对的点差突然变得非常大,比如欧美正常是1.5个点,现在突然变成5个点甚至10个点,那就说明这个市场当前流动性极低,很可能正在休市或者接近休市时段。

黄金和原油等贵金属能源品种的交易时间又有所不同。黄金通常在北京时间周一早上6点开盘,周六凌晨3点半左右收盘,中间每天的休市时间是北京时间凌晨3点半到6点,比外汇市场的日休市时间稍长一些。原油则基本跟随外汇市场的交易时间,但在美国的节假日,比如感恩节、圣诞节,原油市场会有额外的休市安排。

如果你做的是指数差价合约或者股票差价合约,那交易时间就更复杂了。比如标普500指数,它是在美国东部时间早上9点半开盘,下午4点收盘。换算成北京时间,夏令时是晚上9点半开盘到凌晨4点收盘,冬令时则是晚上10点半到凌晨5点。这些品种在MT4上虽然能看到报价,但在非交易时段,价格会完全静止,只有等到对应市场开盘才会开始波动。

说实话,刚开始接触这些不同品种的交易时间时,我也是一头雾水。后来养成了一个习惯,就是每周一早上开盘前,先打开MT4看一圈所有自选品种的报价,如果某品种的报价一直在跳动,说明这个市场已经活跃了;如果像死水一样平静,那就是还没开盘。时间久了,不用看具体时间也能凭感觉知道市场状态了。

编写自定义时间过滤代码的注意事项

如果你打算自己动手改EA代码,实现时间限制其实只需要几行代码。最基础的思路是在开仓函数前面加一个时间判断,比如在OrderSend()之前检查当前小时数是否在允许范围内。代码大概长这样:if(Hour() >= StartHour && Hour() < EndHour) { 这里是开仓逻辑 }。这个写法简单直接,但有个问题,如果StartHour大于EndHour,比如StartHour=22,EndHour=2,这个条件就永远不会成立。

处理跨天时段需要稍微变通一下,可以用两个判断条件来覆盖。第一个条件处理当天的情况,第二个条件处理跨天的情况,代码逻辑是:if((Hour() >= StartHour && Hour() < 24) || (Hour() >= 0 && Hour() < EndHour))。这样写就能覆盖晚上十一点到凌晨两点这种跨天时段。不过这么写逻辑稍显繁琐,更稳妥的做法是直接用分钟数计算,把小时和分钟组合成一个总分钟数,再进行比较。

在编写时间过滤代码的时候,还要考虑一个特殊情况,就是周末和节假日。有些经纪商在周六周日不提供报价,EA就算运行也不会开仓,但有些经纪商周日晚上就开始报价了。如果你不希望EA在周末交易,最好在时间判断里加上星期几的检查。DayOfWeek()函数返回0到6的数字,0是周日,6是周六,你可以用这个函数来排除特定日期。

还有一个容易被忽视的问题,MT4的EA在每次报价跳动时都会执行一次OnTick()函数,如果你的时间判断放在OnTick()里,那么每个报价都会执行一次检查。这本身没什么问题,但如果你在时间判断之外还有其他逻辑,比如计算指标或者更新显示信息,这些操作也会在每个报价时执行,可能会增加CPU负担。所以对于时间过滤,建议在进入开仓判断之前就做一次检查,如果不在交易时段内,直接return,跳过后续所有计算。

修改服务器配置解决长期数据缺失

有些情况下,数据断档问题反复出现,刷新和下载也无法根治,这时候问题可能出在服务器配置上。
打开MT4的“文件”菜单,选择“打开数据文件夹”,找到config目录下的server.ini文件,用记事本打开后可以看到一行“HistoryTicks=0”或类似的参数设置。

将该参数修改为“HistoryTicks=1”可以启用服务器端更完整的数据推送机制,不过这需要经纪商服务器的支持。如果是自己搭建的MT4服务器,可以在服务器管理端调整历史数据推送策略,增加每次同步的数据量上限。对于普通交易者来说,这个方法可能无法直接操作,毕竟服务器配置权限在经纪商手里。

如果以上所有方法都无法解决,还有最后一个思路:尝试重新登录MT4账户。退出当前账户,关闭MT4客户端,重新打开并登录。这个过程会重建客户端与服务器之间的会话,有可能触发服务器重新初始化数据推送。虽然不保证百分百有效,但操作成本低,值得一试。

数据断档虽然看起来吓人,但本质上就是个缓存同步问题,按照上述步骤操作基本都能解决。建议养成定期检查图表完整性的习惯,特别是隔一段时间没打开MT4后,最好先刷新一下数据再分析行情,避免因为数据缺失导致判断失误。

文章目录