目录

MT4正版下载 - MT4脚本批量修改订单止损的完整实现方法_关于缓存的一些误区和实际情况

MT4脚本批量修改订单止损的完整实现方法_关于缓存的一些误区和实际情况
做外汇交易的人应该都有过这种经历,手里握着十几个订单,行情突然反转,需要立刻把全部止损调整到安全位置。手动一个一个去改,不仅速度慢,还容易漏掉某个订单。其实MT4早就提供了解决方案,那就是利用脚本功能。脚本和EA不同,它不需要一直挂在图表上运行,而是执行一次就完事,非常适合这种批量操作的场景。
我花了些时间研究这个功能,今天就手把手教大家怎么用脚本把所有订单的止损统一修改。

先搞懂脚本的运行逻辑

在动手写代码之前,得先明白脚本在MT4里是怎么工作的。脚本本质上是一段MQL4程序,你把它拖到图表上,它就会立即执行一次,执行完就自动结束。这和EA完全不同,EA是常驻内存的,每个tick都会触发一次。脚本的这种特性,决定了它特别适合做一次性操作,比如批量修改止损。

脚本执行的时候,会从当前图表开始查找订单。这里有个细节需要注意,脚本默认只处理当前货币对的订单,如果你有多个币种的订单,需要在脚本里加个参数控制,或者直接写成处理所有品种。我个人建议写成处理所有品种,因为实际交易中,我们往往需要同时调整多个币种的止损。

还有一个关键点,脚本处理订单时,必须区分市价单和挂单。市价单有止损价和获利价可以修改,但挂单只能修改开仓价,不能直接修改止损。如果你对挂单执行修改止损的操作,MT4会报错。
所以代码里要加个判断,只处理那些允许修改止损的订单类型。

另外还要注意,脚本运行时会遍历订单池。MT4的订单池分两种,一种是当前图表关联的订单,另一种是所有订单。写代码时要用OrdersTotal()这个函数来获取订单总数,然后用OrderSelect()函数逐个选中订单。这两个函数配合使用,就能实现遍历所有订单的功能。

然后再唠MT4软件内部的设置,通知推到手机可没那么简单

打开MT4手机版,右上角那个三根横线还是齿轮图标,我记不太清了反正就是菜单入口,进去之后能找到设置那一栏,里面有一项叫推送通知或者通知中心,还有一个专门的东西叫MetaQuotes ID,这个东西就是你这台手机在MT4服务器那里的身份标识,类似门牌号吧,你要接收推送必须保证这个ID正常的,怎么验证呢,用电脑版MT4打开工具箱,里面有一个邮件还是通知的选项,可以给手机端发一条测试推送,如果手机能收到就说明管道是通的,收不到那就是前面那块系统设置又出问题了,得回过头去查权限,这就是我刚才说的绕来绕去又回来了,没办法,这玩意就是这么环环相扣。

然后重点来了,光靠手机版那个App自己是不是真的能收到所有订单通知,实际上得看券商那头的服务器配置,很多券商的MT4默认是不开启推送服务的那是要手动找客服开通的,或者要去官网的个人账户后台设置里面把推送通知开关给打开,你不开,那手机这边不管怎么折腾都收不到,我之前换过一个平台,死活收不到通知,跑来跑去最后问了客服才知道要自己在网页后台点一个确认订阅的功能,那叫一个无语,所以说如果大家在手机和电脑检查完还没用,别忘去券商后台看一眼,这个是最容易被忽略的地方,也是最让人抓狂的,真的。

(1)手机系统通知权限没打开,这在国产手机上最常见(2)MT4软件设置里的通知开关关着,或者MetaQuotes ID是空的没绑定好(3)券商服务器端没有开通推送通道,这个得问客服或自己找后台开关(4)同一个手机号或者邮箱绑定了好几个MT4账号,推送串了,老是弹别人的单子(5)App版本太旧了,旧版本有时候跟新服务器不兼容推送会失效(6)手机省电模式搞的鬼,省电模式为了延长电池会把后台网络断掉,推送就看着很慢,说白了就是畸形地延迟推送,人家都成交五分钟了才叮的一声。

对了说到MetaQuotes ID我又想起一件事,那玩意好像是跟安装绑定的一次就固定了,但有时候你换手机或者重装App,那个ID会变的,而电脑版里存的老ID就没用,你得在手机新版本里重新查看那个ID然后再去电脑上更新一下,如果你是一台电脑挂好几个手机看盘那样的,就每个手机都要在电脑上单独设一个目标ID,反正那些设置项我看一眼都头疼,但也得挨个弄,不然有一个手机收不着。

通过更换服务器让时间显示更友好

MT4平台允许用户在同一账户下切换不同的服务器连接。一般来说,经纪商会有主服务器和备用服务器,这些服务器可能部署在不同的地理位置。如果你发现当前连接的服务器显示时间和你的作息时间对不上,可以尝试切换到其他服务器看看。

具体的操作流程并不复杂:打开MT4后,点击左上角的“文件”菜单,选择“登录到交易账户”,然后在弹出的窗口里,你会看到服务器下拉框中列出了多个可选项。逐个切换服务器的过程中,注意观察图表右下角的时间变化,找到那个显示时间和你的本地时间最接近的服务器即可。

需要提醒的是,并不是所有经纪商都会提供多个不同时区的服务器。有些小平台可能只有一个服务器,那就没办法通过这个方式来调整了。而且切换服务器之后,你可能会发现行情报价的延迟情况有所变化,因为物理距离越远,数据传输的延迟就越高。所以这个方法并不是万能的,要根据自己使用的平台情况灵活判断。

说实话,这个方法我平时用得不多,因为大多数经纪商的服务器时区都差不多,切换之后时间变化并不明显。但确实有朋友用过这个方法,把MT4时间从东八区调整到了东七区,让时间和自己所在的新疆作息时间保持一致,用起来方便了不少。

关于缓存的一些误区和实际情况

网上有人说清理MT4的缓存文件可以解决卡顿问题,这个说法其实不太靠谱。我试过把history文件夹里的数据删掉重新下载,结果切换周期不仅没有变快,反而因为需要重新下载数据而变得更慢了。MT4的缓存文件设计得还是比较合理的,它会把已经下载过的数据保存在本地,下次再用的时候直接读取就行,不需要重复下载。

还有人觉得把MT4的"快速导航"选项勾上就能加快切换速度,这个选项确实存在,在工具菜单的选项里可以看到。但说实话,它主要影响的是图表切换时的动画效果,对实际的数据加载速度帮助不大。我试过打开和关闭这个选项,切换周期的耗时基本上没什么区别。

从软件本身的设计来看,MT4毕竟是一款十多年前开发的产品,它的底层架构决定了它在处理大数据量时不可能像现代交易软件那样流畅。MetaTrader5虽然在这方面有所改进,但很多交易者还是习惯用MT4,毕竟插件和指标的生态摆在那里。既然软件本身的限制改不了,那就只能通过优化使用习惯来减少卡顿带来的影响。

切换到周期之前先把不用的指标关掉,把图表数量控制在一个合理的范围,保证MT4运行在固态硬盘上,这些做法组合起来用,卡顿问题基本上就能缓解到可以接受的程度。至于完全消除卡顿,那可能就不太现实了,毕竟MT4的架构决定了它的性能上限就在那里摆着。

文章目录