目录

MT4多开 - MQL4中OrderOpenTime函数获取开仓时间详解_删除配置文件实现全局恢复

MQL4中OrderOpenTime函数获取开仓时间详解_删除配置文件实现全局恢复
TITLE: MQL4中OrderOpenTime函数获取开仓时间详解

在MetaTrader 4平台上进行自动化交易开发时,获取订单的开仓时间是一个基础但极为关键的操作。很多刚接触MQL4编程的交易者,往往会在订单属性读取上遇到困惑,尤其是时间数据的处理。说实话,我刚开始学的时候也绕了不少弯路,后来才发现OrderOpenTime这个函数其实很简单,但它的返回值类型和用法确实需要仔细理解。今天我就把这个函数从原理到实战掰开揉碎了讲清楚,保证你看完就能直接用到自己的EA里。

OrderOpenTime函数的基本原理与返回值

OrderOpenTime是MQL4中专门用来读取已选定订单开仓时间的函数,它没有任何参数,调用方式就是直接写OrderOpenTime()。这个函数返回的是一个datetime类型的数据,在MT4里,datetime实际上就是一个整数,代表从1970年1月1日0时开始到订单开仓时刻所经过的秒数。说白了,这就是Unix时间戳的格式,但MT4做了特殊处理,把它转换成了我们看得懂的日期时间。

这里有个容易踩的坑:OrderOpenTime必须配合订单选择函数一起使用。如果你直接调用OrderOpenTime()而没有先通过OrderSelect()选定一个订单,那它返回的就是一个无效值或者上一次选中的订单数据。我见过不少新手在循环遍历持仓单时忘了先选订单,结果读出来的时间全是乱的。正确的做法是先用OrderSelect()指定你要读取的订单索引,然后再调用OrderOpenTime()获取时间。

另外一个值得注意的点是,OrderOpenTime返回的时间是基于MT4服务器时间的,不是你的本地电脑时间。如果你的服务器设在英国,那开仓时间就是伦敦时间,如果你在中国,就会差8个小时。这个在回测和实盘对比时特别重要,我建议你在EA里加上时间偏移处理,或者直接用服务器时间做逻辑判断,避免因为时区问题导致策略执行出错。

删除配置文件实现全局恢复

当整个MT4平台都变得混乱不堪,比如所有图表都出了问题,或者软件启动后界面布局完全乱套,这时候就需要更彻底的方法了。MT4的所有设置都保存在一个名为“config”的文件夹里,删除这个文件夹就能让平台恢复到刚安装时的状态。具体操作是:先关闭MT4软件,然后在电脑上找到MT4的安装目录,通常是在“C盘/Program Files/MetaTrader 4”或者你自定义的安装路径下。

进入安装目录后,找到“config”文件夹,直接把它删除或者重命名都可以。我建议重命名,比如改成“config_old”,这样如果恢复后出现问题还能找回来。重新启动MT4后,软件会自动生成一个新的config文件夹,所有设置都会变成出厂默认值。这个过程会把你的账户登录信息、服务器设置、图表模板、自定义指标参数全部清空,相当于给了你一个全新的MT4。第一次启动时你需要重新输入交易账户的登录名和密码,连接服务器。

说实话,这个方法虽然彻底,但也有点粗暴。如果你保存了很多重要的自定义指标和EA程序,它们可能会因为配置文件丢失而失效。特别是那些需要特定参数设置的策略,恢复后参数会变成默认值,你得重新调整。所以在操作之前,最好先备份一下“config”文件夹,或者至少把那些重要的EA和指标参数截图保存下来。我一般是在换电脑或者系统重装的时候才用这个方法,日常使用中很少碰它。

还有一个需要注意的地方是,删除config文件夹不会影响你的历史交易数据。MT4的交易记录保存在“history”文件夹里,和配置文件是分开的。所以你不用担心恢复设置后看不到之前的交易日志和账户报告。不过,如果你设置了自定义的报价窗口或者市场报价列表,这些也会被重置,需要重新添加你关注的品种。对于交易品种较多的用户来说,这可能是个小麻烦,但总比重装整个软件要省事得多。

MT4执行模型中的独立处理特性

MT4平台采用的执行模型是“即时执行”或“市价执行”,这两种模型都强调了订单的独立性。在即时执行模式下,当你点击平仓按钮时,平台会立即锁定当前报价,并尝试以这个价格成交。如果报价在瞬间发生变化,平台会重新报价,要求你确认是否接受新价格。MT4官网在这个过程中,每个订单的平仓请求都是单独处理的,平台不会将多个订单合并成一个指令,更不会根据订单的开仓顺序来分配价格。

市价执行模式则更加直接,它不会给你重新报价的机会,而是直接以市场上的最优价格成交。这种模式下,订单的独立性更加明显,因为每个订单的成交价格完全取决于它被提交到市场那一刻的流动性状况。想象一下,如果你同时平仓三个订单,每个订单都会独立地寻找最佳价格,它们可能在同一毫秒内成交,但价格却因为市场微小的波动而不同。这种差异是随机且不可预测的,和订单的编号、开仓时间、平仓顺序都没有关系。

为了验证这一点,我建议你可以自己在MT4的模拟账户上做个测试。开两个同品种的订单,一个在较低价位,一个在较高价位,然后在市场波动时快速平仓。
你会发现,无论你以什么顺序平仓,成交价格都只取决于当时的市场报价,而不是订单的先后次序。说实话,这种测试做一次就明白了,很多交易者之所以困惑,是因为他们被一些论坛上的谣言误导了。

控制EA交易和脚本的通知频率

如果你在MT4上运行了EA(智能交易系统)或者自定义脚本,这些程序可能会生成大量的通知。比如,有些EA会在每次开仓、平仓或者修改订单时发送通知,频率高得吓人。我刚开始用EA的时候,就遇到过这种情况,一个EA在一天内发了几百条通知,手机几乎一直在震动。后来我发现,这些通知其实可以在EA的设置里控制。

在MT4手机版里,找到你正在运行的EA或者脚本,通常是在“交易”页面或者“EA交易”列表里。点击进入EA的设置界面,你会看到“通知设置”或者“消息设置”的选项。不同EA的设置界面不一样,但大多数都会有一个开关来控制是否发送通知。如果你不想被EA的每个操作都打扰,就把这个开关关掉。有些EA还提供了更精细的控制,比如只发送错误通知,或者只发送重要事件通知。

如果你用的是自己编写的EA,那控制起来就更灵活了。在MQL4代码里,你可以使用“SendNotification”函数来控制是否发送通知,甚至可以在代码里加入条件判断,比如只在订MT4模拟盘行情与实盘一致吗报价源相同延迟略高_脚本与EA实现高级位置控制单亏损超过一定金额时才发送通知。不过对于大多数普通用户来说,直接用EA设置里的开关就够了。我建议在运行新EA之前,先看看它的通知设置,避免一上来就被通知轰炸。

最后,还有一个容易被忽略的点:MT4手机版的通知设置里,有一个“允许通知”的总开关。如果你把这个总开关关掉,那么所有类型的通知都会被屏蔽,包括EA生成的通知。这个总开关的位置就在“设置”->“通知”页面的最顶部。如果你实在搞不清楚哪些通知该关哪些不该关,最简单的方法就是直接关掉总开关,然后只在你需要的时候主动打开MT4查看信息。说实话,这个方法虽然粗暴,但确实有效,而且能让你彻底从通知的干扰中解脱出来。

文章目录