MT4多开 - MT4快速查看关注品种的实用技巧_利用市场报价窗口建立专属关注列表

利用市场报价窗口建立专属关注列表
MT4的“市场报价”窗口其实是个很好用的工具,但很多人只是把它当作一个显示价格的地方,根本没发挥它的潜力。你可以在“市场报价”窗口里右键点击,选择“显示全部”或者“隐藏全部”,然后只把你想关注的品种拖到窗口里。比如我平时主要做欧美、镑美、黄金和原油,就把这四个拖进去,其他的统统隐藏。这样窗口就变得很清爽,一眼就能看到自己关心的品种。
说实话,这个方法比在“导航器”里翻来翻去找品种要快得多。而且你还可以在“市场报价”窗口里右键点击某个品种,选择“图表窗口”直接打开图表,省去从菜单栏里选品种的步骤。我通常会把“市场报价”窗口固定在MT4界面的左侧或者右侧,这样一边看图表一边扫一眼报价,心里就有数了。
还有个小技巧是给关注品种设置不同的颜色。在“市场报价”窗口里,右键点击品种,选择“属性”,然后可以设置涨跌的颜色显示。比如我把欧元相关的品种设成蓝色,黄金设成黄色,原油设成红色,这样一眼就能通过颜色判断品种类型,速度更快。说实话,这个细节很多人没注意到,但用起来真的顺手。
如果你关注的品种比较多,比如外汇、指数、商品混在一起,还可以在“市场报价”窗口里按类别分组。右键点击空白处,选择“显示所有符号”,然后通过拖拽调整顺序,把同类品种放一起。这样你就不用在几十个品种里瞎找了,直接看自己分组的那一块就行。这个方法特别适合那些做多品种交易策略的人,比如同时做外汇和贵金属的。
用MQL4时间函数实现交易时段控制的核心方法
MQL4提供了多个时间函数来帮助控制交易时段,其中最常用的是TimeCurrent()、TimeDayOfWeek()和TimeHour()。TimeCurrent()返回当前服务器时间,TimeDayOfWeek()返回星期几(1代表周一,7代表周日),TimeHour()返回当前小时数。结合这些函数,你可以轻松实现“只在周一至周五的特定时间段内开仓”的逻辑。比如我常用的一个条件判断是:如果当前是周六或周日,直接跳过所有开仓操作;如果是周一至周五,则进一步检查小时数是否在9点到22点之间。
这里有个细节值得注意:非交易时间段不仅包括周末,还包括交易时段的切换点。比如从纽约收盘到悉尼开市之间有几个小时的空白期,这段时间流动性极低,点差会异常扩大。我处理这类情况的方法是设定一个“安全窗口”,比如只允许在主要交易时段重叠的时间开仓。举个例子,伦敦盘和纽约盘重叠的时间是北京时间晚上8点到12点,这段时间流动性最好,我就把EA的开仓时间限定在这个窗口内。虽然会错过一些机会,但能有效避免低流动性带来的滑点风险。
代码实现时,我通常会写一个名为TradingHoursCheck()的函数,它返回布尔值。函数内部先获取当前星期几,如果是周六或周日直接返回false;然后获取当前小时,判断是否在预设的起始小时和结束小时之间。这里要注意小时数的边界处理,比如如果设置结束小时为22,那么22点整是否允许开仓?我一般会设定为“小于结束小时”,即22点整不开仓,避免在临界点出现重复判断。此外,还要考虑夏令时和冬令时的切换,虽然MQL4的TimeCurrent()会自动处理,但你的交易时段设置可能需要手动调整。
另一个实用的技巧是利用TimeDaylightSavings()函数检查是否处于夏令时,不过这个函数在MetaTrader 4中并不总是可靠。我更推荐的做法是直接写死一个时区偏移量,然后在EA参数中暴露给用户调整。比如在输入参数里加一个“ServerGMTOffset”变量,让用户根据经纪商实际情况填写。这样即使换了经纪商,只需要改参数而不需要修改代码。我自己的EA就采用这种设计,用户反馈说非常方便,尤其是那些做跨时区交易的投资者。
设置默认布局实现自动恢复
如果你不想每次打开MT4都手动加载布局,可以把它设为默认配置。具体操作是:先加载你想要的布局,然后点击“文件”菜单,选择“保存为默认配置文件”。
这样设置后,下次启动MT4时,软件就会自动应用这个布局,省去手动加载的步骤。
我自己的经验是,把常用的“多图表监控布局”设为默认,然后另外保存几个备用的布局文件,比如“单图表专注模式”和“四图表对比模式”。这样在交易不同品种时,可以快速切换布局。比如做短线时用四图表模式,看长线趋势时切到单图表模式,效率提升很明显。
要注意的是,设为默认布局后,如果你手动调整了窗口位置,关闭软件时这些调整不会被自动保存。换句话说,MT4每次启动都会严格按照默认布局文件来显示,你手动拖拽的临时调整不会影响下次启动。这其实是个优点,能保证每次打开软件时界面都是你熟悉的样子。
不过有个小坑:如果你在默认布局的基础上添加了新的图表窗口,关闭软件再打开后,新添加的窗口会消失,因为默认布局里没有记录它。所以如果你需要长期使用某个新窗口,最好重新保存一次默认布局。我一般每周会更新一次默认布局,确保它反映最新的交易需求。
完整EA代码示例与部署步骤
下面是一个完整的平仓邮件通知EA代码示例,你可以直接复制到MetaEditor中使用。这个EA的核心逻辑已经在上文提到,这里把代码整合起来,方便你直接编译使用。代码中包含了必要的错误处理和注释,新手也能看得懂。MT4官网需要特别说明的是,这个EA不会进行任何交易操作,它只是一个纯粹的监控工具。
int totalOrders = 0; void OnInit() { totalOrders = OrdersHistoryTotal(); } void OnTick() { if(OrdersHistoryTotal() != totalOrders) { for(int i = OrdersHistoryTotal() - 1; i >= 0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if(OrderType() <= OP_SELL && OrderCloseTime() > 0 && OrderMagicNumber() == 0) { string subject = "平仓通知: " + Symbol(); string body = "品种: " + OrderSymbol() + " 方向: " + (OrderType() == OP_BUY ? "买入" : "卖出") + " 手数: " + DoubleToStr(OrderLots(), 2) + " 盈亏: " + DoubleToStr(OrderProfit(), 2); SendMail(subject, body); } } } totalOrders = OrdersHistoryTotal(); } }。这段代码虽然短,但已经覆盖了核心功能,你只需要根据自己的需求微调邮件内容的格式即可。
部署这个EA非常简单,打开MetaEditor(按F4),新建一个EA文件,把上面的代码粘贴进去,然后编译一下。编译成功后,把生成的.ex4文件拖到MT4的某个图表上,EA就开始运行了。注意,为了让EA持续监控平仓事件,建议把EA放在一个24小时运行的图表上,比如EURUSD的1分钟周期,这样即使你不在电脑前,EA也能正常工作。
实际使用中,你可能会遇到一个问题:如果MT4在短时间内连续平仓多笔订单,邮件发送可能会有延迟。这是因为MT4的邮件队列处理速度有限,但一般不会丢失通知。如果你对实时性要求非常高,可以考虑使用Telegram通知替代邮件,但那需要额外的API调用,代码复杂度会高一些。对于绝大多数交易者来说,邮件通知已经完全足够用了。