MetaTrader 5新功能

桌面版,移动版和网页平台的更新历史

14 十月 2021

MetaTrader 5 build 3081:改进MQL5服务和设计更新

Terminal

  1. 改进MQL5.community服务中的导航功能。

    市场信号VPS版块已经从主平台工作区移动到导航器。新位置为访问所需产品提供更多方便,并可以有效地管理购买和订阅。每个服务都添加了“如何工作”部分,以提供基本的使用信息。


    改进通过MQL5.community服务的导航功能


  2. 所有菜单和工具栏图标都已完全重新设计。客户端界面也更加人性化:

    • 删除图标中的小元素
    • 减少使用的颜色数量,避免颜色干扰
    • 使用更少的渐变来提高可读性
    • 使用更直接的隐喻


    平台中的所有菜单、工具栏和对话框都已重新设计


  3. 添加交易执行的成本显示。相关信息显示在交易历史中。此功能适用于NFA监管的交易商。


    账户历史显示交易成本>


    如果您的交易商在服务器上启用成本计算,则新成本列将出现在您的账户交易历史中。该列显示了相对于交易品种的当前中点价格的交易执行成本(中点点差成本)。

  4. 推出MQL5.com韩语版

    这是MQL5.community(最大的算法交易者社区)提供的第八种语言。网站界面、文章、经济日历和重要论坛主题都已经提供韩语。MQL5文档也将很快进行翻译。

  5. 修正加载自定义交易品种。在某些情况下,新创建的交易品种设置可能会覆盖现有的交易品种设置。
  6. 修正在图表上显示信号交易历史。以前,相关选项可以显示所有交易品种的所有交易,而不仅仅是图表交易品种。
  7. 在交易历史报告中添加费用列的导出。之前,该值仅显示在历史中,但无法保存到文件中。
  8. 优化和加速市场报价中和图表上的一键交易面板的操作。
  9. 修正自定义交易品种的预付款比率字段的操作。在某些条件下,这些值可以重置为零。
  10. 我们继续实施订阅服务,通过此服务,交易者可以购买交易商的额外交易服务。修正报价订阅窗口中的错误。
  11. 修正显示趋势线分析对象。以前,趋势线可能会在缩放或调整图表窗口大小时消失。
  12. 修正显示矩形分析对象。如果定位点之一超出图表可见区域,则该对象可能会消失。
  13. 与内置MQL5.community图表的操作相关的修复和操作速度改进。
  14. 修正持仓列表中的“值”参数的四舍五入。在以前版本中可以隐藏小数部分。
  15. 修正开户过程中的手机验证。某些中国运营商的电话号码可能会被识别为不正确。
  16. 添加对长度超过32个字符的MQL5账户密码的支持。
  17. 修正在Wine中工作时的证书导出。该选项用于从桌面版迁移到移动设备时的具有扩展认证的账户。
  18. 修正在工具箱窗口下面板中打开MQL5服务的按键。当窗口取消锁定时,该按键处于非活动状态。
  19. 添加“文件\新图表”菜单大小的限制。现在,菜单包含的交易品种组不能超过128个子菜单,每个子菜单不超过32个交易品种。这一限制加快了程序端操作,并避免在向市场报价添加大量交易品种(2000或更多)时被冻结。

MQL5

  1. 我们继续添加向量和矩阵支持。这些新功能将大幅度扩展基于神经网络的解决方案开发人员的可能性。
  2. 在ENUM_DEAL_PROPERTY_DOUBLE枚举中添加DEAL_SL和DEAL_TP值 — 交易的止损和止盈级别。

    根据发起这些交易的订单的止损和止盈来设置进入和逆转交易的相关值。平仓时对应持仓的止损值/止盈值被用于退出交易。

  3. 在ENUM_MQL_INFO_INTEGER枚举中添加MQL_HANDLES_USED值 — MQL程序中活动类对象(句柄)的数量。这些包括动态(通过新值创建)和非动态对象、全局/局部变量或类成员。程序使用的句柄越多,它消耗的资源就越多。

  4. 添加用于使用描述经济日历事件的MqlCalendarValue结构的新方法:

    • HasActualValue(void) — 如果设置实际值,则返回true;否则返回false
    • HasForecastValue(void) — 如果设置预测值,则返回true;否则返回false
    • HasPreviousValue(void) — 如果设置过去值,则返回true;否则返回false
    • HasRevisedValue(void) — 如果设置修正值,则返回true;否则返回false
    • GetActualValue(void) — 如果未设置相关值,则返回事件(double)或nan的实际值
    • GetForecastValue(void) — 如果未设置相关值,则返回事件(double)或nan的预测值
    • GetPreviousValue(void) — 如果未设置相关值,则返回事件(double)或nan的过去值
    • GetRevisedValue(void) — 如果未设置相关值,则返回事件(double)或nan的修正值

  5. 修正使用EX5文件形式程序库的MQL5程序的调试问题。
  6. 加速编译包含由序列初始化的大型数组的程序。
  7. 修正使用自定义交易品种数据执行CopyTicksRange函数的问题。该函数可能返回请求期间之外的数据。
  8. 修正参数专业化期间对所有模板参数可用性的验证。在某些情况下,使用调试模板编译代码可能会导致“代码生成错误”。

Signals

  1. 添加自动续订信号订阅的功能。

    您的订阅不会突然终止,因为系统会通过您用于初始订阅购买的付款方式自动续订一个月。


    为信号订阅启用自动续订


    如果您之前使用银行卡进行付款并且续订付款失败,系统将尝试从您的MQL5账户余额中支付。

    不要担心订阅价格的变化。如果价格上涨,自动续订将被取消。您将通过电子邮件收到相关通知。

    您可以在MQL5.com随时通过我的订阅部分启用或禁用自动续订选项。


    在MQL5.com“我的订阅”部分管理自动续订


  2. 修正信号展示的显示问题。现在系统可正确识别信号与当前账户的兼容性。

Market

  1. 在市场展示区添加通过作者姓名和登录名进行产品搜索。以前,该服务仅支持按产品名称和描述搜索。

VPS

  1. 改进自动订阅续订选项。

    以前,续订付款只能从MQL5账户结余中支付。用户必须确保其账户中有可用的相关金额。

    现在无需为MQL5账户充值。系统将使用您用于初始订阅的相同付款方式续订订阅。如果您使用银行卡支付VPS并启用自动续订选项,系统将对新订阅期使用相同的付款方式。如果付款失败,系统将尝试从您的MQL5账户余额中支付。


    使用银行卡和其他付款方式进行自动续订


    通过这个新选项,您可以确保EA交易和信号订阅不会因为VPS到期而停止。此外,无需手动检查和充值您的余额。
    该选项将仅用于新订阅。现有订阅的续订费用将从MQL5账户余额支付。

Tester

  1. 修正可视化测试错误。在某些情况下,图表可能无法显示EA交易中使用的指标。

MetaEditor

  1. 修正使用Alt+G跳转到函数或变量声明的问题。如果声明低于调用行,操作可能会失败。
  2. 添加对调试器中类对象引用的对象类型的显示。
  3. 添加在观察表达式列表中显示联合的功能。

MetaTrader 5 iPhone/iPad,MetaTrader 5 Android

  1. 添加在应用程序启动时显示免责声明。请仔细阅读。此外,一些交易商可以在应用程序第一次启动时自动创建模拟账户。在这种情况下,您将看到相关条款。


    MetaTrader 5 iPhone/iPad中添加的免责声明

  2. 添加从移动应用程序直接将账户连接到信号服务中的监控的功能。这可以通过从菜单中选择“账户监控”来完成。为方便起见,账户号和交易商名称会自动添加到注册窗口中。您应该另外指定信号名称和只读密码。

    将账户连接到监控以访问高级交易统计数据,与其他交易者分享结果或开始出售您的信号。

  3. 为在Android操作系统上运行的移动端,添加对Huawei AppGallery(华为应用市场)和HMS服务的支持。华为智能手机用户可以从相关商店安装该应用程序并使用推送通知。

更新文档。

18 六月 2021

MetaTrader 5 build 2980: 交易操作的推送通知

程序端

  1. 添加从服务器接收推送通知的功能。即使您的程序端关闭的情况下,您也能收到已执行交易操作的通知。



    在早期版本中,移动设备的通知只能从交易者桌面程序端发送。交易操作执行后,程序端向设置中指定的MetaQuotes ID发送相关通知。通知只能从正在运行的程序端发送。此要求已被取消。如果在您的计算机关闭时在服务器上触发止盈,您将收到来自服务器的平仓通知。

    要开始从服务器接收通知,您应该:
    • 拥有真实账户,因为服务器通知不适用于模拟账户
    • 在您的智能手机上安装MetaTrader 5 iOSAndroid
    • 在移动端打开消息部分,找到您的MetaQuotes ID并将其指定在桌面程序端的设置中
    • 在桌面程序端设置中启用服务器通知

    服务器通知应由您的交易商提供

    支持三种通知类型:订单操作、交易操作和结余操作。当您启用该选项时,可用的通知类型将显示在程序端日志中:
    '1222': subscribed to deals, orders, balance notifications from trade server

  2. 更新MetaTrader VPS展示。VPS部分变得更加方便:
    • 界面适应任何屏幕宽度。
    • 展示区占用的垂直空间更少,以适应工作区域。
    • 必要的信息仅在需要时出现。付款详细信息仅在您选择付款计划后显示。



    程序端:在策略测试面板中,添加用于快速切换到MQL5服务和工具箱窗口的命令。这些命令仅显示在“概览”部分,而在其他选项卡中,该面板用于管理测试。



  3. 为MQL5服务添加窗口状态的保存。如果您在关闭程序端之前将市场保持打开状态,相关窗口将在您下次启动程序端时打开。
  4. 修正定期同步MQL5账户状态。由于出现错误,信号复制在某些情况下可能会失败。
  5. 修正显示一系列推荐的市场产品。
  6. 修正导航器中的信号快捷菜单。您可以使用菜单查看您订阅的信号或取消订阅信号。

MQL5

  1. 修正在标准程序库(file MQL5\Include\Math\Alglib\complex.mqh)中实现复数时的"-"运算符错误。
  2. 现在您可以在初始化序列中使用任何表达式,而不仅仅是常量表达式。这可以提高可用性和与C++代码的兼容性。
    struct POINT
      {
       int x,y;
      };
    
    int GetYFunc(y)
      {
       return(y * y);
      }
    
    void SomeFunction(int x1,int x2,int y)
      {
       POINT pt={ x1+x2, GetYFunc(y) };
       ProcessPoint(pt);
      };
  3. 修正在以大量数据数组编译union时发生的错误。
  4. 修正StringToCharArray函数操作。现在它将整个传递的字符串转换为Char数组,而不是在第一个终止null字符处停止。
  5. 如果类/结构的父类没有默认构造函数,则添加对类/结构的构造函数调用的显式存在的控制。

MetaEditor

  1. 分析工具报告中添加显示内联函数的调用位置。

    在下面示例中,func();调用现在突出显示如下:



    func函数本身不会突出显示,因为它的完整代码位于OnStart中。

  2. 添加创建空项目的功能。对于具有默认模板不适合的特定文件结构的非标准开发项目,这是一个有用的功能。



    在这种情况下,将创建一个空设置文件"mqproj"。应手动创建源代码文件。

  3. 实现快速启动MetaEditor。
  4. 修正调试期间观察表达式列表中的数据显示。在某些条件下,该列表可能会显示不正确的变量值。
  5. 修正将".py"扩展名自动添加到使用MQL向导创建的Python脚本文件的问题。
更新文档。

21 五月 2021

MetaTrader 5 Build 2940: 在主工作区MQL5服务的显示布局及更新设计

程序端

  1. 交易服务(包括市场信号虚拟主机)现在可以方便地显示在平台的主工作区。
    在早期版本中,MQL5服务购买区位于主窗口下面的小工具箱窗口。新布局可以显示所有功能以及方便的购买选项。移除下面区域不必要的选项卡可为其他平台功能提供更多空间。



    访问附加服务不会影响主要功能,例如交易和图表分析。
    • 服务选项卡位于柱状图的末端,所有图表选项卡之后。
    • 未使用的服务窗口可以关闭。要重新打开它们,请使用导航器、工具栏或“服务”菜单。

    我们还完全重新设计了服务。设计变得更加简洁和轻便。信号包含之前只能通过MQL5.community网站显示区获得的附加数据:具有主要特性、可靠性、活动度量和其他变量的极坐标图。



  2. 添加对IPv6地址的支持。
    每个网络中使用的IPv4创建于30年前。它包含32位的IP地址,这些IP地址表示为由点分隔的四个8位数字。该算法可产生超过40亿个唯一IP地址。但是,迅速增长的用户数和设备数加速了可用地址池的消耗。

    为避免耗尽问题,某些产品还提供对现代IPv6标准的额外支持。该协议使用128位地址,表示为x:x:x:x:x:x:x:x,其中每个x是六个16位地址元素的十六进制值。从理论上讲,此格式允许5 x 10 ^ 28个唯一地址。除了扩展的地址空间之外,该协议还具有较旧版本的其他优势。有关更多详细信息,请参阅专业文章。

    MetaTrader 5平台已完全支持IPv6。如果您的交易商或提供商切换到新协议,则将可在平台中直接启用协议支持,而无需您采取其他任何操作。

  3. 我们将在build 2815中继续实施提供的任务管理器功能。我们为运行MQL程序调试或性能分析的图表添加了明确的指示。




  4. 实现macOSLinux电脑中Wine下的平台更快启动。常规优化和错误修复:
    • 改进菜单、工具栏和对话框的显示。
    • 修正显示“市场”、“信号”和“ VPS”部分时出现的错误。尤其是,我们已修正“市场”展示中产品logo的加载问题。
    • 更新DMG软件包,便于在macOS电脑上轻松安装MetaTrader 5。借助这个软件包,平台安装过程与其他应用相同:将平台图标拖拽至应用程序,然后等待安装完成。
      该软件包包含可使操作更加稳定和快速的附加组件。强烈建议所有软件包用户在下面链接下载最新版本并重新安装MetaTrader 5:https://download.mql5.com/cdn/web/metaquotes.ltd/mt5/MetaTrader5.pkg.zip
    如果您使用CrossOver,请完全重新安装MetaTrader 5,获得最新的64位平台版本。
  5. 修正“Ctrl+F9”键盘快捷键操作。它可激活工具箱中的交易选项卡。

MQL5

  1. 我们继续限制包括32位组件在内的旧技术的发布。
    • 不再允许32位程序端加载市场中的程序。
    • 32位程序端无法连接到主机服务。
    • 32位MetaEditor版本不支持通过MQL5 Cloud Protector提供的附加文件保护。
    • 使用MetaEditor旧版本(5年前或更早发布的版本)编译的MQL5程序不能在新程序端版本中运行。

    一年前,也就是在发布build 2361之后就停止了对32位平台版本的支持。我们强烈建议升级到MetaTrader 5 64位版本,以便无限制地访问平台的所有功能。
    此外,我们建议所有之前将32位产品版本上传到市场的卖方,使用最新64位MetaEditor重新编译并上传新版本。在程序端中运行32位MQL5程序的功能将很快完全被禁用。
  2. 添加对复数操作的支持。

    添加新内置类型“复杂”。
    struct complex
      {
       double             real;   // 实数部分
       double             imag;   // 虚数部分
      };
    “复数”类型可以作为MQL5函数的参数按值传递(与普通结构不同,普通结构只通过引用传递)。对于从DLL导入的函数,“复数”类型只能通过引用来传递。

    'i'后缀用于描述复常数:
    complex square(complex c)
      {
       return(c*c);
      }
      
    void OnStart()
      {
       Print(square(1+2i));  // 常量作为参数传递
      }
    
    // "(-3,4)"将被输出,这是复数的字符串表示
    目前,复数只有简单的运算可用:=、+、-、*、/、+=、-=、*=、/=、==、!=。

    之后将添加对附加数学函数的支持,以支持计算绝对值、正弦、余弦等。

  3. 新错误代码TRADE_RETCODE_HEDGE_PROHIBITED —由于禁止锁仓持仓,因此不允许开仓或下挂单。如果用户在禁用账户锁仓以及用户对相同交易品种已有反向订单或持仓的情况下试图执行交易操作,则返回错误。

MetaEditor

  1. 修正非可视模式下调试和分析终止。
  2. 修正对真实数据的指标分析。在某些情况下,这种分析可能无法启动。

VPS

  1. 修正环境迁移到VPS。包含指标作为资源的EA交易可能会出现错误。

信号

  1. 修正交易模式检查复制信号的问题。可以在交易商端限制交易品种的交易,即交易商可以设置“仅买入”、“仅卖出”或“仅平仓”的条件。在早期版本中,同步需要完整的交易条件,因此在所有其他情况下均不允许复制。更新后,部分受限的条件将被视为“交易”。此功能尤其对希望复制信号的股票交易商客户有用。

Tester

  1. 修正测试期间检查交易时段的问题。在某些条件下,交易操作执行可能会在测试期间失败,在这种情况下,即使操作是在交易时段内启动,也会返回“市场已关闭”错误。
更新文档。

2 四月 2021

MetaTrader 5 build 2875:其他改进和修复

程序端

  1. 修正导致将更新的MQL5标准程序复制到程序端根数据目录而不是MQL5子目录的问题。由于这个错误,在数据目录下可能会创建额外的"Experts"、"Images"、"Include"和其他文件夹。

    平台更新后,将检查这些文件夹并自动删除。

  2. 修正会阻止用户登录到内置MQL5.community聊天的错误。

Tester

  1. 修正通过MQL5云网络优化EA交易。在某些条件下,优化可能无法启动。

MetaEditor

  1. 修复MQL5程序调试和分析期间出现的错误和崩溃。

更新文档。

26 三月 2021

MetaTrader 5 build 2860:增强改进Wine和SQL集成

程序端

  1. 添加启用/禁用其他MQL5.community服务的功能。例如,如果您对MQL5编程文章信号服务的复制交易特性不感兴趣,您可以禁用相关部分,进而优化资源和程序端工作空间。



    默认启用所有服务。

  2. 我们重点优化了macOSLinux系统中Wine下的程序端操作:
    • 现在,未锁定的服务窗口(导航器、工具箱)不可以被拖拽出程序端边界。之前,这可能会导致很难将窗口拖回程序端。
    • 修正在更改窗口大小时调整服务窗口的内容。
    • 修正任务管理器中显示性能指标的问题。
    • 改进工具栏上图标的显示。
    • 修正聊天中的未读消息计数。
    • 修正显示图表系统命令:隐藏、展开和关闭。
    • 修正日志显示。
    • 修正显示图表工具提示。
    • 修正图表打印命令。
    • 修正使用Linux皮肤时顶部菜单的显示。
    • 修正MetaEditor中GitHub、MSDN和堆栈溢出的搜索

    我们建议所有用户将Wine更新到最新稳定版。这会提高平台的性能和稳定性。
  3. 添加在BORSA Istanbul(伊斯坦布尔交易所)交易时对"Market To Limit"订单的支持。这类订单最初作为市价单执行。如果流动性不足,则剩余交易量将作为限价单添加到订单簿中,并带有最后交易价格。
  4. 修正波动图表的显示。现在,将根据选项板上选择的到期日期来构建图表。
  5. 修正通过快速搜索条将交易品种添加到市场深度。如果交易品种名称带有空格,则该交易品种将不会添加到列表中。




MQL5

  1. 扩展使用SQL数据库的可能性。现在,查询支持多种统计和数学函数。

    统计函数
    • 模式
    • 中值(50百分位)
    • percentile_25
    • percentile_75
    • percentile_90
    • percentile_95
    • percentile_99
    • stddev或stddev_samp — 采样标准偏差
    • stddev_pop — 总体标准偏差
    • variance或var_samp — 采样方差
    • var_pop — 总体方差

    数学函数

    例如
    select
      count(*) as book_count,
      cast(avg(parent) as integer) as mean,
      cast(median(parent) as integer) as median,
      mode(parent) as mode,
      percentile_90(parent) as p90,
      percentile_95(parent) as p95,
      percentile_99(parent) as p99
    from moz_bookmarks;
  2. 添加新
    • __COUNTER__ — 每次调用逐一添加。在模板和宏中使用时,提供单独的计数器。
    • __RANDOM__ — 生成一个随机ulong数;它类似于MathRand函数。

  3. 修正当图表交易品种不存在情况下同步图表请求的操作。现在,函数将返回一个相关的错误,而不是无限期等待结果。不存在交易品种的情况则由使用不同交易品种设置的交易账户之间切换引起的。
  4. 优化并加快CopyTicks*函数的速度。

MetaEditor

  1. 使用历史数据更改分析调试的顺序。

    现在,性能分析始终以非可视模式运行。默认调试也以非可视模式运行。相应选项可在MetaEditor设置中手动启用:




  2. 添加配置服务的功能。这个过程类似于其他MQL5程序。
  3. 修正性能分析报告中函数名称的显示。在某些情况下,名称可以指定为<uknown>。

文档已更新。

26 二月 2021

MetaTrader 5 build 2815: 从Python访问市场深度,改进调试器和分析工具

程序端

  1. 添加通过Python API访问市场深度数据的功能。
    三项新功能可以快速获取用于统计计算和机器学习任务的数据,这可以使用大量即用型Python程序库来实现。

    • market_book_add — 订阅MetaTrader 5 程序端,接收与指定交易品种市场深度更改相关的事件。
    • market_book_get — 从BookInfo返回一个元组,其中包含指定交易品种的市场深度记录。
    • market_book_release — 取消MetaTrader 5 程序端订阅与指定交易品种市场深度更改相关的事件。

  2. 推送通知的最大长度从256个字符增加到1024个字符。现在,您可以从移动设备上的MQL5程序发送更多信息。
  3. 添加任务管理器的初始版本,它可以通过按F2键来调用。

    任务管理器可以监视平台消耗的资源。您可以查看图表消耗的内存量,EA交易以及其他性能指标使用的CPU资源。如果平台性能下降,则可以轻松检测并解决问题



  4. 加强订阅服务。为有延迟报价的交易品种添加特殊指示:
    • 市场报价中的交易品种标记为时钟图标,并且延迟值显示在工具提示中
    • 数据延迟通知显示在图表上



  5. 修正没有交易账户连接时的订阅列表显示。
  6. 修正电子邮件和时事通讯中的链接。现在,所有链接都在默认浏览器中打开。以前,链接仅在IE中打开。
  7. 修正从WebRequest函数到包含IPv6地址和Cloudflare保护的主机的连接。
  8. 改进VPS服务的功能和响应能力。
  9. 改进WineMacOS/Crossover下的操作,包括带有M1处理器的macOS Big Sur版本。

MQL5

  1. 修正ArrayPrint函数中的错误。该函数有时可能无法打印数组。
  2. 优化通过File*函数执行的文件操作。现在,文件读取和写入操作运行得更快。
  3. 取消当动态数组用作函数参数时要求指定动态数组第二,第三和第四维度大小的限制。这增加了代码的重用性和灵活性。
    void func(int &arr[ ][ ][ ][ ])
      {
      }
  4. 修正ArrayBsearch函数的操作。该函数可能会在二进制搜索过程中返回找到的元素的错误索引。

MetaEditor

  1. 经过改进的调试器中提供了更多新功能。
    • 现在,数组将根据ArraySetAsSeries设置的排序显示在观察窗口中。
    • 添加对局部静态变量的支持。
    • 修正指定数组元素值的显示。
    • 修正处理“静态”类字段。
    • 为更准确而可靠的调试而进行的其他改进。

  2. 添加“在分析中启用优化”的选项。
    可以禁用代码优化模式,以便在性能分析报告中包含更多详细信息。没有优化的代码速度可能会慢几倍,但是此模式可提供更广泛的代码覆盖范围。请注意,通过优化的代码瓶颈可能不准确。
    可以通过禁用“在分析中启用内联”来设置较温和的分析模式。


    优化管理选项也已添加到项目设置
    • 如果在项目中禁用优化,则新选项将被忽略,因此,性能分析将始终禁用优化(包括内联操作)。
    • 如果在项目中启用优化,则在性能分析编译期间将考虑新选项。

  3. 添加用于调试和分析过程的日志记录。在操作开始时记录环境设置;在操作停止时记录收集的数据统计信息。
    MQL5 profiler    starting 'ExpertMACD.ex5' on history with parameters:
    MQL5 profiler       symbol: 'EURUSD'
    MQL5 profiler       period: 'H1'
    MQL5 profiler       date from: '2021.01.01'
    MQL5 profiler       date to: '2021.02.22'
    MQL5 profiler       ticks mode: 'every tick'
    MQL5 profiler       execution delay: 0 ms
    MQL5 profiler       deposit: 10000
    MQL5 profiler       currency: 'USD'
    MQL5 profiler       leverage: 1:100
    MQL5 profiler       profit in pips: NO
    MQL5 profiler    profile data received (4640 bytes)
    MQL5 profiler    758 total measurements, 0/0 errors, 470 kb of stack memory analyzed
    MQL5 profiler    7782 total function frames found (1929 mql5 code, 342 built-in, 1403 other, 4108 system)

Tester

  1. 修正高级测试设置中的非交易时间的规范。

更新文档。

15 一月 2021

MetaTrader 5 build 2755:弹出价格窗口和改善调试器

程序端

  1. 修改弹出价格窗口,可以在任何尺寸的屏幕上查看交易品种价格。

    该窗口现在支持多列显示,从而可以有效利用屏幕空间。要切换显示模式,请使用窗口属性对话框。


    该窗口的进一步改进如下:
    • 添加列的选择菜单。该菜单提供“市场报价”中可用的相同的交易品种属性。
    • 优化大量交易品种的操作。现在,窗口对于10个和1000个交易品种具有同样高的性能。
    • 在工具提示中添加显示交易品种的简要信息。
    • 修正应用颜色设置显示价格上涨和下跌的问题。

  2. 添加在合成“市场深度”的报价图表上显示交易。

    合成“市场深度”用于不提供2级价格的交易品种。在这种情况下,将从最佳卖价和最佳买价开始,以价格变动幅度的差额自动构建级别。现在,如果为交易品种提供的是最后交易价格和交易量数据,则相关数据将显示在报价图表上。该信息以圆圈的形式显示:

    • 红色圆圈显示卖出交易。
    • 蓝色圆圈显示买入交易。
    • 当未定义交易方向时,会出现绿色圆圈。

    圆圈越大,进行交易的交易量越多。




  3. 修正期权看板的Greeks计算。如果期权标的资产的最后交易价格为零,可能会发生错误。
  4. 我们将继续实施新“订阅”服务,该服务可提供其他交易服务。最近,我们已修正相关订阅的显示。此类订阅用于捆绑服务。
  5. 改进Wine下的平台操作。

MQL5

  1. 添加在释放鼠标右键和鼠标中键时,ChartEvent事件的生成。该事件可在创建图形面板时使用。要启用此事件,请通过CHART_CONTEXT_MENU属性禁用图表快捷菜单。
  2. 修正在Sleep函数等待时间导致严重错误的问题。

MetaEditor

  1. 我们已经启动调试器的全局更新。观察表达式的窗口得到显着改善。现在,它能够以下拉列表的形式查看数组和对象的内容以及指针值。




    要查看数组或对象,请在观察窗口进行双击。

  2. 修复打开某些项目时的冻结问题。

文档已更新

26 十一月 2020

MetaTrader 5 build 2715: 功能改进

程序端

  1. 修正在使用期权看板时平台冻结的问题。平台冻结可能是由于在交易品种设置中指定零报价大小而引起的。
  2. 修正在HiDPI显示器上UI显示的错误。

MQL5

  1. 修正通过StringToTime函数,字符串到时间的转换。在将时间指定为"yyyymmdd [hhmiss]"时可能会发生此错误。
  2. 修正对包含动态数组的对象的隐式复制运算符的操作。现在,该操作将目标对象大小减小为复制的对象大小。
    struct MyStruct
    {
      string Array[];
    };
    
    void OnStart()
    {
      MyStruct a1,a2;
      ArrayResize(a1.Array,3);
      ArrayResize(a2.Array,1);
      a1=a2;
    }
    之前,"a1"数组大小在函数调用后等于3。现在,这个数组大小将为1。

MetaTester

  1. 更新MQL5云网络测试代理的评级计算算法。现在,确定评级更加准确,更改的频率也更低。

文档已更新。

12 十一月 2020

MetaTrader 5 build 2690:改进MetaEditor

程序端

  1. 修正合成市场深度功能的显示。之前,这个功能可能不支持某些交易品种。

    合成市场深度用于没有提供2级价格的交易品种。在这种情况下,将从最佳卖价和最佳买价开始,以等于价格变动幅度的距离,自动构建等级。这是一种方便快捷的工具,可用于快速,最清晰地下达、修改和删除订单。



MQL5

  1. 使用SymbolInfoTick函数,优化和显著加快从MQL5程序访问最后价格的速度。
  2. 修正从对话框重置Ichimoku Kinko Hyo指标参数。



  3. 修正当交易品种不可使用历史记录时,冻结Copy*函数。
  4. 代码分析工具的总体更新中的更多改进。除了build 2650中提供的创新功能外,还实现了以下改进:
    • 改进数据显示
    • 报告中显示使用较短的列名称
    • 能够将分析报告保存到文件
    • 在报告中为函数添加带有行号的工具提示显示。



MetaEditor

  1. 添加禁用剪贴板追踪和清空剪贴板历史记录的功能。

    剪贴板追踪功能可通过提供快速访问最近使用的数据来提高源代码的可用性。在任何源代码位置按下Alt+V,从菜单中选择任何较早复制的行,然后将该行插入到所选位置。

    使用相应的工具栏命令或编辑器设置来启用/禁用追踪。



  2. 修正在程序调试期间计算一些观察表达式的问题。

MetaTester

  1. 现在禁止在框架接收模式的策略测试中运行的EA交易。
  2. 修正在策略测试中导入优化结果的问题。该错误可能导致不正确地导入时间周期值。

文档已更新。

9 十月 2020

MetaTrader 5 build 2650:背景图表加载和MQL5代码分析工具改进

程序端

  1. “选项”选项卡提供一个名为“预加载未结持仓和订单的图表数据”的新设置。

    为了节省流量,交易平台仅在请求相关数据时下载交易品种价格历史(例如,在打开价格图表或启动测试时)。然而,对于常用交易品种来说,这并不是很方便。如果启用此新选项,您有未结持仓或挂单的交易品种图表将在后台模式下更新。因此,打开图表后您无需等待数据下载,相关数据将立即可供分析。




  2. 修正周末后生成日柱形图。
  3. 修正图表更新。在额外下载更新的价格数据之后,图表偶尔会出现更新失败的问题。
  4. 优化更新账户交易历史缓存。通过优化,可以减少使用History*函数时的数据延迟。
  5. 修正在交易历史显示为持仓时,评论列的显示问题。
  6. 修正信号续订按键的显示问题。

MQL5

  1. 代码分析工具的总体更新中的更多改进。除了build 2615中提供的创新功能外,还实现了以下功能:

    添加新参数
    我们之前已经宣布新分析工具的抽样方法的用法。分析工具在MQL程序操作中暂停(每秒~1000次),并收集有关在某些代码段中执行暂停次数的统计信息。这还包括对调用堆栈的分析,以确定每个函数在总代码操作时间内所占的份额。在分析后,用户会收到有关操作暂停次数以及每个函数出现在调用堆栈中的次数的统计信息:
    • 总CPU [单位,%] — 函数在调用堆栈中出现的次数。
    • 自身CPU [单位,%] — 直接在指定函数内出现的“暂停”次数。此变量对于识别瓶颈至关重要:根据统计数据,在需要更多处理器时间的情况下,暂停发生的频率更高。


    添加在分析过程中禁用函数内联的功能
    在MQL程序的编译过程中,对函数进行内联,即,将函数代码直接添加到函数调用站。这可以显着提高性能。但是,此过程会使函数分析变得困难。为了获得有关“纯”函数的报告,可以在MetaEditor设置中禁用内联:




    更新报告设计
    我们重新设计了性能分析报告,并在源代码窗口中显示性能分析信息。现代化设计将使Visual Studio用户更加熟悉。




  2. 修正CopyTicksRange函数操作的问题。该函数有时会返回不完整的数据。
  3. 新错误代码TRADE_RETCODE_HEDGE_PROHIBITED —由于禁止锁仓持仓,因此不允许开仓或下挂单。如果用户在禁用账户锁仓以及用户对相同交易品种已有反向订单或持仓的情况下试图执行交易操作,则返回错误。
  4. 删除调试指标时调用MessageBox的功能。无法从指标调用MessageBox,因为它在等待用户响应的时间段会一直暂停线程执行。
  5. 使用SymbolSelect函数优化并显着加速将交易品种添加到“市场报价”的过程。
  6. 修正固定大小数组的ArrayInsert函数行为。现在,该行为与文档中的描述相符:插入元素时,目标数组的大小不会更改,插入位置右侧的元素会向右移动(最后一个'count'元素为“下降”),同时将元素从源复制到释放空间。

Tester

  1. 修正在测试期间使用自定义交易条件设置;已修改设置对话框。

    • 修正计算自定义手续费。要启用手续费,现在只需指定交易品种名称即可,无需整个路径。
    • 重新排列选项卡,提高操作效率。
    • 重命名对话框和启用自定义设置的选项。
    • 在设置表中优化列宽。
    • 禁用“使用自定义设置”选项时,对话框中的所有其他设置均被停用。以前,设置仍可编辑,用户可能会错误地认为这些设置将在测试期间应用。




  2. 修正有关根据单号从交易历史接收订单时可能出现的错误。

MetaEditor

  1. 为代码编辑窗口添加配色方案预设:浅色(默认)、深色和蓝色。您可以自定义编辑器,而无需手动配置编辑器视图。

    此外,现在可以自定义功能工具提示的边框颜色。



     
  2. 工具栏中的所有图标均已更新,支持HiDPI显示器。

文档已更新。

17 九月 2020

MetaTrader 5 build 2615: 策略测试中的基础分析和复杂标准

程序端

  1. 扩展基础分析组件。

    添加新交易品种属性,该新属性可以更准确地对交易品种进行分类:

    • 部门 — 资产所属经济部门,例如能源、金融、医疗保健和其他部门。
    • 行业 — 资产所属行业,例如运动服、饰品、汽车制造、餐饮业和其他行业。
    • 国家 — 股票在证券交易所交易的公司所在的国家。

    基于这些属性,现在在市场报价中实施单独的系统,从而更有效地操作交易品种。从菜单中选择一个类别,所有可用交易品种将被添加到列表中进行深入分析:



    相关属性已被添加到合约规范中:



    此外,交易品种的基础数据现在可以直接从平台打开。大量聚合器的链接已经添加到“市场报价”的快捷菜单中:



    扩展数据的有效性由交易商控制。但是,我们已确保在最大数量的交易品种中默认提供高级信息。交易商将其服务器更新到新版本后,相应的国家/地区、行业和行业数据就会出现在您的平台中。
  2. 改进信号市场展示区。租用和订阅按键已添加到左侧面板:



    进一步改进版块设计。这包括提亮按键颜色、扩大MQL5登录按键及其他改进。

  3. 修正“止损”和“止盈”图表水平的潜在盈利/亏损计算。



  4. 修正计算合成交易品种时出现的错误。这些错误可能会导致平台在启动时的冻结问题。
  5. 修正在数据窗口中显示内置分形指标
  6. 平台工具栏中的所有图标已更新支持HiDPI显示器。
  7. 为已复制交易信号修正持仓交易量调整。调整操作有时会由于应用的止损水平错误而失败,从而导致“无效停止”错误。
  8. 优化服务器上相关更改后的价格历史重建。
  9. 修正在图表上显示交易水平的工具提示。在某些情况下,就是禁用显示交易水平,工具提示仍可以显示在图表上。
  10. 修正“工具箱\交易”部分的订单和持仓快捷菜单中的“在图表显示\自动更新”选项。现在,如果不勾选此选项,则所有打开的图表都将禁用交易历史显示。

MQL5

  1. 添加MathClassify函数。该函数可以确定实数型,并以ENUM_FP_CLASS枚举值的形式返回结果。
    ENUM_FP_CLASS  MathClassify(
       double  value      // 实数
       );
    该枚举包括以下值:
    • FP_SUBNORMAL — 比最小可表示正规数DBL_MIN — 2.2250738585072014e-308更接近于零的次正规数。
    • FP_NORMAL — 正规数的范围在2.2250738585072014e-308与1.7976931348623158e+308之间
    • FP_ZERO — 正零或负零,
    • FP_INFINITE — 无法用适当的类型(正或负无穷大)表示的数字。
    • FP_NAN不是一个数字。
    使用以下代码检查实数有效性:
    if(MathClassify(value)>FP_ZERO)
      {
       Print("value is not a valid number");
      }
  2. 添加可使用SymbolInfoString函数获得的交易品种属性。
    • SYMBOL_COUNTRY — 股票在证券交易所交易的公司所在的国家。
    • SYMBOL_SECTOR_NAME — 资产所属经济部门,例如能源、金融、医疗保健和其他部门。
    • SYMBOL_INDUSTRY_NAME — 资产所属行业,例如运动服、饰品、汽车制造、餐饮业和其他行业。

    该属性以字符串形式返回。

    交易品种所属的部门和行业可以枚举值形式获得。这可通过使用SymbolInfoInteger函数请求以下属性来完成:

    • SYMBOL_SECTOR
    • SYMBOL_INDUSTRY

    已添加ENUM_SYMBOL_SECTOR和ENUM_SYMBOL_INDUSTRY枚举用于处理这些属性。

  3. MQL5程序中实现了新内存管理机制。它可最高以3倍的速度进行内存分配,并避免潜在的内存访问错误。
  4. 通过History*函数,优化和加速账户报价历史的操作。
  5. 修正来自OnDeinit进入点的WebRequest调用。在早期版本中,在EA交易停止的情况下无法实现该函数的调用。
  6. 修正来自服务的WebRequest函数调用。之前,服务重启之后,函数调用可能会失败。
  7. 添加使用OpenCL时,对设备上的双精度型支持的检查。因过度四舍五入,不能在财务计算中使用浮点型。因此,平台明确要求支持双精度型进行计算。如果不支持双精度型,则在平台日志中写入相应的消息:设备'<name>'不支持'double'类型。之前,在这种情况下会显示常见错误消息。
  8. 明显加快使用ACCOUNT_EQUITY和ACCOUNT_BALANCE参数的AccountInfoDouble函数的执行速度。
  9. 修正通过ChartApplyTemplate函数将模板应用到图表的问题。
  10. 修正使用CHART_BRING_TO_TOP参数的ChartSetInteger函数调用。
  11. 新Conjugate方法已添加到内置Alglib程序库中。此方法启用复数的共轭数计算。该程序库位于MQL5\Include\Math\Alglib。
  12. 完整修订代码分析工具。新分析工具以更高的精度和速度运行。
    • 现在,该分析基于经过类似于编译程序发布版本进行优化的代码。。由于可以在程序执行期间使用完全相同的代码,因此这可以更准确地确定代码执行速度。
    • 新分析工具使用“抽样”剖析方法。这种轻量级且准确的方法通过定期收集调用堆栈数据和计算性能来收集应用程序性能统计信息。
    • 不同于以前的版本,新分析工具不会对所分析的代码进行任何更改。先前使用的工具方法在代码中添加了某些结构,用于测量函数的速度。这可能会影响最终的代码速度。
    分析工具的开发将继续进行。即将发布的平台版本还将提供进一步的改进。

Tester

  1. 优化使用MQL5云网络的操作。修正在代理上加载EA交易。
  2. 添加新优化标准“最大复杂标准”。这是测试通过质量的完整且复杂的衡量标准。它会衡量多个参数:
    • 成交数
    • 盈亏
    • 采收率
    • 期望收益
    • 夏普比率

    就复杂分析而言,参数的最大值(例如盈利)并不总是最佳选择。复杂标准逐渐选择最优通过:首先根据成交数,然后根据期望收益、采收率等。新选项可以根据所有参数接收最佳优化通过。此外,您可以根据所需参数(例如最高盈利)选择最佳通过。

    在策略测试器设置中选择新标准,然后开始优化。



    “最大复杂标准”值将显示在优化结果中单独的“结果”选项卡。可以按此列对通过进行排序。新标准支持颜色编码加亮,从而在视觉上突出显示最佳通过。低于20的值以红色突出显示,高于80的值以深绿色显示。



  3. 修正策略测试中的自定义手续费计算。

MetaEditor

  1. 我们已启动全局修订智能代码管理功能(智能提示)。
    • 现在,这些提示除了显示名称之外,还显示完整的函数签名。
    • 现在根据MetaEditor设置来设置提示的字体。
    即将发布的平台版本还将提供进一步的改进。

更新文档。

24 七月 2020

MetaTrader 5 build 2560: 改进内置学习系统

程序端

  1. 上次平台更新,我们提出一个完全修正的学习系统。在最新版本中,还做出进一步的改进:
    • 进度条图标的显示更加清晰
    • 对一些提示的文本进行修改
    • 学习进度计算得到修正
    完成所有课程,开始充分使用平台功能。



  2. 优化并显著加速处理大型报价流(每分钟数万个报价)。
  3. 修正计算相对于前一交易日收盘价的价格变化时出现的错误。若要查看这个变量,请启用“市场报价”快捷菜单中的“每日更改”栏。

MQL5

  1. 通过ChartGetInteger函数,优化并加速访问数值图表属性。
  2. 修正自定义指标搜索,即当通过iCustom函数从MQL5程序请求此类指标时。

MetaEditor

  1. 项目中添加C/C++程序的编译。

Tester

  1. 显著优化MQL5云网络的工作。由于代理搜索效率的提高,“网络”可更快地分配任务并返回计算结果。

更新文档。

10 七月 2020

MetaTrader 5 build 2530: 市场报价排序以及获得优化结果的先进操作

程序端

  1. 市场报价窗口添加了排序选项:

    • 点击列名,按所需数据(如交易品种名称、收盘价、日变化或其他变量)对列表进行排序。
    • 使用带有最受欢迎排序选项的新菜单。在交易外汇交易品种时,基于每日交易品种价格变化,按最高涨跌幅进行排序可能更实用。



  2. 重新设计并改进了内置学习系统。

    为便于导航,所有互动提示都分为不同的类别。为每个类别显示已完成和剩余的提示数量。



    现在,每个提示都提供一个清单,显示用户为完成培训而应执行的关键操作。

    我们已修改学习系统设计并修正总进度计算中的错误。

  3. 添加自动计算交易品种的上一个交易时段平仓时间和当前交易时段开仓时间。如果交易商未直接提供相应的数据,则程序端将基于交易时段的第一和最后报价来计算值。相关信息可以显示在“市场报价”窗口中:在“交易品种”部分启用相应的列,或导航到“详细信息”部分。



  4. 优化和加速申请持仓的价格。当新报价到达程序端时,价格、盈利和预付款要求会更快更新。
  5. 修正计算内置Stochastic Oscillator指标。在图表中显示有限柱形图时,可能出现错误。

MQL5

  1. 优化并加速AccountInfo*函数(提供访问交易账户属性)。
  2. 通过ChartGetInteger函数,优化并加速访问数值图表属性。

MetaEditor

  1. 下面快捷菜单命令已添加到代码编辑选项卡,以便对MQL5 存储进行高效操作:
    • 比较文件的工作副本和当前版本
    • 恢复更改
    • 查看文件更改历史

  2. 更改匹配括号的高亮部分。现在,突出显示应用于括号而非背景中。默认情况下禁用突出显示。它可以在编辑器设置中启用。

  3. 改进搜索和替换功能:

    • 如果您在文件中选择文本并打开搜索框,则该文本将自动在“查找”字段中替换。如果未选择任何文本,则剪贴板中的文本将粘贴在“查找”字段中。如果剪贴板为空,则搜索框中的默认值将设置为“查找”字段。
    • 对于替换窗口也实施类似的行为:将所选文本插入搜索字段,然后将光标移至“替换为”字段。因此,您可以立即输入所需的新文本。
    • 现在,搜索和替换结果显示在日志中,而不是以前使用的单独对话框中。如果启用了“工具箱”窗口,则将在其中自动选择“日志”选项卡。因此,您不需要使用额外的窗口。

  4. 修正使用MQL5存储时在文件比较窗口中进行搜索。
  5. 添加通过#include指令搜索和替换连接到当前文件的文件的可能性。

    新选项能够更快操作多个文件组成的项目。例如,要替换所有文件中的文本,您无需手动指定其目录,而编辑器可以通过#include指令自动找到它们。


Tester

  1. 我们已修改优化准则,其中包括两个变量,其中一个是结余。现在,该准则仅考虑到第二个变量而忽略了结余。新优化准则更易于分析。

    • Balance + Maximum Profitability -> Maximum Profitability
    • Balance + Maximum Expected Payoff -> Maximum Expected Payoff
    • Balance + Minimum Drawdown -> Minimum Drawdown
    • Balance + Maximum Recovery Factor -> Maximum Recovery Factor
    • Balance + Maximum Sharpe Ratio -> Maximum Sharpe Ratio



  2. 在“优化参数”子菜单中,我们添加新命令,用于快速显示或隐藏包括优化结果的表格中的所有输入列:



  3. 为优化结果表格和图形添加颜色,以便于视觉分析。

    该图形根据优化准则的值,以绿色到红色的渐变色进行着色。 该表格使用以下颜色:
    • 结余:初始入金上方的值用蓝色显示,初始入金下方的值用红色显示。
    • 盈利:大于零的值使用蓝色,小于零的值使用红色。
    • 期望收益:大于零的值使用蓝色,小于零的值使用红色。
    • 盈亏:从绿色(0-5%)到红色(高于30%)。
    • 夏普比率:从绿色(高于2)到红色(低于0)。
    • 采收率:从绿色(高于2)到红色(低于1)。



  4. 在优化结果表格中添加过滤器。使用过滤器隐藏列表中的不成功的通过:
    • 无交易通过
    • 亏损通过
    • 盈亏通过高于50%
    • 采收率通过低于1
    • 夏普比率通过低于0.5



  5. 优化MQL5云网络的工作。现在,当针对相同的EA交易启动优化时,网络会尝试使用在上一次优化过程中使用的相同测试代理,因为所需的市场环境(包括交易历史记录)已经在此类代理上可用。

更新文档。

26 六月 2020

MetaTrader 5 iOS build 2505: 滑动、新部分以及配色方案


我们收集了来自MetaTrader 5 iOS用户的反馈,并重新设计了应用程序。

  • 添加在报价部分搜索交易品种的功能。
  • 为图表添加默认的“白底色”配色方案。
  • 添加图表上的交易显示。
  • 向上移动时间周期切换面板,使其不再与图表重叠。
  • 添加图表垂直缩放 — 只需轻扫价格范围。
  • 添加使用QR码将账户移动到其他设备的能力。
  • 添加在报价部分显示每日价格变化(以点数计算)。只有由交易商提供的数据才可供使用。
  • 添加对“报价”、“历史”和“交易”屏幕上的滑动支持。
  • 添加自适应的交易量选择,以便快速交易。
  • 添加通过面部识别ID或指纹访问OTP生成器的功能。
重新设计iPad导航。
  • 向上移动一键交易面板。
  • 添加包含版块和指标的底部菜单;
  • 将电邮、新闻和账户管理部分移动到单独的选项卡;
  • 改进账户管理

5 六月 2020

MetaTrader 5 build 2485: MQL5中iCustom的改进和整体优化

程序端

  1. 优化并显著加快对自定义交易品种的柱形图历史编辑。此次改进还涉及到CustomRatesUpdate函数。
  2. 修正将自定义交易品种设置导出到JSON文件的问题。
  3. 修复崩溃日志中报告的错误。

MQL5

  1. 这个版本提供了通过iCustom修改自定义指标加载算法。

    如果在自定义指标名称前指出反斜杠符号'\',则相对于MQL5根文件夹搜索EX5指标文件。因此,对于调用iCustom(Symbol(), Period(), "\FirstIndicator"...),该指标将被加载为MQL5\FirstIndicator.ex5。如果在此路径中找不到此文件,则返回错误error 4802 (ERR_INDICATOR_CANNOT_CREATE)。

    如果路径不是以反斜杠'\'开始,则将根据以下操作顺序搜索并加载指标:

    • 在调用程序EX5所在的文件夹中搜索EX5文件。例如,CrossMA.EX5 EA交易位于MQL5\Experts\MyExperts。它包含以下调用:iCustom(Symbol()、Period()、"SecondIndicator"...)。在这种情况下,将在MQL5\Experts\MyExperts\SecondIndicator.ex5中搜索指标。
    • 如果没有找到指标,则执行相对于指标根目录的搜索:MQL5\Indicators。因此,将搜索文件MQL5\Indicators\SecondIndicator.ex5。如果找不到指标,则该函数返回INVALID_HANDLE并引发错误4802(ERR_INDICATOR_CANNOT_CREATE)。

    如果在子目录(例如MyIndicators\ThirdIndicator)中设置指标路径,则在以下路径下从调用程序的文件夹(EA交易位于文件夹MQL5\Experts\MyExperts)中开始搜索:MQL5\Experts\MyExperts\MyIndicators\ThirdIndicator.ex5。失败的情况下,将搜索文件MQL5\Indicators\MyIndicators\ThirdIndicator.ex5。请注意,路径分隔符应指定为双反斜杠'\\'。例如:iCustom(Symbol()、Period()、"MyIndicators\\ThirdIndicator"...)

    另外,如果在程序代码中找到通过iCustom进行的自定义指标调用,则编译器将隐式添加"#property tester_indicator XXX"指令(如果未指定)。

  2. 优化并显著加快HistorySelect函数的速度,该函数可以请求交易和订单的历史记录。
  3. 修正通过CopyTicksRange函数进行报价请求时出现的错误。该错误可能导致范围的开始设置为开始日期而不是指定时间。
  4. 通过Alert函数,优化和显著加快预警显示的速度。
  5. 交易品种最后报价时间(以毫秒表示)的新属性YMBOL_TIME_MSC。该属性可以使用SymbolInfoInteger函数获取。

29 五月 2020

MetaTrader 5 build 2470

程序端

  • 修正导致无法将名称中带有'-'、'='、'_'和'+'符号的交易品种添加到市场报价的错误。

MQL5

MetaEditor

  • 修正通过'\n'和'\r'行结束字符进行的扩展搜索。
更新文档。

22 五月 2020

MetaTrader 5平台Build 2450:“订阅”服务,用户界面改进以及修改MetaEditor功能

程序端

  1. 我们发布了全新的订阅服务。订阅提供了可协助您进行交易的额外服务。例如,您可以订阅来自知名提供商的高质量市场数据、分析收到的数据并开发新交易策略。您可以选择请求个人经理服务,以帮助您学习交易基础知识或掌握平台使用技能。

    该服务目前正在开发中,并将在下一版本中可用。

    工作原理
    新“订阅”部分已经添加到“导航”中。所有可用服务均显示在此部分。服务列表在交易商端配置,因此它取决于您所连接的服务器。为了便于浏览,将订阅分为不同类别。


    选择一项服务以查看它的详细描述。下一步,点击“订阅”。所有活动订阅都显示在单独的部分中。


    当您订阅市场数据时,相应的交易品种也可供在“市场报价”中选择。它们可以用作常规交易品种:在“市场报价”中查看报价,打开图表并使用对象和指标对其进行分析,以及在策略测试中运行EA。但不支持这些交易品种的交易操作。

    如何支付订阅费用
    您可以使用您交易账户的资金来支付服务费用。无需访问其他网站,支付可以直接从平台执行。

    不久,我们将添加可以通过连接到MetaQuotes-Demo购买市场数据的订阅
    我们计划建立订阅来自全球各地交易所的市场数据。只需单击几下,您就能收到来自纳斯达克(Nasdaq)、芝加哥商业交易所(CME),纽约证券交易所(NYSE)、圣保罗证券交易所(BOVESPA)和其他交易所的实时报价。您将可以使用MQL5.community账户为订阅付费,类似于市场、信号和主机服务购买。

  2. 在图表设置中添加新的“显示报价行情”选项。该选项显示/隐藏包含交易品种名称、时间周期和自定义注释的行。



  3. 在程序端设置和图表设置中添加“显示交易历史”选项。在之前的版本中可提供在图表上显示市场进入和退出的功能,但是这是通过“工具箱\历史记录”部分进行管理。新选项使历史显示的设置更加方便。您可以一次性为所有图表配置历史显示,也可以单独设置所需的图表。



    此外,您可以使用图表快捷菜单快速启用显示交易历史和交易水平:



  4. 在图表设置中添加新的“白底色”配色方案。


  5. 在持仓和订单快捷菜单中添加新命令,从而可以快速打开相关交易品种的“市场深度”和图表:



  6. 添加图表框架突出显示。当程序端中打开多个图表时,这将帮助您找到所需的交易品种图表。在“市场报价”中选择一个交易品种,在“交易”或“历史”部分中选择一个订单或持仓线,或一个警报,相应交易品种图表的框架将闪烁三次。


  7. 改进图表上交易水平的显示。
    • 为了保持图表整洁,不再显示持仓、订单和水平的单号
    • 标题以大写形式显示,提高可读性
    • 如果交易量为零,则显示的交易量不包含小数部分
    • 如果图表高度小于80像素,则隐藏水平


  8. 除了交易品种名称,还在图表的左上角添加显示交易品种描述(如果可用)。




  9. 未结订单和持仓列表中添加了新列:
    • 变化 — 操作盈利百分比
    • 价值 — 持仓的市场价值
    • 幻数 — 通过EA交易开立的订单和持仓的标识符(幻数)

    可以使用快捷菜单显示/隐藏新列。

    持仓值和幻数列也已添加到交易历史部分。

    此外,根据操作结果,未结持仓和历史记录部分的盈利字段会突出显示。

  10. 添加对负值价格的支持。这样可以在类似于近期油价跌至零值以下的情况下正常运行平台。这包括:
    • 在“市场报价”中显示报价
    • 显示图表和“市场深度”
    • 执行交易操作
    • 计算盈利和抵押

  11. 在“市场报价”中可以同时启用的最大交易品种数量已增加到5000。
  12. 修正在聊天中按最后更新日期排序。
  13. 优化和加速含有大量交易品种的操作(50,000及更多)。
  14. 修正在当前交易量与交易品种交易量变化步骤不符的情况下无法平仓的错误。

MQL5

  1. 优化和加速报价历史的操作。
  2. 添加用于处理数据库的新函数:
    • DatabaseReset — 将请求重置为初始状态,类似于DatabasePrepare调用。该函数旨在使用不同的参数值多次执行请求。例如,当使用INSERT命令将数据批量添加到表格中时,应为每个条目形成一组自定义的字段值。
    • DatabaseBind — 在请求中设置参数值。该函数在SQL请求包含"?"或"?N"参数化值的情况下被使用,这里N表示参数索引(从1开始)。
    • DatabaseBindArray — 将数组设置为参数值。

  3. FileSelectDialog函数添加FSD_FILE_MUST_EXIST标识。它指出所选文件必须存在。
  4. 描述期权的值已被添加到ENUM_SYMBOL_INFO_DOUBLE枚举:
    • SYMBOL_PRICE_CHANGE — 当前价格相对于上一交易日结束时价格的变化(以百分比表示)。
    • SYMBOL_PRICE_VOLATILITY — 价格波动率(以百分比表示).
    • SYMBOL_PRICE_THEORETICAL — 理论期权价格.
    • SYMBOL_PRICE_DELTA — 期权/warrant delta。显示当基础资产价格变动1时,期权价格变化的值。
    • SYMBOL_PRICE_THETA — 期权/warrant theta。期权价格每天因临时停止而损失的点数,即到期日临近时。
    • SYMBOL_PRICE_GAMMA — 期权/warrant gamma。显示delta的变化率 — 期权溢价变化的快慢情况。
    • SYMBOL_PRICE_VEGA — 期权/warrant vega。显示当波动率变化1%时,期权价格变化的点数。
    • SYMBOL_PRICE_RHO — 期权/warrant rho。反映了理论期权价格对利率变化1%的敏感性。
    • SYMBOL_PRICE_OMEGA — 期权/warrant omega。期权弹性 — 期权价格相对于基础资产价格变动的百分比。
    • SYMBOL_PRICE_SENSITIVITY — 期权/warrant sensitivity。通过期权基础资产价格应该变化多少点,来显示期权价格应该变化一个点。

  5. DatabaseExport函数中添加HEX格式的BLOB字段导出。
  6. 新CHART_SHOW_TICKER属性已添加到ENUM_CHART_PROPERTY_INTEGER — 在左上角显示交易品种报价行情。如果CHART_SHOW_TICKER设置为false,也会将CHART_SHOW_OHLC设置为false 并因此隐藏OHLC。   
  7. 改进编译器生成的代码质量。这可以提高其执行速度
  8. 修复与模板函数和类的编译和执行有关的错误。即是:
    • 重载模板函数调用的优先级不匹配错误
    • 模板方法/类生成错误
    • 尝试访问模板函数的模板参数的内部类引起的错误
    • 由使用内部类引起的模板类代码生成错误。
    • 在B<void*>之前使用B<int>目标对象时产生的错误
    • 创建具有内部类型C且多次封装的复杂对象时出现的错误
    • 将函数指针参数转换为const ref模板时出现的错误
    • 将内部结构传递给模板函数时出现的错误
    • 执行模板函数的优先级不匹配错误
    • for和ddo-while循环中的括号计数不正确
    • 类结构描述中的括号计数不正确
    • 在使用ArrayResize一次添加一个元素时速度变慢
    • 选择匹配的重载函数时出现的错误

  9. 修正CustomTicksReplace函数中出现的错误。
  10. 修正选择交易订单历史的显示周期。现在,该选择范围是基于订单执行日期,而不是之前使用的创建日期。

Python

  1. 路径参数已添加到initialize方法中 — metatrader.exe或metatrader64.exe的路径。如果没有指定此路径,模块会尝试自己查找可执行文件。
  2. 已添加以下新方法:
    • symbols_get — 从MetaTrader 5程序端接收所有交易品种。
    • symbols_total — 获取MetaTrader 5程序端中所有交易品种的数量。

  3. 为以下函数添加了根据交易品种组过滤: orders_getpositions_gethistory_orders_gethistory_deals_get。使用带有"group"参数的调用表格。
  4. 现在,order_sendorder_check返回值与包含原始请求完整描述的'request'字段一起传递。例如:
    ...
    comment=Request executed
    request_id=55
    retcode_external=0
    request=TradeRequest(action=1, magic=234000, order=0, symbol='USDJPY', volume=0.1, price=108.018, stoplimit=0.0, ...
        traderequest: action=1
        traderequest: magic=234000
        traderequest: order=0
        traderequest: symbol=USDJPY
        traderequest: volume=0.1
        traderequest: price=108.018
        traderequest: stoplimit=0.0
    ...
  5. 当在图表上启动时,Python脚本现在接收图表交易品种和周期(以分钟为单位)作为参数。
    import sys
    
    chart_symbol='unknown'
    chart_tf=1
    
    if len(sys.argv) == 3:
        chart_symbol, chart_tf = sys.argv[1:3];
    
    print("Hello world from", chart_symbol, chart_tf)
    
    >> Hello world from T.NYSE 15

MetaEditor

  1. 添加命令“添加现有文件夹”。它可以将所有支持的文件从所选目录批量添加到项目中。



  2. 扩展搜索和替换选项。

    添加带有部分正则表达式支持的扩展搜索功能。使用\r、\n、\t在搜索请求中指定换行符和制表符。搜索和替换对话框已合并为一个多选项卡对话框。


    添加一个用于在程序员社区搜索的单独选项卡。其中包括MQL5.community,以及GitHub、MSDN和Stack Overflow。

    来自外部资源的搜索结果显示在MetaEditor工具箱窗口中:



    此外,您可以从GitHub立即下载源文件。文件将下载到Projects文件夹的单独子目录中,该子目录根据GitHub项目名称进行命名。

    搜索结果还可以按日期排序。

  3. 添加可以在代码编辑窗口中快速更改字体大小。若要更改字体大小,请按下Ctrl并滚动鼠标滚轮。
  4. 添加可以将CSV文件的表格导入数据库表格。导入期间可以设置以下参数:
    • 数据库中的表名
    • 自动或手动文件编码检测
    • 数据分隔符类型
    • 开始时跳过指定的行数
    • 评论前缀
    • 如果文件具有列名
    • 如何确定换行符
    • 数据应该添加到新表还是现有表中
    • 字符串使用什么引号


  5. 添加用于将时间和颜色插入程序源代码的快速命令。从交互式日历和调色板中选择所需的值,然后编辑器以相应的格式将其插入。



  6. 由于现在仅生成64位代码,因此已禁用MQL4支持。
  7. 修正类片段操作。
  8. 修复对项目中绝对路径的支持。
更新文档。

6 三月 2020

新版MetaTrader 5 build 2360:扩展SQLite集成
  1. MQL5: SQLite数据库操作错误现在可使用标准的MQL5工具进行分析。已添加以下错误代码

    • ERR_DATABASE_ERROR — 普通错误。
    • ERR_DATABASE_INTERNAL — SQLite内部逻辑错误。
    • ERR_DATABASE_PERM — 拒绝访问。
    • ERR_DATABASE_BUSY — 数据库文件锁定。
    • ERR_DATABASE_LOCKED — 数据库表格锁定。
    • ERR_DATABASE_NOMEM — 内存不足,无法完成操作。
    • ERR_DATABASE_READONLY — 尝试写入只读数据库。
    • ERR_DATABASE_IOERR — 磁盘I/O错误
    • ERR_DATABASE_CORRUPT — 数据库磁盘映像损坏。
    • ERR_DATABASE_FULL — 数据库已满,插入失败。
    • ERR_DATABASE_CANTOPEN — 无法打开数据库文件。
    • ERR_DATABASE_PROTOCOL — 数据库锁定协议错误。
    • ERR_DATABASE_SCHEMA — 仅供内部使用。
    • ERR_DATABASE_TOOBIG — 字符串或BLOB超出大小限制。
    • ERR_DATABASE_CONSTRAINT — 由于违反约束而中止。
    • ERR_DATABASE_MISMATCH — 数据类型不匹配。
    • ERR_DATABASE_MISUSE — 程序库使用错误。
    • ERR_DATABASE_AUTH — 授权失败。
    • ERR_DATABASE_RANGE — 绑定参数错误,索引不正确。
    • ERR_DATABASE_NOTADB — 打开的文件不是数据库文件。

  2. MQL5:修正DatabaseImport函数的操作,其可将数据从文件导入到数据库表格中。
  3. MetaEditor:修正输出到日志的字符串长度超过32Kb。
  4. MetaEditor:修正从Python控制板(stdout, stderr)发送到编辑器错误部分的消息中出现的错误编码。
  5. 更新文档。

21 二月 2020

新版MetaTrader 5平台Build 2340:在Tester中管理账户设置,并扩展Python集成

MetaEditor

  1. 添加使用SQLite数据库的新功能。

    前一次平台更新中,我们直接从MQL5引入了对SQLite数据库操作的支持。主要功能可通过MetaEditor用户界面获得:

    • 创建并连接数据库
    • 查看表格并执行快速数据查询
    • 创建并执行SQL查询,回滚更改

    如何工作
    快速数据库创建功能可从MQL5向导中获得。您可以轻松创建第一个表格并定义它的字段。


    创建数据库之后,您将转到一个新导航版块,其中提供了管理数据的命令。

    数据库表显示在左侧窗口。双击表格名称,快速查询前1,000条记录。在此导航部分,您还可以创建和打开其他数据库,以及使用表格。

    数据库可以在主编辑器窗口中进行管理。在这里,您可以填写表格、搜索和选择数据、输入SQL查询和执行其他操作。


    关于MetaTrader 5对数据库操作的更多信息,请参阅文章“SQLite:本地处理MQL5中的SQL数据库”。

  2. 扩展对多语言项目的支持。此更新提供了使用Python脚本的更广泛的可能性:

    • 现在,此脚本可以使用MQL5向导进行创建,同时可以立即在代码中添加所需程序库的相关性。
    • 导航中添加了特殊图标,相关语法可在编辑器中获得。
    • 当通过MetaEditor运行脚本时,来自Python控制板(stdout, stderr)的消息出现在错误部分。



    点击编辑器中的“编译”,运行脚本:


    若要使用Python,请不要忘记在MetaEditor的Settings \ Compilers部分指定其路径。要启动使用MetaTrader 5程序库,请使用以下命令进行安装:
    pip install MetaTrader5
    关于Python集成的详细信息,请参阅相关文档
  3. MetaEditor:在导航中添加SQLite数据库文件的显示(*.db;*.sdb;*.sqlite;*.db3;*.s3db;*.sqlite3)。
  4. MetaEditor:修正错误保存项目属性。

MQL5

  1. 完全修订Python集成。此次更新涉及许多新函数和新命令命名。

    新命名
    现有命令已重命名如下:
    MT5Initialize       -> initialize
    MT5Shutdown         -> shutdown
    MT5TerminalInfo     -> terminal_info
    MT5Version          -> version
    MT5CopyRatesFrom    -> copy_rates_from
    MT5CopyRatesFromPos -> copy_rates_from_pos
    MT5CopyRatesRange   -> copy_rates_range
    MT5CopyTicksFrom    -> copy_ticks_from
    MT5CopyTicksRange   -> copy_tick_range

    新命令
    扩展了支持的命令列表。添加交易函数,以及用于处理交易历史和获得交易品种和当前账户信息的函数。

    • account_info()接收关于当前账户的信息。类似AccountInfoIntegerAcountIndoDoubleAccountInfoString
    • positions_total()接收持仓的数量。类似PositionsTotal
    • positions_get(symbol, ticket)接收交易品种或单号的持仓情况。
    • orders_total()接收订单的数量。类似OrdersTotal
    • orders_get(symbol, ticket)接收交易品种或单号的未结订单情况。
    • history_orders_total(from, to)接收指定历史时间段内的订单数量。
    • history_orders_get(from, to, position, ticket)接收指定历史时间段内的订单,根据单号或持仓进行筛选。
    • history_deals_total()接收历史记录中的交易数量。类似HistoryDealsTotal
    • history_deals_get(from, to, position, ticket)接收指定历史时间段内的交易,根据单号或持仓进行筛选。
    • symbol_info(symbol)接收有关交易品种的信息。类似SymbolInfoIntegerSymbolInfoDoubleSymbolInfoString
    • symbol_info_tick(symbol)接收交易品种最后报价。类似SymbolInfoTick
    • symbol_select(symbol, enable)启用/禁用市场报价中的交易品种。类似SymbolSelect
    • order_check(request)检查订单预付款。类似OrderCheck
    • order_send(request)发送订单到服务器。类似OrderSend
    • order_calc_margin(action, symbol, volume, price)计算订单的预付款。类似OrderCalcMargin
    • order_calc_profit(action, symbol, volume, price_open, price_close)计算盈利。类似OrderCalcProfit

    在图表上运行Python脚本
    Python脚本可以直接在平台图表上运行,类似于常规的MQL5程序。这些脚本在导航中使用特殊图标进行标记。


    脚本消息将显示在"Toolbox \ Experts"部分。如果在脚本中使用MetaTrader 5程序库,则脚本可以接收交易品种和账户数据,以及执行交易操作。

    Python脚本可以与其他MQL5脚本和EA并行地在同一图表上运行。要停止执行中断的脚本,请将其从图表中移除。

    附加保护
    若要在使用第三方Python程序端时启用附加账户保护,您可以在程序端设置中使用“通过外部Python API启用自动交易”选项。


    Python脚本只可在该选项禁用时执行交易操作。

  2. 明显加快重新启动MQL5程序和从MQL5程序重新创建自定义指标的速度。在某些情况下,操作执行速度要快100倍。
  3. 添加处理数据库的函数:

    DatabaseImport
    从文件导入数据到图表。
    long  DatabaseImport(
       int           database,          // 在DatabaseOpen中接收到的数据库句柄
       const string  table,             // 要向其插入数据的表格名称
       const string  filename,          // 要从中导入数据的文件名
       uint          flags,             // 标识组合
       const string  separator,         // 数据分隔符
       ulong         skip_rows,         // 要跳过的首行数
       const string  skip_comments      // 定义注释的字符串
       );

    DatabaseExport
    将表格或SQL查询结果导出到CSV文件。该文件用UTF-8编码创建。
    long  DatabaseExport( 
       int           database,           // 在DatabaseOpen中接收到的数据库句柄
       const string  table_or_sql,       // 表格名称或SQL查询
       const string  filename,           // 用于数据导出的CSV文件名
       uint          flags,              // 标识组合
       const string  separator           // CSV文件中的数据分隔符
       );

    DatabasePrint
    将表格或SQL查询结果打印到专家日志。
    long  DatabasePrint(
       int           database,          // 在DatabaseOpen中接收到的数据库句柄
       const string  table_or_sql,      // 表格或SQL查询
       uint          flags              // 标识组合
       );

  4. 添加FileSelectDialog函数,它可调用创建/打开文件或文件夹的系统对话框。
    int  FileSelectDialog(
       string   caption,              // 窗口标题
       string   initial_dir,          // 初始目录
       string   filter,               // 扩展过滤器
       uint     flags,                // 标识组合
       string&  filenames[],          // 包含文件名的数组
       string   default_filename      // 默认文件名
       );
    新函数使用户能够与MQL5程序进行有效互动。

  5. ENUM_DEAL_PROPERTY_DOUBLE枚举中的DEAL_FEE值。它用于交易费。该值表示由交易商收取的单独手续费类型。

Tester

  1. 添加在策略测试期间设置自定义交易账户设置的功能,例如交易限制、预付款设置和手续费。新功能提供了建模各种交易条件的扩展功能。


    常规设置
    在这部分,您可以设置账户上可同时存在的未结订单和持仓的最大数量。此外,您还可以配置不允许程序交易的时间段。

    预付款
    这部分可以配置将在测试中使用的预付款保留规则和持仓账户系统:

    • 风险管理 — 风险管理模式:场外交易(OTC)和场内交易(交易所)模式,单边系统和锁仓系统。更多详情请参阅帮助
    • 追加预付款水平 — 当达到该水平时,账户切换到追加预付款状态。
    • 强制平仓水平 — 当达到该水平时,取消所有订单并关闭所有持仓。这些水平可以用百分比和货币表示。在前一种情况下,它们被确定为账户的净值数值。如果选择“以百分比表示”,该水平定义为账户的“预付款水平”值(资金/预付款*100)。
    • 未兑现盈利 — 表示可用预付款中的当前浮动盈利/亏损:
      • 不使用未兑现盈利/亏损 — 计算中不包括持仓的盈利/亏损。
      • 使用未兑现盈利/亏损 — 计算中包括持仓的盈利/亏损。
      • 使用未兑现盈利 — 只包括盈利。
      • 使用未兑现亏损 — 只包括亏损。
    • 每日固定盈利 — 表示可用预付款中客户的每日固定盈利/亏损:
      • 使用每日固定盈利/亏损 — 包括一个交易日内收到的可用预付款盈利和亏损。
      • 使用每日固定亏损 — 只包括交易日内收到的亏损。交易日内,获得的盈利累计在专门账户字段(“冻结”)。交易日结束时,累计的盈利被取消冻结(归零)并被添加到账户结余中(包含在可用预付款中)。
    • 交易日结束时取消冻结固定盈利 — 该选项只在选择“使用每日固定亏损”选项时可用。如果启用此选项,则在交易日结束时将取消冻结累计的盈利(因此也包含在可用预付款中)。否则,这部分盈利将被继续冻结。

    手续费
    这部分提供管理所有交易操作收取的手续费。

    • 手续费包括单级手续费和多级手续费,即无论成交量/周转是多少,手续费都是相同的,或者可以根据交易规模而定。对应的数据在程序端显示。
    • 手续费可以在交易完成后,或在交易日/交易月结束时立即收取。
    • 单独的手续费可以依据成交方向进行收取:市场买入、市场卖出或两种都包括的操作类型。
    • 手续费可按照每手或每笔交易来收取。
    • 手续费能够以资金金额、百分比或点数来计算。


  2. 优化并加速市场扫描模式下的工作,在此过程中,对市场报价中可用的所有交易品种进行多次测试。
  3. 现在以点数计算盈利时会考虑交易或持仓大小。之前,只对每手执行计算。
  4. 改进优化结果图形的管理。已对缩放优化图形添加了滚动选项。双击一个图点,在测试通过表格中选择相应的结果。
更新文档。


13 十二月 2019

MetaTrader 5平台Build 2280

程序端

  1. 修正了导致无法从没有数据的图表中删除EA交易的错误。
  2. 修正Wine下图表标题显示的问题。

MQL5

  1. 改善MQL5程序的加载和编译速度。
  2. 双击图表现在作为单击事件传递到MQL5程序。在此之前,此类事件并未得到处理。
  3. 修正StringTrimRight函数的操作。
  4. 添加DirectX 3D可视化功能文档。

Tester

  1. 修正导致设置中的测试交易品种为空的错误。这个错误可能由在不同交易品种设置的交易账户之间切换引起的。新操作:如果在当前连接的交易账户中没有找到之前选择的交易品种,那么会自动选择市场报价中第一个可用的交易品种。

MetaEditor

  1. 修正重新打开项目属性时加载应用程序图标的问题。

更新用户界面翻译。
基于崩溃日志进行修复。
12345678