新闻

MetaTrader 4 Build 574 更新MQL4语言和发布应用程序市场

在过去的六个月自从公共版build 509的发布,我们投入了大量的精力去改善MetaTrader 4网上交易系统中的所有组件。用于开发交易策略的MQL4编程语言,已经发生了最显著的变化。这些变化提供了新功能来开发自动交易,并提出推出MetaTrader 4市场的可能性 - MetaTrader 4程序端的安全应用程序商店。

新版MetaTrader 4程序端的公测进入最终阶段。我们已经更新了位于demo.metaquotes.net:443的我们公开的MetaQuotes-Demo服务器。我们邀请所有的交易者加入测试新版程序端,以便于尝试其所有的功能,并帮助开发者更正错误。

只需连接到我们的 demo.metaquotes.net:443 服务器以便更新MetaTrader 4客户端到build 574。

测试版的测试完成后,新的MetaTrader 4程序端的最终版本将被发布。您可以在下面更改列表中找出MQL4的新功能。

从旧版更新时自动复制MQL4应用程序

在MetaTrader 4客户端以前的版本(509及更早),所有MQL4应用程序都存储在<terminal_installation_folder> \\experts\\根目录的以下子目录中:

  • \experts - EA交易(自动交易),
  • \experts\indicators - 自定义指标,
  • \experts\scripts - 脚本(在图表上运行一次的MQL4应用程序),
  • \include - 实施到其他程序的源代码MQH和MQ4文件,
  • \libraries - MQ4源代码以及从中编译的EX4可执行文件的格式的程序库。它们被用于其他MQL4程序包含的函数的动态调用,
  • \files - 特殊的“文件沙箱”。MQL4应用程序允许只在这个目录执行文件操作。

在MQL4新版本,用于存储源代码的文件结构已经改变。现在,所有的MQL4应用程序应该都位于<data_folder> \\ MQL4 \\目录的适当文件夹:

  • \experts - EA交易(自动交易),
  • \Indicators - 自定义指标,
  • \Scripts - 脚本(在图表上运行一次的MQL4应用程序),
  • \include - 实施到其他程序的源代码MQH和MQ4文件,
  • \libraries - MQ4源代码以及从中编译的EX4可执行文件的格式的程序库。它们被用于其他MQL4程序包含的函数的动态调用,
  • \Images -资源中使用的图像文件,
  • \files - 特殊的“文件沙箱”。MQL4应用程序允许只在这个目录执行文件操作。

当MetaTrader 4程序端从build 509更新到较新版本时,来自之前版本标准根目录的所有MQ4,MQH和EX4文件都会自动复制并搬迁到相应的文件夹。由用户另外创建的子文件夹,以及其中包含的文件则不被处理。如有需要,他们应该手动搬迁到新的地方。

没有任何文件或文件夹在更新过程中会被删除!所有文件复制操作,包括使用的文件路径在升级过程中都会固定在程序端日志。

在更新过程中不会执行自动重新编译旧版EX4文件到新版本。用户可以自由地决定哪些源代码必须被编译成新的EX4版本。所有旧版EX4将工作在新的MetaTrader 4程序端。通过新编译器编译的EX4库只能从也已经在新版本编译的EX4程序调用。

在某些情况下,您可能需要为源文件中的包含文件在#property include编辑路径(如果相对路径发生了变化)。需要注意的是MetaEditor的根目录现在是<data_folder>\MQL4\。所有的程序应设在正确的子目录。

您可以通过程序端菜单或MetaEditor:文件 - 打开数据文件夹,为您计算机上的MetaTrader 4程序端的每个副本找到数据文件夹(<data_folder>)

 

MetaTrader 4 客户端

 

  1. 程序端:编程交易策略的MQL4语言已经大幅修订,其功能更加接近MQL5。添加了类和结构并且语言语法已经扩展到С+ +级别,允许开发者实现所有面向对象编程的优势。这意味着自动交易和技术指标现在可以更容易和更快地创建,而EA交易开发人员在一个单独的MetaEditor开发环境获得新的机会 - 调试,分析,代码完成等。在MQL5单独的MetaEditor 文章部分了解更多的新特性。

    提升了MQL4应用程序的运算速度;提供DLL和Visual Studio的内置支持,实现访问MQL5 存储 等等。
  2. 程序端:新增市场标签,用于购买和下载来自MetaTrader 4 市场的收费和免费的EA交易,信号和脚本。现在,任何MQL4开发人员都可以成为卖家和提供产品给数以百万计的使用MetaTrader4的交易者 。



    您可以下载一个试用版或从程序端上直接购买MetaTrader 4市场的全功能付费的MQL4应用程序。每次购买都是完全安全的,允许用户最多在5台不同的电脑上进行激活,对工作时间,帐户类型或经纪人没有限制。每个付费指标或EA交易在购买前都可以在可视化模式下在MetaTrader 4策略测试器上推出,以评估该产品。
  3. 程序端:改变了程序端的数据结构和存储位置 - 现在,每个已安装的程序端的数据被存储在一个独立的终端数据文件夹。
    自从2005年 MetaTrader 4平台的发布 ,选定的 程序端安装目录 也是所有必要工作数据(程序端日志,模板,配置文件,报价等)已被存储的地方。但随着2008年Windows Vista的发布,微软所有的操作系​​统都实施用户权限的严重局限性,以保护他们免受恶意程序骚扰和防止一个用户帐户下的应用程序改变或损坏另一个用户帐户的相同程序的必要数据。
    在Windows Vista中,引进了用户帐户控制(启动UAC) 机制。实施该机制的主要思想是,存储在安装目录的应用程序的不变数据应该在它的操作过程中从这个应用程序修改的用户数据分离开。因此,每个用户的所有数据应该被存储在单独的文件夹中。您可以在Windows帮助或维基百科文章找到有关UAC的详细信息。
    在新版中,某个用户的来自独立安装目录的MetaTrader 4程序端所有数据都存储在程序端数据文件夹。此文件夹可沿着以下路径在系统盘(安装Windows操作系统的磁盘)找到C:\Users\User_account_name\AppData\Roaming\MetaQuotes\Terminal\Instance_id
    其中:
    - С: - 系统盘的名称;
    - User_account_name - Windows工作的用户帐户;
    - Instance_id - 存储使用MetaTrader 4客户端某些副本的所有用户数据的文件夹的唯一名称。

    “打开数据文件夹”命令已被添加到程序端文件菜单用于搜索和打开数据文件夹。
    每个程序端的数据文件夹的根目录下还包含 origin.txt文件,在这里您可以找到这些数据所涉及的程序端安装文件夹的路径。这允许用户反向匹配每个程序端的数据文件夹和某个程序端的安装目录,例如,当由用户安装几个MetaTrader 4程序端的副本的情况。当数据文件夹从安装文件夹分离时,这种程序端工作类型被称为主模式 并且出于安全原因被强烈建议。
    该程序端还可以在所谓的便携模式 下启动(如以前的MetaTrader 4版本)。在该模式中,数据被存储并记录在安装文件夹。要做到这一点,使用 "/portable" key。为了更加方便,您可以在桌面上以相应的名称创建一个额外的程序端发布快捷方式,并直接添加关键字到快捷方式:


     
  4. 程序端:改变了发出交易请求的算法。在以前的版本中,当发出交易请求时已经创建了一个额外的网络连接。最后的交易请求被发送后,此连接保持活动状态一段时间,以提供快速发送大量的交易请求。

    现在,将发出交易请求时,所有请求都通过与交易服务器的主要连接进行传递。因此,处理该交易请求(尤其是第一个)的时间已大大减少,因为没有必要再等待连接交易服务器被确立为了使新的处理算法可操作,交易服务器也应该更新 - 请求仍然设置在旧交易服务器的单独连接中。

    由于过渡到请求处理的新模式,取消服务器尚未接受的交易请求的功能(交易请求状态对话框的取消按钮)已被禁用。
  5. 程序端:在MetaTrader 4客户端和MQL4.com加入了全局搜索。在程序端的搜索,您可以快速查找客户端, 代码库,以及MQL4.com和MQL5.com网站,所有部分的信息。
    已经使用关于俄语和英语形态的逐字搜索。搜索是通过用户在设置中指定的部分来进行:
    搜索结果选项卡的快捷菜单中包含根据结果类型的额外命令:
  6. 程序端:在工作 部分,新增了下MQL4应用程序开发的即时订单的命令。现在,每个交易者不仅可以从免费库中下载任何代码,还可以找到能够根据用户算法开发的一个必要指标或自动交易的程序员。订单执行过程在文章中描述如何订购EA交易和获取想要的结果并为双方提供保护 - 开发者和客户。
  7. 程序端:新增发送客户帐户发生交易的推送通知的能力:下单,更改和删除订单,激活挂单和SL-TP,追加预付款和强行平仓的事件推送通知发送到安装在iOS和Android操作设备的移动程序端,不取决于电话号码,并且如果网络连接可用,即可交付使用。在文章中了解详细信息 MetaTrader移动程序端中的MetaQuotes ID。
  8. 程序端:新增图表的警报显示。该警报可以通过拖放来管理。此外,设置警报过期时间的功能已经得到落实。
    当图表交易水平的管理被允许,警报的价格值可以通过其拖动到一个新的价格水平被改变。警报可以被禁用,或在适当的图表级上使用上下文菜单进行删除。
  9. 程序端:新增在模拟账户打开窗口通过公司的名字搜索服务器。
    只要输入公司名称(或服务器名称的片段),程序端将会自动添加公司的所有服务器(包含在其名称中指定行的服务器)到列表中:
  10. 程序端:在导航器窗口增加显示子文件夹和EA交易,脚本和指标的结构。
  11. 程序端:提高开立订单和持仓,交易历史记录和交易报告的列表中显示的交易订单和持仓的开盘与收盘时间的精确度 - 已添加秒数计数。
  12. 程序端:提高市场报价和弹出价格窗口显示的最后报价时间的精确度 - 最后报价时间显示到秒(而不是分钟)。
  13. 程序端:添加更改界面语言后自动重启程序端的请求。客户端应该重新启动,以便使更改生效。以前,用户必须自己关闭并启动程序端。现在,改变界面语言后,用户会立即被提示重新启动程序端 - 它可以单击关闭并重新启动。
  14. 程序端:修正了使用单独子窗口的指标存在于图表上的情况下交易水平的工具提示。当把鼠标光标悬在图表上的止损或获利水平上时,如果水平激活被显示那么将收到带有利润/亏损的工具提示(以点或货币)。以前,如果单独子窗口工作的指标(例如,标准MACD)显示在图表上,有时不会显示提示工具。
  15. 程序端:新增客户端内置用户指南文件的自动更新,其类似于MetaTrader 5中实施的一项更新。现在,帮助文件不包含在程序端的安装以及减少交易量的实时更新包中。用户第一次打开它就会下载用户指南。在所有后续情况下,系统会检查是否有新的版本出现。如果有新版本可用,用户会提示更新:

    使用帮助文件的新系统也会减少交易消耗,因为所下载的用户指南的语言版本只与客户端界面指定的语言相符(不会下载多余的语言版本)。不管客户端是否更新,该系统也提供了用户指南的定期更新。
  16. 程序端:新增MQL5.community的快速注册对话框,以防用户没有账户。现在,无需离开该程序端就可创建一个MQL5.community的帐户。
    在注册窗口中指定登录名和电子邮件地址。点击注册后,一封激活MQL5.community帐户的电子邮件会发送到指定的地址。
  17. 程序端:交易账户现在可以方便地显示在导航窗口:
  18. 程序端:如果当前交易账户订阅信号,相应的图标会显示在交易品种窗口的交易标签中。当鼠标光标悬在图标上时,会显示信号数据。还有交易者们忘记他们的账户订阅信号的情况。那可能会发生在,例如,当进行订阅来检查服务操作时。订阅图标使得信号工作更加便捷。
  19. 程序端:增加了新的图形对象:按钮,位图,位图标签,长方形标签。这些对象不能手动安装在图表上,是专为组织MQL5应用程序的用户界面而设计:EA交易,脚本和指标。
  20. 程序端:提高客户端日志中显示的时间精确度 - 毫秒已被添加。
  21. 程序端:修正了开立订单和持仓(通过点击十字按钮)列表中一键关闭 持仓 - 来自交易设置可接受的价格涨幅偏离值现在已用在即时交易模式中。
  22. 程序端:增加公司标签上复制到剪贴板的能力。
  23. 程序端:修正了命令安排图表窗口。
  24. 程序端:修正了在全屏图表之间切换时保存配置文件。
  25. 程序端:修正了使用日文界面时的一些对话框显示。
  26. 程序端:为了高效运行以及高性能,所有的客户端组件需要支持通过PC处理器设置的SSE2指令。
  27. 程序端:优化扫描最佳接入点。
  28. 程序端:修正了使用UAC时提升权限拒绝情况下,更新过程中出现的循环错误。
  29. 程序端:修正了新闻标题和内容的显示,以及使用UTF-8编码的内部电子邮件。
  30. 程序端:修正了一个错误,其在某些情况下可能会导致开立订单和持仓列表中的预付款和可用预付款字段的不正确显示。当用户拒绝接受“一键交易”的协议,可能会发生此错误。
  31. 程序端:当开立模拟账户时在相应的对话框更新国家列表。
  32. 程序端:更新和增强瑞典语,匈牙利语,日语,意大利语和保加利亚语的界面翻译。
  33. 信号:有关交易信号的扩展信息
  34. 信号:增加了对信号源和用户帐户之间的无条件持仓同步的选项。
  35. 信号:新增信号选项卡上近3天提交的新交易信号数量的显示。
  36. 信号:在交易持仓初始同步过程中,增加最小允许交易量和最小交易量步骤的考虑。如果本地持仓的大小小于信号方的预估量,增加本地持仓不被执行,因为将必须要重新持仓。这可能导致点差损耗。
  37. 信号:当门槛订单量值被超过时,修正了立即执行改为请求执行的执行类型的交易品种的持仓和平仓。
  38. 信号:当信号源和用户的交易品种进行比较,并且大量适当的交易品种在用户方被发现时,现在会考虑它们的交易许可。
  39. 信号:增加交易信号信息的历史与评论标签。
  40. 信号:在信号列表增加了信号的评级栏。
  41. 信号:从交易信号信息删除信号订单和持仓票据的显示。
  42. 信号:修正交易信号同步的错误,其偶尔发生在大量的具有相同交易量的单向持仓的情况下。
  43. 信号:增加了交易品种的自动转换GOLD <=> XAUUSD和SILVER <=> XAGUSD。
  44. 信号:添加禁止订阅兼容NFA FIFO规则的账户的交易信号。
  45. 信号:修正Wine(Linux和Mac)下工作时订阅信号。
  46. 信号:从交易品种窗口的信号选项卡移除“显示信号全部列表”的选项。如果该选项禁用,只有同一个经纪商账户提供的信号会显示在程序端的信号显示栏。现在,所有信号都显示在显示栏,无论来自那家经纪商。因此,交易者们始终可以广泛选择可供订阅的信号,允许他们选择最佳供应。
  47. 测试器:修正使用订单缓存优化时,考虑测试参数中设置的订单点差。
  48. MQL4:修正了MQL4应用程序偶然阻止交易平仓和持仓的错误。该错误可能发生在发送大交易量订单时处理市场执行类型交易品种的时候。
  49. 修正了论坛和崩溃日志中报告的错误。

 

MQL4的新功能

MQL4编程语言已经被彻底修改达到MQL5的水平 - 现在您可以用MQL4 / 5使用统一的MetaEditor开发环境,单一的风格,程序库和调试工具,开发自动交易。

由于易学性和大量的多年使用MetaTrader 4客户端生成的代码,MQL4深受自动化系统开发者的欢迎。然而,该语言也有其主要优点所产生的一些缺点 - 一个简单的编程语言不允许开发复杂的系统,阻碍了从高级语言调试库的移植。因此,我们决定在最大可能数量的MQL5语言功能和特点下实施它完全保留MQL4的功能。换句话说,所有强大的MQL5功能,包括ООP和本机代码编译器,也将在MQL4变得可用。

要做到这一点,我们已经开发了统一的编译器,可以自动支持MQL4和MQL5语言。MetaEditor也将成为MetaTrader 4和MetaTrader 5两个平台的统一的应用。因此,将有可能从任何版本编译MQL4和MQL5。MQL5存储也可用于工作。

MQL4应用保护上升到MQL5水平。新EX4/EX5文件提供了一个严格和彻底的修改保护。这意味着安全的EX4应用市场也提供给MetaTrader 4客户。

此外,MQL4现在采用新图形对象和新功能进行图表工作。MQL5标准库将被移植到MQL4为开发者提供了创造自己的图形界面和交易库的新可能性。现在,您可以在MetaTrader 4使用资源创建完全成熟的应用程序。

 

[转发] 浏览原文