MT4历史数据不全 - 搞了一晚上MT4才把K线下载明白的土办法_先说为啥要费劲去下载这玩意儿

先说为啥要费劲去下载这玩意儿
其实MT4自带的那个数据你看着是挺全的,但你真要放大到M1级别或者去翻几年前某个货币对的走势,它就跟挤牙膏似的,一次性给你加载得老慢,而且中间你还得等着它一个一个补数据,那进度条走得比咱们楼上装修的还墨迹,我一开始以为是自己网不好,结果换了好几个网络环境也是一样的德性,后来才搞明白它这个机制就是边显示边下载,而且存储默认是在你本地的一个特殊文件夹里头,你要是中途关了软件重新打开,没准又得重新补,这个事就是得咱们手动去弄一把,把你想要的那一段时间段的数据给存下来。
我知道有人会说直接用那种现成的数据包不就完了嘛,省得自己瞎折腾,但是老实讲,网上那些下载下来的东西,终归是别人用某个版本的平台导出来的,跟你的交易商不同步不说,中间还经常出现空档期或者报价异常,比你自己动手下出来的歪歪扭扭的还要难受,(1)有的时间戳用的是服务器的,跟你的GMT偏移对不上,你拿去做复盘全是偏差,(2)有的中间有几分钟的断点,看着像跳空但其实不是跳空,你策略里把那根K当没涨没跌了,回测成绩直接虚高,(3)还有的更坑,数据本身没问题,但导入的时候编码乱了,直接黑屏(4)偶尔也有那种弄错币种对的,USDJPY给你倒成JPYUSD,你说吓人不吓人,所以自己动手下虽然慢笃笃的,但至少源头清楚,这一块我是真的劝你别省。
下载这个动作,本质上就是让MT4自己把那部分云端存档给抓到本地来,仅此而已,没有什么玄乎的技术含量,你就把它想象成那个整天坐办公室里不爱动弹的同事,你催一下它动一下,你不催它就挂机,所以你得知道催它的办法,而且还不是催一次就行,你得按它的脾气来,有些平台版本是老一点的,那个数据中心的位置都不一样找,我是换了三个版本才找到现在这个相对顺手的。
还有一个更省事的办法我琢磨过
其实这备份方式啊还真不止一种,有人习惯直接在文件管理器里头找那文件夹自己动手复制粘贴,做法糙是糙了点但也能用,但我个人觉得与其那样翻来翻去找文件夹还不如直接在MT4终端里用那个文件菜单下面的另存为模板功能来得干净利落,你点一下文件把当前图表需要的指标和周期都勾上然后存成一个 .set 文件放好后,到时候打开另一个平台就直接载入这个 .set 文件就全回来了,这个方式对只关心图表设置的朋友来说是最省心的,就是指标参数啦周期啦画线啦那些都在里面,但界面布局啦什么多好显示窗口的排列就不管了,各人取舍吧反正也是看你自己到底在意什么了。
另外要说的是我记得有个叫quartz还是什么的第三方工具是用来专门同步MT4配置的,但我记不太清了也不想误导大家,反正我是没用过也不打广告,就老老实实手动备份,还有人用的那种便携版的MT4就是整个文件夹拷在U盘里带着走的那也是一种路子,不过你要是在网吧或者公司电脑上不想留痕迹那还是老实用我的方法备份一阵子再卸载比较妥当,不然你人走了那电脑里啥配置全都留着呢后面别人一打开就看见你的东西了。
我这儿给列一下我平时会备份的几个地方,就那种想到哪说哪的罗列,你们随便看看就行:(1)config文件夹里所有 .set 文件,一般就是各种模版参数那个挺重要的;(2)MQL4里的Indicators又是最重要的一个,自定义指标全靠它,不备份这个的话你N多画线策略全白搭;(3)MQL4里面的Experts,如果你有挂那种智能交易系统的话这个不备份等于白干,还有那个include文件夹里也放了不少共用的include文件;(4)Profiles文件夹整个儿拷,管它三七二十一全部拿走再说,反正里面也有默认的、你自定义的各种布局,到时候不对了就直接拿回来覆盖;(5)还有那个History文件夹,我倒是很少去管它因为开户经纪商服务器上的历史K线数据可以重新下载,但你要是怕慢的话也可以顺带备份着,省得等下载加载那好几根盘;(6)另外什么templates文件夹底下也是一堆模板这些东西就跟着MQL4走就行了对不对,反正备份了就踏实了,没备份也就那样,看着办吧。
说完这些我更想强调的是你得知道每个文件夹里具体都是干嘛用的,不然备份完了也不知道缺哪个,等用了才发现不对劲又得重新弄一回,我当年第一次整就是因为只顾着拷了config里面的 .set 文件结果到了新电脑上指标全都打着问号就因为没有把MQL4底下的Indicators文件夹一起弄走,折腾了我好几天才发现原来是这个问题,你说亏不亏,白白搭上好几个晚上而且那几天看盘都烦得很,所以说备份的时候宁可多拿别少拿,体积又不大反正。
多区间渐变与平滑过渡的实现技巧
如果只是红绿两色,那还称不上真正的渐变。要实现像彩虹那样的多色渐变,就得把缓冲区拆得更多。比如把-100到100分成十个区间,每个区间对应一个颜色,那就要创建十条缓冲区。虽然代码量上去了,但逻辑完全一样,只是判断条件多了几个。
我自己在写这类指标的时候,习惯用一个数组来存颜色值,比如color clrTable[5] = {clrBlue, clrCyan, clrYellow, clrOrange, clrRed}。然后用一个函数根据数值大小返回对应的颜色索引,再根据索引判断该把值写入哪条缓冲区。这样代码看起来清爽,以后要改颜色配置也方便。
不过要注意,MT4的指标最多支持8条缓冲线,超过这个数字会报错。所以如果分区间超过8个,就得另想办法。常用的替代方案是用DRAW_COLOR_LINE类型,这种线类型允许为每个K线点单独指定颜色索引,配合SetIndexColor函数就能实现真正意义上的逐点渐变,完全没有缓冲区数量限制。
使用DRAW_COLOR_LINE时,需要额外创建一个颜色索引缓冲区,专门存放每个点的颜色编号。这个缓冲区不画线,只存颜色信息。然后在OnCalculate循环里,根据数值大小给颜色缓冲区赋值0到7之间的整数,对应SetIndexColor定义的颜色列表。这种方法效果最平滑,颜色过渡自然,就是写起来稍微复杂点。
验证回测结果是否贴近实盘
设置完点差后,怎么判断自己的回测参数设置得对不对?最直接的方法就是对比同一段时间内,回测报告和实盘记录里的平均成交价格差异。如果你把点差设对了,回测里的入场出场价应该和实盘相差不大,顶多差一两个滑点。
另一个更实用的验证方法是,把回测周期缩短到最近一个月,然后用同样的参数跑一次。因为近期的市场环境和点差水平跟当前比较接近,如果回测结果和实盘表现对得上,说明你的设置是靠谱的。如果回测显示盈利而实盘亏损,那就要回头检查是不是点差填得太低了。
我见过不少交易者,回测时把点差填成0.1,觉得这样能测试出策略的极限性能。其实这种做法毫无意义,点差为零根本不现实,只会让回测结果虚高。回测的意义在于用尽可能真实的成本去检验策略,而不是追求好看的曲线。把点差设成实盘水平,哪怕回测结果没那么惊艳,至少心里有底。
还有一点值得注意,MT4测试器的点差设置不会自动保存到下一次回测。每次重新打开策略测试器,点差都会变回默认的10。所以如果你经常跑回测,养成开跑前检查一遍点差参数的习惯,别偷懒。这就像开车前系安全带,多花两秒钟,关键时候能救命。
回测本身就是个反复打磨的过程,点差设置只是其中一环。把这一环做扎实了,你的回测结果才真正有参考价值。下次跑策略的时候,记得先去把那个点差输入框改一改,别让十点的默认值继续坑你了。