目录

MT4警报推送到手机 - MT4周线高低点触达提醒设置与EA代码编写_利用自定义指标辅助月度统计

MT4周线高低点触达提醒设置与EA代码编写_利用自定义指标辅助月度统计
在交易中,周线级别的高低点往往扮演着关键支撑与阻力的角色。
很多交易者都希望在价格触及这些重要位置时第一时间获得通知,以便做出交易决策。MetaTrader 4平台虽然内置了部分警报功能,但想要精准捕捉周线高低点的触达事件,通常需要借助EA(智能交易系统)来实现。今天我就来详细说说如何在MT4里设置这样的提醒功能,以及EA代码里获取周线高低点的具体方法。

理解周线高低点的数据来源与周期转换

周线高低点听起来简单,但要在EA里准确获取,首先得搞清楚MT4的数据结构。MT4的图表周期分为分钟、小时、日、周、月等级别,每个周期都有自己的开盘价、收盘价、最高价和最低价。当我们说“周线高低点”时,指的是当周K线的最高价和最低价,这个数据在周线图表上直接可见。但在EA运行中,我们通常需要在更小周期(比如1小时或4小时)的图表上检测价格是否触达了周线级别的这些位置。

实现这个目标的核心思路是跨周期引用数据。EA可以运行在任意周期的图表上,但通过iHigh和iLow函数,我们能指定从周线周期获取数据。
比如使用iHigh(Symbol(), PERIOD_W1, 0)就能获取当前周的最高价,iLow(Symbol(), PERIOD_W1, 0)则获取当前周的最低价。这里的PERIOD_W1就是周线周期的枚举值,0代表当前正在形成的周线,1代表上一根完整的周线。这个细节很重要,因为当前周线还在变动,如果你想检测价格突破上一周的高低点,就需要用1作为偏移参数。

实际应用中,我建议将周线高低点的获取放在EA的OnTick函数里,每次新报价到来时更新这些值。但要注意,周线数据在每个交易周开始时才会更新,频繁调用不会产生额外负担。不过有一个坑需要避开:当周线刚切换时,高低点数据会瞬间重置,如果你的EA逻辑没处理好,可能会在这个瞬间产生误报。解决办法是加入一个状态变量,记录上一根周线的收盘时间,只在周线完整切换时才更新参考值。

第二步:找到MT4的数据文件夹位置

MT4的交易工具并不是直接丢进软件安装目录就能用的,它们必须放在特定的数据文件夹里。这个文件夹的位置其实很好找,打开MT4平台后,点击左上角的“文件”菜单,然后选择“打开数据文件夹”,系统就会自动弹出一个窗口。这个文件夹里有很多子目录,比如“MQL4”、“templates”、“profiles”等等,其中“MQL4”文件夹就是我们存放交易工具的地方。说实话,我第一次找这个文件夹时还翻了半天,后来才发现原来就在MT4的菜单里,根本不用去硬盘里东翻西找。

进入“MQL4”文件夹后,你会看到几个子文件夹,包括“Indicators”、“Experts”、“Scripts”和“Include”等。不同的交易工具要放在对应的文件夹里:指标文件放在“Indicators”里,智能交易系统(EA)放在“Experts”里,脚本文件放在“Scripts”里。如果你有配套的配置文件,比如.set文件,那就放在“Presets”文件夹里。我之前就犯过一个错,把EA文件放到了“Indicators”文件夹里,结果MT4根本识别不了,后来才意识到放错了地方。

这里有个小技巧,如果你一次性要导入多个工具,可以直接把整个文件夹复制进去,但要注意不要覆盖掉已有的文件。我一般会先把原来的文件夹备份一下,再导入新的,这样万一出问题还能恢复。另外,如果你是从别人那里拿到的工具文件,最好先扫描一下有没有病毒,毕竟交易账户的安全是第一位的。我认识的一个朋友就是因为下载了来路不明的工具,结果账号被盗,损失惨重。所以,安全这块真的不能马虎。

利用自定义指标辅助月度统计

如果你觉得每次手动筛选日期、生成报告太麻烦,尤其是想对比多个月份的胜率变化时,可以考虑使用MT4的自定义脚本或智能交易系统来辅助统计。MQL4社区里有很多免费的脚本,MT4官网可以直接读取账户历史数据并按月汇总胜率、盈亏比、最大回撤等关键指标。

我自己就写过一个简单的脚本,运行后会自动遍历所有平仓订单,按月份分组统计胜率,然后以表格形式输出到图表上。说实话,写这个脚本并不难,核心就是利用OrderSelect函数和OrderProfit函数读取每笔订单的盈亏状态,再用OrderCloseTime函数获取平仓时间来判断所属月份。

不过对于大多数不熟悉编程的交易者来说,直接使用MT4自带的功能其实完全够用了。唯一要注意的是,每次生成报告前一定要确认当前筛选的时间段是正确的,不然统计出来的胜率就不准确。另外,如果某个月份交易次数太少,比如只有三五笔交易,那么胜率这个数据的参考价值就非常有限了。

还有一种更偷懒的办法,就是利用MT4的“自定义周期”功能。在“账户历史”标签里,你可以选择按周、按月、按年等不同周期来显示订单汇总。虽然这个功能不会直接显示胜率,但你可以快速看到每个月的总交易笔数和盈亏总额,再结合订单列表手动算一下胜率,其实也花不了多少时间。

终极方案:用脚本和EA创建自定义周期切换器

如果你就是想要一个能自己排序的周期切换面板,那就得走MQL4编程这条路了。你可以写一个简单的脚本,在图表上显示一个浮动按钮或面板,点击后切换到指定周期。比如创建一个名为“MyPeriodSwitcher”的脚本,里面用ChartSetSymbolPeriod函数,把当前图表切换到任意周期,顺序完全由你自己定。

具体实现起来也不难:在MetaEditor里新建一个脚本,拖入一个按钮控件,然后给按钮绑定点击事件。在事件处理函数里,用“ChartSetSymbolPeriod(0, PERIOD_H1)”这样的代码,就能让图表切换到H1周期。你可以添加多个按钮,分别对应M1、M5、M15等,然后按自己的喜好排列它们的位置。甚至可以用下拉菜单代替按钮,把常用周期放在最上面。

这个方案的好处是完全自由,你甚至可以把不用的周期隐藏掉,只显示你需要的几个。坏处是需要一点编程基础,不过网上有很多现成的代码模板,直接复制粘贴改改就能用。如果你不想自己写,也可以去MQL5社区搜索“周期切换面板”之类的关键词,很多热心的开发者已经分享了现成的工具。

说实话,用脚本做出来的面板虽然能解决问题,但毕竟不是原生功能,偶尔可能会跟平台更新冲突。不过考虑到MT4已经很久没有大版本更新了,这些脚本基本上都能稳定运行。我自己的交易电脑上就挂着一个自制面板,把H1、H4、D1放在最左边,M5和M15放在右边,用起来比原生工具栏顺手多了。

文章目录