English Русский Español Deutsch 日本語 Português
preview
暴力方式搜素形态(第 V 部分):全新视角

暴力方式搜素形态(第 V 部分):全新视角

MetaTrader 5交易 | 26 三月 2024, 12:47
407 0
Evgeniy Ilin
Evgeniy Ilin

内容


概述

自我上次发表了一篇关于这个话题的文章以来,已经有一段时间了。从那时起,我不得不重新思考我以前的所作所为。这就令从完全不同的角度看待可盈利算法交易的问题成为可能,同时考虑到以前未能顾及的所有小事。取代使用标准和黯然无趣的数学和代码,我为本人的读者给出了完全不同的解决问题途径。本文既可以是新事物的开始,也可以是旧事物的重启。我厌倦了耍小聪明,并把不必要的方程式和代码扔进历史的垃圾堆,故本文对任何读者来说都尽可能简单易懂。


完成目标的途径

我开始思考,当人们试图运用算法交易赚钱时,引导人们走向成功、或将人们带进死胡同的各种途径。理论上,已明示的就有若干路径:

  1. 正面交锋。
  2. 美丽画面。
  3. 现成的交易系统。
  4. 现代化和混合化的公开可用算法。
  5. 团队作战。

第一种方式最常见于固执人士。事实上,它对于像我的人来说很实用,可以让他们放下野心和虚假的希望。这听起来没什么,但实际上对您的未来非常有益。这种方式花费大量的精力和时间,如果您不在某个时候停下来,您也许会成为论坛科学博士,并带来所有随之而来的成果。我认为,在此不需要澄清。每个人都对我的讽刺心领神会。尽管如此,这种方式可以让您学到在我那个时代我所学到的理论信息,这绝对值得。最主要的是及时停止。当然,如果我们在所花费时间和所获得结果之间权衡,结局将远非完美。

第二种方式则简单得多,事实上,就花费的时间这项而言,效率要高得多,因为所涉及的工作量要少得多,您所要做的全部就是让人们相信您是成功的。一切都在我们的头脑中,并在某一点我意识到这做法很棒。人们倾向于信任美丽的包装。这里没有道德或其它任何东西的容身之处。结果代表事物的一切。这也许看似愤世嫉俗,但整个世界都像这样生活。所有您需要的就是创建一个特定的画面。您也许会用马丁格尔、摊平、或其它交易技术。它们足以创建这样的画面。

我相信,第三种方式是明智的,因为在这种情况下,花费的工作量将是最小的,但您的画面却是真实的。若正确实现这种方式,不会有负面影响,尽管会有一些缺点。实现这种方式所需的最重要东西就是知识。如果我没有如今的经验,那么即使有正确的态度、理性、和均衡的方式能达成我的目标,我也无法利用它的优点。

至于第四种方式,我不知道是否有人实践过。理论上,它应当花费更少的时间,但有关其效率,我无话可说。通常,一切皆有可能,但委婉地说,我不认为这种方式更具成效。反而,最好将其与前一条结合使用,因为这将为您增加交易的可变性,并提高接收更一致交易信号的机会。

第五种方式只当您有很多思路,并持续努力的情况下才有效,不过,即使每个团队成员都使用正面交锋方式,它也比第一种好得多。但碰巧的是,大多数交易系统的开发人员都是自恋的孤独者,只有少数人可以组建这样的团队,最重要的是,安排其工作。我知道有这样的团队,并且他们非常成功。如果您发现自己正在与这样一个团队共同开发可盈利算法,那就太好了。优点是,最终,开发的总体品质和数量能够扮演决定性的主角,并有可能打造一个有竞争力的产品。

当然,这些都是过于理想化的场景,每个人都会特立独行,但尽管如此,我可以肯定地说,无论您选择哪条道路,结果始终先于获得某种知识。它不一定只是技术或哲学上的,但就我而言,两者兼而有之。在我看来,这正是它应该的样子,因为看待问题必须始终要从各个方面入手,如此才能解决它。


基于自动交易系统获得稳定收入

在找到一种和谐的自动交易方式之前,我们首先需要从头到尾构建整个过程 — 从灵感构思的那一刻直至其实现:

  1. 灵感。
  2. 安排实现计划。
  3. 开发。
  4. 修复错误。
  5. 改进和潮流化。
  6. 广泛的测试。
  7. 优化和判定适用性限制
  8. 交易准备(资源、模拟账户)
  9. 实盘账户交易

如果您是一位新人,那么您几乎会百分百地确定您的系统理应工作,要么是因为您在某处看到过它,亦或是您自己编制的,并说服自己它会工作。现实却是,您没有一个市场的数学模型,而它是如此复杂,以至于即使假设您有一个,您也无法使用它,因为其令人难以置信的复杂性,且在 EA 中不合理地使用。那我们能做些什么呢?答案并不像看起来那么简单。这恰是我抛出自己的暴力算法的原因。

很明显,如果您承担了构建一款超级 EA 的任务,那么在您达到预期结果之前,您会经历很多这样的阶段,说得委婉一点,这实际上极端值得怀疑。我从自己的经验中体会到这一点。在又一次尝试开发 EA 失败之后,最恼人的事情是不得不将它丢弃,这意味着尽管获得经验很有用,但这并不能降低对花费大量时间的失望。当您自己开发 EA 时,这是难以避免的。如果我们谈论的是自由职业者订单,那么一切都会更加伤感,因为您将获得的 EA,很可能不会有任何用处。

有关于此,我想明确指出,这主要与您的时间有关。成功人士有正确评估时间价值的能力。如果花费的时间没有带来预期的结果,那么就不值得继续下去。以下是标准方式的示意图:

示意图 1.

标准方式

示意图中的每个操作都各自需要时间,总体结果直接取决于您拥有的知识和资源。资源并不一定意味着您可用于投资的资金,而是能不断测试交易系统的可用计算机,或购买必要设备的资金。您追求目标的愿望和空闲时间的可用性也很重要。这事在于,找到或创建一款优秀的交易系统只是成功的一半,后半部分关注角度则是如何正确管理它,因为很简单您的空闲时间不多。

如果您至少对这个问题有一丝了解,那么您能够看到如果我们使用来自 MQL5 市场或其它来源的现成交易系统,示意图将如何变化。没有必要重新绘制全部,只需指出相应的替换:

示意图 2.

用搜索替代开发

示意图的含义没有改变,但搜索并选择现成的东西要容易得多,而且我要说,这比编写大量代码要愉快得多。幸运的是,我可以两者兼得。当然,这需要知识和经验。至于其它事情,这张示意图背后的思路是,随着时间的推移,EA 也许会失去其相关性,并且大多数最终肯定会被废弃。在您抛弃另一个 EA 之后,您不会怀疑过一段时间后它可以再次使用,您会吗?在一堆垃圾中挖掘,寻找被遗忘已久的算法,同时思考如何应用它们,也将花费大量时间。

尽管如此,最好积累一定的 EA 数据库,并继续成功交易,同时明智地改变它们。在这种情况下,我们的流程甚至能进一步简化,因为无需再寻找新的 EA。这可能吗?是的,它可以。理想的话,此 EA 集合应具有以下品质:

  • 算法灵活性。
  • 信号反转的可能性。
  • 性能(最小资源消耗)。
  • 订单魔幻数字。

基于这些数据,甚至可以为所选 EA 交易集合输入前景的数学定义。我们甚至可以尝试找到这样的表达式,从而更清楚地说明这些 EA 的特征、及其数量能影响什么以及如何影响。要不然,我们可以简单地制作一份简单易懂的清单:

  1. EA 越多,我们的集合就越好(仅仅是因为 EA 越多,它们就越能满足所选交易区域要求的交易准则)。
  2. EA 拥有的输入越多,就能优化更高效率。
  3. 基于柱线的 EA 更佳(它们更容易使用和测试,以及优化,我们不必担心网速、滑点、和其它障碍)。
  4. 如果可以反转交易信号,那么 EA 的权重就会加倍。

我不会在这里详述过度优化及拟合历史,因为这是一个单独的问题。我假设您知道如何正确地做到所有这些。如果一切都正确完成,那么我们的示意图就转化为非常简单的设计:

示意图 3.

基于 EA 数据库的交易

显然,您拥有的 EA 越多,您就能更好地对机器人分类。但在此,我们面临着若干个不爽的时刻。我们选择的想要达成的品质越好,我们进行选择所花费的时间就越多。此外,我们将不得不多次进行选择。您需要定期执行此操作。所以,它会变成另一份工作,除非有人为您代劳所有事情。有关于此,问题浮现:“既然已有经过测试的绝对没有风险的例行业务示例,为什么我需要它?

此外,您希望在交易活动中更多成功,您就需要更多的并发操作终端。这意味着您应当持续监控每个终端,从中添加和删除新的 EA,以及配置和监控它们的工作。如您所知,这都是一拖车工作。尽管事实上我们已把自身从需要持续开发新 EA 的泥沼中挣脱出来,但我们仍未摆脱主要例程。我们列出主要的劳动密集型要点:

  • 使用优化选择 EA。
  • 在模拟账户上进行初步的正向测试。
  • 选择最耐用的交易信号。
  • 使用最耐用的组合进行实盘交易。
  • 持续控制(关机、暂停、更换机器人、等等)(操控终端)。

所有这些都是可能的,但前提是您拥有最佳的工作流范式。但当然是有限制的。据我的经验,我认为,您独自工作。不可能跳到您的头顶上,因为一切都需要时间。

最初,我自己开发的暴力算法出于研究目的,为了搞明白是否有可能使用简单的算法达成可盈利交易。我意识到这是可以做到的。鉴于它当时的能力,它只能提供额外的 EA,从而扩大其总数。为了更好地理解简单的 EA 如何提供帮助、以及如何正确使用它们,我们需要更深入地了解特定算法如何能够解决可盈利交易问题,以及如何与某些 EA 正确打交道。


EA 和形态

仅仅拥有一系列算法,并不断优化它们是不够的。优化是一项单独的技能,对其精通程度决定了在交易账户上使用 EA 的结果。每个 EA 都特立独行,并且在优化和使用时都有自己的细微差别。我认为任何 EA 中都应该包含的一个重要选项,即反转交易的能力。这意味着任何交易动作都能反其道取代,即买入被卖出所取代,卖出被买入所取代。最初,此选项看似完全没有必要,因为人们错误地认为一切都应该按预期工作。

为了理解这个事实,我们首先应该了解什么是形态。在通俗的理解中,形态是某些统计特征和随机分布之间的差异。当肤浅地研究这个问题时,人们也许会想到形态的惯性。但这只是这种形态未来可能出现的场景之一。只有一小部分形态具有惯性。我们在回测或交易信号中研究所发现的形态。

假设我们有一个非常大的机器人数据库,我们可以根据我们的研究,为对应一个或多个原因的某些特征,创建单独的组。特征并不像分组本身那么重要:

示意图 4.

分组机器人

在此,我的暴力程序首次作为流图的一个元素出现。事实上,多亏每个副本的不同设置,故该程序能执行这种分组。本质上,程序的每个副本,配置不同,都是一个完全独立的机器人组,可以从中进行选择。生成的机器人可用于交易,显示在流图的最底部。于此最重要的是,所有这些机器人组顺序,在一段时间后分为三组:

  • 可盈利的,配合直接信号(基于形态惯性)。
  • 可盈利的,配合反转信号(基于立瞬时形态变化)。
  • 混沌(简单拟合历史)。

不可能预先知道哪个集合将提供一组特定的信号,但一段时间后可以通过排除法进行过滤。有关于此,这样的独立群和信号越多越好。最好为每组 EA 至少发出两个信号:

  1. 直接信号。
  2. 反转信号。

此外,我们可以添加来自不同组的混合信号。所有这些都将最大限度地提高有效发现和谐组成 EA 组的机会,使之能够长期工作。两个事实可以导致尽可能快地找到优秀的投资组合:

  1. 可用 EA 最高品量和有效的分组(尽可能多的独立组)。
  2. 每组的直接和反转信号 + 混合。

所有这些因素最终提供了数量最多、变化众多的信号,最终为我们提供了最好的样本,供后续在实盘交易中使用。影响进行此类分组能力的最重要因素是 EA 集合的大小和多样性。就我的程序而言,其设置的周密性,和内部算法的多样性,诸如分析方法、聚类、等等,均至关重要。增加多样性的通用方法之一是聚类:

示意图 5.

工作限制

在这种情况下,聚类表现为可以按周内星期几、和日内的时间窗口,来划分机器人子组,其本身已为 EA 分组挂钩投资组合提供了最广泛的机会。当然,您可以抛很多聚类选项,但我相信,这是最简单和最有效的。此外,程序本身还可配置为在某些日期和钟点工作。这允许对计算资源消耗进行最大程度的优化,并为程序的每个副本设置正确的权重。每个设置都有其自身的计算复杂性,因此该技术是必要的。

此外,我还愿意谈谈复杂和简单的 EA。理论上,有可能创建一款尽可能灵活和可变的 EA,能与几乎任何形态相关,但我认为这对每个人都显而易见,系统越复杂,就越容易被破坏。当然,该系统也有可能变得超级成功和容错,但我们要现实地看待事情。这样说吧,假设少数人拥有这样的系统(尽管我认为这是一个乌托邦),他们绝对不会与他人分享。但是其他人应该怎么做呢?

任何成功的算法交易者都应该对我提出的简单真相有所了解,并且在更大程度上,这些人的盈利都基于这种理解。可盈利交易首先是您能正确使用工具处置业务的能力。等待魔幻般的策略不是最好的解决方案。任何思路都可以通过正确的配套解决方案来实现。这就是我试图在本文中展示的内容,而不是盯住特定的算法。 


最大程度的工作链自动化

这个思路逐渐从简单的研究,发展到全自动寻求稳定交易信号。它完全达到了其所应达到的水平。此刻,我的系统执行整体的任务范围,从简单的交易 EA 生成,到在 MetaTrader 4 和 5 终端中进行交易。这大致是我现在正在开发中的程序当前版本的样子:

示意图 6.

暴力当前所用结构

这种结构彻底减轻了我的日常操作,例如:

  • 选择和分组 EA。
  • 在图表上启用/禁用 EA,及其后续配置。
  • 优化和选择设置。
  • 搜索新的 EA。
  • 创建新的 EA。

这种结构的技巧之一是,事实上除了生成简单 EA,并最终进入我的 Telegram 频道之外,同时该终端内部还有一个通用 EA。在每次程序找到新的工作 EA 时,无需不断将其从图表中删除并安装它。取而代之,它会创建 EA 本身,和一个单独的文本文件,其为 EA 的等同物。该文件最终位于终端共享文件夹当中,其中的一个相应目录可由通用 EA 从中读取设置。这一切都是自动飞速发生的,不需要我的控制,EA 本身最终会进入 Telegram 频道。

因此,整个系统可以自动创建 EA,并将它们自动发布到我的频道。我所要做的就是系统伸缩、购买设备、并监控交易信号。现在,当然,所有这些工作都仅发挥其 1% 的能力,但我认为它非常适合作为演示选项。

此刻,我只有一台电脑为我处置业务。它十分老旧,但足以确保两名独立员工(暴力程序)交替操作。基于这两个设置,我创建了两个信号:每个信号的直接信号和反转信号,以及附加的直接和反转混合信号。根据两个月的测试结果,您可以看到我上面说的:

图例 1.

直接和反向盈利

根据测试结果,在两个月的最低容量连续交易中,仅有两个明显的积极信号。还有另一个(混合),但它很像此处所示的倒置。它们指的是两种完全不同的交易算法及其设置。在此,我们可以看到,在直接和反向信号上都可以获得积极交易。您可以在我的 Telegram 频道中找到整个测试过程中生成的 EA。链接可在我的个人资料以及文章末尾找到。


通用接收器 EA

当然,更周密和高品质的 EA 会更有效。它们都可用于自动交易。不过,大多数 EA 能够重复使用。任何算法都有其适用性的限制,许多看似不符合开发人员或客户期望的 EA 都有他们自己未用到的资源。如果我们估计有多少交易系统从未达到测试阶段(至少在模拟账户上)的近似比率,我们将看到它们简直数以千计。

事实是,如果您不知道如何正确优化 EA,它肯定会被丢弃。正因于此,我扔掉了不少的有趣 EA。我只是没有意识到它们的使用方式可能略有不同。不幸的是,这需要一些经验。我不会在这里触及这个话题,但我稍后会写一篇关于高级优化的单独文章。

决定这样的冒险并不容易,因为出于本能,您总是想拿到一款超级 EA,把它放在终端里,按下一个按钮,然后把它丢之脑后至少几周。但我们仍然需要找到它,并确认它确实具有我们所需的特征。但想想看:当您在寻找它时,您可以采取一切行动,并尽可能多地按不同配置运行。

当然,您需要花费大量时间和精力,才能胜任控制此类 EA 的交易过程。在我的系统中,我使用通用 EA 绕过了这个问题,它是一个便捷的可选项,在已生成的智能系统(设置)里附加组件。此类 EA 的第一个也是最简单的版本包含以下重要的控制变量:

input int DaysToFuture=50;//Days to future
input LOT_VARIATION LotMethod=SIMPLE_LOT;//Lot Style
input bool bInitLotControl=false;//Auto lot bruteforce
input double MinLotE=0.01;//Min Lot
input double LotDE=0.01;//Lot (without variation)
input double MaxLotE=1.0;//Max Lot
input bool CommonE=true;//Common Folder
input string SubfolderE="T_TEYLOR_DIRECT";
input int MinutesAwaitE=2;//Minutes To Check New Settings
input bool bBruteforceInvertTrade=false;//Invert Bruteforce Trade

当然,这些并不是所有变量,但这些变量是提供以下重要自动化操作所必需的:

  • 在指定的允许交易时间到期后禁用交易(如果在当前设置期间未生成新交易时间,则旧交易时间将失去相关性)。
  • 交易风格(简单手数/在给定交易窗口内从最小值逐渐增加手数到最大值/在给定交易窗口内手数从最大值逐渐降低到最小值)。
  • 从当前终端文件夹/终端的共享文件夹读取设置。
  • 选择子目录的能力。
  • 更新设置的时间间隔。
  • 反转信号。

所有这些都令我们能够灵活地配置终端和暴力程序之间的交互,并在一台机器的能力允许范围内,同时启动任意数量的终端和暴力机器人。唯一的问题是,现在我必须为每个图表分配一个单独的 EA,因为我还没有制作一个通用的多重接收器。稍后将添加它。我们需要它来实现更好、更周密的交易。在示意图中查看所有优、缺点非常方便:

示意图 8.

优点和缺点

正如示意图中可见,建议在简单和高级接收器 EA 两者中实现两个系统:

  • 并行交易同步系统。
  • 并行交易优化系统。

这些都是所有算法中非常重要的附加组件,既可以提高并行交易的品质,又可降低交易成本。我计划稍后将它们投入使用,但目前没有必要的资源。

当我们所论只与一个 EA 进行交易时,所有这些东西都是多余的,但当我们论及许多 EA 的并行操作时,不可避免地需要这样的附加组件。我的方式优点是,我能基于所有 EA 的一致性,更有效地实现这些附加组件。这适用于外部和内部系统。

我还想说,多重接收器设计为在一个图表上工作,而无需将其加载到每个金融产品上。这种 EA 的唯一缺点是更难针对每个特定金融产品进行定制,但尽管如此,它的优点远多于缺点。也许,在后续的一篇文章中,我将更详细地介绍这些系统,同时讲述我在撰写文章时能够引入的创新技术细节。


动态收集报价的 EA

以前,我有一个简单的 EA,它创建的文本文件在程序中必须手动打开。当然,这些数据在一段时间后会失去相关性。为了确保上述所有结构的运行,我们需要访问全新报价。为此,我所要做的就是制作一款 EA,它持续将数据写入终端的共享文件夹。为了编译可交易的金融产品和周期集合,我决定在程序设置中添加相应的清单:

示意图 9.

更新全新报价

使用这种技术,我们能为每个浏览器配置具有自己独特周期工具集,而无需在若干个文件夹中复制数据。在这种情况下,只需要一个终端即可操作任意数量的交易终端。如果我们将分析间隔设置为年度,那么更新数据时可能出现的短暂卡顿微不足道。此外,整个系统基于逐根柱线范式,故整件事尽可能可靠,几乎可以抵御任何紧急状况。此机器人只有少量设置:

input bool CommonE=true;//Common Folder/Terminal Folder
input double YearsE=10.0;//Years Of History Data
input int MinutesForNew=2;//Rewrite Timeout In Minutes

EA 写入所有终端的公共文件夹,或写入当前终端自己的文件夹。它写如历史数据的最后几年,我们可从终端当前时间开始指示回溯历史。EA 在指定的超时(以分钟为单位)后写入。这是所有逻辑的最后一个要素。最艰难的部分结束了。剩下的就是实现一款在同一图表上工作的接收器 EA。我已经为它的实现准备好了一多半的功能。


结束语

在本文中,我摆脱了通常的技术部分,并尝试据我自己的经验,从稍微不同的角度来看待可盈利交易的问题。正如您所看到的,除了 EA 本身(这只是赚取盈利的一小部分)之外,还有很多微妙之处和细微差别可以帮助您实现盈利,或阻碍您的努力。有趣的是,结果与开始时的预期相去甚远。

一路走来,我不得不逐渐改变最初的想法来适应现实,这是一个完全无法控制的过程,而是一个自发的、不可避免的过程。结果就是,我找到了摆脱理论僵局的正确途径,这不可避免地只能从实践中发现。这意味着更多的机器人、更多的信号、更多的计算机、和更多的自动化。我希望这篇文章能成为许多理论家和圣杯寻求者的某种动力,它揭示出,始终有可能找到一条替代出路。在下一篇文章中,我将详细展示我的系统得到了哪些改进。不过,还有很多工作要做。

所有当前可用的信号都可以在这里找到。我只展示了文章中最重要的那些。它们有更多,随着我获得额外的力量和改进,它们的品质会提升。我们将看看我是否能最终得到一组稳定且通用的信号。至于自动生成的 EA,您可以在我的公开 Telegram 频道中找到它们。目前,它们的品质与我的最低可用容量相匹配,但以后,随着容量的扩大,您会看到种类和品质的增加。

链接

本文由MetaQuotes Ltd译自俄文
原文地址: https://www.mql5.com/ru/articles/12446

神经网络变得轻松(第五十部分):软性扮演者-评价者(模型优化) 神经网络变得轻松(第五十部分):软性扮演者-评价者(模型优化)
在上一篇文章中,我们实现了软性扮演者-评论者算法,但未能训练出一个可盈利的模型。在此,我们将优化先前创建的模型,以期获得所需的结果。
时间序列挖掘的数据标签(第3部分):使用标签数据的示例 时间序列挖掘的数据标签(第3部分):使用标签数据的示例
本系列文章介绍了几种时间序列标记方法,这些方法可以创建符合大多数人工智能模型的数据,而根据需要进行有针对性的数据标记可以使训练后的人工智能模型更符合预期设计,提高我们模型的准确性,甚至帮助模型实现质的飞跃!
从外汇市场的季节性获益 从外汇市场的季节性获益
我们都熟悉季节性的概念,例如,我们都习惯于冬季新鲜蔬菜价格的上涨或严重霜冻期间燃料价格的上涨,但很少有人知道外汇市场也存在类似的模式。
MQL5中的替代风险回报标准 MQL5中的替代风险回报标准
在这篇文章中,我们介绍了几种被称为夏普比率(Sharpe ratio)替代品的风险回报标准的实现,并检查了假设的权益曲线以分析其特征。