MetaEditor 帮助

代码分析

代码分析

分析意即在执行过程中收集程序参数。 在分析过程中,测量执行时间、单独函数的调用次数和程序代码行数。 利用这个工具,程序员可以找到并优化最慢的代码段。

性能分析既能够在交易平台的正常图表上执行,也能够在策略测试中使用历史数据。第一种情况下,程序将在实时更新的图表上启动。您可以在真实条件下检查程序的表现。而第二种情况下,程序会在可视模式下的策略测试中启动。这种方法的优点是您无需等待交易服务器的真实数据或某些交易条件的发生。

许多程序,尤其是指标,只能在新报价进入时执行计算(OnTick,OnCalculate)。因此,为了评估性能,您必须等候新的实时报价。当使用历史数据进行分析时,您可以立即提供所需的加载并测试程序性能,即使是在市场关闭的周末也可以进行。

启动分析

打开程序的源代码(MQ4 或 MQ5)。 在 调试 菜单或 标准 工具栏里, 按 "开始依据真实数据分析开始依据真实数据分析" 或 "开始依据历史数据分析开始依据历史数据分析"。

然后,将自动编译用于分析的特别程序版本。取决于选定的分析类型,程序将在交易平台的正常图表或策略测试器(以可视模式)上启动。

在交易平台中的图表上启动分析

默认情况下,应用程序在 EURUSD H1 上启动。 若要在另一个品种或周期上启动它,请在 MetaEditor 设置的 调试 选项卡上指定它们。

启动后,与应用程序一起工作一段时间,以便最大限度地尝试所有功能。 这对于分析器测量所有程序的函数和行数的执行时间是必要的。

然后停止分析: 从图表中删除程序,或单击停止分析 位于 调试 菜单或在 标准 工具栏里的停止分析。

为了获得更准确的性能分析结果,建议手工从图表中删除程序,而不是使用停止分析停止分析命令。

查看分析结果

分析完成后,其结果显示在工具窗口的 分析器 选项卡里。 结果能以两种模式查看: 按调用和按行。 使用关联菜单在它们之间切换。

函数按照调用模式

分析结果

在此模式下,分析结果通过函数显示:

  • 函数 ― 函数或类的方法名。
  • ― 行, 调用函数的所在行。 如果该函数在程序中的多个位置被调用,则其图标看起来像扩展。点击它,打开每次调用的信息。
  • 计数 ― 程序运行期间的函数调用次数。
  • 时间 ― 以微秒为单位的函数执行时间,以及相对于所有函数执行时间的百分比。 函数执行时间是所有在其内调用函数的执行总和。
  • 图示 ― 函数执行时间图示。

图标允许您指定函数类型:

  • 自定义函数 ―  自定义函数。
  • 系统函数 ― 系统函数。
  • 事件处理函数 ― 事件处理函数 (On*)。
  • 类方法 ― 类方法。

除了这些类型的函数外,分析器还会显示:

  • 系统函数 @global_initializations ― 有关初始化所有全局变量的数据。
  • 系统函数 @global_deinitializations ― 有关逆初始化所有全局变量的数据。

若要查看文件中的功能,请双击它。

分析器不显示所有函数,只显示程序操作期间调用的那些函数。

行模式函数

分析结果

在此模式下,程序操作时间的数据用行表示。 行按程序函数分组。

  • 函数 ― 函数名称。
  • ― 显示数据的行号。 若要查看每个函数行的执行时间数据,请单击 扩展 中的测试程序。
  • 计数 ― 在指定行中代码执行的次数。
  • 时间 ― 在指定的行中以微秒和 % 表示的代码执行时间。 每行的百分比值都是相对于函数执行时间显示的。 函数的百分比值是相对于整个程序的执行时间显示的。
  • 图示 ― 执行时间图示。

若要查看文件中的一行,请双击它。

快捷菜单

快捷菜单中有如下命令:

  • 打开 ― 跳转到源代码文件中的一行或一个函数。 同样的操作可以通过双击或按回车键来完成。
  • 展开所有 ― 展开所有折叠的函数。
  • 折叠所有 ― 折叠所有展开函数。
  • 函数行按行 查看分析结果。
  • 函数调用按调用 查看分析结果。
  • 导出 ― 导出分析结果以Open XML (MS Office Excel), HTML (Internet Explorer) 或CSV (文本文件)格式。
  • 自动排列 ― 启用/禁用自动调整字段大小。与按 A 键执行相同的动作。
  • 网格 ― 显示/隐藏网格来分开字段。与按 G 键执行相同的动作。