English Русский Español Deutsch 日本語 Português
随机沙盒

随机沙盒

MetaTrader 4示例 | 11 四月 2016, 13:17
2 070 0
Clerin
Clerin

本文旨在帮助用户更深入地了解 MetaTrader 提供的 Expert Advisor 性能量化指标,例如获利因子或相对亏损。 使用用于模拟 EA 的性能以及它们的相关量化指标的交互式“沙盒游戏”,有助于读者进行了解。



简介

我们如何知道 Expert Advisor 性能是否真的很好?

MetaTrader 默认提供一系列指标,有助于我们了解 EA 在交易、回溯测试和优化期间的性能。 这些数据有时会被完全忽视或误解,因为交易新手没有足够大的结果库来比较这些数字。 交易者要获得足够的数据和经验以完全了解是什么构成了良好的获利因子或可接受的亏损,可能需要几个月甚至几年的时间。

尽管可从很多地方寻求建议,但还是会选择忽略这些,希望通过亲身测试获得自己的结论,这就是人的天性。 遗憾的是,这会导致很多代价高昂的错误。 本文旨在提供一个沙盒,在此沙盒中,用户可以快速、轻松、安全地探索 MetaTrader 提供的性能指标背后的深层含义,而无需盲目地依赖其他人的建议,或者等待数月或数年来亲自生成来自不同 EA 的测试数据的大数据库。

本文附上了一个简单的 Excel 文件(在本页底部的 zip 文件夹中),此文件将立即生成 1000 个随机交易并显示 MetaTrader 提供的相关性能指标以及图表。 这将反复模拟在单击按钮后编写一个新的 Expert Advisor 策略并测试此策略的结果。 可更改各个关键输入参数,同时可立即生成模拟的大量相关随机回溯测试数据。 这将建立一种快捷方便的交互式体验,很多交易可能会发现此体验很有趣且很有帮助。

结果列中的数据被设置为在每次工作表发生改动时自动生成新的输出。 要生成新数据,只需选择一个空单元格,然后按“删除”按钮(这不会更改选定单元格,但会引发 Excel 工作表更新,因此将生成新的随机数字)。 这些随机交易将显示三个包含标准指标的独立图表中。 Excel 文件中有三个工作表。 第一个工作表包含输入、图表和输出。 第二个工作表包含模拟的交易计算。 第三个工作表包含用于确定每个交易的预计赢率。

操作: 打开 Excel 文件,在第一个工作表上选择一个空单元格,然后按“删除”键,以随机生成一组结果。 每次按“删除”键时,将随机生成一组新结果。

第一个工作表包含 3 个图表以及它们的相关指标:

  1. 产生的获利/亏损总计(其中,获利= 1,亏损 = -1)。
  2. 使用恒定手数大小时产生的获利/亏损。
  3. 当在每个交易中使用基于用固定比例的本金冒险而动态调整的手数大小时产生的获利/亏损。

输入

  • 启动本金。
  • 止损位(作为小数进行测量)。
  • 风险回报率(将止损位乘以此数字,然后加上差价,即可得出获利)。
  • 静态手数大小(用于第二个图表的计算)。
  • 每个交易的冒险资金占本金的百分比(用于第三个图表的计算)。
  • 差价(作为小数进行测量)。
  • 每 1 标准手的每个点的 £(用于第三个图表的计算。 1 手 = 100,000)。
  • 强制更好性能(人为地增加获利百分比,使其超过完全偶然随机的预计值的此数量)

输出

  • 预计获利百分比(针对给定的止损位/获利位比和差价,每个交易的获利百分比)。
  • 实际结果的获利百分比(随机的实际结果)。
  • 一系列中的最大获利。
  • 一系列中的最大亏损。
  • 获利因子(总获利/总亏损)。
  • 相对亏损(最大亏损百分比)。
  • ROI %(投资回报百分比)。

假设

  • 一次只有一个持仓。
  • 每个交易运行至止损位或获利位,无跟踪止损位。
  • 每个交易使用同一个止损位。
  • 获利位始终设置为止损位的倍数。
  • 获利百分比是基于止损位/获利位的百分比和差价的,假设随机分布。
  • 固定差价。
操作: 通过更改各个输入选项来观察如何影响图表形状和输出结果,尤其是获利因子和相对亏损。


随机生成数据

Excel 工作表中的结果计算做出了以下假设:市场是完全随机的,并且在市场中随机进行交易(此假设是为了简单化,不一定是有关任何市场真相的说明)。

有时,会做出这样的假设:由于每个交易的结果只能是获利或亏损,那么如果止损位和获利位的大小相同,则意味着随机情况应提供 50% 的获利交易和 50% 亏损交易。 我们很倾向于做出这样的假设:只需反转此类系统的交易的方向即可将亏损策略转变成获利策略。 现实会很快消除这种假设。

无论市场是否真的具有随机性,交易者都必须在交易中支付差价,差价会自动减少交易者的胜算。 因此,获利或亏损的几率是基于止损位和获利位与开盘价之间的距离以及差价对这两个距离的倾斜程度。 计算显示在文件的第二个工作表中。

例如:假设止损位为 10 点,火电为 10 点,差价为 2 点。 如果市场向交易者有利的方向移动了 10 点,则获利为 10 点升至获利位,然后支付 2 点的差价,因此有效的净获利为 8 点。 如果市场向交易者不利的方向移动了 10 点,则亏损为 10 点下至亏损位,然后仍支付 2 点的差价,因此有效的净亏损为 12 点。 市场在任何一个方向上移动的距离(用点表示)比率为 10:10,但获利和亏损的等效点数的比率为 8:12。

为了确保在亏损位亏损的金额等于在获利位获得的金额,我们只需让获利位长一点,以便它还涵盖差价,并提前关闭相同金额的止损位。 因此,止损位应设置为 8 点(亏损 10 点),并将获利位设置为 12 点(获利 10 点)。 假设价格在此范围中的任意一点处,则达到获利位的几率为: 1- (12 / (8+12)) =  0.4 = 40% 因此,达到止损位的几率正好相反,即 60%。

第三个表格上正在计算的表格和图表提供了一些示例。 止损位与获利位的比率越大,差价对预计赢率百分比的影响就越小。

操作: 更改差价、止损位和比率以观察更改对预计赢率百分比的影响。


赢率百分比与止损位/获利位比率相关

显然,预计盈率百分比是由止损位和获利位之间的比率以及差价对这两者的影响程度来决定的。 上述观点在不同市场的适用程度可能会有所不同,但基本概念相同。 这里可以指出以下两个要点:

  • 如果不了解止损位/获利位比率、差价以及止损位和获利位之间的比率在 EA 使用期间的每个交易中是否保持不变,则讨论赢率百分比没有什么意义。
  • 较高的赢率百分比并不一定意味着是可获利策略,相反,较低的赢率百分比也不会意味着是亏损策略。
操作: 为了探索这一点,您可以将风险回报率更改为 10,您将看到赢率百分比立即下降,同时第一个图表显示一个非常剧烈的向下坡度,但是第二个和第三个图表的一些结果仍以获利形式结束。 相反,您可以将风险回报率更改为 0.1,赢率将上升,第一个图表将急剧向上,但一些随机选择仍将以亏损形式结束

示例:

图像 1. 情景 1: 风险回报率 = 10。

图像 2. 情景 2: 风险回报率 = 0.1。



提高风险的影响

人们常说,成功的交易者从来不会在任何一个交易中拿帐户 n% 以上的资金去冒险。 通常,大约在 3% 到 10% 之间。 通常,这是不需要解释的。 当然,这具有防止多次重大亏损以免用光帐户所有资金的优势。 或许更重要的是,这对“复合型的手数大小”的作用有着惊人的影响。

当交易者谈到“拿 n% 冒险”的词语时,他们是指当触发任何给定的止损位时将亏损的帐户资金的百分比。 通常,止损位的距离是在交易建立之前选定的,同时将计算手数大小以使此距离(用点数表示)在帐户中值 n%。 当获利增加时,用于建立每个新仓的金额将增加,这会带来手数大小增加,进而带来潜在获利增加。 这样,获利是“复合型”的(当然重点是要注意任何亏损的影响也是复合型的)。

第三个图表显示此方法的结果。 使用第三个图表,我们可以观察更改风险会给任何系统的盈利能力带来的影响。 默认情况下,风险设置为 1%。

操作: 将风险从 1% 增大到 20% 并查看第三个图表的性能变化。 将此性能(尤其是相对亏损和获利因子)与恒定恒定手数图表进行比较。

当风险设置为 1% 时,性能非常类似于使用恒定手数时的性能。 当风险增大后,最大潜在获利也增大了。 然而,假定一个随机性能,显然,风险越大 ,策略在结束前崩溃的可能性就越大。 这还会导致相对亏损急剧增加。

图像 3. 此图像显示一组完全相同的交易,首先每个交易拿 1% 冒险,其次每个交易拿 10% 冒险。

尽管将风险 % 增加到 1% 以上会有一些好处,但显示,当超过一定的点时,就无法通过增加风险增加盈利能力,而实际上会因为增加风险而降低预计盈利能力。

更改风险回报率或增加启动本金可能不会对此有很大的影响。 能够对此带来重大影响的增大盈率百分比(以减少大量连续亏损的可能性)。 因此,有一个名为 “强制更好性能”的输入框。 通过增加此值,您可以测试,如果 EA 的性能优于完全偶然情况下的预计值,会发生什么。

它默认设置为增加 15%(因为不然的话,大多数随机会由于上文介绍的差价对预计盈率的影响而始终无法获得净收益)。 然而,仍将有 % 风险,在此点之后,几乎肯定策略会崩溃。

操作: 如果您希望 阻止工作表随机生成新结果,只需查看更改输入会对按不同方式设置的相同数据造成怎样的影响,然后通过使用“选择性粘贴”并选择“值”来将输出从 C 列复制到 D 列(要进行反转,通常只需将 C 列复制到 D 列)。如果您希望阻止工作表随机生成新结果,只需查看更改输入会对按不同方式设置的相同数据造成怎样的影响,然后通过使用“选择性粘贴”并选择“值”来将输出从 C 列复制到 D 列(要进行反转,通常只需将 C 列复制到 D 列)。 尝试增加““强制更好性能”值,并观察对第三个图表的影响。

这样有希望便于比较性能提升,从而能够在任何风险 % 时为实际 EA 的预计性能提供健康的图表。



使用 EA 模拟进行随机交易(在回溯测试期间)

随机性的使用可进一步扩展。 可轻松写入实际上确实在回溯测试中进行了随机交易的 EA。 可将同一时段内的这种随机性能和实际 EA 的性能进行比较,科学实验以及“控制”测试也是采用大致相同的方式执行的。 任何尚未尝试这种方式的交易者可能会对单纯地随机交易能够获得结果感到惊讶。

为此,本文包括一个非常简单的名 为“随机 EA”的 EA (见下文)。 此 EA 用于仅在回溯测试或优化过程中进行随机交易(此 EA 不用于现实交易,甚至不用于在现实的模拟帐户上进行交易)。

输入参数允许在任何给定的条柱中设置进行交易的几率(高达 100% 的几率)。 一次只能建立一个交易。 每个条柱中只能发生一次交易。 将在条柱的起始处进行交易。

可选择止损位和获利位距离(用点数表示)。 这些距离等同于帐户发生的实际亏损(因此已包括差价的影响)。 在这里,在保证金货币中,300 的获利位等效于 300 的亏损位。 也可以选择每个交易使用随机的止损位和获利位,每个交易在 100 点到 1000 点之间随机抽取值。 这是为了建立多头或空头交易的几率相等。

手数大小可在恒定(静态)手数大小与动态手数大小之间变化,当使用动态手数大小时,每个交易将拿预定义比例的帐户余额冒险。

随机化将用于多个回溯测试。 如果需要优化,则只需选择“OptimizationNumber”作为优化变量,然后输入要运行的优化次数。

可从实际随机交易中学到两个重要的经验教训,如下所示:

  1. 止损位/获利位比率可以使随机交易在给定的历史时段中持续可获利。
    用户将注意到,更改止损位/获利位比率以使获利位显著高于或低于止损位的这种做法会对性能特点造成很大的影响。 重要的是,有时可以为给定的历史时段选取一个有利的止损位/获利位比率,在此过程中,大部分随机交易都将获得盈利。 例如,正在测试的历史时段主要包含上涨行情,则通过使获利位显著高于止损位,用户能够提高胜算。 在类似这样的情况下,在何时进行交易并不太重要 - 简直可以随机进行交易 - 净结果很可能最终为正数。

    在这种情况下,因此,在回溯测试期间,亏损位/获利位比率是系统的盈利能力的主要影响因素,而正在选择交易的方式不是很重要。 因此,将根据随机进行交易且使用相同的亏损位/止损位比率的 EA 的性能,测试成功的 EA 的性能,这种做法往往很有帮助。

    交易者可能会庆幸自己为自己的 EA 创建了一个看似很成功的指标组合(根据回溯测试结果),而实际上,系统中的大部分工作是由亏损位/获利位比率执行的,因为他们是在一个具有明显趋势的历史时段中测试此比率的。 当在盘整期市场中测试此类系统时,良好性能将不复存在。 记住,货币对可以在一年或更长时间内保持强劲趋势。

    如果您根据随机交易的 Ea(具有相同的亏损位/获利位比和手数大小规则)在同一时段内测试某个 EA 的性能,且性能类似,则这可能会告诉您一些有关您的策略的有趣之事。

  2. 随机交易可保持数百个交易可获利。
    在多次回溯测试之后,您可能会发现,一些交易实际上在很长一段时间内保持可获利,甚至在随机交易时。 当只有少量交易可供决策参考之用时,这对于您可能选择何种方式来判断任何给定策略成功与否有启发作用。 有时,可以看到随机进行交易的 EA 在 300 个交易期间连续产生可获利结果,例如,仅在接下来的 50 个交易中出现亏损。 用户可能会发现此信息对于判断其他策略的性能很有帮助。
操作: 用户使用随机 EA 运行多个回溯测试。 尝试更改止损位、获利位和手数大小的值,并观察它们对结果造成的影响。 更改止损位和获利位设置以尝试找到一个能够在给定的测试时段使随机交易持续可获利的有利比率。 然后在同一时段运行多个测试,计算在 EA 发生大幅亏损之前持续获利时所执行的最大交易次数。


总结

本文的目的不是提供建议。 而只是提供一个沙盒以便于用于探索。 用户必须得出自己的结论。



注意

  • 在 Excel 2003 中编写而成。
  • 有时,随机数生成程序似乎用光了数字,停止进行随机。 如果您发现了这种情况,则只需关闭并重新打开 excel 文件。
  • 计算用于模拟包含 4 到 5 个小数位的货币(即不适用于 JPY 配对)。
  • 无可否认,结果的随机性是基于随机数生成程序的质量以及用于预测预计盈率的粗略计算的,因此无法完美地反映现实中的结果。 然而对于本文来说,这应该足够了。

本文由MetaQuotes Ltd译自英文
原文地址: https://www.mql5.com/en/articles/1360

附加的文件 |
Random_EA.mq4 (8.13 KB)
MetaTrader 4 Expert Advisor 与外部世界交换信息 MetaTrader 4 Expert Advisor 与外部世界交换信息
一个供 МetaТrader 4 Expert Advisor 与外部世界进行信息交换的简单、通用而可靠的解决方案。 信息的提供商和用户可能使用不同的计算机,连接是通过全局 IP 地址实现的。
在Linux上运行MetaTrader 4 在Linux上运行MetaTrader 4
在本文中,我们演示了一种在流行的Linux版本(Ubuntu和Debian)上安装MetaTrader 4的简单方法。这些系统广泛用于服务器硬件以及交易者的个人计算机上。
手动交易自动化的三个方面。 第 1 部分: 交易 手动交易自动化的三个方面。 第 1 部分: 交易
本文是介绍 МetaТrader 4 交易平台中手动交易自动化的系列文章的第一篇。 本系列文章的每一篇都专门针对以下方面之一:手动交易的自动化,交易显示自动化的当前状态,和交易结果报告的自动化。 本文中,我将介绍一个有趣的由交易者手动控制的 EA 创建方法。
深入了解累积/派发以及它的作用 深入了解累积/派发以及它的作用
累积/派发 (A/D) 指标有一个有趣的功能 - 突破此指标图表中绘制的趋势线暗示着一定概率上会即将突破价格图表中的趋势线。本文对于那些刚开始在 MQL4 中进行编程的人来说很有帮助和趣味性。为此,我尝试用易于理解的方式呈现信息并使用最简单的代码结构。