MT4移动止损 - MT4便携版在PE系统下运行可行性实测分析_利用MT4自带警报功能实现基础提醒

PE系统与MT4便携版的环境匹配度
PE系统全称Windows预安装环境,微软设计它的初衷是给系统修复、数据恢复、磁盘分区这些底层操作用的。它砍掉了大量常规系统组件,比如完整的图形驱动、DirectX、.NET框架、VC++运行库等,这些恰恰是很多应用软件依赖的基础。MT4虽然是轻量级交易软件,但它的主程序是基于32位Windows API开发的,对系统服务的调用并不少,便携版只是把安装过程简化了,底层依赖反而没变。
实测中发现,PE系统能否运行MT4便携版,关键取决于这个PE版本的精简程度。有些维护型PE只有两百多兆,连桌面壁纸都是纯色,这种环境下MT4启动时会直接报错,提示缺少dll文件或者无法创建窗口。而一些自带完整驱动和运行库的“全能PE”,比如某些装机版、游戏维护版,倒是有可能让MT4跑起来,但运行速度明显偏慢,图表切换时会有明显的卡顿感。
还有一个容易被忽略的细节,MT4便携版在启动时会尝试写入注册表和临时目录。PE系统默认用内存虚拟盘作为系统盘,重启后所有写入都会丢失。这就意味着,即便MT4能启动,你在软件里做的任何设置、添加的指标、登录的账户信息,在PE重启后全部归零。对于只想临时看一眼行情的人来说问题不大,但想长期使用肯定不现实。
利用MT4自带警报功能实现基础提醒
MT4的终端窗口里其实自带了一个警报系统,虽然它不能直接识别连续K线,但我们可以变通一下思路。比如你可以给某个价格水平设置警报,当价格突破或者跌破某个关键位置时,MT4就会弹出提醒。不过这跟连续K线的逻辑不太一样,只能算是一个间接的替代方案。
我试过一种比较笨但有效的方法,就是在图表上大致估算一下连续N根K线可能到达的价格区间,然后设置一个价格警报。
比如说你判断连续5根阳线大概率会把价格推到某个价位上方,就在那个价位设一个"价格大于"的警报条件。这种方法虽然不够精确,但操作起来最简单,完全不需要任何编程知识。
MT4的警报功能在终端窗口的"警报"选项卡里,点右键选择"创建"就能新建一个警报。你可以选择警报触发条件是价格高于或低于某个值,也可以设定在特定时间段内有效。警报触发后,MT4会播放提示音,还可以同时弹出一个提示窗口,甚至发送邮件通知。不过说实话,这种方法的局限性也比较明显,因为价格走势不会完全按照你的预期走,连续K线的长度和价格位置之间并没有固定的对应关系。
如果你只是偶尔需要盯一下连续K线的情况,用这种变通方法倒也够用。但如果你长期需要依赖这个功能来做交易决策,那还是建议往下看,试试真正意义上的连续K线提醒工具。
还有一茬关于老系统的事
你要是还抱着XP那种老掉牙的东西呢,从前景上讲呢它连安全证书都验证不过,这证书过期就等于保险过期了,人家服务器每次启动前得要验证一下你没有那证书就当你不认识路一样给你踢出门外你硬进都进不去,还有以前的那些配置差的机子内存才2G还是32位的系统,这个平台的资源管理器它越改越大还镶进了不少动画效果你根本带不动它自然就是跟睡着了一样,系统假死也算它的一种表现。
这里插一句,说到带不带得动我又想起个事(这是真的有一回我没开任何其他软件,就是装了Windows更新好像自己后台下载着什么正忙,什么软件都点不了,就连任务栏都卡半天才弹出来,不是它死机是资源给别的东西霸占了你这样你去打MT4肯定也是没什么回应,或者等个十来分钟它也猛然蹦出来一个界面上来,这种体验真的没法说清也算是给你一个启发看看是不是后台有什么下载程序占着宽带呢硬盘转速高得很CPU百分百你注意到了吗)。
我看有些人还特别喜欢绿色免安装的那种版本,我是不太信任那个,拿过来它解压完就能用你以为省事了,有时候运行库还有一些外部组件它确实需要注册到系统里才有反应,你的免安装包里这步它没法替你完成,可能就是你自己跑到那边一个放桌面的临时文件夹里,它连应有的文件路径都找不着那可不是故障吗,但是我的一个表哥他们家那台老爷机倒是用免安装的没问题你说这人是不是分电脑分版本呐,真是全都得自己试出来的。
而且,它跟那些别的看盘软件也不太一样,很多做现货的做期货的软件装了就能用皮实得很,MT4这玩意它那个构造太老太老了本身很多环节就是脆弱得一碰就碎,跟咱们用的安卓手机一样升完级以后旧的那个APP就跟烂掉了一样闪退它反过来的道理差不多的新版系统对它来说没什么好事。
彻底解决重启丢失的完整操作流程
说了这么多,最后给大家一套可以直接照搬的操作流程。第一步,在MetaEditor中打开你的EA,在OnInit函数里添加读取文件的代码,用FileOpen打开指定路径的文件,用FileReadString读取每行内容,用StringSplit按等号拆分成键值对,然后赋值给对应的全局变量。第二步,在OnDeinit函数里添加写入代码,遍历所有需要保存的变量,用FileWrite写入“变量名=变量值”的格式。
第三步,也是最容易被忽略的一步,在OnTick函数里添加一个定时器机制,比如用全局变量LastSaveTime记录上次保存的时间,当前时间减去LastSaveTime超过10秒就执行一次保存。这样可以防止程序异常退出时丢失最后几分钟的数据。第四步,测试一下,重启MT4后,在EA的日志窗口里打印出读取到的变量值,确认和之前保存的一致。
按照这个流程操作,基本上再也不用担心全局变量丢失了。当然,如果你用的是别人写的EA,不方便改代码,那可以用MT4自带的模板保存功能,先把所有指标和变量设置好,然后保存为模板文件,重启后重新加载模板。但这个方法只对指标参数有效,对EA内部的全局变量是无效的。所以最根本的解决办法还是自己动手写持久化函数。