MT4多开 - MT4交易历史文件导出三步走_实战案例编写完整时间过滤EA模板

第一步:在MT4平台找到交易历史选项卡
打开MT4软件后,你会看到主界面下方有几个选项卡,比如“交易”、“账户历史”、“EA交易”等等。要导出历史文件,首先得点击“账户历史”这个选项卡。这个位置很关键,因为很多人习惯性盯着图表看,反而忽略了底部这个功能区。点击之后,你会发现原本空白的区域开始显示出你账户的所有历史交易记录,包括开仓时间、平仓时间、交易品种、手数、盈亏金额这些核心数据。
说实话,默认情况下这里显示的交易记录可能不全,只展示了最近一段时间的。如果你需要导出更早的数据,比如上个月甚至去年的记录,就得在“账户历史”区域右键点击,然后选择“全部历史”。这一步很多人会漏掉,结果导出的文件里只有零星几笔交易,回头还得重新操作。右键菜单里还有个“自定义时间段”的选项,你可以手动设定起止日期,特别适合只想导出特定周期数据的情况。
另外,有一点要注意:如果你同时操作多个交易账户,每个账户的历史记录是独立存储的。在MT4左下角切换账户后,“账户历史”里的内容会自动更新成当前账户的数据。所以导出之前,最好确认一下你当前登录的账户是不是目标账户,否则导出别人的交易记录就闹笑话了。
固定图表比例是第一步
想准确测量趋势角度,第一个硬性要求就是让图表的价格轴和时间轴保持固定的比例。MT4里没有一键锁定比例的按钮,但你可以通过手动调整来实现。具体怎么做呢?首先,你得确定一个标准的时间周期,比如1小时图或者4小时图。然后,把图表窗口拖到你习惯的大小,记住这个窗口尺寸。接着,用鼠标滚轮或者缩放工具,把价格轴调整到你觉得合适的范围。关键是,以后每次测量角度,都要用同样的窗口尺寸和同样缩放比例。
我自己的习惯是,把价格轴设置成每100点对应一个固定高度。比如在欧元兑美元的1小时图上,我让100点的价格波动在屏幕上占大约2厘米的高度。时间轴这边,我让24根K线在屏幕上占大约5厘米的宽度。这样一来,价格和时间就建立了一个相对稳定的视觉比例。虽然这个比例不是数学上的绝对标准,但至少它是一致的。你每次用这个设置去量角度,结果就不会因为窗口大小变化而乱跳。
说实话,这个方法有点笨,但很管用。很多MT4的老手会告诉你,他们根本不用角度测量工具,而是直接用趋势线的斜率或者价格波动的速度来判断。
但如果你偏要用角度这个数值,那固定比例就是绕不开的坎。你还可以把调整好的图表保存成模板,下次直接加载,省得每次重新调。模板保存功能在MT4的图表右键菜单里,选“模板”然后“保存模板”,起个名字就行。这样你每次打开图表,角度测量结果都会保持一致。
分享后对方如何正确安装使用
打包好的文件发出去后,对方拿到压缩包,第一步肯定是解压。但解压出来的文件不能直接双击运行,因为MT4的指标文件不是可执行程序。正确的安装方法是:让对方把解压出来的所有文件,包括Indicators文件夹里的指标文件、Profiles文件夹里的配置文件、templates文件夹里的模板文件,全部复制粘贴到自己MT4对应的文件夹里。说白了,就是把你的文件覆盖到他电脑上的对应位置。
复制完成后,对方需要重启MT4软件。这一步很多人会忽略,结果发现指标列表里啥都没有,就以为是文件坏了。其实MT4只有在启动时才会扫描一次指标文件夹,所以不重启的话,新添加的指标是不会出现在列表里的。重启后,对方就可以在图表上右键选择“技术指标列表”,然后找到你分享的指标,直接拖到图表上使用。
如果对方复制完所有文件后,指标还是显示不出来,那大概率是缺少了动态链接库文件。这时候你可以让他看看MT4的“Libraries”文件夹里有没有对应的.dll文件。如果没有,你就得重新打包一次,把那些库文件也加进去。说实话,这种情况最让人头疼,因为有些指标依赖的库文件特别多,而且文件名还不直观。我自己的经验是,每次分享前都会用Everything工具搜索一下电脑上所有.MT4下载dll文件,把和指标相关的全部打包进去,宁可多打包也不要漏掉。
还有个更省事的办法:直接把整个MT4的“MQL4”文件夹打包给对方。这个文件夹里包含了所有的指标、脚本、专家顾问和库文件,对方拿到后直接覆盖到自己MT4的对应位置,就能完美复制你的所有技术指标。虽然文件会大一些,但胜在省心省力,特别适合那些对电脑操作不太熟悉的朋友。
实战案例编写完整时间过滤EA模板
光说不练假把式,这里给出一段完整的代码示例,展示如何将时间过滤条件整合到EA中。假设我们要编写一个只在亚洲盘交易时段运行的简单均线交叉EA,交易时间是北京时间上午8点到下午2点。首先在EA的OnTick函数开头加上时间判断:int hour = TimeHour(TimeCurrent()); if(hour < 8 || hour >= 14) return; 这一行代码就实现了时间过滤,如果当前小时不在8到14之间,直接退出不执行后续逻辑。
如果需要更复杂的过滤,比如结合星期几和具体的小时范围,可以封装一个函数。函数内部先判断星期几,如果是周六或周日直接返回false。然后判断小时是否在目标范围内,返回对应的布尔值。在主循环中调用这个函数时,如果返回false就执行return语句跳过本次tick。这种写法让EA的逻辑非常清晰,时间控制部分和交易信号部分完全分离,后期修改时间参数时不会影响到信号逻辑。
实际使用中我发现一个常见问题:很多人把时间过滤条件放在EA的初始化部分,结果导致EA启动后时间条件不更新。正确的做法是把时间判断放在OnTick函数里,因为每个tick到来时都会重新检查当前时间。另外,如果你使用OrderSend函数开仓,建议在开仓前再检查一次时间条件,防止因为tick延迟导致在时间边界附近开仓。这种双重检查虽然增加了一点代码量,但能有效避免在非交易时段意外开仓的情况发生。