目录

MT4多开 - MT4智能交易系统时间过滤条件编写详解_TimeHour函数的基本用法与参数说明_7

MT4智能交易系统时间过滤条件编写详解_TimeHour函数的基本用法与参数说明_7
TITLE: MT4智能交易系统时间过滤条件编写详解

在MT4平台上编写智能交易系统时,时间过滤条件是一个经常被交易者忽略却又相当实用的功能。说实话,很多人刚开始写EA的时候,总想着怎么让交易信号更精准,却忽略了交易时间这个最基本的因素。就拿我自己的经历来说,以前写过一个趋势跟踪EA,回测数据漂亮得不行,结果实盘跑了一个月就亏得一塌糊涂。后来仔细分析才发现,问题出在交易时间上——这个EA在欧美盘开盘前和收盘后的表现完全不一样。其实,通过MQL4语言中的TimeHour函数,我们就能轻松控制EA只在特定时间段内执行交易,这种做法简单有效,能让你的EA运行更加稳定可靠。

TimeHour函数的基本用法与参数说明

TimeHour函数是MQL4中用来获取当前服务器时间小时数的内置函数,它的返回值范围是从0到23的整数。这个函数不需要传入任何参数,直接调用TimeHour()就能返回当前的小时数。比如在下午3点15分的时候调用这个函数,返回的结果就是15。这里有个小细节需要注意,TimeHour获取的是服务器时间,不是你的本地电脑时间。如果你的交易商服务器时间跟你的北京时间有差异,比如有些平台用的是GMT+2或者GMT+3,那你写条件的时候就要做相应调整。

实际编写代码的时候,TimeHour函数通常跟条件判断语句配合使用。最常见的写法就是if(TimeHour() >= 9 && TimeHour() < 17)这样的形式,表示只在上午9点到下午5点之间执行交易。这里用大于等于和小于的组合,是为了避免边界值重复判断。比如你想让EA在8点到20点之间工作,那就写成TimeHour() >= 8 && TimeHour() < 20。这种写法覆盖了从8点整到19点59分59秒的时间段,逻辑上非常清晰。我刚开始学的时候,经常搞混边界条件的写法,后来养成了习惯,每次写完都手动模拟一下边界值,确保逻辑正确。

除了单独使用,TimeHour还可以跟其他时间函数配合实现更精细的控制。比如你想让EA在每天下午3点半之后停止交易,光用TimeHour就不够了,因为半小时这个粒度需要用到TimeMinute函数。这时候可以把两个函数结合起来,写成if(TimeHour() < 15 || (TimeHour() == 15 && TimeMinute() < 30))。这种组合写法虽然看起来复杂一点,但能实现非常精确的时间控制。其实大多数情况下,只需要小时级别的过滤就够了,太精细的控制反而容易让EA变得过于复杂,不利于维护和调试。

在实际使用中,TimeHour函数返回的是整数类型,这意味着你不能直接用浮点数比较。有些新手会犯这样的错误,把TimeHour()跟9.5这种小数比较,结果永远都不会成立。另外,这个函数每次调用都会重新获取当前时间,所以在循环或者频繁触发的代码段里频繁调用不会有什么问题。
但是如果你需要在一个函数里多次用到同一个时间值,最好先把TimeHour()赋值给一个整型变量,这样代码更清晰,执行效率也稍微高一点。我个人习惯在OnTick函数的开头就声明一个int hour = TimeHour(),后面直接用这个变量。

常用周期参数的特点分析

20周期移动平均线是很多交易者的入门选择。在日线图上,它代表约一个月的交易周期,能较好反映中期趋势。但在小时图上,20周期只覆盖不到一天的交易数据,信号转换非常频繁。使用这个参数时,搭配其他指标过滤虚假信号会更好。我见过有人用20周期均线做突破交易,结果在震荡行情中连续止损。

50周期常被用作趋势判断的基准线。在日线级别,它相当于两个半月的价格均值,能清晰展示中期趋势方向。价格在50均线上方运行时,通常被视为多头市场。但要注意,当市场进入横盘整理时,50周期均线会走平并频繁被价格穿越,此时参考意义大打折扣。实战中,50周期更适合与200周期搭配使用,形成双均线系统。

200周期被称为长期趋势线,在日线图和周线图上特别有效。很多机构交易者把200均线作为牛熊分界线,价格在其上方视为长期看涨。这个参数最大的优点是滞后性带来的稳定性,能过滤掉大部分短期波动。但缺点也很明显,当价格真正突破200均线时,趋势往往已经运行了一段时间。在快速变动的市场中,这种滞后可能导致入场点不佳。

利用MT4内置工具快速查看盈亏比例

其实MT4有一个隐藏功能,叫做“账户历史”里的“自定义报告”。点击“工具”菜单,选择“历史数据中心”,然后选择“账户历史”,再点击“保存为详细报告”,就能生成一个HTML文件。这个报告里包含了所有已平仓订单的盈亏比例、收益率等数据。不过这个功能有点鸡肋,因为报告是静态的,不能实时更新。如果你需要实时监控盈亏比例,建议使用MT4的“预警”功能。在“终端”窗口的“预警”选项卡里,点击右键选择“创建”,然后设置条件,比如当浮动盈亏比例达到10%时发送通知。这样你就不用一直盯着屏幕了。

还有一个更简单的方法:在MT4的“交易”选项卡里,右键点击订单,选择“修改或删除订单”,然后在弹出的窗口里能看到“止损价”和“获利价”。你可以手动输入一个目标盈亏比例对应的价格。比如你想在盈亏比例达到15%时平仓,那就先算好这个比例对应的价格,然后设置获利价。这样MT4会自动帮你监控,达到目标就平仓。这个方法特别适合那些不想手动计算的人,MT4但前提是你得先算清楚目标价格。

说实话,MT4的界面虽然老旧,但它的计算能力其实很强。你只要把鼠标悬停在“盈利”栏的数字上,MT4就会弹出一个提示框,显示当前盈亏占保证金的百分比。这个百分比就是盈亏比例。很多人没注意到这个功能,因为提示框出现的时间很短,而且字体很小。你可以在MT4的设置里把“工具提示”的显示时间调长一些。这样你每次把鼠标放上去,就能看到比例,不用自己算。

如果你用的是MT4的Web版或者手机版,操作逻辑类似。手机版在订单详情页里也能看到“盈利百分比”这个字段。不过不同版本之间可能会有细微差异,比如安卓版和iOS版的显示位置不同。我建议你花点时间熟悉自己用的版本,找到这个比例显示的地方。一旦你习惯了直接看比例,你会发现交易决策变得更理性,因为比例比绝对金额更能反映风险。

定期复盘修正交易行为

所有记录和分析最终都要服务于行为修正。建议每周固定一个时间,比如周日晚上,打开MT4的账户历史报告,结合你保存的模板和日志文件,做一次全面复盘。重点看三件事:第一,亏损交易中有多少是因为违反了自己的规则;第二,盈利交易中有多少是靠运气而非分析;第三,交易频率是否过高。

复盘时可以用MT4的“图表叠加”功能,把历史K线图拖到当前窗口,模拟当时的交易环境。比如你发现某笔亏损是在非农数据公布前做单,而日志显示你没有设置任何保护措施。那么下次遇到数据行情,你就知道要避开或者缩小仓位。这种基于具体案例的反思,比泛泛而谈的“要控制风险”有效得多。

另一个实用技巧是创建“错误列表”。在MT4的图表上新建一个对象,比如水平线或箭头标记,标注出你犯错的点。比如箭头标记的位置是你追涨的地方,水平线是你该止损却没止损的位置。这些视觉标记会不断提醒你,避免重复踩坑。我自己的图表上现在有几十个箭头,每次看到它们,都会想起当时的痛苦教训。

最后,不要忽视情绪记录。在日志或模板里写下一句话,描述你当时的心情。比如“看到快速拉升,害怕错过机会,冲动入场”或者“连续亏损后,想靠重仓翻本”。这些情绪数据比技术分析更能揭示你的交易弱点。当你积累了足够多的情绪记录,你会发现自己的交易行为其实有固定的心理模式,修正起来也就更有针对性。

文章目录