MT4多开 - MT4设置交易时段限制EA自动运行的方法

MT4自带的交易时段控制功能
很多朋友可能不知道,MT4的EA设置界面里其实藏着一个专门控制交易时间的选项。当你把EA拖到图表上时,弹出的对话框里有“常用”和“输入参数”两个选项卡,在“常用”选项卡下方就能找到“允许Algo交易”的勾选框。但这只是总开关,真正控制时间的在“输入参数”里。绝大多数商业EA都会在参数列表里预留TimeStart和TimeEnd这两个变量,你只需要把服务器时间的开始和结束小时数填进去就行。
不过这里有个容易踩坑的地方,MT4默认使用的是服务器时间,而不是你电脑的本地时间。比如你的经纪商服务器是GMT+2时区,而你在北京,那就要把北京时间减去6个小时才是服务器时间。我第一次用的时候就没注意这个问题,结果EA在我想让它休息的时候疯狂开单,后来才反应过来是时区换算出了偏差。建议你在设置前先打开MT4右下角的服务器时间确认一下,免得白忙活。
另外有些EA把时间参数设计成了分钟形式,比如StartTime=3600代表早上6点,EndTime=7200代表下午2点。这种格式其实更精确,可以控制到具体分钟。但要注意的是,如果EA开发者在代码里写的是“大于开始时间且小于结束时间”,那你设置的边界值就不会触发交易。我曾经设过StartTime=0和EndTime=0,结果EA一整天都没动静,因为0点这个时刻既不大于0也不小于0。
如果你用的EA没有内置时间参数,也别急着换EA。打开MetaEditor编辑器,找到EA源码里下单函数前面的if判断语句,自己加上一行时间判断代码就能解决。具体写法其实很简单,用Hour()函数获取当前服务器小时,然后加个条件判断就行。就算你不懂编程,照着网上现成的代码段粘贴进去也能用,但记得要重新编译才能生效。
通过图表周期过滤实现间接时间管理
还有一个比较巧妙的办法,就是利用不同图表周期之间的K线收盘时间差来间接控制EA交易。比如说你想让EA只在美盘时段工作,那就可以把EA挂在H4图上,因为H4图每根K线的收盘时间恰好对应伦敦和纽约市场交替的节点。当新K线开盘时,EA会重新计算一次信号,你只要在参数里设置只在新K线开盘后前30分钟运行就行。
这个方法的好处是不需要改任何代码,只要在MT4的“工具-选项-EA交易”里勾选“允许DLL导入”,然后在EA属性里把“实时报价”改成“仅在新K线时”即可。但缺点也很明显,它只能做到粗粒度的时间控制,没法精确到某个小时。如果你需要精确控制,比如下午3点到5点不交易,这个方法就完全无能为力了。
我见过有些老交易员会把EA同时挂在多个周期的图表上,每个图表用不同的参数。比如M15图上的EA设置成亚洲盘交易,H1图上的EA设置成欧洲盘交易,这样组合起来就能实现全天候但分时段的不同策略。不过这种操作对电脑性能有一定要求,如果你开着好几个图表和EA,内存占用会明显上升。我自己的电脑是16G内存,同时挂3个EA加30多个货币对也没问题,但如果是老电脑可能就会卡顿。
说实话,这个方法的通用性并不强,更适合那些对交易时段有特殊偏好而且EA本身没有时间参数的朋友。如果你对时间精度要求很高,我还是建议用第一种方法直接改参数或者加代码,毕竟那才是治本之策。
利用服务器时间与本地时间的换算技巧
在MT4里设置时间限制时,最让人头疼的就是时区换算问题。很多朋友把参数设好后,发现EA还是在不对的时间交易,排查了半天才发现是时区搞错了。这里我分享一个我自己的土办法,你在MT4的行情列表里随便找一个货币对,它的报价更新时间显示的就是服务器时间。你把这个时间和自己电脑右下角的时间对比一下,就能算出准确的时差。
举个例子,假设你看到服务器时间是下午4点,而你的电脑显示晚上10点,那说明服务器比你快6个小时。如果你想禁止EA在服务器时间晚上8点到次日凌晨2点交易,换算成你的本地时间就是凌晨2点到早上8点。把这个换算结果填进参数里,EA就能按时休息了。但这里要注意,有些经纪商在夏令时和冬令时会调整服务器时区,这时候你需要重新检查一次。
还有一个更省事的办法,那就是直接写一段简单的代码,让EA自动判断夏令时和冬令时。虽然这需要一点编程基础,但其实逻辑很简单,就是先获取当前月份,然后根据月份判断该用哪个时区偏移量。我认识一个朋友就是这么干的,他把这段代码封装成一个函数,现在不管经纪商怎么调时区,他的EA都自动适应,再也不用手动修改参数了。
其实说到底,时区问题不是MT4本身的问题,而是经纪商服务器设置的问题。大多数正规经纪商都会跟随美国东部时间切换夏令时,但也有少数经纪商全年不变。建议你在选择经纪商之前就问清楚他们的服务器时区政策,免得以后交易时出岔子。
用虚拟专用服务器实现更灵活的时间控制
如果你跑EA的频率很高,而且对时间控制的灵活性要求特别大,那可以考虑用VPS(虚拟专用服务器)来辅助。在VPS上运行MT4时,你可以把服务器时间调整成你想要的任何时区,这样EA里的时间参数就不需要做任何换算了。比如你直接让VPS显示北京时间,然后EA里的StartTime和EndTime直接填你想要的本地小时数就行。
这个方法最大的优势在于稳定性和持续性。家用电脑可能会因为休眠、断电、网络波动而导致MT4掉线,但VPS是7x24小时运行的,只要你的经纪商服务器不宕机,EA就能一直按计划执行。我自己用过一段时间的VPS,说实话省心不少,再也不用半夜爬起来看看EA有没有掉线。而且现在VPS价格也不贵,一个月几十块钱就能搞定。
不过用VPS也有个学习成本,你得会基本的远程桌面操作和系统设置。好在网上教程一大堆,照着一步步来基本都能搞定。我记得第一次配置VPS时花了一个下午,中间还因为防火墙设置问题连不上远程桌面,后来才发现是端口没开。如果你对电脑操作不太熟悉,建议先找个懂行的朋友帮帮忙,免得折腾半天。
最后再提醒一句,不管用哪种方法控制EA交易时间,都要记得先用模拟账户测试几天,确认时间段设置正确后再放到实盘上。我就吃过亏,在模拟盘上跑得好好的,换到实盘就忘了改服务器时间,结果EA在非交易时段频繁下单,白白亏了不少点差。