English Русский Español Deutsch 日本語 Português 한국어 Français Italiano Türkçe
针对交易的组合数学和概率论(第四部分):伯努利(Bernoulli)逻辑

针对交易的组合数学和概率论(第四部分):伯努利(Bernoulli)逻辑

MetaTrader 5交易 | 11 二月 2022, 10:00
1 866 0
Evgeniy Ilin
Evgeniy Ilin

内容


概述

在本系列的前几篇文章中,我曾说过可把分形作为描述市场,尤其是定价的工具。 该模型完美地演绎了市场 — 这已通过计算和模拟得到证实。 最初的目的不仅是阐述最简单的定价形式,还可进一步阐述任何向量序列,其内拥有的一组参数类似于定价参数集合。 那么好了,在一般情况下,由此可证交易也是市场一个有机构成碎片,其特征是持续时间,和出现在交易过程中的概率。 可以从价格和交易里深入挖掘,并创建任意曲线。 对于价格,这条曲线是价格历史;而对于交易,这是交易历史。

价格的情况更清晰明了,因为这个序列中的所有成员显然都在相互效仿。 当然,有可能创建这样的价格序列,它们会相互重叠,但对其分析是绝对无用的,因为不会带来任何实际好处。 回测的情况,或交易历史,则更为复杂。 在研究这些过程时,我得出结论,有一条更容易、更正确的途径来实现盈利和稳定的交易 — 即通过分析交易历史或回测,。 在最后一篇文章里将会介绍其中一种方法,但目前还为时过早。


正确的数据表述在分析中的重要性

如果我们研究运用数学语言来描述交易历史和回测的可能性分析,首先我们需要理解这种分析的目的和可能的结果。 这样的分析有什么附加值吗? 事实上,不可能马上给出一个明确的答案。 但有一个答案,它可以逐渐推导出简单而有效的解决方案。 然而,我们应该先深入了解更多细节。 鉴于之前文章的经验,我对以下问题感兴趣:

  1. 有没有可能将任何策略简化为交易的分形描述?
  2. 如果可能,它在哪里能发挥作用?
  3. 如果并非总是可能,那么可还原性的条件是什么?
  4. 如果满足简化条件,则开发简化算法
  5. 考虑其它选择来描述策略。 普适

所有这些问题的答案如下。 可以将一些策略简化为分形描述。 我已经开发出这个算法,我将进一步讲述它。 它也适用于其它用途,因为它是一种通用分形。 现在,我们来研究并尝试回答以下问题:用随机数和概率论的语言来说,交易历史是什么? 答案很简单:它是一组孤立的实体或向量,它们在一定时间段内的发生具有一定的概率和时间利用因子。 这样的每个实体的主要特征是其发生的概率。 时间利用因子是一个辅助值,有助于判定有多少可用时间来进行交易。 下图可能有助于理解这个想法:

数据转换示意图

示意图中所用的符号:

  1. 黑点 — 交易的开始
  2. 红三角 — 交易的终点
  3. 橙色六边形 — 上一笔交易的结束,和下一笔交易的开始
  4. T[i] – time of a relevant trading window
  5. P[i] – 相关交易的盈利或亏损
  6. n – 交易数量
  7. m – 交易窗口数量

该图例展示了三幅图表,来证明选项 A 和 B 可以简化为选项 C。现在我们看看这些选项是什么:

  1. 选项 A 是我们如何看待使用所有可能的技巧、资金管理、等等技术进行的任意交易。
  2. 选项 B 相同,但考虑到一次只能开立一笔订单。
  3. 选项 C 是我们如何看待跟单信号服务亦或回测中进行的交易。

在此,选项 C 是信息量最大的选项,在大多数情况下,我们依赖于这种交易表示。 甚而,任何策略都可以简化为这种类型,因为净值曲线是任何回测或交易信号的主要特征。 该曲线反映了当前时刻的实际损益。

分析任意策略的净值曲线表明,如果该曲线保持不变,成交开立和平仓点可以位于绝对的任意位置。 这意味着一个交易策略可以用大量不同的方式来表达,所有这些方式都是等价的,因为它们的净值曲线是等价的。 因此,搜索所有等效选项没有意义。 那么寻找它们的目的是什么呢?

B 型策略可以很容易地转换为 C 型策略,因为我们只需要按照时间间隔的发生顺序将它们粘合在一起即可。 实际上,这正是测试器和信号服务所做的。 如果您尝试将 A 型转换为 C 型,则情况就不同了。为了实现这种转换,我们首先需要将 A 型转换为 B 型,然后再把结果转换为 C 型。现在你知道策略测试器和跟单信号服务是如何工作的了吧。

这种转换本身对交易没有任何实际价值。 然而,它有助于理解更深层次的事情。 例如,我们可以得出结论,有以下几种策略:

  1. 由两重状态描述
  2. 由多重状态描述
  3. 由无限多重状态描述

在本文中,我将向您展示前两种策略的描述示例。 第三种类型更复杂,需要单篇文章来讲述。 我会在合适的时候重返该想法。 无论如何,在研究第三种策略之前,有必要回顾前两种策略。 前两种类型会让我们做好准备,进而处理第三种类型,即普适策略。


双重状态

前几篇文章中讲述的分形实际上代表的是一个双重状态模型。 此处的状态是向上和向下的走势。 如果我们将该模型应用于余额曲线交易,而不是定价,则该模型将以完全相同的方式工作。 该模型基于伯努利(Bernoulli)规划案。 伯努利规划案描述了拥有双重状态的最简单分形:

  • P[k] = C(n,k)*Pow(p,k)*Pow(q,n-k)   — 伯努利公式(P[k] 是特定组合的概率)
  • p 是取状态 “1” 作为单个实验得出的概率
  • q 是取状态 “2” 作为单个实验得出的概率

由公式可以计算出概率,即在 “n” 步之后,我们将得到一条余额曲线,或任何其它曲线,其中将含有 “k” 第一状态和 “n-k” 第二状态。 这些不一定是交易盈利。 这些状态可以象征我们能看到的、唯一性的任何参数向量。 特定组合的所有概率之和必须形成一个完整的分组,其意味着所有此类概率之和必须等于一。 这象征着在 “n” 步中必须出现这样的组合之一:

  • Summ(0...k…n)[ P[k] ] = 1

在本例中,我们感兴趣的是运用这些东西来描述定价、亦或回测和跟单信号。 想象一下,我们的策略是由等距止损了结的交易构成。 与此同时,我们也明白,不可能通过计算得出未来的预期价格走势。 这些概率的分布如下所示:

双重状态

这三张插图所示:

  1. 随机游走交易的概率分布
  2. 盈利交易或上行趋势的概率分布
  3. 亏损交易或下行趋势的概率分布

从示意图中可以看出,根据稳步上升的概率,某些组合的概率会发生变化,最有可能的情况会向左或向右偏移,就像所有其它概率一样。 这种回测或定价表达法是最简单和首选的分析模型。 这种模型足以描述定价;然而,用其描述交易还是不够的。 实际上,余额曲线可以包含各种交易,它们在持续时间和损益方面有所不同。 取决于哪些交易衡量指标更重要,我们可以设置任意数量的状态,而不仅仅是两个。


多重状态

现在,我们来研究下面的例子。 假设我们仍然对交易的损益值感兴趣。 现在,我们知道损益状态可以取三个严格定义的值,且我们知道每个值的概率。 如果是这样的话,那么我们就可以说我们有一个三重状态系统。 有没有可能把所有可能的事件发展描述成一个双重状态系统? 事实上,这是可能的。 我打算稍微改进一下伯努利规划案,这样它就可以与任意状态数量的系统一起工作。

根据伯努利逻辑,我们需要定义状态计数器:

  • i[0] – 在一连串独立实验中,第一种状态的结果数量
  • i[1] 是一连串独立实验中第二种状态的结果数量
  • . . .
  • i[N] 是 N 个状态的结果数量
  • N 是系统状态的数量
  • s 是状态数量

如果我们逐个判定某个状态的出现次数,那么下一个状态的可用次数将为:

  • s[i]  = N - Summ(0… k … i - 1) [ s[k] ]

它可以简化。 如果我们选择了前一个状态的结果数量,那么下一个状态的结果数量与前一个状态的结果数量保持完全相同。 就像在伯努利规划案中一样,存在不一致、而概率相同的概率链。 所有状态数量相同的链条数量计算如下:

  • A[h](N,i[0]  ,i[1] ,… i[n]) = C(N , i[0]) * C(N-i[0] , i[1]) *…. C(N-Summ(0…k…n-1)[ i[k] ] , i[n])
  • C 是组合
  • h 是一套独有的步阶

显然,这类集合的概率可以用伯努利规划案计算。 将一个集合的概率乘以它们的数量:

  • P[k] = A[h](N,i[0]  ,i[1] ,… i[n]) * Pow(p[0], i[0]) * Pow(p[1], i[1]) … * Pow(1- Summ(0…j…N-1)[ p[j] ] , i[1])
  • p[j] 是某一状态的概率

为了清楚起见,我创建了三维图形,就像前面两个状态的例子一样。 再一回,我们有 30 个步阶,但于此我们采用三种状态,替代原来的两种:

三重状态

这种示意图的体量将恰好等于一,因为每个根柱线代表一个不相干的事件,而所有这些不相干的事件正好形成一个完整的分组。 示意图展示了基于不同概率向量得两种不同策略。 这些概率象征着三种状态之一得发生概率。

  • S1 是首个状态出现的次数
  • S2 是第二个状态出现的次数
  • S3 = 30 – S1 – S2 – 是第三个状态出现的次数

如果我们的系统有第四种状态,那么它只能以四维的方式呈现。 对于五个状态,我们需要一个五维图,以此类推。 对于人眼来说,只能看到 3 维,因此更复杂的系统无法用图形来呈现了。 尽管如此,多维函数也是功能性的,就像其他函数一样。


多重状态的软件实现

双重状态可以用一维数组呈现。 那么多重状态呢? 我们也许能想象一个多维数组。 但是,据我目前所知,所有编程语言大多使用二维数组。 也许,有些人提供了创建三维或更高维度数组的可能性,但这并非一个方便的选择。 更好的选项是采用集合或元组:

分形元组的结构

这就是 “30” 步阶的情形。 第一列和第三列反映了元组的内部结构。 这只是内含一个数组中的数组。 例如写为 “[31,1]”,这意味着该矩阵元素也是一个具有 “31” 行和一列的矩阵。 伯努利公式和整个伯努利规划案只是这个更普适规划案的一个特例。 如果需要双重状态,元组就会变成一维数组,在这种情况下,我们将得到在伯努利公式中起关键作用的简单组合。

如果我们查看这些数组中的内容,我们将得到 “2” 和 “4” 列。 第二列是一组特定唯一状态的等效分支数量,第四列是该分支的总概率,因为它们的概率相等。

验证此类元组计算的一个真正清晰的准则是检查完整的事件分组和所有唯一分支的总数。 为此,我们可以创建一个普适函数,将其复杂元组的所有元素相加,无论其内部结构有多复杂。 上面的屏幕截图展示了一个示例。 这样的函数必定支持递归;它能在内部自我调用 — 在这种情况下,它将是任意状态数量和步阶数量的通用函数。 对于独有分支的数量,真实值计算如下:

  • Pow(N,n)

换句话说,系统状态的数量必须提高到步阶的幂次方 — 这样我们就能得到由状态组成的唯一链条的所有可能组合。 在图例当中,这个数字显示为 “CombTotal” 变量。 总和结果将与该变量进行比较。

为了计数元组,我们应该使用具有相同递归结构的类似函数:

计算分形元组的函数

正如您所见,它们非常相似。 仅有几点不同。 在每个级别,我们还必须在剩余自由步阶将结果乘以组合数量。 在计算概率时,结果必须额外乘以当前被检查状态的概率。 此外,不要忘记乘以已经累积的链条概率。 逐一累积所有状态,直到没有剩余的空闲单元,而这些单元是步阶数量。

我们也可以考虑从我们知道的数据中提取状态的例子。 例如,我们有交易统计数据,其中存储了每笔订单的以下信息:生存期、交易量、亏损或盈利、等等。 由于样本是有限的,因此状态数量也是有限的。 例如,我们可以判定样本中有多少盈利选项。 每个独有的盈利值都可以被视为一个独有状态。 计数整个样本中所有此类盈利交易的发生次数,除以所有交易的总数,得到特定状态的概率。 针对所有状态重复这个过程。 如果我们把所有这些概率累加起来,我们得到最终的一个。 在这种情况下,所有的动作正确无误。 以类似的方式,我们可以按订单生命周期对交易进行分类。 换句话说,状态可以是事件的任何独特特征。 在这种情况下,交易被视为事件,而交易参数是特定事件的特征。 在我们的案例中,状态示例如下:

状态示例

该图例展示了一组状态的编译示例。 根据规则,状态应该组成一个完整的事件分组,即不应该有交叉联合状态。 计算这些事件的概率则取表格中特定状态的数量除以所有订单数量(在我们的例子中是 7)。 这是订单的例子;然而,我们可以取任何其它状态进行操作。


结束语

在本文中,我尝试演示如何评估数据样本;如何进行数据分类,并将它们组合成一组状态,并从这些样本中生成新的样本;以及如何计算这些状态的概率。 如何处理这些数据取决于您。 我认为最好的方法是创建多个样本,并对它们进行评估 — 这也被称为样本聚类。 样本聚类可以作为一个很好的过滤器来提高现有系统的交易性能。 它还可以用于从看似无利可图的策略中赚取盈利 — 只需对数据进行聚类,并找到所需的盈利样本。 最重要的是,这种机制在可伸缩交易系统中的数据处理阶段能起到作用。 我们将在稍后的实践中应用这些机制,届时我们将组装一个自适应交易系统。 但目前,这只是抛出的另一块砖。

参考


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

附加的文件 |
States_Research.zip (1064.01 KB)
针对交易的组合数学和概率论(第五部分):曲线分析 针对交易的组合数学和概率论(第五部分):曲线分析
在本文中,我决定进行一项研究,探讨将多重状态系统简化为双重状态系统的可能性。 本文的主要目的是分析并推导出有用的结论,这些结论也许有助于基于概率论的可伸缩交易算法的深入发展。 当然,这个话题会涉及到数学知识。 不过,根据之前文章的经验,我认为广谱信息比细节作用更大。
为 MetaTrader 打造的高级 EA 构造器 - botbrains 为 MetaTrader 打造的高级 EA 构造器 - botbrains
在本文中,我们将展示 botbrains.app 的功能 — 一款无代码开发交易机器人的平台。 若要创建一款交易机器人,您无需编写任何代码 — 只需将必要的模块拖放到规划图上,设置它们的参数,并在它们之间建立连接。
固化价格动作止损或固化 RSI(智能止损) 固化价格动作止损或固化 RSI(智能止损)
在交易中,止损是资金管理采用的主要工具。 有效利用止损、获利回吐和成交量可以使交易者在交易中更加一致,总体上更加有利可图。 尽管止损是一个极好的工具,但在运用中也会遇到一些挑战。 最主要的是止损猎杀(stop-loss hunt)。 本文展望如何降低交易中的猎杀,并与经典的止损用例进行比较,从而判定其盈利能力。
预测市场价格的通用回归模型(二):自然、技术和社会暂态函数 预测市场价格的通用回归模型(二):自然、技术和社会暂态函数
本文是前一篇文章的逻辑延续。 它彰显一个事实,即确认第一篇文章的结论。 这些事实在该书出版后的十年内就得以显露。 它们围绕着三个检测到的描述市场价格变化形态的动态暂态函数展开。