请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  量化策略 帖子:3277053 新帖:34

组合剥头皮:分析过去的交易来提升未来交易的成效

舞蹈家2发表于:6 月 16 日 02:00回复(1)
我不打算成为剥头皮交易者,但我不得不这样做。 甚至,我不想成为交易员或自动交易系统的开发人员。 幸运的是,我确实变成了一名交易员和一名开发人员。 我的研究工作导致一种永恒技术的出现,可传承给子孙后代。 除非世事变迁。 除非交易所停止操作。


关于该方法。 直观阐述

想象一下:有一尊大炮(一套交易系统或算法)和 2 盒贝壳 — 其一是正面(盈利)交易,而另一个是负面(亏损)交易。 如果您瞄准它们射击,并研究战场上的弹坑,就会发现在整个射击历史中,一些正面交易永远不会落入负面的弹坑。

从观感上看,它可能如下所示:

图例 1. 交易历史的数字领域

图例 1. 交易历史的数字领域


注意图例 1中的坐标轴:该方法的关键参数是 Time。 它是成交期满时间(持仓在被强制平仓前的持续时间)。 时间,作为一个计算单位,扮演者重量级的角色,因为对于同一事件(交易系统内的开单条件),结果或有不同,且取决于期满时间。 一个时间间隔可能会持续产生负面结果,另一个时间间隔表现平庸,而第三个时间间隔总是盈利的。 如此业绩结果分布能够无特定顺序地贯穿整个交易历史。

关于该方法。 细节

许多开发人员一直在尝试基于指标、各种类型的日本烛条、它们的形态组合、以及许多其他可能的结构来创建交易系统,试图找到一款交易圣杯。 而结果则是“平均”,因为这样的智能交易系统通常同时包含所有极端:既有良好的盈利结果,也有最坏的爆仓结果。 然而,如果您加到系统时间,并依据交易历史数据分析每笔期满的交易结果,则可能识别出哪些始终盈利,和哪些呈现稳定亏损业绩。我们需要做的就是找到并形式化结果中的差异。 此后,我们可以只将盈利的结构添加到自动交易系统之中,同时从代码中剔除所有亏损结构。

图例 2.  在开发的交易系统中实现期满

图例 2. 在开发的交易系统中实现期满


举例:

例如,测试交易历史上的锤子反转烛条形态:在某些情况下,预期趋势逆转,故此交易是有利可图的;在其他情况下,没有逆转,则该形态就会产生亏损。 但是,如果我们为所有订单测试相同点距的锤子形态,设置 5 分钟期满(这意味着订单将在开单后持续 5 分钟,之后平单),然后 6, 7 , 8 .... 分钟期满,我们能够发现,例如,第 7 分钟(图例 1)表现出最好的结果,由于趋势总是逆转,且没有形态失败。 在这种情况下,我们应该分析图型,尝试找出第 7 分钟和所有其他选项之间的差异。 然后应在代码中描述这种差异。 作为选项,可以将不良结果差异形式化,且可令 EA 在这些条件下禁止进行交易。 生成的智能交易系统可如以下业绩预测操作多年:


图例 3. 策略测试结果(EURUSD、M1、最小手数)

图例 3. 策略测试结果(EURUSD、M1、最小手数)


数学模型

越简单越好。 此处的数学模型非常简单。 为了阐述差异,并令结果形式化,或模拟成交开仓条件,从参与该过程的烛条(柱线)中进行数字测量就足够了。

数字测量(以点数为单位)包括烛条长度、烛条主体和烛条的方向(颜色)。 阴线则被忽略。

图例 4. 数字测量(以点数为单位)包括烛条长度、主体颜色。

图例 4. 数字测量(以点数为单位)包括烛条长度、主体颜色。


仅针对 3 根烛条(在烛条开盘之前交易)的数字度量的阐述足以令它们的组合在历史当中独一无二。

"烛条 1 的长度和烛条 1 的主体以及烛条 1 的颜色,
烛条 2 的长度和烛条 2 的主体以及烛条 2 的颜色,
烛条 3 的长度和烛条 3 的主体以及烛条 3 的颜色"


此处是与盈利交易相关的组合的数字测量示例,若采用相同的交易算法、相同的期满天数和相同的止盈距离,这些组合在交易历史中重复出现::

22.04.2009 03:23;R  31 - 26;G  13 - 3;G  21 - 11

07.10.2009 20:55;R  31 - 13;G  13 - 3;G  21 - 11

25.11.2011 19:48;R 22 - 2;G  13 - 3;G  21 - 11

07.06.2013 10:59;R  16 - 13;R  13 - 3;G  21 - 11

26.02.2019 18:35;R  22 - 9;G  13 - 3;G  21 - 11

在为智能交易系统数据库选择组合时,最好选择在方向(颜色)上完全一致的测量值,其中 G 是绿色(上涨),R 是红色(下跌)。 在我们的示例中,以下测量值匹配:

22.04.2009 03:23;R  31 - 26;G  13 - 3;G  21 - 11

07.10.2009 20:55;R  31 - 13;G  13 - 3;G  21 - 11

25.11.2011 19:48;R 22 - 2;G  13 - 3;G  21 - 11

26.02.2019 18:35;R  22 - 9;G  13 - 3;G  21 - 11

然后应将这些测量值合并为一个,以便将它们更容易地添加到代码之中。为此,将相关数列的编号归纳为范围:

R  (22-31) - (2-26);G  13 - 3;G  21 - 11

假设用户可以采用任何交易系统(开仓算法),例如,烛条上涨 10 个点后(绿色)后开仓,并在所需市场的历史记录上测试此策略,在检测期满和距离的迭代里,建立正数值交易的数字测量组合数据库。 一旦识别出盈利交易(只有那些期满,且从未与亏损交易同时发生的交易),且记录其测量值完毕后,所产生的组合数据库就可以连接到算法。 此后,智能交易系统就会仅跟踪和执行早前识别出的成功组合。

鉴于运用了组合数据库,所讲述的方法被命名为组合剥头皮。 该方法所基于的思路,即任何交易系统的绩效,均可针对交易结果和期满数据的历史进行初步分析来提升,可以从该区间选择最佳结果的数字测量值组合,供未来使用。

如果在交易历史中重复数字测量值组合,且没有亏损案例,则可推断成交成功发生和重复的概率会增加。 该方法能够将平庸的普通交易系统(例如,基于指标的系统)扭转为拥有高绩效结果的成功智能交易系统。


采用相同组合数据库,但年份不同时智能交易系统的预测绩效示例:

2016


2017


2018


2019


2020

图例 5. 采用相同组合数据库,但年份不同时智能交易系统的测试示例:

图例 5. 采用相同组合数据库,但年份不同时智能交易系统的测试示例



为什么是剥头皮?

该方法原名为组合升级组合修订法组合升级法。 但实际上已经对其进行了修正。

首先:剥头皮 (取薄薄一层的意思)。 所提议的方法不会改变或取代现有的交易系统和算法。 它只能切断冰山的某一部分,即这些系统的一角,从而暴露出它们内部的数值,并揭示它们的机制。

其次:不幸的是,当前版本的方法只能在一个交易日内和小距离内展现出成效。 原因在于交易历史。 绝对可以在任何市场运用,包括股票和所有其他可能的资产。 重要的是交易历史。 历史越长,选择越佳。 就持续时间而言,最合适的变体是货币市场。 不幸的是,外汇市场发生了历史性事件,令大部分历史报价变得毫无用处。 于 2009 年,交易中心的报价从四位数切换到五位数。 故此,经纪商亦开始提供五位小数的价格。 之前的所有历史数据都变得毫无用处。 因此,该方法能操控 2009 年及以后的历史记录。

此处是经纪商从 四位 切换到 五位 小数的时间:


图例 6. 经纪商切换报价的历史时刻(2009 年 2 月 20 日至 23 日)。 以点数为单位的长度显示在烛条上方。

图例 6. 经纪商切换报价的历史时刻(2009 年 2 月 20 日至 23 日)。
以点数为单位的长度标示在烛条上方。


出了啥错? 为什么该方法不能应用在四位小数报价
这其实很简单。 想象一下,在2009年之前,毫米是不存在的。 只有米和厘米,但没有毫米。 任何毫米都被四舍五入为零或一厘米。 粗略地说,外汇市场也发生了同样的情况:15 毫米长的烛条不存在。 它们在图表上显示为 1 或 2 厘米长。


因此,相关数据库仅包括任意外汇品种的最后 4,400,000 分钟数据。甚至于,只有最受欢迎的烛条尺寸(5 到 40 点)和能够“保证”止盈距离为 5 到 15 点的烛条才进行了完整的统计覆盖。 由于交易历史较短,较长的止盈距离和较大的烛条尺寸在统计数据中存在明显间隙。 因此,就该方法的适用性而言,过去十年的报价存档仍处于初始阶段。 它只是一个最小值,仅正常涵盖了初期的烛条组合和距离的数字测量值。

图例 7. “保证”止盈距离的比率,随交易历史的时间增长而提高

图例 7. “保证”止盈距离的比率,随交易历史的时间增长而提高


10 年后,50 点烛条和 20 点距离将被完全覆盖。 再过 10 年将提供 60 点烛条和更长距离的数据。 因此,每十年都会提供基准的统计数据。 这就是为什么现阶段只适合剥头皮。 越长的交易距离会有太多的间隙,和更多的报价噪音。 当然,您可尝试制作一个止盈距离为 1000 点(四位小数 100 点)的样本,但升级的交易系统其效果与之前并无两样。 以下章节清晰地展示了这一点(它是组合数据库之一的成分):

点数 组合


 10  12 384
 20  4 045
 30  2 768
 40  820
 50  236
 60  76
 70  24
 80  12
 90  7
100  3
110  1
120  0

所以,最后 100 个点是空虚的。 因为统计数据太少。 上面的数字意味着在整个可用交易历史(超过 4,400,000 分钟)中,有 12,384 种组合在 10 点止盈距离范围从未出现亏损。 就像在之前大炮的例子中一样:4,400,000 发会产生负值的炮弹在 10 点的距离内发射,但从未命中 12,384 座代表正值的建筑。 在 20 点的距离处,只剩下 4045 座建筑物。 更进一步,在 60 个点的距离上,4,400,000 次只有 76 次射击未命中目标。


方法缺点

  1. 处理交易历史
    一方面,历史仍然很少。 但是,另一方面,即使是可用的存档也会导致一些困难。 4,400,000 个测试单位在回测时仅有一根烛条长度的数字测量。 最受欢迎的烛条是 5 到 40 点。因此,针对所有不同长度(从 5 到 40,35 次循环)执行完整的历史测试: 


    4,400,000 * 35 = 154,000,000 次。 

    而这仅适用于买入方向。 对于卖出需要相同数量的处理迭代。 甚至,在此处添加期满时间,例如,从一分钟到 30 分钟。 总数是:


    154,000,000 * 30 * 2 = 9,240,000,000 次操作。

    因此,交易历史处理是一项相当复杂的任务。 现代计算能力需花费几个小时解决此类问题。

  2. 组合数据库的定期更新
    交易历史会随着时间的推移而变化和增长。 因此,结果可能会有所不同,且数字测量的组合能够进行调整。 因此,必须不时更新数据库中的组合。 更新间隔应该在几周或几个月之间。
  3. 依赖于提供商的交易历史
    这是主要的缺点。 该方法完全依赖于交易历史。 经纪商有不同的价格数据提供商,因此没有统一的历史记录。 因此,成功组合数据库仅针对提供交易历史的经纪商有效。
    方法

    以下直观示意基于不同经纪商测试相同组合数据库获得的结果:

    #1: 基于寻找组合时提供交易历史的经纪商的测试结果

    # 2: 其他经纪商


    图例 8. 基于不同经纪商(从 2018.06 到 2021.03,EURUSD,М1)测试相同组合数据库的直观示意。 第一个示例:交易历史基于查找组合时的经纪商。 第二个例子:其他经纪商


    图例 8. 基于不同经纪商测试相同组合数据库的直观示意(从 2018.06 到 2021.03,EURUSD,

    М1)。
    第一个示例:交易历史基于查找组合时的经纪商。 第二个例子:其他经纪人


  4. 此外,结果绝对取决于交易的金融产品
    例如,来自 EURUSD 的组合数据库,与 AUDUSD 或任何其他货币对都不兼容。 反之亦然。



最后的部分

尽管思路很简单,但所提议的方法并不那么简单。 主要困难与海量数据处理的实现相关联。 另一个令人不愉快的特点是该方法依赖于经纪商(特定的交易历史),并且对所交易的金融产品点差很敏感。 尽管该方法有助提升任意交易系统的绩效,但它并非圣杯。 或者现在还不是圣杯。不幸的是,仍然可能存在负值交易,因为交易历史太小,并且存在只能在未来填补的间隙。 无论如何,它是一种“永恒的”技术,可在任何能访问交易历史的金融市场中发挥作用。 甚至于,组合数据库的性能随着每个新的一年或十年而提高,同时组合的数量也在增加。

 

给予从头至尾阅读文章的读者的奖励

观察结果,并从操控组合数据库的 EA 中收集统计数据,我发现了一些有趣之处。 组合剥头皮揭示了往常隐藏在数字内部的不可见流程(尤其是对手工交易者而言)。 我很愿意分享其中之一。

尽管存在多种多样的货币对,但外汇市场是由通信渠道组成。 它们全部都是相互协调的,其底层基础是 EURUSD。 这个货币对在市场上掀起主要波浪,其他货币对为适应这种情况,必须找到平衡点。

如此,我注意到这种平衡有一些谐波数字。 这些不是斐波那契、江恩或任何其他数字。 这些似乎是与外汇市场中的走势和汇率修正相关的一些特定的协调值。
方法
偏差和平衡数(以点数为单位):

37.5 
75
112.5
150
187.5
225

以下研究确认了 EURUSD 是其他货币对修正的基准:如果根据交易算法(任何),您在一天内的任意时间和横盘位置开单,在大多数情况下,汇率会产生一些偏差,然后它被调整回开单点位。 对于 EURUSD,这种偏差通​​常不超过 37.5 个点。 很少达到 75 个点或更多。 而对于其他货币对,这些偏差并不稳定 — 通常会超过 37.5 个点的标准偏差。 一般来说,就这些值而言,只对 EURUSD 的行为最有信心。 其余的依赖货币对则是“更神经”。

此外,这些数字还负责当天的目标利率走势。 225 个点是每天向目标单向移动的标准单位(单向)。 多者每天可以移动 4-5 个单位(单向),即 900 - 1125 个点。 大多是每天 2-3 个单位的走势。

这些数字在图表上显示如下:



此处是这些数值的完整呈现:



另一个例子: 



再次,这些数值的完整呈现:



对于每日和每周的时间帧,目标走势的标准单位是:  

37.5 * 60 分钟 = 2,250 个点

这些,以一种谐波方式,包括 1 分钟时间帧内目标走势的 10 个单位 (2,250/225)。

我相信这些数字对交易者很有用,尽管这些值会随着时间的推移而改变。 即便在这种情况下,组合剥头皮也可进行新的数字分析,并找到新的平衡和走势数字。
方法
感谢您占用时间!

全部回复

0/140

达人推荐

量化课程

    移动端课程