MT4市场报价品种不全 - MT4平仓后持仓注释仍完整留存于历史记录_先搞清楚MT4默认环境到底指什么

先搞清楚MT4默认环境到底指什么
很多人在说恢复默认环境的时候,其实心里想的东西不太一样。有些人只是想把图表设置改回初始状态,有些人想让整个软件界面回到出厂模样,还有些人其实是想把之前添加的自定义指标和EA全部清掉。在动手之前,得先明确自己要恢复的范围,不然操作起来容易做过头或者漏掉什么。
MT4的默认环境主要涵盖这几个方面:图表颜色方案、K线样式、网格和坐标轴设置、工具栏和窗口布局、模板文件,还有导航器里的自定义指标和EA。默认情况下,MT4的图表背景是黑色或者白色取决于版本,K线是红绿配色,网格线和坐标轴都有固定样式。如果你发现自己的图表看起来和刚安装时不太一样,那就是这些设置被动过了。
另外一个容易忽略的地方是配置文件。MT4每次关闭时会把当前界面状态写入到config目录下的文件中,下次启动就接着用这个配置。所以单纯在界面里改设置有时候不彻底,得把配置文件也清理掉才能真正回到初始状态。这个点后面会专门细说。
还有一茬是唤醒之后的恢复过程
就算你电脑没设定自动休眠,有时候屏幕保护程序或者显卡驱动那边的省电设置也会让系统进入一个类似待机的状态,那种状态下MT4虽然还在运行,但网络连接经常会断,EA那边也是停着的,等你动一下鼠标键盘唤醒系统,MT4会重新连接服务器,这个时候你看到的价格会先跳一下,然后EA才开始接着跑,但问题在于,如果你用的是那种比较灵敏的EA,比如设置了止损挂在某个价位上,休眠前价格已经接近那个止损点了,唤醒后价格重新刷新,可能直接一步跳过了止损位,EA也许就直接给你平仓了,这种事儿我碰到过一次,就是从那边吓出来的经验,所以我后来每次挂EA之前都会把电脑电源计划改成高性能,把硬盘休眠、系统休眠、显示器关闭全部设为从不,这样至少保证物理层面上不会出岔子。
再有一个就是唤醒后EA会不会重复开单的问题,这个情况我是听论坛里一个老哥说的,说他的EA在休眠唤醒之后突然开了两笔不符合之前策略的单子,他就去查日志,发现唤醒之后MT4重新加载了历史数据,EA内部有些变量可能因为长时间没更新而丢失了,它就当成是新的一天开始,有些策略是用日期来判断开不开仓的,结果时间一乱它就误判了,这类问题除非你特别熟你自己的EA代码,不然很难排查,你以为它正常运行,其实它内部逻辑已经乱套了,这也是为啥我老说别轻易让MT4过夜,尤其是挂了EA的电脑,你既然决定让它自动化,就索性把系统层面那些省电的东西全部关死,别给它们可乘之机。
有些人可能会想,那我能不能每天收盘前把EA停掉,这样就算休眠也无所谓,其实这也是个办法,但就失去了EA自动盯盘的意义了,我自己是搞了个简单的说法,叫它“EA生理钟”,就是每天早上开盘前我手动启动一次EA,晚上收盘后手动停掉,中间不让电脑休眠,这样至少我能确认它在真正重要的时候是活着的,虽然比全自动麻烦一些,但总比一觉醒来发现账户仓位不对劲要强得多,反正这玩意儿说到底就是个信任问题,你信电脑系统它可能比你还懒,你信MT4它也不知道你休眠了多久。
还是讲讲最常见的Excel实践以及我这没跑完的话
反正最顺手的玩法肯定是搭一个Excel模板,你在一列里写好那几个品种的公式,剩下的事情就是搬个小板凳坐等MT4推送过来,这种直接把行情灌进表格的好处是你还能顺手在旁边写点复杂计算的公式比如均价啊波动幅度啥的,报表风格也很灵活,不过我试了特别多遍总感觉它的推送有点一鼓一抽的,有时候价格跳得飞快连续推进好几条,有时候又半天才动一下,那个里头的刷新间隔我调来调去也治不了根本,因为DDE本质上靠Windows消息驱动的机制,CPU一忙就跟挤牙膏似的数据传递频率会明显下降,不像现在那些WebSocket啥的走现代网络协议那么顺,但老平台上你能免费捣鼓出这条路已经算很幸运了,毕竟MT4官方不给开放行情接口好多年了。
你如果完全照着我说的那一套去弄,一般来说半小时之内就能在Excel里看到实时变动的报价,然后你就能把这份Excel当作一个数据中转站,再通过Excel的连接功能把它连到更高端的图文软件里,反正这个过程就像你把一个水龙头接到另一个水池里你再从水池往水壶里灌水,多重中转也不是不行,有些人还说MT4的DDE还能往外推那四个价格?不记得是不是包含了开盘价最高价最低价以及最新价反正我记得多多少少都是跟Tick数据挂钩的,你能逮着里面的任何一两个字段都用得上,关键是它能解决你“不写一行代码就能拿数据”这件事就已经很有性价比了。
说着说着我就想到以前还试过用一个小C#程序直接去抓那个Excel的单元格数据,但那等于绕了一个大圈还不够费劲的,你要是自己动手能力强直接跳过Excel用系统底层的DDE库函数来接MT4的推送倒是更高效点,反正各自能耐不一样的通用做法就是在Excel层面验证通了以后再谈别的方案,后来我发现直接对那个已经连接好的Excel文档用COM编程去取值比我再去搞独立的DDE链接省好多心,不过这些事情已经从我讲的“推送到Excel”跑偏到“重新打一口井”了,算了吧咱们拉回来说到MT4那个DDE设置里头还有一处叫做“启用实时投递”的选项,建议你一定得勾上不然行情卡在最后一条上边不动弹,更细的那些变量名字我因记忆不好记不清了但每一个都值得你在操作系统上点开看看再决定勾不勾,反正我是摸索了好多天之后才搞明白一套搭配办法,也不知道你按照记忆里我谈的这些到底串不串得上。
平台缓存异常与软件版本问题
如果以上情况都排除了,订单还是无法成交,那可能就是MT4软件本身出了点小毛病。模拟账户经常频繁切换服务器或者修改密码,会导致本地缓存文件损坏。最明显的表现就是登录后报价窗口一片空白,或者点买单却显示卖价。这时候把MT4完全关闭,去安装目录下删除config文件夹里的server文件,重新登录,一般能解决。
另外,老版本的MT4在Windows新系统上运行时,偶尔会出现模拟订单延迟几秒才反应的现象。这其实是因为软件在后台尝试连接多个服务器地址,网络慢的情况下就会卡住。你可以去官网下载最新版MT4,或者用经纪商提供的定制版客户端,旧版本虽然还能用,但兼容性确实差一些。
我还试过一个土办法,就是重置模拟账户的密码。
在MT4登录窗口点击“更改密码”,输入旧密码后随便设一个新密码,重新登录后服务器会重新初始化账户状态。这个方法帮我解决过一次订单一直显示“已接受”但实际没成交的问题,原理好像是重置了会话令牌。如果实在不行,就删掉这个模拟账户重新注册一个,反正模拟账户不要钱,注册也就一两分钟的事。