目录

MT4正版下载 - MT4脚本每日自动截图保存图表实现方法_价格卡死不跳还有网络那档子事

MT4脚本每日自动截图保存图表实现方法_价格卡死不跳还有网络那档子事
做交易的人应该都有过这种经历,复盘的时候想看看前几天某个时间点的图表走势,结果发现当时没截图,只能靠记忆去回忆,但记忆这东西在交易里最靠不住。我自己就吃过这个亏,有一回做黄金单子,当时盘面那个形态特别典型,可惜没存下来,后面想复盘分析的时候怎么都想不起具体细节了。后来我就琢磨,MetaTrader4能不能搞个自动截图的功能,每天定时把图表存下来,省得自己手动去截。研究了一阵子,还真让我给弄出来了,这里头的方法其实不复杂,但要注意的细节挺多的。

MT4脚本实现自动截图的基本原理

MT4平台本身没有直接提供定时截图的功能,但它的MQL4语言给了我们足够的灵活性来实现这个需求。核心思路是利用图表事件处理函数,在特定时间点触发截图操作,然后调用ChartSaveAsPicture函数把当前图表保存为图片文件。这个函数是MetaTrader4内置的,专门用来把图表保存成BMP、GIF或者PNG格式的图片。

我在实际写脚本的过程中发现,ChartSaveAsPicture这个函数有个特点,它保存的是当前图表窗口的完整画面,包括所有指标、对象、价格坐标轴这些元素。所以如果你想让截图里包含特定的指标或者画线,必须在截图前把那些东西都加到图表上。另外一个需要注意的点是,这个函数保存的图片尺寸跟图表窗口的实际大小是保持一致的,窗口多大图片就多大。

定时触发这块,我用了两种方式来实现,一种是在脚本里写个循环,用Sleep函数控制间隔时间,到了设定好的时间点就执行一次截图;另一种是用MT4的定时器函数EventSetTimer,这个比较优雅一些,不需要一直占用脚本的运行状态。我自己实际测试下来,EventSetTimer这种方式更稳定,不会出现脚本卡死的情况。

脚本的运行方式也有讲究,因为MT4脚本一般只执行一次就结束了,所以要让脚本常驻运行,需要在循环或者定时器里加上对终端状态的判断,比如用TerminalInfoInteger函数检查终端是否还在运行,如果终端关闭了脚本也就自动终止了。

价格卡死不跳还有网络那档子事

最让人上火的当然是价格卡住不动的情况了,你看那个报价窗口里,EURUSD一直停留在一个数上,过好久它都不吭一声,明明外面行情都变天了,它还跟睡死了一样,这肯定是网络断了,但断它不提示你,就默默卡着,我一开始不知道啊,以为是服务器维护之类的事,就一直等啊等,等了快十分钟才想起去右下角看连接状态,果然状态那边就显示个啥无连接,我又试着重连了一下,嗯,它又活了,但那个延迟也是离谱,价格跳了一大段才追上来,感觉就好像你都在吃面了,炒菜的香味才飘到你鼻子里一样,这只能说咱们的网线条件就这样,尤其像我这种又开着视频又挂着下载的人,确实有点难为它了。

关于这个我见过有俩朋友处理的办法也五花八门,我说出来你们听听:(1)删掉MT4的安装文件夹里那个config什么后缀的文件,我记得是带个啥key的,删了以后设置会全跑光,得重新登录,但是有的人说能好……我一直不敢干这个,怕我收藏的指标模板全没了,(2)拿右键点那个报价,选什么刷新,有的版本有这选项有的没有,(3)干脆把防火墙关了再开,反正我是试过没多大用,(4)还有更绝的直接重装系统,我看那哥们儿也是脑子一热,重装完系统还得装一堆乱七八糟的驱动,(5)也有换虚拟专用网络的说连上了就顺畅很多,但我怕那个泄密啥的,(6)还有个最懒的就是啥也不干,等它自己抽完风,我是经常这么干的,反正你越点它那个图表它越卡,还不如去泡杯茶。我说的这些不一定都对,但都是我亲眼见过别人那么折腾的,反正办法也就是这么些,没有个统一的灵丹妙药。

说说那个小圈圈一直转一直转的情况吧,页面左下角老是显示个红色的叉或者黄色的感叹号,然后你啥操作都做不了,真是气人,我后来装了个啥网络监测软件,才发现是MT4用的那个端口被我的什么软件抢占了……大概是那我下载用的迅雷喜欢乱占通道,导致MT4的连接特别不稳定,我就把那下载软件关掉,再刷新了一下,情况好转了好多,但也不是一劳永逸的,碰上传完种子以后又开始了,我只能说多盯一眼状态栏吧,别看着图表上半天不动还傻傻等着它跳。

要是碰上价格卡住了,我强烈推荐一个傻办法,就是按一下图表上的那个时间周期按钮,比如从M15切到M30再切回M15,这一瞬间它会强制重新拉一遍数据流,很多时候就这么一抽它就正常了,哪怕卡着不动也能摇醒它,相当于你拿手指头戳它脊梁骨。我这个方法在朋友群里说过好几遍了,大家都说管用,虽然不怎么体面,可真的能救急。

如何正确处理和避免n/a情况

既然知道了“n/a”的根源,解决起来就有了明确的方向。最直接的办法就是把建模模式切换为“每个报价”,这是MT4提供的最高精度的回测方式。它模拟了每个tick的价格变动,能够更真实地反映市场微观结构,生成的建模质量也会是一个具体的百分比数字,通常在90%以上才算比较可靠。

当然,“每个报价”模式也有它的缺点,那就是回测速度非常慢。尤其是当你测试一个长达数年的策略,或者使用复杂的EA时,等待时间可能会让人抓狂。为了平衡精度和效率,我建议在策略开发的初期阶段,可以使用“控制点”模式进行快速筛选,这个模式会保留每个时间周期的高低价和开收盘价,精度比“开盘价”好很多,建模质量也不会显示“n/a”。等筛选出有潜力的策略后,再用“每个报价”模式进行最终的验证。

另外还要注意一点,即使你选择了“每个报价”模式,如果历史数据本身不完整,比如某个时间段的数据缺失,或者数据源本身质量较差,建模质量也可能无法计算。所以定期用MT4自带的“历史数据中心”工具检查和修复数据,也是一个不可忽视的步骤。我习惯每个季度重新下载一次所有交易品种的M1数据,确保回测时用的都是完整可靠的数据。

批量管理和永久保存文本标注

随着交易次数增加,图表上的标注会越来越多。在MT4里,所有添加的文本标注都会出现在“对象列表”中,按Ctrl+B就能打开。这个列表支持多选、删除、修改属性,还可以按对象类型筛选。当标注数量超过几十个时,用列表管理比在图表上一个一个找高效得多。

保存方面,文本标注是作为图表对象的一部分自动保存的。只要你保存了当前图表模板,或者直接关闭MT4时选择保存图表,所有标注都会保留下来。换电脑或者重装系统时,只需要备份“config”文件夹里的模板文件,就能完整迁移所有标注。这比截图保存信息要可靠得多,因为截图是静态的,而MT4的标注是动态可交互的。

如果你有多个交易品种需要标注相同的信息,比如在每个品种的图表上都写上“止损位设在最近低点下方”,可以先把标注做好,然后右键选择“复制”,再切换到另一个品种的图表,右键“粘贴”即可。这个操作支持跨图表复制,但要注意不同品种的价格尺度可能不同,粘贴后可能需要微调一下锚点位置。

最后提醒一点,文本工具虽然好用,但别在图表上写太多废话。标注的目的是辅助决策,不是写日记。每一条标注都应该有明确的交易含义,要么是提醒,要么是分析结论,要么是操作计划。简洁有效的标注才能真正发挥它的价值,我自己就吃过亏,刚开始用的时候什么都想标,结果图表上密密麻麻全是字,反而干扰了看盘视线,后来删掉大部分才恢复正常。

文章目录