威力外汇

 找回密码
 注册

QQ登录

只需一步,快速开始

开启左侧

MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人

  [复制链接]
莫等闲 发表于 2023-3-21 23:14:37 | 显示全部楼层 |阅读模式
算法交易, 交易机器人
算法或自动交易是在金融市场里使用特殊的 交易机器人进行买入和卖出。在交易平台里, 这些程序也称作智能交易系统或 EA。

MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人

MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区

交易机器人基于预设的算法承担价格分析, 决策制定等, 依据结果, 在市场里执行交易操作。

交易机器人广泛用于金融交易, 并且, 相对于手工操盘, 自动操盘的份额正在持续增长。计算机程序有许多优点:
  • 永不疲惫
  • 无惧压力
  • 严格遵循预选算法
  • 它迅速地响应市场变化。

算法交易的一个特殊分支, 包括高频交易 (HFT)。顾名思义, 交易操作以高速、高频进行。交易平台提供所有必要的工具:
  • 快速有效的交易机器人编程语言 MQL5
  • 订单以最小延迟从平台发送, 并在交易服务器上处理。
  • 租用一部距经纪商最近的 虚拟平台 以便最小化网络延迟

阅读本节找到有关自动交易的所有内容:
  • 智能交易系统和自定义指标
  • 何处获得交易机器人和指标
  • 如何创建智能交易系统或指标
  • 策略测试
  • 策略优化
游客,本帖隐藏的内容需要积分高于 10000000 才可浏览,您当前积分为 0

上一篇:MetaTrader 5(MT5)帮助 → 价格图表, 技术和基本面分析 → 附加功能
下一篇:咨询嘉盛开户
一个绝顶高手,绝不仅仅是拥有绝世剑法,还要有绝顶聪明的思维。
武功再高 只是十人敌 百人敌,但有了顶尖的思维才可以成为万人敌。
回复

使用道具 举报

 楼主| 莫等闲 发表于 2023-3-21 23:35:21 | 显示全部楼层
智能交易系统和自定义指标
两大类别可以在自动交易应用里单独出场: 交易机器人和指标。第一类应用设计用于执行交易操作, 第二类程序用于分析价格和识别价格变化的形态。指标可以直接在交易机器人里使用形成完整的自动交易系统。


如何运行一款交易机器人或指标
若要开始运行一款智能交易系统, 将其加载到图表。最简单的方式是在 导航器 窗口双击智能交易系统, 或将其拖拽到图表上。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
这将带出智能交易系统的属性窗口。点击 "确定", 在图表上开始运行智能交易系统。如果一款智能交易系统已经成功开始, 它的名字和图标自动交易启用出现在图表的右上角。
如果图标是自动交易禁用, 则智能交易系统不可执行交易操作。在 智能交易系统设置 里启用自动交易, 以及交易平台里的选项。
  • 在一副图表上只能运行一个智能交易系统。如果您在同一图表上开始其它智能交易系统, 第一个将会被移除。
在一副图表上应用指标的数量没有限制。


开始之前设置应用程序
在图表上的应用程序开始之前会打开属性窗口。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
"通用" 栏包括有关应用程序的信息: 名称, 版本, 版权, 软件开发公司名称 (最后两个参数可表示相应网页的链接) 和描述。
如果智能交易系统需要一张许可证 (例如, 它是从 市场) 购买并下载的, 相应的许可证详情 (过期日期, 演示版) 显示在此处。
启动智能交易系统的独立参数可在窗口底部设置。
  • 允许信号修改设置 ― 此选项允许 MQL5 应用 订阅和退订信号, 以及编辑 信号设置。此功能可以从 MQL5 应用里访问信号数据库, 使您可以执行您自己的信号品质分析, 动态管理订阅和调整风险。更多有关信号管理功能的详情在 MQL5 参考 里提供。
  • 允许自动交易 ― 此选项限制智能交易系统的交易活动。这个限制在实时模式下测试智能交易系统的分析能力时很有用 (不会与回测混淆)。注意, 即使此选项被启用, 智能交易系统的自动交易也可在平台的常用设置里禁用。
所有智能交易系统的常用参数均在交易平台的 设置 里指定。


交易机器人和指标的输入参数
应用程序可以有输入参数。 它们允许您控制应用程序的行为, 令其使用更加灵活。应用程序也可以没有输入参数, 如果开发者没有提供它们。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区


如何修改应用程序参数
为了修改参数, 在其上双击并输入新值。


如何使用参数预设
您可以使用 "保存" 按钮来保存当前参数集合, 以及 "加载" 按钮来加载之前保存的集合。输入参数集合被存储在交易平台的 /Presets 文件夹。


如何恢复省缺设置
为了恢复省缺设置, 点击 "重置"。
已经加载的智能交易系统可以独立配置。不过, 智能交易系统的属性窗口在当前执行期间不能被打开。这可以在 Start() 函数调用之间的周期里完成。在此情况下智能交易系统不能开始, 直到其参数窗口关闭。如果智能交易系统的输入参数已经被修改, 点击 "确定" 按钮之后, 智能交易系统会使用新输入参数重新初始化。


使用外部函数程序 (DLL)
如果智能交易系统从其它 EX5 或 DLL 文件里使用函数导入, 则 "依赖" 栏出现。使用外部 DLL 可以扩展程序功能。然而, 它具有潜在的危险。这些功能应该只允许可信任的应用程序。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
由 EA 使用的文件显示在一颗树状列表里。绿色图标表示从 MQL5 程序里调用函数, 红色图标表示调用函数在 DLL 之内。
在栏顶部, 有一个启用/禁用 DLL 的选项:
  • 允许 DLL 导入 ― EA 可以使用 DLL 来扩展它们的功能。如果此选项启用, 则可无限制的使用程序库。如果 MQL5 应用用到 DLL, 但其导入被禁止 (此选项被禁用), 则 "确定" 按钮不会显示在应用程序开始窗口。
如果您不确定启动应用程序是否安全, 不要启用 "允许使用 DLL 导入" 选项。来历不明的应用程序也许通过使用第三方 DLL 导致破坏。


如何控制智能交易系统的交易
自动交易的可能性, 能够在交易平台层次或单独针对每一个交易机器人进行控制。
在工具条上的按钮 "自动交易启用 自动交易" (还有一个类似的选项在 选项 ― 智能交易系统) 启用/禁用平台上的自动交易。如果您将它关闭, 自动交易针对所有 EA 禁用, 即使您在 EA 设置 里单独启用了它。如果您启用了它, EA 将允许自动交易, 除非在智能交易系统参数里单独禁止自动交易。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
自动交易许可可以方便地从导航器窗口管理独立的智能交易系统, 而不是在它们的参数。在导航器窗口里, 显示所有连接到账户的运行中智能交易系统。除了智能交易系统名称, 智能交易系统运行时所在的图表也在列表中指定。一个小图标指示智能交易系统是否允许交易。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
关联菜单包括的命令可以启用或禁用所有智能交易系统的自动交易, 以及查看它们的属性或从图表上移除它们。


哪个平台设置影响自动交易?
影响自动交易的设置选项在平台的 智能交易系统 栏里。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
有如下设置:
  • 允许自动交易 ― 此选项允许或禁止使用 智能交易系统 和 脚本。如果它被禁止, 脚本或智能交易系统可以工作, 但不能交易。这个限制在实时模式下测试智能交易系统的分析能力时很有用 (不会与依靠历史数据测试混淆)。
    此选项启用/禁用整个平台的自动交易。如果您禁用它, 没有智能交易系统可以交易, 即使您在单独的 智能交易系统设置 里启用了它。如果您启用了它, 智能交易系统将允许交易, 除非在单独的智能交易系统参数里 禁用它。
  • 当账户切换时禁止自动交易 ― 此选项代表一个保护机制, 当账户改变时, 禁止智能交易系统和 脚本进行交易。它十分有用, 例如, 当从模拟账户切换到真实账户时。
  • 当切换综合配置时禁止自动交易 ― 有关当前工作区所有图表的设置信息存储在 综合配置 里。尤其是, 综合配置包括关于智能交易系统加载的信息。智能交易系统 也包含在综合配置里, 它将在下次新的分时抵达时开始工作。启用此选项可在改变综合配置时防止智能交易系统交易。
  • 当切换品种或周期禁止自动交易 ― 如果此选项被启用, 则图表周期和品种改变时, 加载于其上的 EA 禁止自动交易。
    允许 DLL 导入 (潜在危险, 仅允许可信任的应用程序) ― 扩展功能, mql5 应用 可以使用 DLL。此选项可以检查 "允许 DLL 导入" 参数使用的省缺值, 在 开始应用程序 期间。建议在使用来历不明的智能交易系统时, 禁止导入。
  • 允许 WebRequest 访问已有 URL 列表 ― MQL5 里的 WebRequest() 函数用来在网站间使用 GET 和 POST 请求接收和发送信息。为了让 MQL5 应用程序发送这些请求, 启用此选项并手工明确指定信任网站的 URL。出于安全原因, 此选项省缺禁用。
  • 若要从可信任列表里删除一个地址, 选择地址并按下 "删除"。


快速访问频繁使用的程序
为了快速访问频繁使用的程序, 使用 "收藏" 和热键。
选择交易机器人, 指标或脚本, 使用关联菜单将其添加到您的收藏。所有您收藏的程序显示在导航器的单独一栏, 并可容易地访问。
为了快速启动一个图表, 所有程序可以分配一个快捷键。这可以通过导航器窗口的关联菜单来完成。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
在以上例子中, 为脚本设置了 "Alt+1" 键。一旦它们被按下, 脚本立刻在当前打开的图表上启动。


服务
交易平台提供了一个特殊的程序类型,称为“服务”。这类应用程序可以为程序端使用自定义价格源以及实现实时交付来自外部系统的价格,如同直接在交易商交易服务器上实施。服务还可以用于在后台执行其他服务任务。
与EA交易、指标和脚本不同,服务并不链接特定的图表。这类应用程序在后台运行,当程序端启动时自动启动(如果之前已启动)。

使用“导航”管理服务:
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
要使用不同的参数运行多个EA交易或指标副本,您应该在不同图表上启动它们。在这种情况下,将创建不同的程序实例,然后彼此独立操作。服务没有链接到图表,因此形成了一种创建服务实例的特殊机制。从“导航”选择一个服务,并在快捷菜单中点击“添加服务”。这将打开一个标准的MQL5程序对话框,您可以在其中启用/禁用交易和对信号设置的访问,以及设置不同参数。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
可以使用对应的实例菜单启动和停止服务实例。要管理所有实例,请使用服务菜单。


Python脚本
Python语言包含多种机器学习、自动化处理以及数据分析和可视化库。现在,可以通过Python集成模块在平台中应用高级语言。
  • 可以从交易平台轻松快速地获取交易数据,然后使用Python工具进行分析:可以通过一个命令请求成千上万的交易品种
  • 获取账户交易状态和交易历史以计算统计数据
  • 按照您自己的算法执行交易操作
Python脚本可以直接在平台图表上启动,类似于常规的MQL5程序。这些脚本在导航中使用特殊图标进行标记。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
脚本消息显示在"Toolbox \ Experts"部分。
Python脚本可以与其他MQL5脚本和EA并行地在同一图表上启动。要停止循环执行的脚本,请将其从图表中移除。
若要在使用第三方Python程序库时启用附加账户保护,您可以在程序端设置中使用“通过外部Python API禁用自动交易”选项。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
Python脚本只可在该选项禁用时执行交易操作。
游客,本帖隐藏的内容需要积分高于 10000000 才可浏览,您当前积分为 0
一个绝顶高手,绝不仅仅是拥有绝世剑法,还要有绝顶聪明的思维。
武功再高 只是十人敌 百人敌,但有了顶尖的思维才可以成为万人敌。
回复 支持 反对

使用道具 举报

 楼主| 莫等闲 发表于 2023-3-21 23:55:32 | 显示全部楼层
何处查找交易机器人和指标
平台包含了许多用于分析的流行技术指标。不过, 您依然可以接受更多的工具用来进行交易。大量自定义指标可从交易平台里直接访问。
  • 市场 ― 平台的应用商店
  • 代码库 ― 免费智能交易系统和指标的源代码库
  • 自由职业 ― 从专业开发者那里定购交易应用的联线服务
  • MQL5 ― 用于开发智能交易系统和指标的编程语言


市场 ― 平台的应用商店
应用 市场 为购买交易机器人, 指标, 脚本和其它交易程序提供安全服务。它是在线商店, 提供用于金融市场的现成应用。此服务可为所有交易平台的客户所用。您可以在任何时间进入市场来购买或租用一款程序, 并在您的平台上直接运行它。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
为了购买选定产品, 进入其页面并点击 "购买"。在操作确认后, 应用被激活, 并根据它是否为智能交易系统、指标或脚本, 下载到相应的文件夹里。软件的名称被添加到 导航器 里, 从这里可以选择它在图表上运行。



代码库 ― 免费智能交易系统和指标的源代码库
从平台上您可以直接访问代码库, 获取海量用于自动交易的免费应用。所有应用都以源代码的形式提供。不过, 您可以简单地使用它们, 即使您并非精通编程。
当您下载了代码, 它会被自动编译, 在应用被创建并准备就绪之后, 会根据它是否为智能交易系统、指标或脚本, 保存到相应的应用目录。软件的名称被添加到 导航器 里, 从这里可以选择它在图表上运行。



自由职业 ― 从专业开发者那里定购交易应用的联线服务
如果您未能在代码库或市场里找到期望的应用, 您还可以从专业开发者那里定制, 自由职业服务 就在 MQL5 社区网站。

订购流程是安全的: 在开发期间付款会被冻结, 只有在客户认可应用结果之后才会将款项转给开发者。任何争议可以通过仲裁来解决。


MQL5 ― 用于开发智能交易系统和指标的编程语言
您可以利用 MQL5 编程语言开发您自己的交易机器人或指标。此语言基于流行的 C++ 编程语言概念。MQL5 也是高水平的面向对象的编程语言。然而, 由于它的专业面较窄, MQL5 兴盛于应对金融市场的挑战。
专业的 MetaEditor 可用于程序开发。它可识别语言结构: 它可提供如何使用函数的提示, 以及加亮程序源代码里的多种元素。因此, 编辑器强化了在交易程序源代码里的导航功能, 并可加速开发过程。

游客,本帖隐藏的内容需要积分高于 10000000 才可浏览,您当前积分为 0
一个绝顶高手,绝不仅仅是拥有绝世剑法,还要有绝顶聪明的思维。
武功再高 只是十人敌 百人敌,但有了顶尖的思维才可以成为万人敌。
回复 支持 反对

使用道具 举报

 楼主| 莫等闲 发表于 2023-3-22 00:06:30 | 显示全部楼层

如何创建一个智能交易系统或指标
交易平台包含了内置的编程语言 MetaQuotes Language 5 (MQL5), MetaEditor 开发环境和策略测试工具。
任何有关利用 MQL5 开发交易策略的信息可在 MQL5 社区 官方网站上找到。网站的 代码库板块包含现成应用的例程。


交易策略 MQL5 编程语言
交易平台有其自己的用于交易策略编程的内置编程语言 MetaQuotes Language 5。它是第五代 MQL 语言。它可以开发 智能交易系统, 将交易过程自动化, 以及实现您自己的交易策略。MQL5 也可以创建 自定义指标, 脚本 和函数库。
MQL5 特性:
  • 语言是面向对象的;
  • MQL5 语法类似于 C++;
  • 它包含大量用于分析报价, 管理仓位, 调用技术指标, 等等的必要函数;
  • 它也是高性能的语言;
  • 高保护性可对抗反编译: 全新复杂加密算法, 文件完整性检查, 和语言复杂性;
  • OpenCL支持在 MQL5 应用里面启用显卡进行计算;
  • 集成软件开发环境 MetaEditor 包括一个调试器。
所有语言构造和函数的详尽说明都在 MQL5 参考里提供。所有关于 MQL5 的必要信息也可以在开发者社区网站 https://www.mql5.com 里找到。


MetaEditor
MetaEditor 是一款集成 MQL5 开发环境。它是交易平台的一个组成部件。MetaEditor 允许您创建, 编辑, 编译和调试以 MQL5编写的源代码。
  • MQL5 向导用于创建模板和交易机器人
  • MetaEditor 包含的 MQL5 向导可助您快速创建 MQL5 程序。利用 MQL5 向导, 一位交易者无需编程技能就可简单地创建智能交易系统。您只需要选择用于智能交易系统的交易信号, 以及资金管理和尾随停止算法。智能交易系统代码基于所选参数自动生成。
  • 此外, MQL5 向导可以创建 MQL5 程序模板来简化程序员的工作。
  • 得助于源代码
  • MetaEditor 可识别语言结构: 如何使用函数的建议提示, 以及加亮源代码里的多种元素。因此, 编辑器强化了在交易程序源代码里的导航功能, 并可加速开发过程。
  • 调试
  • MetaEditor 可令您调试程序, 极大便利故障排除。源代码的单步执行可以监视变量值。
  • 代码优化剖析
  • 编辑器还提供软件剖析工具。您可以标识源代码中最慢的函数并优化您的程序。
  • 有关编程和源代码库的文章
  • 直接来自编辑器, 您可以找到大量 MQL5 编程指导。您可以另外访问拥有海量免费自动交易程序的代码库。
  • 具有版本支持的联线 MQL5 存储
  • 提供安全的文件存储, 并可恢复丢失文件, 以及通过您的 MQL5 社区帐户从任意电脑上访问您的代码。
更多有关 MetaEditor 的详情可在内置的帮助文件里找到。MQL5 的描述可在内置的参考和官方 MQL5 社区网站中找到。


关于交易应用程序开发的文章
MQL5 社区 网站提供了一个关于MQL4/MQL5编程的内容广泛的文章库。文章是创建应用程序的优秀向导,因为它们涵盖了许多涉及EA交易的实际任务。每周都会发布许多新文章。
所有可用文章的列表直接显示在MetaEditor。若要找到需要的资料,请使用在线搜索。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区


MQL5 应用的类型

三种主要交易应用类型可用。
智能交易系统
智能交易系统是机械交易系统, 可将分析和交易活动完全自动化, 在金融市场里高效地运作。它们可以在接收的信号基础上及时进行价格数据分析, 并控制交易活动。它们还有助于严格遵循交易策略, 消除情绪影响。

所有智能交易系统保存在交易平台的 /MQL5/Experts 文件夹。

自定义指标
自定义指标是定制开发的技术指标, 用于分析价格动态。交易战术和智能交易系统基于指标的算法开发。自定义指标仅用于分析品种的价格动态。指标不能交易且不能访问图表。

所有指标保存在交易平台的 /MQL5/Indicators 文件夹。

脚本
脚本是用 MQL5 编写的应用, 设计用于执行单一动作。脚本可同时执行分析和交易功能。不像 智能交易系统, 脚本根据请求执行。换言之, 智能交易系统连续工作, 而脚本执行其功能后退出。

所有脚本保存在交易平台的 /MQL5/Scripts 文件夹。

服务
服务可以为程序端使用自定义价格源以及实现实时交付来自外部系统的价格,如同直接在交易商交易服务器上实施。服务还可以用于在后台执行其他服务任务。
与EA交易、指标和脚本不同,服务并不链接特定的图表。这些应用程序在后台运行,当程序端启动时自动启动(除非被强制停止)。
所有服务都存储在交易平台的/MQL5/服务文件夹中。
在 Experts, Indicators, Scripts 和 Services 文件夹内, 应用可以保存在子目录中。它们的位置结构显示在 导航器 窗口。


如何创建并运行一个交易应用
点击 "创建 创建", 关联菜单位于 导航器 窗口内智能交易系统, 指标或脚本区域。MetaEditor 也可通过按下 F4 启动。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
启动 MetaEditor 并自动打开 MQL5 向导。使用它生成必要的程序模板来迅速地开始软件开发。让我们来创建一个 简单 脚本, 输出一条消息 "Hello world" 至 日志。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
在结果模板里, 我们添加代码 Print("Hello World"); 并按下 F7 编译它, 得到可执行文件。可执行文件带有扩展名 EX5, 并可在交易平台里运行。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
编译结果添加在编辑器的记录里。
按照应用类型, 源代码保存于 MQL5\Scripts\ 文件夹里。可执行文件在同一文件夹内创建。您现在可以返回交易平台并运行生成的脚本。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
使用自动交易程序的细节在章节 "智能交易系统和自定义指标" 里描述。


如何编辑交易应用
为了编辑交易机器人或自定义指标, 点击 "修改 修改", 关联菜单位于 导航器 窗口, 或者选中它并按回车键。这会启动 MetaEditor 并打开所选指标的源代码。在您完成指标修改之后, 重新编译它 (F7)。否则平台将使用其先前的未变更版本。


如何关闭交易应用
在平台里关闭交易应用有许多种方式。
交易机器人
自定义技术指标
脚本
  • 点击 "MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区删除" 或 "MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区删除指标窗口", 位于指标关联菜单;
  • 点击 指标列表 窗口里的 "删除";
  • 改变图表的 模板;
  • 重开图表。

  • 如果交易应用正在图表上运行, 即使您从 导航器 窗口里删除了相应的可执行文件, 它也不会关闭。
  • 若 在交易平台设置里 禁止智能交易系统, 并非完全禁止它们。此操作仅限制了智能交易系统进行交易。


如何运行下载的 MQ5 源代码文件
如果您只有源代码文件 (*.MQ5), 将之保存在相应类型的应用文件夹里:
  • 对于智能交易系统 ― /MQL5/Experts
  • 对于指标 ― /MQL5/Indicators
  • 对于脚本 ―/MQL5/Scripts

为了快速浏览交易平台的数据文件夹, 点击 "打开数据文件夹 打开数据文件夹", 位于 文件 菜单。

为了在交易平台里运行文件, 在 MetaEditor 里编译它:
  • 按下 F4 打开 MetaEditor。
  • 在 MetaEditor 里, 在导航器窗口里双击文件名来打开源代码文件。
  • 按下 F7 来编译它。

这可创建一个可执行的 *.EX5 文件, 此类型文件可以在交易平台里运行。
源文件 (*.MQ5) 不会显示在交易平台的 导航器 窗口里。
游客,本帖隐藏的内容需要积分高于 10000000 才可浏览,您当前积分为 0
一个绝顶高手,绝不仅仅是拥有绝世剑法,还要有绝顶聪明的思维。
武功再高 只是十人敌 百人敌,但有了顶尖的思维才可以成为万人敌。
回复 支持 反对

使用道具 举报

 楼主| 莫等闲 发表于 2023-3-22 22:09:33 | 显示全部楼层
策略测试
策略测试器允许您的交易策略 (智能交易系统) 实际应用于真实帐户之前, 对它们进行测试并优化。测试期间, 智能交易系统以初始参数依据历史数据运行。优化期间, 交易策略将使用不同的参数集合运行多次, 从中可以选出最恰当的组合。
策略测试器是多币种工具, 可令您测试/优化多金融工具交易策略。测试器自动处理所有交易策略中用到的品种信息, 所以您无需手工指定测试/优化时的品种列表。
策略测试器是多线程的, 因此可以使用所有可用的电脑资源。测试和优化可以使用指定的计算 代理 进行, 它们作为服务安装在客户的电脑上。代理独立工作, 并可并行处理优化递进。
可将无限数量的 远程 代理连接到策略测试器。此外, 策略测试器可以访问 MQL5 云网络。它带来了环球数以千计的代理, 并且这种计算能力可为所有交易平台客户所用。
除了智能交易系统的测试和优化, 您可以使用策略测试器的 可视模式 对自定义指标进行测试操作。这个 功能可以很简单地测试从 市场里下载的演示版自定义指标的操作。

如何测试
测试一款 智能交易系统 就是利用历史价格数据以固定参数单次运行。它可以在您将策略用于真实市场之前, 测试它是如何工作的。
观看视频: 如何在购买之前测试智能交易系统和指标
观看视频了解如何在您从市场购买之前测试交易机器人。市场上提供的每款产品都有演示版本可以在策略测试器里检测。详情请观看视频。




快速选择测试任务
tester(测试器)启动之后,用户看到的是一个标准任务列表,而不是多个设置,通过选择任务,用户可以快速开始测试。这对于之前没有任何经验的用户尤其有用。
开始页面会显示一些主要的策略测试和优化任务。此外,还可以从此页面重新启动一个以前执行的任务。如果您运行了多个任务,且这些任务不适合开始页面,那么请使用搜索栏。您可以通过任何参数找到测试:程序名称、交易品种、时间框架、建模模式等。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
选择任务之后,用户继续进一步测试参数设置:选择EA交易、交易品种、测试周期等。所选任务不需要的所有无关参数都将从设置页面中隐藏。例如,选择数学计算,只需要指定两个参数:选择要测试的程序和优化模式。在测试期间,将会隐藏延迟和报价生成的设置。
下面将解释所有可用的测试选项。

如何选择测试的交易机器人
点击 "测试 测试", 智能交易系统的关联菜单位于 导航器 窗口。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
点击之后智能交易系统在策略测试器里被选中。


对于多币种 EA, 在市场观察里启用所需的品种
策略测试器允许多品种交易策略的回测。这种交易机器人通常被称为多币种智能交易系统。
测试器在首次调用品种数据时自动从交易平台下载所需品种的历史数据 (并非交易服务器!)。只有缺失的价格历史数据才会从交易服务器下载并补充。
在您开始测试多币种智能交易系统之前, 在市场观察里启用测试所需品种。打开它的关联菜单, 点击 "品种品种" 并启用所需的工具。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区


选择测试设置
在您开始测试之前, 选择交易机器人将要测试操作的金融工具, 周期和模式。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
注意, 品种规范并非意味测试器仅使用这些历史数据。测试器自动下载智能交易系统里用到的所有品种信息。开始测试/优化之前, 自动从交易服务器下载主图表上品种的所有可用价格数据。如果网络速度较慢, 它可能会花费很长时间。
下载所有数据只会执行一次, 在下一次开始时只会下载缺失信息。
只有当前在 市场观察 里选中的品种可用于测试/优化。
在测试和优化期间, 所有必要品种的价格数据自动从服务器下载。
测试在指定日期的 0 时, 0 分, 0 秒开始和结束。所以测试/优化的开始日期包括在测试周期, 而结束日期未包括在内。测试结束于前一个交易日的最后一笔分时。另外您也不能指定大于当前的结束日期。在这种情况下, 测试将会一直执行到当前日期 (未包括)。


选择输入参数
输入参数 允许您控制智能交易系统的行为, 令其适应不同的市场条件以及指定的金融工具。例如, 您可以利用不同 止损 和 止盈 数值来探索智能交易系统的性能, 不同周期的移动均线用于市场分析和决策制定, 等等。

指定每个输入参数的数值。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
参数设置。 您可以使用快捷菜单,通过保存一套MQL5程序参数随时返回其当前设置:
若要在您的计算机上保存参数设置文件,请点击“保存”。这些文件可以在不同计算机的平台之间移动或发送给其他用户。
若要在当前平台保存用于未来使用的参数,请点击“保存新版本”。然后这些保存的预设值将被用于“加载新版本”的子菜单。他们就可随时从列表选择适当的版本来使用。


高级测试设置
您可以在策略测试期间指定自定义交易账户设置,例如交易限制、预付款设置和手续费。此选项可以模拟交易商提供的不同交易条件。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区


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

预付款
这部分可以配置将在测试中使用的预付款保留规则和持仓账户系统:
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
手续费
这部分提供管理所有交易操作收取的手续费:
  • 手续费包括单级手续费和多级手续费,即无论成交量/周转是多少,手续费都是相同的,或者可以根据交易规模而定。
  • 手续费可以在交易完成后,或在交易日/交易月结束时立即收取。
  • 单独的手续费可以依据成交方向进行收取:市场买入、市场卖出或两种都包括的操作类型。
  • 手续费可按照每手或每笔交易来收取。
  • 手续费能够以资金金额、百分比或点数来计算。

要应用当前交易账户的手续费设置,请启用“使用预定义手续费”选项。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区


自定义测试交易品种设置
您可以重写主要交易品种的设置,并为此执行测试/优化。几乎所有规格参数都可以重写:交易量、交易模式、预付款需求、执行模式和其他设置。因此,如果您需要在不同条件下检查EA,则无需创建单独的自定义交易品种和下载其历史记录。这可以通过更改标准的交易品种设置来完成。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
如果交易品种规格为自定义,则齿轮图标和交易品种图标将用星号标记。这表示自定义参数用于当前测试。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区


开始测试
为了开始测试, 在 "设置" 栏上点击 "开始"。测试进程显示在左侧。


何处查看测试结果
智能交易系统的测试结果显示在 "结果" 和 "图形" 栏里。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区


测试报告
测试结果详情显示在 "结果" 栏上。这一栏包括生成的测试结果, 包括利润和交易数量, 以及许多统计数值可以帮助评估交易机器人的性能。
其余图表示意小时、日和月为单位的交易操作数量和成功率的分布, 以及描绘交易策略的风险参数。
查看 测试报告 部分可得到详情。


测试图形
在 "图形" 栏上, 您可以目测智能交易系统针对所选工具在所选时间段内是如何成功执行的。
余额曲线 (蓝色线) 和净值曲线 (绿色) 显示在栏目的主要区域。日期显示在水平轴刻度, 余额/净值显示在垂直轴刻度。
余额每次变化时会显示在图表上 (当仓位平仓), 净值在余额变化之间按照确定周期显示。当测试使用交易所风险管理模式的账户时,图表仅显示净值,而结余和入金加载不被显示。这种账户的交易状态是根据净值水平进行评估。结余仅显示账户上的金额而忽略了交易者的资产和负债。入金加载(预付款/净值)不显示,因为在交易所计算模式下预付款等于当前资产/负债的贴现值,并且它随着净值而变化。

标签底部具备入金加载直方图,计算预付款和净值的比率(预付款/净值)。


在日志里的测试进度
测试进度反映在 "日志" 上。此外, 智能交易系统的消息添加到日志。在 可视测试 模式, 测试进度可直接从图表上看到。


图表上的测试进度
测试完成的那一刻, 您可以打开智能交易系统测试的图表 (所选的品种和周期)。点击 "打开图表 打开图表", 关联菜单位于 "结果" 栏。所有测试期间 EA 执行的成交显示在图表上。如果一个 模板 名为 tester.tpl 存在于交易平台文件夹 /profiles/templates, 它将用于打开图表。如果没有模板, 使用省缺的 (default.tpl)。
如果测试的智能交易系统使用了 指标, 它运行在测试的品种和周期, 它们也一并显示在图表上。不过, 如果在智能交易系统的源代码里实现了强制卸载指标 (函数 IndicatorRelease), 指标将不会显示在图表上。


在前测非优化周期里测试交易机器人
向前测试是在不同时间周期重复运行智能交易系统。此功能允许您避免某段历史数据的参数拟合。
为了开始前测, 在设置栏的前测字段选择 总周期 部分:
无 ― 不使用前测;
1/2 ― 指定周期的一半用于前测;
1/3 ― 指定周期的三分之一用于前测;
1/4 ― 指定周期的四分之一用于前测;
自定义 ― 手工指定前测开始日。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
总周期的第二部分 (最后) 一直用于前测。前测的开始日期以一根垂直线标记在图表上。
当启用前测时, 所选的部分从 "日期" 字段指定的周期中分离。第一部分是回测周期, 第二部分是前测周期。
前测结果显示在单独的 "前测" 栏上。前测的开始日期以一根垂直线标记在图表上。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区


可视测试
在交易平台的 策略测试器 里, 您可以按照可视模式测试智能交易系统和指标。此模式可以通过准确地直观智能交易系统在回测期间是如何执行操作的。每笔交易显示在金融品种的图表上。
要启用可视测试, 在设置里选择 "可视化":
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
可视测试当 优化 被启用时不可用。可视测试仅在 本地代理 上执行。如果选择 远程代理 进行测试, 在其关联菜单里使用 "选择选择" 命令选择一个本地代理。

设置 测试选项 和 配置参数, 然后点击 "开始"。
可视测试运行在一个新窗口里, 它模拟一个单独的交易平台: 它包含图表, 市场观察和工具箱窗口, 在此您可以查看交易操作和日志。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区


测试过程控制
使用工具条来暂停, 加速或减速测试。您也可以跳到特别的测试日期。
您可以便利地通过热键控制测试进程, 组合键列表就在菜单命令旁边。


监视图表上的智能交易系统测试
这个测试类型的主要目的是直观地分析智能交易系统性能。基于模拟的历史价格数据, 实时生成图表。交易机器人的操作显示在图表上。
交易操作显示为图标买入(一笔买入成交) 和卖出(一笔卖出成交)。在入场和离场之间显示一条虚线。
您可以修改图表外观, 使用 模板 来显示指标或图形对象。对于应用的模板, 其名称必须与测试的智能交易系统名称匹配, 例如 ExpertMACD.tpl。模板可放置于交易平台的 /profiles/templates 文件夹里。
在图表模式里可用的品种列表仅限于主要测试品种, 如同在智能交易系统里使用品种的数据。
图表时间帧 不能改变。在设置里选择的 周期 用于主要测试图表。智能交易系统请求的周期用于其它品种。
在品种间切换, 使用 "视图 ― 图表" 菜单。


在市场观察力查看价格数据
市场观察显示测试期间生成的价格。它类似于 交易平台 市场观察, 但有些特殊的功能。为了显示/隐藏此窗口, 在视图菜单里使用市场观察命令或按下 Ctrl+M。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
品种栏显示当前金融工具的价格信息。显示的品种列表受限于 主要测试品种, 如同在智能交易系统里使用品种的数据。
分时栏包括一个测试期间 生成的 价格图表。现实的分时数量限制在 64,000。

在数据窗口里查看柱线详情和指标数值
数据窗口显示有关价格 (OHLC) 的信息, 柱线的日期和时间, 点差, 交易量和 指标。在此, 您可以快速查找图表上选择点的特定柱线和应用指标的有关信息。此窗口可以通过点击视图菜单里的 "数据窗口" 或按下 Ctrl+D 来启用或禁用。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
窗口的上半部包括金融工具名称和图表周期。图表上的当前光标处的有关信息显示在下面。有关 指标 的信息在单独区域的单独子窗口里打开。


在工具箱里查看交易详情
为了详细了解智能交易系统执行的交易, 使用工具箱窗口。它有若干栏目, 信息如下:
  • 当前开仓和挂单
  • 历史订单和成交
  • EA 的历史交易请求, 包括修改挂单, 仓位停止位的请求等等。
有关交易操作的参数信息在章节 交易 和 历史中可用。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
其余的有关测试详情在日志里提供。它包括有关测试的信息, 和 EA 在测试期间执行的动作。
只要可视化打开, 测试代理的记录不会发送到平台的 策略测试器 上。然而, 它们可以通过交易平台关联菜单里的 "本地代理的本地日志" 命令来查看。


在可视模式里测试指标
可视测试模式允许您监视基于历史数据的 指标 行为。这个特性可令您在从 市场 里购买指标之前, 容易地测试它。下载免费演示版并在策略测试器里运行它。
选择 "指标" 程序的类型, 之后选择指标并点击 "开始"。可视模式自动启用。同法设置其余参数, 如同 交易机器人测试期间。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
指标行为显示在图表上, 它基于测试器模拟的分时序列绘制。
游客,本帖隐藏的内容需要积分高于 10000000 才可浏览,您当前积分为 0
一个绝顶高手,绝不仅仅是拥有绝世剑法,还要有绝顶聪明的思维。
武功再高 只是十人敌 百人敌,但有了顶尖的思维才可以成为万人敌。
回复 支持 反对

使用道具 举报

 楼主| 莫等闲 发表于 2023-3-23 14:45:33 | 显示全部楼层
本帖最后由 莫等闲 于 2023-3-23 14:57 编辑

策略优化
策略测试器允许您的交易策略 (智能交易系统) 实际应用于真实帐户之前, 对它们进行测试并优化。测试期间, 智能交易系统以初始参数依据历史数据运行。优化期间, 交易策略将使用不同的参数集合运行多次, 从中可以选出最恰当的组合。
策略测试器是多币种测试工具, 并可对多个金融工具进行策略优化。测试器自动处理所有交易策略中用到的品种信息, 所以您无需手工指定测试/优化时的品种列表。
策略测试器是多线程的, 因此可以使用所有可用的电脑资源。测试和优化可以使用指定的计算 代理 进行, 它们作为服务安装在客户的电脑上。代理独立工作, 并可并行处理优化递进。
可将无限数量的 远程 代理连接到策略测试器。此外, 策略测试器可以访问 MQL5 云网络。它带来了环球数以千计的代理, 并且这种计算能力可为所有交易平台客户所用。
除了智能交易系统的测试和优化, 您可以使用策略测试器的 可视模式 对自定义指标进行测试操作。这个 功能可以很简单地测试从 市场里下载的演示版自定义指标的操作。
如何优化
优化意即基于历史数据, 使用不同参数集合多次运行智能交易系统, 目的是从中发现最佳组合。多次运行期间, 智能交易系统使用不同参数集合进行测试, 从中发现最佳者。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
观看视频: 如何在购买之前测试智能交易系统和指标
观看视频了解如何在您从市场购买之前测试交易机器人。市场上提供的每款产品都有演示版本可以在策略测试器里检测。详情请观看视频。


快速选择优化任务
tester(测试器)启动之后,用户看到的是一个标准任务列表,而不是多个设置,通过选择任务,用户可以快速开始测试。这对于之前没有任何经验的用户尤其有用。
开始页面会显示一些主要的策略测试和优化任务。此外,还可以从此页面重新启动一个以前执行的任务。如果您运行了多个任务,且这些任务不适合开始页面,那么请使用搜索栏。您可以通过任何参数找到测试:程序名称、交易品种、时间框架、建模模式等。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
选择任务之后,用户继续进一步测试参数设置:选择EA交易、交易品种、测试周期等。所选任务不需要的所有无关参数都将从设置页面中隐藏。例如,选择数学计算,只需要指定两个参数:选择要测试的程序和优化模式。在测试期间,将会隐藏延迟和报价生成的设置。
下面将解释所有可用的优化选项。
如何选择交易机器人进行测试
点击 "MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区 测试", 智能交易系统的关联菜单位于 导航器 窗口。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
点击之后智能交易系统在策略测试器里被选中。
对于多币种智能交易系统, 在市场观察里启用所需的品种
策略测试器允许多品种交易策略的回测。这种交易机器人通常被称为多币种智能交易系统。
测试器在首次调用品种数据时自动从交易平台下载所需品种的历史数据 (并非交易服务器!)。只有缺失的价格历史数据才会从交易服务器下载并补充。
在您开始优化多币种智能交易系统之前, 在市场观察里启用测试所需品种。在关联菜单里, 点击 "MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区品种" 并启用所需的工具。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
选择优化设置
在您开始优化之前, 选择交易机器人将要测试操作的金融工具, 周期和模式。













MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区



  • 注意, 品种规范并非意味测试器仅使用这些历史数据。测试器自动下载智能交易系统里用到的所有品种信息。
  • 测试/优化之前, 自动从交易服务器下载主图表上品种的所有可用价格数据。如果网络速度较慢, 它可能会花费很长时间。
  • 下载所有数据只会执行一次, 在下一次开始时只会下载缺失信息。
  • 只有当前在 市场观察 里选中的品种可用于测试/优化。
  • 在测试和优化期间, 所有必要品种的价格数据自动从服务器下载。
  • 测试在指定日期的 0 时, 0 分, 0 秒开始和结束。所以测试/优化的开始日期包括在测试周期, 而结束日期未包括在内。测试结束于前一个交易日的最后一笔分时。另外您也不能指定大于当前的结束日期。在这种情况下, 测试将会一直执行到当前日期 (未包括)。


快速优化基于遗传算法, 可以在位于右侧的字段里选择 优化准则 启用。此字段设置参数, 基于许多成功的智能交易系统选择运行。选择的参数值越大, 结果越佳。
设置所有参数之后点击 "开始"。测试和优化过程启动。
  • 策略测试器的设置在开始测试/优化时被记忆。
  • 在正常的优化被停止的情况下 (当您按下 停止按钮) 所有之前计算的运行结果被保存。当恢复优化过程时, 它从上次计算的运行处继续。


选择输入参数
输入参数 允许您控制智能交易系统的行为, 令其适应不同的市场条件以及指定的金融工具。例如, 您可以利用不同 止损 和 止盈 数值来探索智能交易系统的性能, 不同周期的移动均线用于市场分析和决策制定, 等等。
优化是测试输入参数的不同数值组合来获取最佳结果。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
为了启用参数优化, 标记相应的选框。下一步设置开始和结束数值范围, 以及测试增量。您可以选择一个或多个参数。可能的组合总数显示在参数列表下方。
参数设置。 您可以使用快捷菜单,通过保存一套MQL5程序参数随时返回其当前设置:
  • 若要在您的计算机上保存参数设置文件,请点击“保存”。这些文件可以在不同计算机的平台之间移动或发送给其他用户。
  • 若要在当前平台保存用于未来使用的参数,请点击“保存新版本”。然后这些保存的预设值将被用于“加载新版本”的子菜单。他们就可随时从列表选择适当的版本来使用。
高级测试设置
您可以在策略测试期间指定自定义交易账户设置,例如交易限制、预付款设置和手续费。此选项可以模拟交易商提供的不同交易条件。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
常用
在这部分,您可以设置账户上可同时存在的未结订单和持仓的最大数量。此外,您还可以配置不允许程序交易的时间段。
预付款
这部分可以配置将在测试中使用的预付款保留规则和持仓账户系统:






MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区



手续费
这部分提供管理所有交易操作收取的手续费:
  • 手续费包括单级手续费和多级手续费,即无论成交量/周转是多少,手续费都是相同的,或者可以根据交易规模而定。
  • 手续费可以在交易完成后,或在交易日/交易月结束时立即收取。
  • 单独的手续费可以依据成交方向进行收取:市场买入、市场卖出或两种都包括的操作类型。
  • 手续费可按照每手或每笔交易来收取。
  • 手续费能够以资金金额、百分比或点数来计算。
要应用当前交易账户的手续费设置,请启用“使用预定义手续费”选项。











MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区



自定义测试交易品种设置
您可以重写主要交易品种的设置,并为此执行测试/优化。几乎所有规格参数都可以重写:交易量、交易模式、预付款需求、执行模式和其他设置。因此,如果您需要在不同条件下检查EA,则无需创建单独的自定义交易品种和下载其历史记录。这可以通过更改标准的交易品种设置来完成。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
如果交易品种规格为自定义,则齿轮图标和交易品种图标将用星号标记。这表示自定义参数用于当前测试。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
开始优化
为了开始优化, 在 "设置" 栏上点击 "开始"。优化过程显示在左侧。
何处查看优化结果
每次优化运行的详细结果显示在 "优化" 栏。这一栏包括生成的测试结果, 包括利润和交易数量, 以及许多统计数值可以帮助评估交易机器人的性能。
查看 测试报告 部分可得到详情。
优化报告可按照任意参数排序, 仅需点击每列标头。使用排序来找到最多盈利的参数组合, 并运行一次 单独测试 以便得到详细报告。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
每次优化运行, 会显示以下数值:
  • 递进 ― 测试运行的数量;
  • 结果 ― 根据 优化准则 得到的参数结果值, 用于选择最佳运行;
  • 利润 ― 运行之后得到的盈利/亏损;
  • 交易总数 ― 运行时得到的交易执行总数 (成交是有固定盈利或亏损的结果);
  • 盈利因子 ― 总赢利与总亏损的百分比。数值为一则表示参数相等;
  • 预期回报 ― 一个统计计算值, 反映一笔交易的平均盈利/亏损;
  • 回撤 ― 净值相对回撤, 最大亏损和最大净值的百分比。优化期间智能交易系统提取的资本在 回撤计算时已经考虑在内;
  • 恢复因子 ― 此值反映了策略的风险程度 (使用资金博取盈利)。它的计算方法, 所获盈利与最大回撤的比值;
  • 夏普比率 ― 一种经典的衡量标准,通常用于评估投资组合经理、基金业绩或交易系统的表现。该比率计算为(Return – Risk-Free Rate)/Standard Deviation of Return。在策略测试中,假设无风险比率(Risk-Free Rate)为零。夏普比率通常描述如下:
  • 夏普比率 < 0 ― 该策略无利润。不好。
  • 0 < 夏普比率  < 1.0 ― 风险不会得到回报。当没有其他选择时,可以考虑这种策略。不明确。
  • 夏普比率 ≥ 1.0 ― 这可能意味着风险得到回报,并且投资组合/策略可以显示结果。好。
  • 夏普比率 ≥ 3.0 ― 高数值表示在每笔特定交易中获得损失的概率非常低。非常好。
  • 优化输入 ― 额外的通用统计数值, 本次运行时的 输入参数 集合值显示于此。
使用关联菜单您可以显示/隐藏上述的一些列。为了您的方便,请勾选“切换到优化结果”选项:优化进程一旦完成,策略测试将会自动切换到结果标签。在日志标签的快捷菜单也可找到相同的命令。
使用过滤器隐藏列表中的不成功的通过:
  • 无交易通过
  • 亏损通过
  • 盈亏通过高于50%
  • 采收率通过低于1
  • 夏普比率通过低于0.5
优化结果表格配色如下,以便更有效地进行视觉分析:
  • 结余:大于初始入金的值用蓝色显示,小于初始入金的值用红色显示。
  • 盈利:大于零的值使用蓝色,小于零的值使用红色。
  • 期望收益:大于零的值使用蓝色,小于零的值使用红色。
  • 盈亏:从绿色(0-5%)到红色(高于30%)。
  • 夏普比率:从绿色(高于2)到红色(小于0)。
  • 采收率:从绿色(高于2)到红色(小于1)。
  • 如果优化包括 前测测试, 这一栏也包括相应的用于从后和向前测试的优化参数值 (优化准测)。您可以使用关联菜单在回测和前测之间切换。
  • 双击优化结果其中之一, 智能交易系统采用这次运行的参数开始 测试 (该优化已完成)。
  • 在 遗传优化 期间, 测试运行之一 (一名种群成员) 可能与前次测试运行的参数相同 (遗传)。在这种情况下, 本次运行不会显示在结果栏, 因为它已经有相同测试结果了。然而, 优化图形 显示所有测试运行的可视过程用于发现最佳结果。
  • 如果优化运行有一条红色背景线, 它意味着在智能交易系统操作期间有一个 错误 发生。还有一条相应的消息加到测试器 记录 里 ("测试出错")。


优化缓存
这个缓存存储了关于以前计算的优化传递的数据。策略测试存储了暂停之后恢复优化和避免重新计算已经计算的测试传递的数据。
优化缓存作为每个EA每组优化参数的单独的二进制文件存储在[平台数据目录]\Tester\cache。文件根据以下规则命名:ExpertName、Symbol、Period、StartDate、EndDate、GenerationMode、OptimizationMode、Hash、opt。其中:
  • ExpertName ― 优化EA交易的名称。
  • Symbol ― 交易品种。
  • Period ― 时间周期(M1,H1,...)。
  • StartDate ― 优化开始日期。
  • EndDate ― 优化结束日期。
  • GenerationMode ― 报价生成模式:0 ― “每一报价”,1 ― “基于真实报价的每一报价”,2 ― “一分钟高开低收(OHLC)”,3 ― “仅开盘价”,4 ― “数学计算”。
  • OptimizationMode ― 优化类型:0 ― “显示完整算法”,1 ― “计算算法快速遗传”,2 ― “市场报价中选择的所有交易品种”。
  • Hash ― 用于查找缓存文件的所有上述参数的散列导数。
缓存文件可以查看之前优化的结果。打开“优化结果”选项卡,选择一个EA交易和带有所需优化缓存的文件:
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
列表包含了磁盘上可用的所有EA交易优化缓存文件,且每个文件都显示了优化日期、测试设置(交易品种、时间周期和间隔)和输入参数。您还可以通过交易服务器过滤优化结果。
通过结果查看模式,您还可以更改您在优化初期选择的优化准则。它显示在结果选项卡,并确定了一组测试输入参数的质量。优化准则的值越高,所考虑的测试传递就越好。在选项卡顶部的列表中选择所需的准则,测试将在“结果”列自动重新计算所有值。
若要使用第三方程序分析结果,例如,Office Excel,优化报告可被保存为文件,通过快捷菜单的“MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区导出XML”命令。另外,快捷菜单还包括导出和导入缓存文件的命令。使用这些命令,在不同平台之间传输优化结果。
  • 为了优化磁盘空间的使用率,如果30天内没有访问,缓存文件被自动删除。
  • 在 遗传优化 期间, 每一代计算之后的过渡结果保存在高速缓冲区里 (平台_数据_文件夹/tester/cache/*.gen 下的一个文件)。因此, 优化过程可以在任意时间中断。即使遗传优化过程被外部因素中断 (例如, 电源故障), 一旦您重启, 优化将会自动从最后一次计算的后代继续。遗传优化高速缓存区一直保留, 直到 优化设置 被改变或优化过程完毕。
  • 在正常的优化被停止的情况下 (当您按下 停止按钮) 所有之前计算的运行结果被保存。当恢复优化过程时, 它从上次计算的运行处继续。


优化结果的可视性
交易平台里的策略测试器提供一个强力可视系统用于呈现优化结果。打开 "优化图形"。这一栏里包括若干类型的图表, 您可以使用关联菜单在它们之间切换。
零线 (平面)
所有图形种类, 除了 平板 有一个零线 (或窗格, 如果它是一个三维图表)。如果余额值用作 优化准则, 这条线通常意味着初始存款, 可以分别示意亏损和盈利。在所有的其它情况下这条线绘制在优化准则的零值。


结果图形和线性图表 (1D)
打开省缺的优化结果图形。智能交易系统和输入参数的每次递进在图形上显示为一个点。递进数量显示在水平坐标轴, 参数值是 优化准则 显示在垂直坐标轴。该图形根据优化准则的值,以绿色到红色的渐变色进行着色。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
线性图表 (1D) 显示选择的参数变化作为优化准则 (垂直坐标轴), 依据选择的 优化参数 之一为水平坐标轴。为了选择水平坐标轴参数, 在关联菜单里使用 "X 轴" 命令。
平面图表 (2D) 和三维图表 (3D)
在二维图形模式里, 为优化选择的 参数 变化显示在全部坐标轴上。优化准则的变化使用渐变色显示。颜色越深优化准则的值越高。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
在三维图形模式里, 为优化选择的 参数 变化显示在 X 和 Y 坐标轴上。而 优化准则 的变化显示在垂直的 Z 坐标轴上, 并使用渐变色。
为了选择水平坐标轴和垂直坐标轴的参数, 在关联菜单里使用命令 "X 轴" 和 "Y 轴"。
使用鼠标管理 3D 图表
  • 要移动一个图表, 用鼠标左键抓取其中间部分, 并移动光标。
  • 要围绕其垂直轴旋转一个图表, 抓取外侧中心, 并移动光标。
  • 要围绕其水平轴旋转一个图表, 按住 "Ctrl" 键并旋转鼠标轮。
  • 要缩放一个图表, 在图表中部按下 "Ctrl" 并按住鼠标左键, 垂直移动鼠标光标。
  • 要移动零平面, 在图表中部外侧按下 "Ctrl" 并按住鼠标左键, 垂直移动鼠标光标。
  • 要返回图表初始位置, 在其中部双击。
使用键盘管理 3D 图表
[td]
动作
显示/隐藏网格。
G
在固体填充和线填充之间切换。
空格
相机上移 (图表下移)。
上箭头
相机下移 (图表上移)。
下箭头
相机移动到右侧 (图表移动到左侧)。
右箭头
相机移动到左侧 (图表移动到右侧)。
左箭头
相机移近 (图表放大)。
加号
相机移远 (图表缩小)。
减号
围绕水平轴旋转图形向下。
Home
围绕水平轴旋转图形向上。
Page Up
围绕垂直轴逆时针旋转图形。
End
围绕垂直轴顺时针旋转图形。
Page Down
移动 零平面 向上一格。
Ctrl+上箭头
移动零平面向下一格。
Ctrl+下箭头
移动零平面向上 10 个单位。
Ctrl+Page Up
移动零平面向下 10 个单位。
Ctrl+Page Down
移动零平面到图形最大值。
Ctrl+Home
移动零平面到图形最小值。
Ctrl+End
增加零平面透明度。
Ctrl+加号
降低零平面透明度。
Ctrl+减号
设置零平面最大透明度 (它会消失)。
Ctrl+右箭头
设置零平面最小透明度 (它会变得不透明)。
Ctrl+左箭头
重置省缺图形设置。
在数字键板上的 "5" 键。


在前测非优化周期里测试交易机器人
向前测试是在不同时间周期重复运行最佳优化结果。此功能允许您避免某段历史数据的参数拟合。
为了开始前测, 在设置栏的前测字段选择 总周期 部分:
  • 无 ― 不使用前测;
  • 1/2 ― 指定周期的一半用于前测;
  • 1/3 ― 指定周期的三分之一用于前测;
  • 1/4 ― 指定周期的四分之一用于前测;
  • 自定义 ― 手工指定前测开始日。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
  • 总周期的第二部分 (最后) 一直用于前测。
  • 前测开始日期以垂直线显示在 优化图形上。


所选部分与 "日期" 字段里指定的周期分离。第一部分是回测周期, 第二部分是前测周期。
智能交易系统的全面优化 (慢速或快速) 是在回测周期里进行。在 10% (完全搜索) 或 25% (遗传算法) 的最佳运行被选择之后, 开始前测周期。
前测有一个递进数量的最低限制。如果最佳运行数量少于 256, 额外的最佳运行将被用于前测, 直到它们的数量达到 256。如果所有运行的数量少于 256, 它们会全部参与前测。


回测和前测结果可以在 "优化结果" 里 (在关联菜单里选择 "前测结果") 和 "前测结果" 栏里比较。结果吻合得越好, 越有可能在真实交易里智能交易系统将有上佳表现。
前测周期可视性优化结果在 "前测优化图形" 栏里可用。若要与回测比较这些结果, 使用关联菜单在它们之间切换。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
有关测试结果的详情, 请参阅章节 "何处查看优化结果" 和 "优化结果可视化"。
使用代理进行多线程测试
多线程策略测试器使用所有可用的电脑资源。测试和优化使用指定的计算代理进行, 它们作为服务安装在客户的电脑上。代理独立工作, 并可并行计算优化递进。
三种代理类型可用: 本地, 远程和云 (MQL5 云网络)。当您安装交易平台时, 本地代理会自动安装。它们的数量等于计算机逻辑核心的数量。
远程和云网络运行在其它电脑上。有关代理的详情, 请参阅 "如何使用本地代理领地加速优化" 和 "如何使用 MQL5 云网络加速优化"。
在策略测试器里打开 "代理" 部分, 并选择您打算用于优化的代理类型。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
提示和特点:
  • 为了节省笔记本电池, 可以禁用本地代理, 只使用远程和云里的。
  • 如果测试/优化没有手工完成 (既非在 设置栏 按下停止按钮, 也非关闭交易平台), 已用的本地代理进程在 5 分钟之内不会从电脑内存里卸载。这个特点可以避免连接时准备价格历史的延迟, 以及当同一智能交易系统以相同品种、时间帧和时间周期重新测试/重新优化之时启动代理进程。
  • 在平台安装时只有本地代理一并安装。它们仅用于本地平台的策略测试器。远程代理 也可被连接到全球 MQL5 云网络, 它只能通过 手工 安装。
如何使用本地代理领地加速优化
您可以购买一个多核处理器, 但它不能倍增并发任务。您可以在局域网里创建您自己的代理领地。
如何创建一个代理领地
在局域网的每台电脑上安装代理。如果平台安装在一台电脑上, 使用 "工具" 菜单打开测试代理管理器。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
否则, 下载一个单独的应用用来管理代理 MetaTrader 5 策略测试器代理 并走遍简单地安装过程。
在管理器的服务栏上:
  • 选择安装的代理数量。它们将按照逻辑核心的数量安装。
  • 输入连接代理的密码。
  • 选择连接的端口范围。
  • 点击 "添加"。
安装之后, 代理在局域网内可由其它电脑用户使用。
远程代理仅能用在 64 位系统上。
为节省流量和磁盘空间, 以及出于安全原因:
  • 智能交易系统的消息 (Print() 函数), 和关于交易操作的消息均未添加到日志里;
  • DLL 调用在远程代理中是禁用的。


如何连接代理
打开策略测试器。在 "代理" 栏里, 选择 "本地网络领地" 并在关联菜单里点击 "添加"。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
最简单和最快速的方法是自动扫描局域网内的一片范围的 IP 地址和端口。选择它们并输入安装时指定的代理连接密码。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
点击 "完成", 所有已发现代理可用于测试。
添加代理的其它选项:
  • 添加代理 (通过 IP 地址或域名) ― 指定安装代理的服务器 IP 地址或域名, 以及端口范围和连接代理的口令。
  • 从文件 *.mt5 导入― 选择此选项, 点击 "下一步" 并指定您打算导入的代理 *.mt5 文件。
使用 MetaTester 5代理管理器在电脑上安装的代理, 可以在同一电脑上作为远程代理连接。在计算期间, 如果处理器核心有富余的计算能力, 它们能使用所有计算能力来获取更高负载。


如何修改代理设置
为了修改设置, 在关联菜单里点击 "MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区编辑" 命令。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
以下字段在设置窗口里可用:
  • 名称 ― 代理名称;
  • 地址 ― 连接代理的 IP 地址和端口, 以冒号分隔;
  • 密码 ― 连接密码;
  • 启用 ― 此选项可以在测试和优化期间启用或禁用代理。
在本地代理设置里只有启用/禁用选项可用。
导入和导出远程代理设置
为令远程代理设置更加容易, 平台提供一个功能来导入和导出它们的设置。设置文件具有 *.mt5 扩展名。导入和导出命令位于 "代理" 栏的关联菜单里。
设置文件有如下格式: 名称;地址:端口;密码;描述;启用。
  • 名称 ― 代理名称;
  • 地址:端口 ― 连接代理的 IP 地址和端口, 以冒号分隔;
  • 密码 ― 连接密码;
  • 描述 ― 正在运行代理的硬件描述;
  • 启用 ― 代理操作模式: 1 ― 代理启用, 0 ― 代理禁用。
不同的代理设置相互间以换行分隔。
如何使用 MQL5 云网络加速优化
MQL5 云网络利用数以千计的电脑能力快速优化您的 EA。网络组合远程代理并在它们之中分派优化任务。策略测试器通过多个存取点连接云网络, 即按领域分派 (如, MQL5 云欧洲)。
MQL5 云网络特点
  • 整个 MQL5 云网络的能力仅用于 完整慢速优化。
  • 在 遗传优化 期间, 只使用一个存取点的代理。它与遗传算法的具体特点相连。
  • 当优化步骤总数超过一亿, 遗传优化模式自动启用。
  • MQL5 云网络仅能用在 64 位系统上。
  • 除了使用 MQL5 云网络, 您可以在网络里提供您的 CPU 计算能力。使用特别工具 MetaTester 安装远程代理并将其融入网络。
  • 参阅更多有关 MQL5 云网络信息, 请至 官方网站。
支付 MQL5 云网络使用费
  • 使用 MQL5 云网络的代理是付费的。开销计算公式在 单独章节 里描述。当前 MQL5 社区账户余额显示在云代理列表的上边。
  • 要使用 MQL5 云网络, 一名用户需要在 MQL5 社区的账户里至少有 1 美元。任务通过封包并发传送到若干存取点, 用户必须能够支付完整的任务。网络不能准确计算开销, 因为在开始计算之前, 所需时间和资源无法评估。
启用 MQL5 云网络
为了使用网络代理, 在关联菜单里使用命令 "MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区 启用"。由于 MQL5 云网络是付费服务, 用户必须在 MQL5 社区 网站上有一个账户, 通过它所有计费操作被执行。账户详情在平台设置的 MQL5 社区 栏里指定。
在启用 MQL5 云网络代理之前, 如果您未能在您的 MQL5 社区账户里指定详情, 您将被要求完成这步。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
如果您还未在网站上注册, 使用 创建新账户 链接。
使用 MQL5 云网络开始计算
就像常规的优化, 您需要设置所有的测试选项和智能交易系统的输入参数。在代理栏, 您可以监控策略测试器如何分派任务到可用的代理。显示每个存取点可用以及当前使用的代理数量。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
交易者可能需要在合理的时间内运行几十万次优化过程。利用多线程策略测试器和 MQL5 云网络, 在一小时内您就可以完成无网络环境需要数天的计算量。数千核心计算能力可直接在交易平台上使用。
一个绝顶高手,绝不仅仅是拥有绝世剑法,还要有绝顶聪明的思维。
武功再高 只是十人敌 百人敌,但有了顶尖的思维才可以成为万人敌。
回复 支持 反对

使用道具 举报

 楼主| 莫等闲 发表于 2023-3-23 15:24:07 | 显示全部楼层
本帖最后由 莫等闲 于 2023-3-23 15:52 编辑

测试功能
自动交易的想法如此具有吸引力, 因为交易机器人可以不间断地每周七天, 每天 24 小时工作。机器人完全免疫疲劳、怀疑、恐惧和心理问题。您只需要清晰地将交易规则正式化, 并在算法里实现它们, 机器人已准备就绪来不懈工作。但首先, 您必须确保以下两个重要条件:
  • 智能交易程序遵照交易系统的规则执行交易操做;
  • 在 EA 里实现的交易策略在回测时将显示利润。
所有这些问题, 可以使用交易平台内置的 策略测试器 来得到答案。
订单触发和执行
对于非证券工具, 触发各种挂单和止损/止盈是按照供给价和采购价执行的。操作按照触发时刻的当前市场供给价和采购价执行。
对于证券工具, 图表的作图和停止单的触发均以最后的成交价 (Last) 执行。限价单按照供给价和采购价触发。限价单以订单指定价位执行(无需滑移),而其他类型的订单则在当前市场卖价和买价执行(可以滑移)。
让我们以 Si-6.16 作为例子。当前价格, 供给价=72570, 采购价=72572, 且最后成交价格=72552, 则放置一笔上行突破买入单的执行价格是 72580。我们已经在价格流中收到新的价格:
  • 供给价=72588
  • 采购价=72590
  • 最后成交价=72580
对于证券工具, 最后成交价用于触发停止订单的激活。所以, 价格流中最后成交价=72580, 其结果将会导致上行突破买入单被激活。订单在当前市价采购价 = 72590 处执行 (市价买入操作)。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
在"新开盘价" 和 "1分钟 OHLC" 测试模式中,挂单,以及SL和TP要在订单中指定的价位执行。用于精确模式(每个报价和真实报价)的市价执行算法并不适合非精确模式。在一些模式中,不生成中间报价,因此请求订单价和当前价(开盘价或OHLC)之间的差异就非常重要。在“只开盘价”和“1分钟OHLC”中的请求价执行订单提供了更精确的测试结果。


创建柱形图
在策略测试中,只有通过非零的最后价才可创建交易所的交易品种柱形图。可能收到卖价和买价,计算指标,但柱形图未形成。在"每次报价" 模式没有非零最后价。因此,柱形图根据每次进入的报价而改变。
点差模拟
在供给价和采购价之间的差价称为点差。在测试期间, 点差并非模拟, 而是取自历史数据。如果历史点差小于或等于零, 则采用最后已知的点差值 (在生成时刻)。
在策略测试器里, 点差总是持续浮动的。
交易平台的全局变量
交易使用的全局变量在测试时也是模拟的, 但它们与真实的 平台全局变量无关, 这可以通过按下 F3 来查看。这意味着所有利用平台全局变量的操作在测试期间都是在平台之外执行的 (在测试代理上)。
测试期间历史数据下载
在测试进程开始之前, 平台会从交易服务器同步并下载测试用的该品种历史数据。首次运行时, 平台下载所有该品种的历史数据, 以后不再重复下载。未来只需要下载新的数据即可。
测试代理开始测试之后, 紧接着从交易服务器下载该品种测试所需的历史数据。如果测试期间需要用到其它金融工具的数据 (例如, 若是多币种智能交易系统), 测试代理在首次调用之时从交易服务器请求这些所需的历史数据。如果平台提供了历史数据, 它们被立即传送到测试代理。如果未提供数据, 平台向服务器请求并下载它们, 然后, 传递到测试代理。
计算交易操作的交叉汇率时, 也需要附加的金融工具数据。例如, 针对 EURCHF 进行策略测试, 且存款是 USD, 处理首笔交易操作之前, 测试代理向交易平台请求 EURUSD 和 USDCHF 的数据, 尽管策略中并未包含这些品种的直接调用。
额外的交易历史下载可以在从MQL5应用程序调用某个函数时启动:
历史记录下载
无历史记录下载
通过以下参数调用SymbolInfoDouble时:
  • SYMBOL_BID
  • SYMBOL_BIDHIGH
  • SYMBOL_BIDLOW
  • SYMBOL_ASK
  • SYMBOL_ASKHIGH
  • SYMBOL_ASKLOW
  • SYMBOL_LAST
  • SYMBOL_LASTHIGH
  • SYMBOL_LASTLOW
  • SYMBOL_TRADE_TICK_VALUE
  • SYMBOL_TRADE_TICK_VALUE_PROFIT
  • SYMBOL_TRADE_TICK_VALUE_LOSS
通过以下参数调用SymbolInfoInteger时:
  • SYMBOL_VOLUME
  • SYMBOL_VOLUMEHIGH
  • SYMBOL_VOLUMELOW
  • SYMBOL_TIME
  • SYMBOL_SPREAD
调用SymbolInfoTick时
调用时:
  • SymbolInfoString
  • SymbolName
  • SymbolSelect
  • SymbolInfoMarginRate
  • SymbolInfoSessionQuote
  • SymbolInfoSessionTrade
  • 其他函数这里未指定
  • 在左栏中未指定带有其他参数的SymbolInfoDouble和SymbolInfoInteger


在测试多币种策略之前, 建议将所有必要的历史数据下载到交易平台。这将有助于避免测试/优化时下载所需关联数据造成的延迟。您可以下载历史, 例如, 通过打开相应的图表并滚动到历史记录的开头。
测试代理会从平台接收压缩格式的历史数据。重新测试之时, 测试代理不会从平台下载数据, 因为它有先前测试运行时的数据。
  • 当代理首次向平台请求测试品种的数据时, 平台只会从交易服务器下载一次历史数据。历史数据会打包下载以便降低流量。
  • 分时数据不会通过网络发送, 它们是在测试代理上产生的。


多币种测试
策略测试器允许多品种交易策略的回测。这类智能交易系统惯常称为多币种智能交易系统, 因为原本上, 在之前的平台里, 测试执行只能针对单一品种。在平台测试器里, 我们可以模拟所有可用金融工具的交易。
测试器在首次调用品种数据时自动从交易平台下载所需品种的历史数据 (并非交易服务器!)。
在测试开始前期, 测试代理只下载缺失的, 以及用于指标计算的略多一点的数据。对于 D1 及以下的时间帧, 历史数据的最小下载量是一年。所以, 测试周期 M15 (每根柱线等于 15 分钟), 测试间隔一个月 2010.11.01-2010.12.01, 代理会向平台请求该品种整个 2010 年的历史数据。对于周线级时间帧, 代理请求 100 根柱线的历史数据, 大约是两年 (一年有 52 周)。对于月线级时间帧, 代理请求 8 年的历史数据 (12 月 * 8 年 = 96 月)。
如果所需的柱线由于某种原因不可用, 测试开始日期从更早之前自动平移到可用的柱线数量之处。
市场观察 在测试期间也是模拟的。省缺情况下, 在测试之始, 只有一个品种在测试器的市场观察里可用 - 即为正在运行测试的品种。所有需要访问的品种会自动连接到策略测试器的市场观察 (而非平台!)。
在您开始测试一个多币种智能交易系统之前, 在交易平台的市场观察里选择测试所需品种, 并下载所需要的数据。当首次调用 "外来" 品种时, 其历史数据将会在测试代理和交易平台之间自动同步。"外来" 品种与正在进行测试的品种不同。


当这类品种被首次调用时, 测试过程会暂停并从平台下载其周期数据到测试代理。同一时间, 生成此品种的分时序列也启用。
根据选择的分时生成模式为每个品种生成独立的分时序列。
这意味着在交易平台上进行多币种测试不需要任何额外的工作量。您只需要在平台上打开相应品种的图表。全部所需品种的历史数据自动从交易服务器下载可用数据。
策略测试里的时间仿真
在测试期间, 本地时间总是等于服务器时间。服务器时间一直对应于 GMT 时间。
若万一与服务器失去连接, 本地和服务器时间在策略测试器里将刻意等于 GMT。测试结果应该始终是相同的, 无论服务器连接建立与否。有关服务器时间的信息并未存储在本地, 而是取自服务器。
测试期间的图形对象
在测试/优化期间图形对象不会作图。所以, 在测试/优化期间引用创建对象的属性, 智能交易系统将收到零值。
此限制不适用可视化模式的测试。


在 "仅用开盘价" 模式里的柱线同步
策略测试器允许测试所谓的 "多币种" 智能交易系统。一款多币种 EA 可以交易两个或更多的品种。
多品种交易的策略测试, 在测试器里需要强加一些额外的技术:
  • 生成这些品种的分时;
  • 计算这些品种的指标值;
  • 计算这些品种所需的保证金;
  • 同步全部交易品种已生成的分时序列。
根据选择的交易模式, 策略测试器生成并播放每个金融工具的分时序列。新柱线对于每个已开盘的品种, 与其它品种的柱线是否开盘无关。这意味着在多币种测试期间, 一种情形可能发生 (且经常如此), 一个金融工具的新柱线已经开盘, 然而其它的品种却还没有新柱线。这一切就像实时报价。
只要使用 "每笔分时" 和 "1 分钟 OHLC" 测试模式, 这种高保真历史模拟在测试器里不会导致任何问题。对于这些模式, 在一根蜡烛条里生成的分时数量, 足以等待来自不同品种的柱线同步。但是我们如何在 "仅用开盘价" 模式里测试多币种策略, 此时交易的金融工具是否需要柱线同步?在此模式下, 只在对应于柱线开盘时间的那一笔分时里调用 EA。
例如: 我们针对 EURUSD 测试智能交易系统, 一根新的 EURUSD 一小时蜡烛条已开盘。我们可以简单地识别这个事实 - 在 "仅用开盘价" 模式里, 新分时抵达事件与柱线开盘时刻相对应。但这不保证 EA 里所用的 GBPUSD 也同样有新蜡烛条开盘。
测试代理
在平台上执行测试是使用 测试代理。本地代理自动创建并启动。本地代理的数量等同于逻辑核心的数量。
每个测试代理有自己的 全局变量拷贝, 其与平台无关。平台是个管理者, 分派任务给本地和远程代理。一旦给定参数的智能交易系统测试任务完毕, 代理将结果返回给平台。只有一个代理用于单个测试。
代理根据品名将来接收自平台的历史数据保存到单独的文件夹, 所以 EURUSD 的历史数据保存在名为 EURUSD 的文件夹内。此外, 金融工具的历史根据它们的来源分离。用于存储历史数据的结构如下:
测试器目录\Agent-IP地址-端口\bases\源名称\history\品名


例如, 从 MetaQuotes-Demo 服务器下载的 EURUSD 历史数据可以存储在文件夹 测试器目录\Agent-127.0.0.1-3000\bases\MetaQuotes-Demo\EURUSD。
本地代理在完成测试后进入待机模式, 并等待 5 分钟以便接受下一次任务, 所以这不会浪费时间来启动下一次调用。仅当等待周期过后, 本地代理停机并从 CPU 内存里卸载。
如果测试被用户中断 (按钮 "取消" 按下) 或者交易平台关闭, 所有本地代理立即停止操作并自内存中卸载。
在平台和代理之间的数据交换
当您启动一次测试, 平台将参数分为多个块发送给代理:
  • 用于测试的输入参数 (并发模式, 测试间隔, 金融工具, 优化准则, 等等。)
  • 在市场观察里选择的品种列表
  • 测试金融工具的规格 (合约大小, 用于止损和止盈的最小停止级别, 等等)
  • 将要被测试的智能交易系统和其输入参数值
  • 有关附加文件的信息 (库, 指标, 数据文件)
对于每个参数块, 均会创建一个 MD5 格式的数字指纹并发送给代理。MD5 哈希码对于每个集合都是唯一的, 它的体积远比计算其值的信息量要小得多。
代理接收哈希码并与存储的集合进行比较。如果给定参数块的指纹在代理上不能用, 或接收的哈希码与存在的不同, 代理会重新请求参数块。这样就减少了平台和代理之间的流量。
测试之后, 代理返给平台测试运行的结果, 显示在选卡 "测试结果" 和 "优化结果": 盈利, 成交数量, 夏普比率, OnTester() 函数的结果, 等等。
优化期间, 平台用小型封包分派任务给代理, 每个封包包含若干任务 (每个任务就是带有一组输入参数的单一测试)。这可减少平台和代理之间数据交换的时间。
出于安全原因, 代理从不会将接收自平台的 EX5 文件 (EA, 指标, 程序库, 等等) 保存到硬盘, 所以运行代理的电脑不能用来接收数据。所有其它文件, 包括 DLL, 被记录在沙箱中。您不能在远程代理上测试具有 DLL 调用的智能交易系统。
测试结果由平台加入到特殊的结果高速缓存里, 如果需要的话, 从那里可以很容易地访问它们。对于每组参数, 平台在结果高速缓存里搜索可能的结果, 以避免重复以前的运行。如果没有发现这一组参数的结果, 则代理发起一个任务来运行测试。
平台和代理之间的流量都是加密的。
分时数据不会通过网络发送, 它们是在测试代理上产生的。


使用交易平台的共享文件夹
所有测试代理彼此间, 以及与交易平台都是隔离的: 每个代理都拥有自己的记录日志的文件夹。此外, 测试期间所有代理的文件操作都在文件夹 代理名/MQL5/Files 文件夹内执行。不过, 您可以使用平台的共享文件夹实现本地代理和交易平台之间的交互。
使用 DLLs
为了加速优化, 本地代理之外, 您还可以使用 远程代理。在此情况下, 访问远程代理有一些限制。首先, Print() 函数的结果, 以及有关开仓、平仓的消息不会记录在代理的日志内。只有少量信息会加到日志里, 防止电脑硬盘因智能交易系统的错误操作导致的海量消息阻塞。
第二个限制 - 测试智能交易系统期间, DLL 调用是被禁止的。出于安全原因, DLL 调用在远程代理上是被绝对禁止的。在本地代理上, 只有当 "允许导入 DLL" 权限启用时, 测试智能交易系统才可调用 DLL。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
当第三方智能交易系统 (脚本, 指标) 需要 DLL 调用时, 您应该明白在平台设置里允许此选项的风险。无论智能交易系统如何使用 - 作为测试或者在图表上运行。
测试功能
自动交易的想法如此具有吸引力, 因为交易机器人可以不间断地每周七天, 每天 24 小时工作。机器人完全免疫疲劳、怀疑、恐惧和心理问题。您只需要清晰地将交易规则正式化, 并在算法里实现它们, 机器人已准备就绪来不懈工作。但首先, 您必须确保以下两个重要条件:
  • 智能交易程序遵照交易系统的规则执行交易操做;
  • 在 EA 里实现的交易策略在回测时将显示利润。
所有这些问题, 可以使用交易平台内置的 策略测试器 来得到答案。
订单触发和执行
对于非证券工具, 触发各种挂单和止损/止盈是按照供给价和采购价执行的。操作按照触发时刻的当前市场供给价和采购价执行。
对于证券工具, 图表的作图和停止单的触发均以最后的成交价 (Last) 执行。限价单按照供给价和采购价触发。限价单以订单指定价位执行(无需滑移),而其他类型的订单则在当前市场卖价和买价执行(可以滑移)。
让我们以 Si-6.16 作为例子。当前价格, 供给价=72570, 采购价=72572, 且最后成交价格=72552, 则放置一笔上行突破买入单的执行价格是 72580。我们已经在价格流中收到新的价格:
  • 供给价=72588
  • 采购价=72590
  • 最后成交价=72580
对于证券工具, 最后成交价用于触发停止订单的激活。所以, 价格流中最后成交价=72580, 其结果将会导致上行突破买入单被激活。订单在当前市价采购价 = 72590 处执行 (市价买入操作)。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
在"新开盘价" 和 "1分钟 OHLC" 测试模式中,挂单,以及SL和TP要在订单中指定的价位执行。用于精确模式(每个报价和真实报价)的市价执行算法并不适合非精确模式。在一些模式中,不生成中间报价,因此请求订单价和当前价(开盘价或OHLC)之间的差异就非常重要。在“只开盘价”和“1分钟OHLC”中的请求价执行订单提供了更精确的测试结果。


创建柱形图
在策略测试中,只有通过非零的最后价才可创建交易所的交易品种柱形图。可能收到卖价和买价,计算指标,但柱形图未形成。在"每次报价" 模式没有非零最后价。因此,柱形图根据每次进入的报价而改变。
点差模拟
在供给价和采购价之间的差价称为点差。在测试期间, 点差并非模拟, 而是取自历史数据。如果历史点差小于或等于零, 则采用最后已知的点差值 (在生成时刻)。
在策略测试器里, 点差总是持续浮动的。
交易平台的全局变量
交易使用的全局变量在测试时也是模拟的, 但它们与真实的 平台全局变量无关, 这可以通过按下 F3 来查看。这意味着所有利用平台全局变量的操作在测试期间都是在平台之外执行的 (在测试代理上)。
测试期间历史数据下载
在测试进程开始之前, 平台会从交易服务器同步并下载测试用的该品种历史数据。首次运行时, 平台下载所有该品种的历史数据, 以后不再重复下载。未来只需要下载新的数据即可。
测试代理开始测试之后, 紧接着从交易服务器下载该品种测试所需的历史数据。如果测试期间需要用到其它金融工具的数据 (例如, 若是多币种智能交易系统), 测试代理在首次调用之时从交易服务器请求这些所需的历史数据。如果平台提供了历史数据, 它们被立即传送到测试代理。如果未提供数据, 平台向服务器请求并下载它们, 然后, 传递到测试代理。
计算交易操作的交叉汇率时, 也需要附加的金融工具数据。例如, 针对 EURCHF 进行策略测试, 且存款是 USD, 处理首笔交易操作之前, 测试代理向交易平台请求 EURUSD 和 USDCHF 的数据, 尽管策略中并未包含这些品种的直接调用。
额外的交易历史下载可以在从MQL5应用程序调用某个函数时启动:
历史记录下载
无历史记录下载
通过以下参数调用SymbolInfoDouble时:
  • SYMBOL_BID
  • SYMBOL_BIDHIGH
  • SYMBOL_BIDLOW
  • SYMBOL_ASK
  • SYMBOL_ASKHIGH
  • SYMBOL_ASKLOW
  • SYMBOL_LAST
  • SYMBOL_LASTHIGH
  • SYMBOL_LASTLOW
  • SYMBOL_TRADE_TICK_VALUE
  • SYMBOL_TRADE_TICK_VALUE_PROFIT
  • SYMBOL_TRADE_TICK_VALUE_LOSS
通过以下参数调用SymbolInfoInteger时:
  • SYMBOL_VOLUME
  • SYMBOL_VOLUMEHIGH
  • SYMBOL_VOLUMELOW
  • SYMBOL_TIME
  • SYMBOL_SPREAD
调用SymbolInfoTick时
调用时:
  • SymbolInfoString
  • SymbolName
  • SymbolSelect
  • SymbolInfoMarginRate
  • SymbolInfoSessionQuote
  • SymbolInfoSessionTrade
  • 其他函数这里未指定
  • 在左栏中未指定带有其他参数的SymbolInfoDouble和SymbolInfoInteger


在测试多币种策略之前, 建议将所有必要的历史数据下载到交易平台。这将有助于避免测试/优化时下载所需关联数据造成的延迟。您可以下载历史, 例如, 通过打开相应的图表并滚动到历史记录的开头。
测试代理会从平台接收压缩格式的历史数据。重新测试之时, 测试代理不会从平台下载数据, 因为它有先前测试运行时的数据。
  • 当代理首次向平台请求测试品种的数据时, 平台只会从交易服务器下载一次历史数据。历史数据会打包下载以便降低流量。
  • 分时数据不会通过网络发送, 它们是在测试代理上产生的。


多币种测试
策略测试器允许多品种交易策略的回测。这类智能交易系统惯常称为多币种智能交易系统, 因为原本上, 在之前的平台里, 测试执行只能针对单一品种。在平台测试器里, 我们可以模拟所有可用金融工具的交易。
测试器在首次调用品种数据时自动从交易平台下载所需品种的历史数据 (并非交易服务器!)。
在测试开始前期, 测试代理只下载缺失的, 以及用于指标计算的略多一点的数据。对于 D1 及以下的时间帧, 历史数据的最小下载量是一年。所以, 测试周期 M15 (每根柱线等于 15 分钟), 测试间隔一个月 2010.11.01-2010.12.01, 代理会向平台请求该品种整个 2010 年的历史数据。对于周线级时间帧, 代理请求 100 根柱线的历史数据, 大约是两年 (一年有 52 周)。对于月线级时间帧, 代理请求 8 年的历史数据 (12 月 * 8 年 = 96 月)。
如果所需的柱线由于某种原因不可用, 测试开始日期从更早之前自动平移到可用的柱线数量之处。
市场观察 在测试期间也是模拟的。省缺情况下, 在测试之始, 只有一个品种在测试器的市场观察里可用 - 即为正在运行测试的品种。所有需要访问的品种会自动连接到策略测试器的市场观察 (而非平台!)。
在您开始测试一个多币种智能交易系统之前, 在交易平台的市场观察里选择测试所需品种, 并下载所需要的数据。当首次调用 "外来" 品种时, 其历史数据将会在测试代理和交易平台之间自动同步。"外来" 品种与正在进行测试的品种不同。


当这类品种被首次调用时, 测试过程会暂停并从平台下载其周期数据到测试代理。同一时间, 生成此品种的分时序列也启用。
根据选择的分时生成模式为每个品种生成独立的分时序列。
这意味着在交易平台上进行多币种测试不需要任何额外的工作量。您只需要在平台上打开相应品种的图表。全部所需品种的历史数据自动从交易服务器下载可用数据。
策略测试里的时间仿真
在测试期间, 本地时间总是等于服务器时间。服务器时间一直对应于 GMT 时间。
若万一与服务器失去连接, 本地和服务器时间在策略测试器里将刻意等于 GMT。测试结果应该始终是相同的, 无论服务器连接建立与否。有关服务器时间的信息并未存储在本地, 而是取自服务器。
测试期间的图形对象
在测试/优化期间图形对象不会作图。所以, 在测试/优化期间引用创建对象的属性, 智能交易系统将收到零值。
此限制不适用可视化模式的测试。


在 "仅用开盘价" 模式里的柱线同步
策略测试器允许测试所谓的 "多币种" 智能交易系统。一款多币种 EA 可以交易两个或更多的品种。
多品种交易的策略测试, 在测试器里需要强加一些额外的技术:
  • 生成这些品种的分时;
  • 计算这些品种的指标值;
  • 计算这些品种所需的保证金;
  • 同步全部交易品种已生成的分时序列。
根据选择的交易模式, 策略测试器生成并播放每个金融工具的分时序列。新柱线对于每个已开盘的品种, 与其它品种的柱线是否开盘无关。这意味着在多币种测试期间, 一种情形可能发生 (且经常如此), 一个金融工具的新柱线已经开盘, 然而其它的品种却还没有新柱线。这一切就像实时报价。
只要使用 "每笔分时" 和 "1 分钟 OHLC" 测试模式, 这种高保真历史模拟在测试器里不会导致任何问题。对于这些模式, 在一根蜡烛条里生成的分时数量, 足以等待来自不同品种的柱线同步。但是我们如何在 "仅用开盘价" 模式里测试多币种策略, 此时交易的金融工具是否需要柱线同步?在此模式下, 只在对应于柱线开盘时间的那一笔分时里调用 EA。
例如: 我们针对 EURUSD 测试智能交易系统, 一根新的 EURUSD 一小时蜡烛条已开盘。我们可以简单地识别这个事实 - 在 "仅用开盘价" 模式里, 新分时抵达事件与柱线开盘时刻相对应。但这不保证 EA 里所用的 GBPUSD 也同样有新蜡烛条开盘。
测试代理
在平台上执行测试是使用 测试代理。本地代理自动创建并启动。本地代理的数量等同于逻辑核心的数量。
每个测试代理有自己的 全局变量拷贝, 其与平台无关。平台是个管理者, 分派任务给本地和远程代理。一旦给定参数的智能交易系统测试任务完毕, 代理将结果返回给平台。只有一个代理用于单个测试。
代理根据品名将来接收自平台的历史数据保存到单独的文件夹, 所以 EURUSD 的历史数据保存在名为 EURUSD 的文件夹内。此外, 金融工具的历史根据它们的来源分离。用于存储历史数据的结构如下:
测试器目录\Agent-IP地址-端口\bases\源名称\history\品名


例如, 从 MetaQuotes-Demo 服务器下载的 EURUSD 历史数据可以存储在文件夹 测试器目录\Agent-127.0.0.1-3000\bases\MetaQuotes-Demo\EURUSD。
本地代理在完成测试后进入待机模式, 并等待 5 分钟以便接受下一次任务, 所以这不会浪费时间来启动下一次调用。仅当等待周期过后, 本地代理停机并从 CPU 内存里卸载。
如果测试被用户中断 (按钮 "取消" 按下) 或者交易平台关闭, 所有本地代理立即停止操作并自内存中卸载。
在平台和代理之间的数据交换
当您启动一次测试, 平台将参数分为多个块发送给代理:
  • 用于测试的输入参数 (并发模式, 测试间隔, 金融工具, 优化准则, 等等。)
  • 在市场观察里选择的品种列表
  • 测试金融工具的规格 (合约大小, 用于止损和止盈的最小停止级别, 等等)
  • 将要被测试的智能交易系统和其输入参数值
  • 有关附加文件的信息 (库, 指标, 数据文件)
对于每个参数块, 均会创建一个 MD5 格式的数字指纹并发送给代理。MD5 哈希码对于每个集合都是唯一的, 它的体积远比计算其值的信息量要小得多。
代理接收哈希码并与存储的集合进行比较。如果给定参数块的指纹在代理上不能用, 或接收的哈希码与存在的不同, 代理会重新请求参数块。这样就减少了平台和代理之间的流量。
测试之后, 代理返给平台测试运行的结果, 显示在选卡 "测试结果" 和 "优化结果": 盈利, 成交数量, 夏普比率, OnTester() 函数的结果, 等等。
优化期间, 平台用小型封包分派任务给代理, 每个封包包含若干任务 (每个任务就是带有一组输入参数的单一测试)。这可减少平台和代理之间数据交换的时间。
出于安全原因, 代理从不会将接收自平台的 EX5 文件 (EA, 指标, 程序库, 等等) 保存到硬盘, 所以运行代理的电脑不能用来接收数据。所有其它文件, 包括 DLL, 被记录在沙箱中。您不能在远程代理上测试具有 DLL 调用的智能交易系统。
测试结果由平台加入到特殊的结果高速缓存里, 如果需要的话, 从那里可以很容易地访问它们。对于每组参数, 平台在结果高速缓存里搜索可能的结果, 以避免重复以前的运行。如果没有发现这一组参数的结果, 则代理发起一个任务来运行测试。
平台和代理之间的流量都是加密的。
分时数据不会通过网络发送, 它们是在测试代理上产生的。


使用交易平台的共享文件夹
所有测试代理彼此间, 以及与交易平台都是隔离的: 每个代理都拥有自己的记录日志的文件夹。此外, 测试期间所有代理的文件操作都在文件夹 代理名/MQL5/Files 文件夹内执行。不过, 您可以使用平台的共享文件夹实现本地代理和交易平台之间的交互。
使用 DLLs
为了加速优化, 本地代理之外, 您还可以使用 远程代理。在此情况下, 访问远程代理有一些限制。首先, Print() 函数的结果, 以及有关开仓、平仓的消息不会记录在代理的日志内。只有少量信息会加到日志里, 防止电脑硬盘因智能交易系统的错误操作导致的海量消息阻塞。
第二个限制 - 测试智能交易系统期间, DLL 调用是被禁止的。出于安全原因, DLL 调用在远程代理上是被绝对禁止的。在本地代理上, 只有当 "允许导入 DLL" 权限启用时, 测试智能交易系统才可调用 DLL。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
当第三方智能交易系统 (脚本, 指标) 需要 DLL 调用时, 您应该明白在平台设置里允许此选项的风险。无论智能交易系统如何使用 - 作为测试或者在图表上运行。

游客,本帖隐藏的内容需要积分高于 10000000 才可浏览,您当前积分为 0
一个绝顶高手,绝不仅仅是拥有绝世剑法,还要有绝顶聪明的思维。
武功再高 只是十人敌 百人敌,但有了顶尖的思维才可以成为万人敌。
回复 支持 反对

使用道具 举报

 楼主| 莫等闲 发表于 2023-3-23 16:09:58 | 显示全部楼层
本帖最后由 莫等闲 于 2023-3-23 16:15 编辑

测试报告
您可以在 "结果" 栏里查看详细报告。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
以下参数可用于测试报告:
  • 历史品质 ― 此值代表用于测试的价格数据品质。它被确定为正确和错误的一分钟数据的百分比比率。具有不同OHLC值的交易量等于1的柱形图被认为是不正确的。历史缺口也被认为是不正确的数据。根据大小, 测试周期划分为 1 - 199 份间隔。它们当中的每一份都将分别进行历史数据品质检测。时间间隔会以不同颜色显示在历史数据品质的图形指标上 (浅绿色代表品质优良, 红色表示此间隔的品质低于 50%)。
  • 柱线 ― 生成的测试 品种 柱线数量;
  • 分时 ― 测试期间分时模拟数量;
  • 品种 ― 品种数量, 智能交易系统测试期间的请求信息;
  • 初始存款 ― 初始存款 用于测试;
  • 提款 ― 在测试期间智能交易系统的提款数额。如果没有提款, 则此字段不会显示;
  • 净盈利总额 ― 所有交易的财会结果。
  • 毛利 ― 所有可盈利交易的资金总和;
  • 毛损 ―  所有亏损交易的资金总和;
  • 结余亏损绝对值 ― 整个测试期间,初始入金和低于初始入金最低水平之间的差额。AbsoluteDrawDown = InitialDeposit - MinimalBalance,请见亏损计算示例。
  • 结余亏损最大值 ― 最高本地结余值和下一个最低账户结余值之间入金货币的差额。最大亏损值以百分比形式显示在括号中。MaximumDrawDown = Max[Local High - Next Local Low],请见亏损计算示例。
  • 结余亏损相对值 ― 最高本地结余值和下一个最低账户结余值之间的差额百分比。最大亏损值以货币形式显示在括号中。RelativeDrawdown = Max[(Local High - Next Local Low)/Local High * 100)],请见亏损计算示例。
  • 净值亏损绝对值 ― 整个测试期间,初始入金和低于初始入金最低水平之间的差额。这个计算类似于结余亏损绝对值。
  • 净值亏损最大值 ― 最高本地净值和下一个最低净值之间入金货币的差额。最大亏损值以百分比形式显示在括号中。这个计算类似于结余亏损最大值。
  • 净值亏损相对值 ― 最高本地净值和下一个最低净值之间的差额百分比。最大亏损值以货币形式显示在括号中。这个计算类似于结余亏损相对值。
  • 盈利因子 ― 毛利和毛损的比率。数值为一则表示参数相等;
  • 恢复因子 ― 此值反映了策略的风险程度, 即智能交易系统冒险使用资金博取盈利的数额。它的计算方法, 所获盈利与最大回撤的比值;
  • AHPR ― 一笔交易的算术平均值 (变化百分比)。每笔交易的净值变化算术平均值。算术平均相较于几何平均, 通常会高估交易系统的盈利能力。如果几何平均值意味着每笔交易结果的乘积, 那算术平均只是对其求和。数值在括号里给出。如果交易系统可盈利, 则数值为正。如果交易系统亏损, 则数值为负。
  • GHPR ― 一笔交易的几何平均值 (变化百分比)。几何平均值显示每笔交易之后资本变化的平均倍数。相对净值变化往往比预期回报的评估更加客观。资本变化百分比在括号里给出。括号内的负数意味着每笔交易都会减少平均资本。
  • 预期回报 ― 一个统计计算值, 显示一笔交易的平均回报。而且, 它可当作显示下一笔交易的预期回报;
  • 夏普比率 ― 一种经典的衡量标准,通常用于评估投资组合经理、基金业绩或交易系统的表现。该比率计算为(Return – Risk-Free Rate)/Standard Deviation of Return。在策略测试中,假设无风险比率(Risk-Free Rate)为零。夏普比率通常描述如下:
  • 夏普比率 < 0 ― 该策略无利润。不好。
  • 0 < 夏普比率  < 1.0 ― 风险不会得到回报。当没有其他选择时,可以考虑这种策略。不明确。
  • 夏普比率 ≥ 1.0 ― 这可能意味着风险得到回报,并且投资组合/策略可以显示结果。好。
  • 夏普比率 ≥ 3.0 ― 高数值表示在每笔特定交易中获得损失的概率非常低。非常好。
  • LR 相关性 ― 线性回归相关性。余额图是虚线, 它可以用直线来近似。为了找到直线的坐标, 应用了最小二乘法。将所得直线称为 "线性回归", 并可评估余额图距线性回归的偏离。余额图和线性回归之间的相关性可以评估资本变动的程度。余额曲线上陡峰和陡谷越少, 参数值越接近 1。数值靠近零意味着交易随机性。
  • LR 标准误差 ― 余额距线性回归偏离的标准误差。此指数用于评估余额图表距线性回归偏离的资金值。系统的初始条件类似 (相同初始净值) 比较才有意义。数值越高, 余额距直线的偏离越多。
  • 保证金级别 ― 测试期间注册的最小保证金级别百分比;
  • Z-分数 ― 一系列测试 (交易之间的可能相关性)。系列测试可以评估交易之间的相关性程度, 并评估交易历史当中是否包括隐藏的或多/或少连续盈利/亏损的周期超过正常分布。已检测的相关性可用于资金管理方法, 和/或修改交易系统算法来最大化盈利, 和/或去除依赖。在交易之间, 不去发现彼此间的真实相关性, 以及找了然而相关性不存在, 这两者都很危险。Z-分数表示距西格玛正态分布的偏差。数值高于 3 表示获胜一次之后紧随一次失败的概率是 3 西格玛 (99.67%)。数值低于 -3 表示获胜一次之后再次获胜的概率是 3 西格玛 (99.67%).
  • OnTester 结果 ― 智能交易系统 OnTester 函数的返回值, 作为测试结果。它对应于优化的 自定义准则 ;
  • 交易总数 ― 交易总数 (成交结果有固定的盈利/亏损);
  • (成交总数) ― 成交总数;
  • 空头交易 (胜率 %) ― 有盈利结果的卖出金融工具的交易数量, 和可盈利空头交易的百分比;
  • 多头交易 (胜率 %) ― 有盈利结果的买入金融工具的交易数量, 和可盈利多头交易的百分比;
  • 盈利交易 (总数的 %) ― 可盈利交易的数额和交易总数的百分比;
  • 亏损交易 (总数的 %) ― 亏损交易的数额和交易总数的百分比;
  • 最大盈利交易 ― 所有可盈利交易的最大盈利;
  • 最大亏损交易 ― 所有亏损交易的最大亏损;
  • 平均盈利交易 ― 每笔交易的平均盈利值 (盈利总额除以获胜交易的数量);
  • 平均亏损交易 ― 每笔交易的平均亏损值 (亏损总额除以失败交易的数量);
  • 最大连续获胜 ($) ― 最长获胜序列和它们的赢利总额;
  • 最大连续亏损 ($) ― 最长亏损序列和它们的亏损总额;
  • 最大连续盈利 (计数) ― 可盈利交易序列的最大盈利, 以及序列中可盈利交易的数量;
  • 最大连续亏损 (计数) ― 亏损交易序列的最大亏损, 以及序列中亏损交易的数量;
  • 平均连续获胜 ― 在可盈利序列中的获胜交易平均值;
  • 平均连续亏损 ― 在亏损序列中的亏损交易平均值。
  • 相关性 (盈利, MFE) ― 回报之间的相关性, 和 MFE (最大有利偏移, 持仓期内产生的最大潜在盈利)。每笔持仓在开仓和平仓之间有其最大盈利和最大亏损。MFE 显示盈利如何在价格上有利偏移。每笔持仓有其结果和两个参数 ― MFE 和 MAE (最大不利偏移, 持仓期内产生的最大潜在亏损)。因此, 每笔持仓都可在平面上绘出, 此处 MFE 沿 X-轴作图, 而结果沿 Y-轴作图。结果靠近 MFE 时, 意味着更彻底的有利价格偏移。图上的直线显示函数 盈利=A*MFE+B 的近似位置。相关性(盈利,MFE) 可以评估盈利/亏损和 MFE 之间的关系。数值接近 1 意味着交易与近似直线贴合得很好。数值接近零意味着弱相关性。MFE 体现实现潜在盈利的能力。
  • 相关性 (盈利, MAE) ― 结果之间的相关性和 MAE (最大不利偏移)。每笔持仓在开仓和平仓之间触及其最大盈利和最大亏损。MAE 显示亏损如何在价格上不利偏移。每笔持仓有其结果和两个参数 ― MFE 和 MAE。因此, 每笔持仓都可在平面上绘出, 此处 MAE 沿 X-轴作图, 而回报沿 Y-轴作图。结果靠近 MAE 时, 意味着更彻底的保护, 对抗不利价格偏移。图上的直线显示函数 盈利=A*MAE+B 的近似位置。相关性(盈利,MAE) 可以评估盈利/亏损和 MAE 之间关系。数值接近 1 意味着交易与近似直线贴合得很好。数值接近零意味着弱相关性。MAE 描绘持仓周期内的回撤, 以及保护性止损的使用特点。
  • 相关性 (MFE, MAE) ― MFE 和 MAE 之间的相关性。它显示两行特性之间的相关性。理想值是 1 - 我们取最大盈利并在持仓周期内进行保护。数值接近零, 则表示几乎没有任何相关性。
  • 最小持仓时间 ― 在开仓和完整平仓之间的最小时间。完整平仓是将其全部结算; 计算值不考虑部分平仓或仓位反转。
  • 最大持仓时间 ― 在开仓和完整平仓之间的最大时间。
  • 平均持仓时间 ― 测试期间, 开仓和完整平仓之间的平均时间。
如果在智能交易系统测试/优化期间执行了提款操作, 则 回撤 率的计算会考虑这些操作。
提款前计算的回撤值由程序记忆。提款时, 将会在当前余额和净值基础上重新计算。如果新计算出的回撤值大于以前保存的, 则程序将记住这个新值。如此, 最高回撤值被纳入最终报告。


图解
以下图解在测试报告中提供:
小时级入场
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
此图解示意按小时级入场成交分布 (开仓, 加仓和仓位反转)。图解柱线标记的交易时段颜色: 亚洲 (黄色), 欧洲 (绿色) 以及美洲 (红色)。
交易日级入场
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
此图解示意按交易日级入场成交分布 (开仓, 加仓和仓位反转)。
月线级入场
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
此图解示意按月线级入场成交分布 (开仓, 加仓和仓位反转)。
小时级盈利和亏损
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
此图解示意按小时级离场成交分布 (平仓, 部分平仓和可能的仓位反转)。图解柱线显示的颜色: 盈利 (蓝色) 以及亏损 (红色) 成交。
交易日级盈利和亏损
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
此图解示意按交易日级离场成交分布 (平仓, 部分平仓和可能的仓位反转)。图解柱线显示的颜色: 盈利 (蓝色) 以及亏损 (红色) 成交。
月线级盈利和亏损
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
此图解示意按月线级离场成交分布 (平仓, 部分平仓和可能的仓位反转)。图解柱线显示的颜色: 盈利 (蓝色) 以及亏损 (红色) 成交。
MFE-盈利分布
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
在 MFE (最大有利偏移) 图形上以虚线绘制持仓 ― 盈利。坐标轴给出的数值均按存款货币。此外每笔持仓的盈利值包含隔夜费, 并沿 Y 轴绘图, 图形显示持仓周期内的最大可能盈利。它可以评估纸面上 (未兑现的) 盈利的保护品质。
尽管沿图形上的点分布提供了交易系统的概貌, 一条最小二乘法的近似线性回归, 能给出客观的评价。理想情况下, 这条线应该有 45 度角。
MAE-盈利分布
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
在 MAE (最大不利偏移) 图形上以虚线绘制持仓 ― 盈利。坐标轴给出的数值均按存款货币。此外每笔持仓的盈利值包含隔夜费, 并沿 Y 轴绘图, 图形显示持仓周期内的最高回撤。它可以评估交易的逗留回撤。
尽管沿图形上的点分布提供了交易系统的概貌, 一条最小二乘法的近似线性回归, 能给出客观的评价。负 X (MAE) 值越少的交易, 越好。图形分析有助于评估最大承受亏损, 避免可能的止盈太小 (如果只针对一个货币对按点数执行分析)。
盈利和持仓时间分布
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
绘制在 盈利 ― 时间 图形上的点代表持仓。图形显示了持仓时间和平仓获利结果之间的相关性。根据刻度需求, 时间轴上的数值, 可以按秒, 分钟或小时给定。盈利按照存款货币显示。持仓时间, 按其开仓直到完整平仓的时间计算。完整平仓是将其全部结算; 计算值不考虑部分平仓或仓位反转。
游客,本帖隐藏的内容需要积分高于 10000000 才可浏览,您当前积分为 0
一个绝顶高手,绝不仅仅是拥有绝世剑法,还要有绝顶聪明的思维。
武功再高 只是十人敌 百人敌,但有了顶尖的思维才可以成为万人敌。
回复 支持 反对

使用道具 举报

 楼主| 莫等闲 发表于 2023-3-23 16:17:17 | 显示全部楼层
本帖最后由 莫等闲 于 2023-3-23 16:29 编辑

测试可视化
在交易平台的 策略测试器 里, 您可以按照可视模式测试智能交易系统和指标。此模式可以通过准确地直观智能交易系统在回测期间是如何执行操作的。金融工具的每笔交易都显示在其 图表上。在可视测试模式, 您可以利用历史数据测试一款 指标 的操作。这个 特性可以简单地测试从 市场里下载的演示版指标的操作。


启动
启动可视模式:
  • 在 策略测试器 设置里启用 "可视" 选项。当您选择测试 指标 时, 可视选项自动启用。
  • 禁用 可视模式, 因为可视模式仅在测试模式里可用。
  • 确认一个 本地代理 用于测试。如果选择 远程代理 进行测试, 在其关联菜单里使用 "MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区选择" 命令选择一个本地代理。
如果所有以上条件满足, 点击 "开始" 按钮打开 可视窗口。


观察测试过程
可视测试运行在单独的窗口:
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
有关测试过程的信息在若干表格提供:
  • 价格图表, 此处显示交易操作。
  • 市场观察, 此处显示测试时生成的价格。
  • 数据窗口, 此处您可以观察图表上选择点的有关信息。
  • 多功能 工具箱 窗口显示智能交易系统在测试期间执行的交易操作, 和视觉记录。

图表
图表是可视化测试过程的主要目的。它类似于平台的常规 图表, 但有一些特殊功能:
  • 图表基于测试期间 生成的 价格数据。
  • 智能交易系统在测试期间执行的所有操作都显示在图表上。使用 "买入标志" 和 "卖出标志" 对象显示交易操作。
  • 只有基本的图表设置 (类型, 网格, 缩放) 可供选择。
  • 在图表模式里可用的品种列表仅限于主要测试品种, 如同在智能交易系统里使用品种的数据。
  • 图表时间帧 不能改变。在设置里选择的 周期 用于主要测试图表。智能交易系统请求的周期用于其它品种。
  • 在品种间切换, 使用 "视图 ― 图表" 菜单。
  • 图表允许您观察基于历史数据的指标行为, 例如, 当测试从 市场里下载的指标时。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区


使用模板
您可以修改图表外观, 使用 模板 来显示指标或图形对象。对于应用的模板, 其名称必须匹配测试智能交易系统的名称。模板可放置于交易平台的 /profiles/templates 文件夹里。


市场观察
市场观察显示测试期间生成的价格。它类似于 交易平台 市场观察, 但有些特殊的功能。为了显示/隐藏此窗口, 在视图菜单里使用市场观察命令或按下 Ctrl+M。
品种栏显示当前金融工具的价格信息。显示的品种列表受限于 主要测试品种, 如同在智能交易系统里使用品种的数据。
窗口头部包括当前测试时间。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
分时栏包括一个测试期间 生成的 价格图表。显示的分时数量受限于64000。


数据窗口
此窗口用于显示有关价格 (OHLC) 的信息, 柱线日期和时间, 点差, 成交量和 指标。在此, 您可以快速查找图表上选择点的特定柱线和应用指标的有关信息。此窗口可以通过点击视图菜单里的 "数据窗口" 或按下 Ctrl+D 来启用或禁用。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
窗口的上半部包括金融工具名称和图表周期。图表上的当前光标处的有关信息显示在下面。有关 指标 的信息在单独区域的单独子窗口里打开。


工具箱
工具箱是一个多功能窗口, 于此您可以观察智能交易系统在测试期间的交易活动, 如同观察 测试代理的日志。为了显示/隐藏此窗口, 在视图菜单里使用工具箱命令或按下 Ctrl+T。
工具箱窗口由以下若干栏目组成:
  • 交易 ― 当前持仓和挂单。
  • 历史 ― 成交和订单历史
  • 操作 ― 由智能交易系统请求的交易操作。
  • 日志 ― 测试代理的日志。


交易
交易栏包括有关当前交易账户状态的信息, 开仓 和放置的 挂单。所有持仓可按照任意字段排序。为达此目的, 点击其名称。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区


仓位
显示在表中的仓位具有如下字段:
  • 品名 ― 持仓的金融工具。
  • 时间 ― 开仓时间。这条记录表示为 YYYY.MM.DD HH:MM (年.月.日 时:分);
  • 类型 ― 持仓类型: "买入" ― 多头, "卖出" ― 空头。
  • 交易量 ― 交易操作的交易量 (以手数为单位);
  • 价格 ― 成交价格, 开仓的结果。如果已开仓位是若干笔成交的执行结果, 则此字段显示它们的权重平均价格: (第一笔成交价 * 第一笔成交量 + ... + 第 N 笔成交价 * 第 N 笔成交量) / (第一笔成交量 + ... + 第 N 笔成交量)。此字段的特征数字由品种的价格特征加上三个其余特征来确定;
  • S/L ― 当前持仓的 止损 价位。如果订单未放置, 此字段显示零值;
  • T/P ― 当前持仓的 止盈 价位。如果订单未放置, 此字段显示零值;
  • 价格 ― 金融品种的当前价位。
  • 佣金 ― 执行交易操作需支付的佣金;
  • 掉期 ― 掉期支付额;
  • 盈利 ― 考虑当前价位的财会结果写入此字段。正数结果表示成交盈利, 负数表示亏损。


账户状态
当前账户状态显示在已开仓位之下:
  • 余额 ― 账户的资金数额, 未含当前持仓。
  • 净值 ― 考虑当前持仓的账户资金数额;
  • 保证金 ― 覆盖持仓的资金需求。
  • 可用保证金 ― 可用于开仓的自由资金数额;
  • 保证金级别 ― 账户净值与保证金的百分比;
  • 成交总数 ― 所有持仓的财会结果总计。具有正数的仓位, 以图标 MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区显示, 负数 ―MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区


挂单
放置的挂单显示在当前账户状态之下:
  • 品种 ― 挂单的金融工具。
  • 订单 ― 挂单的单号 (独有标识符);
  • 时间 ― 挂单放置时间。这条记录表示为 YYYY.MM.DD HH:MM (年.月.日 时:分);
  • 类型 ― 挂单类型: "突破卖出", "回踩卖出", "突破买入", "回踩买入", "突破回踩买入" 或 "突破回踩卖出";
  • 交易量 ― 挂单请求的交易量, 以及成交覆盖的交易量 (以手数为单位)。
  • 价位 ― 挂单触发的价位。
  • S/L ― 放置的 止损单价位。如果订单未放置, 此字段显示零值;
  • T/P ― 设置的 止盈 单价位。如果订单未放置, 此字段显示零值;
  • 价格 ― 金融品种的当前价位。
  • 备注 ― 挂单的备注;
  • 状态 ― 在最后一列, 显示挂单的当前 状态: "已开始", 已放置", 等等。


历史
交易操作历史在历史栏提供。交易操作历史有三种查看模式: 仅成交, 仅订单, 成交和订单; 您可以通过关联菜单在它们之间切换。


订单
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
表中显示的放置订单历史具有以下字段:
  • 时间 ― 订单放置时间。这条记录表示为 YYYY.MM.DD HH:MM (年.月.日 时:分);
  • 订单 ― 交易操作的单号 (独有标识符);
  • 品种 ― 订单的金融工具;
  • 类型 ― 交易操作类型: "买入" ― 多头仓位, "卖出" ― 空头仓位或 挂单 名称 "突破卖出", "回踩卖出", "突破买入", "回踩买入", "突破回踩买入" 和 "突破回踩卖出"。
  • 交易量 ― 订单请求的交易量 (以手数为单位)。最小交易量和其变化步长由经纪公司限定, 最大一个 ― 则按存款大小。
  • 价格 ― 订单指定的执行交易操作价格。
  • S/L ― 放置的 止损单价位。如果订单的交易操作已平仓, 单元格涂以红色, 且在备注栏出现记录 "[s/l]"。如果订单未放置, 此字段显示零值;
  • T/P ― 设置的 止盈 单价位。如果订单的交易操作已平仓, 单元格涂以绿色, 且在备注栏出现记录 "[t/p]"。如果订单未放置, 此字段显示零值;
  • 状态 ― 订单 放置结果: "已填充", "部分", "已取消" 等等。
  • 备注 ― 订单的备注写在此处。
更低一行显示订单汇总: 总数量, 已填充和已取消订单数量。


成交
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
在表中显示的成交历史也具有以下字段:
  • 时间 ― 成交时间。这条记录表示为 YYYY.MM.DD HH:MM (年.月.日 时:分);
  • 成交 ― 成交单号 (独有标识符)。
  • 订单 ― 订单号 (独有标识符), 对于交易已经执行。若干笔成交可以对应于一笔订单, 如果市场的供应者未能满足订单所需的指定交易量;
  • 品种 ― 成交的金融工具。
  • 类型 ― 交易操作类型: "买入" ― 一笔买入成交, "卖出" ― 一笔卖出交易;
  • 方向 ― 成交相对于特定品种当前仓位的方向: "入", "出" 或 "入/出"。
  • 交易量 ― 成交执行的交易量 (以手数为单位)。
  • 价格 ― 成交执行的价格;
  • 佣金 ― 成交执行支付的佣金;
  • 盈利 ― 仓位离场后的财会结果。对于入场成交, 显示零值。
底行显示相对于初始存款的交易执行结果:
  • 利润 ― 相对于初始存款的盈利或亏损。对于亏损, 则 MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区标志显示在字段里, 对于盈利 ―MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区;
  • 存款 ― 存款数额;
  • 出金 ― 从账户里的出金。
账户的当前余额值显示在尾行里。


订单和成交
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
在此模式里, 订单和成交显示为一棵树, 示意交易请求是如何准确处理的。


操作
测试期间所有智能交易系统提起的交易请求显示在操作栏。除了买卖请求, 恁可以跟踪挂单修改, 仓位停止级别修改, 等等。
MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
在表中显示的交易操作历史具有以下字段:
  • 时间 ― 交易操作的请求时间。这条记录表示为 YYYY.MM.DD HH:MM (年.月.日 时:分);
  • 单号 ― 交易操作的单号 (独有数字);
  • 品种 ― 已交易操作的品种;
  • 动作 ― 请求动作类型 (即时交易操作, 修改停止级别, 等等);
  • 类型 ― 交易操作方向 (买入或卖出);
  • 交易量 ― 已请求的交易操作交易量;
  • 价格 ― 交易操作的请求价格;
  • S/L ― 交易请求里的 止损 位;
  • T/P ― 交易请求里的 止盈 位;
  • 备注 ― 请求里的备注。
日志
这一栏包括用于测试智能交易系统的 代理 记录。所有代理和测试期间智能交易系统的动作记录在日志里。
只要可视化打开, 测试代理的记录不会发送到平台的 策略测试器 上。然而, 它们可以通过交易平台关联菜单里的 "本地日志" 命令来查看。


MetaTrader 5(MT5)帮助 → 算法交易, 交易机器人,威力社区
记录条目由两部分组成:
  • 日期 ― 事件的日期和时间;
  • 消息 ― 事件的描述。
一个绝顶高手,绝不仅仅是拥有绝世剑法,还要有绝顶聪明的思维。
武功再高 只是十人敌 百人敌,但有了顶尖的思维才可以成为万人敌。
回复 支持 反对

使用道具 举报

 楼主| 莫等闲 发表于 2023-3-23 16:34:39 | 显示全部楼层
测试日志
测试和优化的整个过程都会详细记录在日志当中。让我们看看在策略测试中点击开始按键后会发生什么。


准备价格历史
启动测试/优化之前,tester会准备好需要的环境。检查被测试的交易品种历史记录是否存在以及同步交易服务器中存储的整个历史记录。如果平台中没有被测试的交易品种历史记录,那么交易服务器的同步过程可能需要几分钟。
Tester  EURCAD: preliminary downloading of M1 history started
开始预备下载 EURCAD M1 历史记录
Tester  EURCAD: 20% history downloaded
已完成下载 20%
Tester  EURCAD: 95% history downloaded
已完成下载 95%
Tester  EURCAD: preliminary downloading of M1 history completed in 0:14.640
已于0:14.640完成下载
Tester  EURCAD: history data begins from 2014.12.29 00:00
交易品种分钟数据始于2014.12.29 00:00


如果测试基于真实报价完成,那么平台会同步测试日期内现有的报价。报价下载可能需要较长的时间。
Tester  EURCAD: preliminary downloading of history ticks started, it may take quite a long time
开始预备下载EURCAD报价,它可能需要较长时间
Tester  EURCAD: "bases\MetaQuotes-Demo\ticks\EURCAD\201609.tkc" download
2016年9月的报价已经下载到指定路径
Tester  EURCAD: "bases\MetaQuotes-Demo\ticks\EURCAD\201608.tkc" download (823.38 Kb/sec)
2016年10月的报价已经下载到指定路径
Tester  EURCAD: 21% ticks downloaded (796.02 Kb/sec)
已完成下载 21% ,下载速度 - 796.02 Kb/sec
Tester  EURCAD: "bases\MetaQuotes-Demo\ticks\EURCAD\201604.tkc" download (764.22 Kb/sec)
2016年4月的报价已经下载到指定路径
Tester  EURCAD: preliminary downloading of history ticks completed, 116.78 Mb in 2:32.063 (786.40 Kb/sec)
报价下载完成于 2:32.063,已下载报价大小 - 116.78 MB
Tester  EURCAD: ticks data begins from 2016.04.01 00:00
EURCAD 报价数据始于 2016.04.01 00:00


之后检查是否存在十字光标。例如,如果在EURCAD执行测试,入金货币是USD,EURUSD 和 USDCAD 需要计算利润和执行交易时所需的预付款。因此,执行历史记录和这些交易品种的完整同步。如果需要的话,也会同步报价数据。价格数据准备都会在tester日志中详细描述:
Tester  EURUSD: preliminary downloading of history ticks started, it may take quite a long time
开始预备下载EURUSD 报价,它可能需要较长时间
Tester  EURUSD: preliminary downloading of history ticks completed, 1021.82 Kb in 0:03.218 (317.53 Kb/sec)
报价下载完成于0:03.218,已下载报价大小 - 1021.82 KB
Tester  EURUSD: ticks data begins from 2011.12.19 00:00
EURUSD 报价数据始于 2011.12.19 00:00
Tester  USDCAD: preliminary downloading of M1 history started
开始预备下载 USDCAD M1 历史记录
Tester  USDCAD: preliminary downloading of M1 history completed in 0:00.203
已于 0:00.203 完成下载
Tester  USDCAD: preliminary downloading of history ticks started, it may take quite a long time
开始预备下载USDCAD 报价,它可能需要较长时间
Tester  USDCAD: "bases\MetaQuotes-Demo\ticks\USDCAD\201609.tkc" download
2016年9月的报价已经下载到指定路径
Tester  USDCAD: "bases\MetaQuotes-Demo\ticks\USDCAD\201608.tkc" download (683.69 Kb/sec)
2016年8月的报价已经下载到指定路径,下载速度 - 683.69 Kb/sec
Tester  USDCAD: preliminary downloading of history ticks completed, 103.25 Mb in 2:30.109 (704.36 Kb/sec)
报价下载完成于2:30.109,已下载报价大小 - 103.25 MB
Tester  USDCAD: ticks data begins from 2015.01.01 00:00
USDCAD 报价数据始于 2015.01.01 00:00


测试/优化开始
测试/优化仅在所需历史记录(以及使用真实报价测试/优化策略的报价)全部同步后开始。
连接选定的测试代理 会在单独测试中建立。既可以是本地代理也可以是网络代理。
Core 1  agent process started
代理进程在第一个处理器内核启动
Core 1  connecting to 127.0.0.1:3000
连接到 127.0.0.1:3000
Core 1  connected
连接已建立
Core 1  authorized (agent build 1395)
授权已通过,agent build - 1395


本地代理数据文件夹命名对应其地址和端口。
连接建立之后,根据测试设置同步环境。
Tester  EURCAD,H1 (MetaQuotes-Demo): testing of Experts\Moving Average.ex5 from 2016.04.01 00:00 to 2016.06.01 00:00
在EURCAD H1启动移动平均EA测试,MetaQuotes-Demo 服务器,测试周期 - 从 2016.04.01 00:00 到 2016.06.01 00:00
Core 1  common synchronization completed
总同步完成


此刻起,代理保留其自己的日志,将其数据发送至测试器日志。本地代理日志可以从测试器日志快捷菜单打开。日志显示程序端和代理之间的环境同步详情。
环境初始化和同步:
Startup MetaTester 5 x64 build 1395 (19 Aug 2016)
启用测试代理,build 1395 自2016年8月19日
Server  MetaTester 5 started on 127.0.0.1:3000
测试代理启用于 127.0.0.1:3000
Startup initialization finished
初始化已完成
127.0.0.1       login (build 1395)
平台已经连接代理
Network 38520 bytes of account info loaded
代理已下载 38520 字节交易账户参数信息
Network 1482 bytes of tester parameters loaded
代理已下载 1482 字节测试参数信息
Network 2236 bytes of input parameters loaded
代理已下载 2236 字节EA导入信息
Network 22730 bytes of symbols list loaded
代理已下载 22730 字节交易品种信息


同步测试参数和已测试的交易品种数据:
Tester  expert file added: Experts\Examples\Moving Average\Moving Average.ex5. 53048 bytes loaded
代理已下载EA文件,文件大小 53048 字节
Tester  initial deposit 10000.00 USD, leverage 1:100
测试之前初始入金 - 10 000 USD,杠杆 - 1:100
Tester  successfully initialized
测试初始化
Network 68 Kb of total initialization data received
初始化期间代理获得的数据总量 - 68 KB
Tester  Intel Core i7-3770  @ 3.40GHz, 16351 MB
代理启用的PC配置
Symbols EURCAD: symbol to be synchronized
EURCAD 交易品种同步
Symbols EURCAD: symbol synchronized, 3384 bytes of symbol info received
交易品种已同步,已接收 3384 字节数据
History EURCAD: load 4.51 Mb of history data to synchronize in 0:00:00.594
在594毫秒内已下载 4.51 MB 历史数据
History EURCAD: history synchronized from 2015.01.02 to 2016.06.01
EURCAD 历史同步自2015.01.02 到 2016.06.01
Ticks   EURCAD: ticks synchronization started
开始 EURCAD 报价同步
Ticks   EURCAD: load 48.66 Mb of tick data to synchronize in 0:00:00.969
48.66MB 数据已在969毫秒内的同步期间下载
Ticks   EURCAD: history ticks synchronized from 2016.04.01 to 2016.05.31
EURCAD 报价历史同步自 2016.04.01 到 2016.05.31
History EURCAD,H1: history cache allocated for 8862 bars and contains 7729 bars
       from 2015.01.02 09:00 to 2016.03.31 23:00
历史缓存 8862个柱形图已创建,缓存包括 7729个柱形图自 2015.01.02 09:00 到 2016.03.31 23:00
History EURCAD,H1: history begins from 2015.01.02 09:00
EURCAD 历史记录始于 2015.01.02 09:00
Tester  EURCAD,H1 (MetaQuotes-Demo): generating based on real ticks
测试将在真实报价启动
Tester  EURCAD,H1: testing of Experts\Examples\Moving Average\Moving Average.ex5
       from 2016.04.01 00:00 to 2016.06.01 00:00 started with inputs:
测试自 2016.04.01 00:00 到 2016.06.01 00:00 的移动平均 EA将通过以下输入启用:
Tester    MaximumRisk=0.02
MaximumRisk=0.02
Tester    DecreaseFactor=3.00
DecreaseFactor=3.00
Tester    MovingPeriod=12
MovingPeriod=12
Tester    MovingShift=6
Tester    MovingShift=6
Moving Average (EURCAD,H1)      2016.04.01 00:00:00   expert initialized
移动平均 EA 初始化
Ticks   EURCAD : real ticks begin from 2016.04.01 00:00:00
EURCAD 真实报价始于 2016.04.01 00:00:00


同步交叉汇率:
Symbols EURUSD: symbol to be synchronized
同步 EURUSD 交易品种
Symbols EURUSD: symbol synchronized, 3384 bytes of symbol info received
交易品种已同步,已接收 3384 字节数据
History EURUSD: load 27 bytes of history data to synchronize in 0:00:00.000
在000毫秒内已下载 27 字节历史数据
History EURUSD: history synchronized from 2014.01.01 to 2016.09.02
EURUSD 历史同步自 2014.01.01 到 2016.09.02
Ticks   EURUSD: ticks synchronization started
开始 EURUSD 报价同步
Ticks   EURUSD: load 34 bytes of tick data to synchronize in 0:00:00.000
48.66MB 数据已在969毫秒内的同步期间下载
Ticks   EURUSD: history ticks synchronized from 2016.01.04 to 2016.09.02
EURUSD报价历史同步自 2016.04.01 到2016.05.31
Symbols USDCAD: symbol to be synchronized
USDCAD 交易品种同步
Symbols USDCAD: symbol synchronized, 3384 bytes of symbol info received
交易品种已同步,已接收 3384 字节数据
History USDCAD: load 27 bytes of history data to synchronize in 0:00:00.094
在94毫秒内已下载 27 字节历史数据
History USDCAD: history synchronized from 2013.01.01 to 2016.08.01
USDCAD 历史同步自 2013.01.01 到 2016.08.01
Ticks   USDCAD: ticks synchronization started
开始 USDCAD 报价同步
Ticks   USDCAD: load 43.10 Mb of tick data to synchronize in 0:00:00.890
43.10MB 数据已在 890 毫秒内的同步期间下载
Ticks   USDCAD: history ticks synchronized from 2016.04.01 to 2016.05.31
USDCAD 报价历史同步自 2016.04.01 到 2016.05.31


报价序列
报价序列在测试之前生成使用的报价越多,测试前的延迟越大。
如果您在真实报价上测试,则会检查已下载的分钟柱形图相关的报价数据的正确性。如果数据正确,日志只包括一个条目(每个交易品种)。
Ticks   EURCAD : real ticks begin from 2016.04.01 00:00:00
EURCAD 真实报价数据始于 2016.04.01 00:00:00


另外,显示的统计详情允许用户评估报价历史的情况。
Ticks   EURUSD : real ticks begin from 2015.01.01 00:00:00
EURUSD 真实报价数据始于 2015.01.01 00:00:00
Ticks   EURUSD : 2015.01.01 00:00 - 2016.01.01 00:00  tick volumes not matched for 4 minute bars
报价量已显示出不匹配 2015.01.01 00:00 - 2016.01.01 00:00内的4分钟柱形图
Ticks   EURUSD : 2015.01.01 00:00 - 2016.01.01 00:00  last prices absent for 16217 minute bars, bid prices used
在2015.01.01 00:00 - 2016.01.01 00:00之间没有检测到16217分钟柱形图的最后价,将使用卖价代替
Ticks   EURUSD : 2015.01.01 00:00 - 2016.01.01 00:00  last prices absent for 22 whole days, bars built by bid prices
在2015.01.01 00:00 - 2016.01.01 00:00之间没有检测到22整天的最后价,已使用卖价生成柱形图
Ticks   EURUSD : 2015.01.01 00:00 - 2016.01.01 00:00  last prices translation turned off for 881 minute bars, bid and last prices used
在2015.01.01 00:00 - 2016.01.01 00:00之间881分钟柱形图的最后价转化中断,使用最后价和卖价代替


测试之后再代理日志中显示统计详情:
Tester  final balance 7905.30 USD
最终结余组成 7905.30 USD
Tester  EURCAD,H1: 50056687 ticks, 6195 bars generated. Environment synchronized in 0:00:02.656.
生成50056687 个报价和6195 个柱形图,环境同步执行在 0:00:02.656
Test passed in 0:01:40.906 (including ticks preprocessing 0:00:27.047).
测试执行0:01:40.906 (包括需要0:00:27.047的报价准备)
Tester  EURCAD,H1: total time from login to stop testing 0:01:43.562 (including 0:00:07.329 for history data synchronization)
从连接代理到测试完成的时间 - 0:01:43.562 (包括需要0:00:07.329的历史数据同步)
Tester  132757966 total ticks for all symbols
所有交易品种一共生成132757966 个报价
Tester  EURCAD: generate 50056687 ticks in 0:00:08.703, passed to tester 50056687 ticks
0:00:08.703内为EURCAD生成 50056687 个报价,50056687 个报价传到测试器
Tester  EURUSD: generate 42615166 ticks in 0:00:09.235, passed to tester 42587228 ticks
0:00:09.235内为EURUSD 生成 42615166 个报价,42587228 个报价传到测试器
Tester  USDCAD: generate 40134644 ticks in 0:00:09.109, passed to tester 40114051 ticks
0:00:09.109内为USDCAD 生成 40134644 个报价,40114051 个报价传到测试器
Tester  546 Mb memory used including 0.94 Mb of history data, 320 Mb of cached tick data (total memory for tick data 3135 Mb)
使用546 Mb内存,包括0.94Mb历史数据,320Mb缓存的报价数据 (报价数据共使用3135 Mb)
Tester  log file "E:\MetaTrader5\Tester\Agent-127.0.0.1-3000\logs\20160908.log" written
代理日志文件保存在指定路径


如果仅测试一个交易品种,那么日志会显示总统计代替每个交易品种的单独行:
Tester  final balance 1199.73 USD
最终结余 1199.73 USD
Tester  EURUSD,H1: 42668248 ticks, 6195 bars generated. Test passed in 0:00:41.360 (including ticks preprocessing 0:00:06.672).
生成42668248 个报价和 6195 柱形图。测试执行0:00:41.360 (包括需要0:00:06.672的报价准备)
Tester  489 Mb memory used including 0.94 Mb of history data, 320 Mb of cached tick data (total memory for tick data 1023 Mb)
使用489 Mb内存,包括0.94Mb历史数据,320Mb缓存的报价数据 (报价数据共使用1023 Mb)
Tester  log file "E:\MetaTrader5\Tester\Agent-127.0.0.1-3000\logs\20160908.log" written
代理日志文件保存在指定路径


平台和代理之间最小的数据交换在相同历史数据反复测试期间的同步阶段执行。使用代理内存的历史缓存。如果报价生成模式不变,还会使用缓存报价数据。在这种情况下,测试立即开始:
Tester  account info found
交易账户数据已找到
Network 1482 bytes of tester parameters loaded
下载1482 字节测试参数
Tester  initial deposit 1000.00 USD, leverage 1:100
测试之前初始入金 - 1 000 USD,杠杆 - 1:100
Tester  successfully initialized
测试初始化
Network 1614 bytes of total initialization data received
初始化期间代理获得的数据总量 - 1614 字节
Tester  Intel Core i7-3770  @ 3.40GHz, 16351 MB
代理启用的PC配置
History EURUSD,H1: history cached from 2014.01.01 23:00
EURUSD H1 历史缓存始于 2014.01.01 23:00
Tester  EURUSD,H1 (MetaQuotes-Demo): every tick generating
在所有报价上启动测试 (MetaQuotes-Demo 服务器)
Tester  EURUSD,H1: testing of Experts\Tester\MultyPairCrossMA.ex5 from 2015.01.01 00:00 to 2016.01.01 00:00 started with inputs:
测试自 2015.01.01 00:00 到 2016.01.01 00:00 的移动平均 EA将通过以下输入启用:
Tester    InpLots=0.10
Tester    InpStopLoss=50
Tester    InpTakeProfit=50
Tester    InpTrailingStop=30
Tester    InpFastMAPeriod=21
Tester    InpSlowMAPeriod=34
InpLots=0.10
InpStopLoss=50
InpTakeProfit=50
InpTrailingStop=30
InpFastMAPeriod=21
InpSlowMAPeriod=34
History EURUSD,M5: history cached from 2014.01.01 23:00
EURUSD M5 历史缓存始于2014.01.01 23:00
History EURJPY,M5: history cached from 2014.01.01 23:00
EURJPY M5 历史缓存始于 2014.01.01 23:00
History USDJPY,M5: history cached from 2014.01.01 23:00
USDJPY M5 历史缓存始于 2014.01.01 23:00


测试完成
止损离场 如果交易没有成功,测试将因止损离场而停止:
Tester  final balance 44.81 USD
最终结余 44.81 USD
Tester  stop out occurred on 3% of testing interval
止损离场会在测试通过3%之后发生


标准完成。满足一定条件时调用ExpertRemove函数可能更早的停止测试。紧随其后的就是下面的日志条目:
MACD Sample (EURUSD,H1) 2015.03.13 03:00:00   Testing stop. Balance is 299.29
测试停止,结余是 299.29
MACD Sample (EURUSD,H1) 2015.03.13 03:00:00   ExpertRemove() function called
ExpertRemove 函数已被调用
Tester  removed itself within OnTick
EA 已在报价处理程序完成其工作
Tester  final balance 299.29 USD
最终结余 299.29 USD
Tester  removed itself on 19% of testing interval
EA 会在测试通过3% 之后完成工作


内存错误。 因为一个关键错误,测试可能提前完成。例如,通过ArrayResize函数重新配置常量内存可能导致过多的内存碎片,而这些碎片反过来可能导致内存大小不足。 结果也会导致内存错误。
MemoryException 8192 Mb not available
内存 8192 MB 不可用
MACD Sample (EURUSD,H1) 2015.01.02 09:00:15   cannot resize ExtDoubleArray4 from 536870912 to 1073741824
在2015.01.02 09:00:15,EA 从536870912 到1073741824 字节增加ExtDoubleArray4数组大小失败
Tester  memory error in OnTick
用OnTick处理内存时发生错误
Tester  stopped on 0% of testing interval
在测试通过3% 之后工作完成
Tester  not enough available memory, 37371 Mb used, 9178 Mb available, maximal available block is 4096 Mb
内存不足,总内存 37371 MB,可用 9178 MB,最大内存大小 4096 MB


数组超出范围。 超出数组范围 (例如,数组元素指数等于或超过数组元素的数量)被认为是一个严重错误(指数从零开始)。
MACD Sample (EURUSD,H1) 2015.01.06 18:42:59 array out of range in 'MACD Sample.mq5' (473,28)
数组超出范围在 MACD Sample.mq5 文件 (字符串 473,位置 28)
Tester  OnTick critical error
OnTick 严重错误


零为除数。 除以零也被认为是一个严重错误。
MACD Sample (EURUSD,H1) 2015.01.06 18:42:59 zero divide in 'MACD Sample.mq5' (465,35)
除以零在MACD Sample.mq5 文件 (字符串 465,位置 35)
Tester  OnTick critical error
OnTick 严重错误


初始化错误。 如果程序中的 OnInit 函数返回一个不同于INIT_SUCCEEDED的代码,那么测试未开始即停止。例如,这个特点可以用于管理输入参数。
MACD Sample (EURUSD,H1) 2015.01.01 00:00:00 Deinit reason is 8
EA 去初始化在 2015.01.01 00:00:00
Tester  tester stopped because OnInit failed
由于OnInit 错误而测试停止
游客,本帖隐藏的内容需要积分高于 10000000 才可浏览,您当前积分为 0

一个绝顶高手,绝不仅仅是拥有绝世剑法,还要有绝顶聪明的思维。
武功再高 只是十人敌 百人敌,但有了顶尖的思维才可以成为万人敌。
回复 支持 反对

使用道具 举报

关闭

站长推荐上一条 /10 下一条

“你不能通过今天逃避来逃避明天的责任。”——亚伯拉罕·林肯

小黑屋|威力社区

GMT+8, 2024-4-24 13:21 , Processed in 0.152175 second(s), 40 queries .

Powered by Discuz! X3.4

© 2017-2020 Comsenz Inc.

本网站仅在国家法律允许时提供学习交流。本网站不代理经纪商(broker),不参与经纪商经营活动,不对经纪商提供担保或承担任何责任。

高风险提示:外汇黄金、差价合约等杠杆类交易包含重大亏损风险,阁下可能会于交易时蒙受损失超过存入的资金!!! 因此未必适合每一位投资者。 阁下必须充分理解所涉及的风险并在必要时寻求独立财务顾问建议。

任何在本网站内发表的评论、新闻、研究、分析、价格、其他资料或第三方网站的链接只能视作一般市场资讯。本网站信息不构成或导致(1) 提供或出售任何金融服务或产品的要约邀请;(2)采取任何金融产品相关行动的推荐(明示或暗示);或(3)任何投资建议或市场预测。 市场意见并非按照旨在促进投资研究独立性的法律要求而拟备,因此并非受到发放此等资料前禁止交易的约束。本网站不会为直接或间接使用或 依赖此等资料而可能引致的任何亏损或损失(包括但不限于任何盈利的损失)负责。