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

量化交易吧 /  数理科学 帖子:3364668 新帖:26

检测超买/超卖区域的方法。 第一部分

我是游客发表于:11 月 26 日 15:44回复(1)

内容目录

  • 概述
  • 常识
    • 在过程动态术语里,超买/超卖区域是什么
    • 论超买/超卖区域检测的准确性
    • 在超买/超卖区域入场的后果
    • 评估有关在超买/超卖区域开仓的风险损失
    • 在超买/超卖区域离场的后果
  • 运用传统指标检测超买/超卖区域的利弊分析
    • 利用斐波那契(Fibonacci)级值建立一组指标
    • “不稳定的”随机指标:指标公式分析
    • 测试一组指标,检测不同趋势类型的超买/超卖区域
    • RSI 怎么会出错? 指标公式分析
    • 评估根据设置和趋势类型,检测超买/超卖区域准确性的结果
    • 传统指标检测超买/超卖区域的有效性结论
  • 提升超买/超卖区域检测效率的新方法
    • 运用分形和蜡烛条分析法检测超买/超卖区域算法的一般需求
    • 识别趋势“减速”迹象的相关方法
    • 锚定趋势起始点的算法
    • 距趋势起点远近的相关方法
  • 结束语

概述

已探测到的超买/超卖区域是一个重要的信号,但是“信号”和“区域”的概念是如何相互联系的呢? 考虑到识别这类区域的本质复杂性(它总归是预测一个非稳定过程),以及考虑指标的粗略数学模型(表现为分散的指标触发点),我们实际得到的是一定的信号集合,即价格值的范围。 尤其是,取决于指标触发的准确性,该范围(区域)将完结于最终趋势分形的每一侧(预判信号位于分形的左侧,滞后信号位于其右侧)。 实际上,我们将这些区域视为超卖/超买区域。 然后我们得出这些区域边界的以下(初步)定义。

超买/超卖区域的开始(预判信号),其特征相对于现存趋势的动态较弱(现存趋势延续的概率降低)。 超买/超卖区末尾(滞后预测信号),反之亦然,其特征是价格变化略有增加,但方向相反(趋势逆转的可能性增加)。 

因此,在特定的时间帧内,超买/超卖区域是一个方向互逆的局部趋势之间的动态连接;它是一个特殊的过渡过程,其特征是前一个趋势消失,及新趋势的开始。 自趋势开始时开仓,并在趋势结束时平仓,这是所有交易者的梦想,这个市场动态因素有多重要就变得日益清楚。 事实上,这是一种市场状态,其特点是动态不确定(一种是趋势实际上在区域伊始就结束了,而另一种,逆向趋势在区域结束时刚刚开始)。

 在传统的技术分析中,有许多术语能判别这种动态状态:实际上,是“超买/超卖”,“横盘”(意指窄幅而导致趋势的不确定),和“横盘震荡”(即横盘趋势的明显通道内周期性方向变化)。 所有这些术语(以及它们的含义)都有一个共同点 — 这些区域的动态相对较弱,其趋势方向不确定。 这事实是一个关键。 出于这个原因,为方便起见,在脉冲均衡理论中,所有这些不同的术语都被一个术语/概念“不确定区域”所取代。您当然可以使用任何一个术语,任何最适合您(或习惯)的术语。 因此,在本文中,我们依旧坚持许多人经常使用的传统术语,即“超买/超卖区域”

应当注意的是,传统的分析方式,至少技术性、基于波浪和基本面的分析,出于某些原因,不会问这样的问题:实际中,在哪些过程中可搜索到这些区域?

我们更贴近地观察一下这个过程,在其中我们打算判断金融市场上的超买/超卖区域,如外汇、股票、商品和加密货币;这些区域的确切特征是什么;以及在这个过程中它们是如何出现的。然后,基于所了解的超买/超卖区域过程性质和扮演角色,我们再考虑识别此类区域的方法和工具,即可使用传统方法,亦或是一些新方法。 

这篇论文并未自诩提供搜索此类区域相关问题的全面分析(这是一个真正的全局问题,因为考虑到过程的性质,我们只能谈论一下概率估计,最大限度低于 100%)。 考虑到分析超买/超卖区域是任何交易系统的必要组成部分,作者在开发分析交易系统过程中解决理论和实际问题时积累的经验,对于新手和有经验的金融市场参与者也许都有帮助。


常识

在过程动态术语里,超买/超卖区域是什么

我们已初步定义了上述区域。 现在,为了全面掌握这个问题,我们来参考现有信息领域中超买/超卖区域的定义。 值得注意的是,维基百科的俄文版和英文版尚无专门的文章来讨论这个话题。 在某种程度上,这并非偶然。 原因在此。 首先,传统分析中,针对这个主题的探索存在分歧(正是由于传统分析中没有统一的术语,它将所有相似的概念组合在一起)。 第二,这些发表作品只表达了一些与参与者的行为或利益相关的常识、模糊的定义,而没有详细说明过程动态。 我们来研究这些定义的例子。 

示例(论述高估或低估):

“超买意味着一个货币对的价格太高(高估),且预期会出现回落(减少)。 在市场上,做多订单告竭,参与者开始做空交易(做空订单),货币对增长开始疲软,价格也随之下降。 超卖意味着,与其相反,货币对的价格被低估了,这非常适合那些希望以低价买入的参与者。 货币对价格上涨。”

另一个例子(论述销售额和利益失衡):

 “超买是指市场的一种状态,所有潜在买家都已入场做多,而实际上没有新的潜在买家。 因此,只有卖家仍然是活跃的参与者。 故此,抛售量的增加开始令价格下降。 同样,超卖意味着所有潜在的卖方都已入场做空,而实际上只有买家仍然活跃。 买家开始推高价格。 这就是,多头和空头之间会出现一连串的利益失衡,而市场针对这种失衡通过改变价格走势来调整。”

此处还有一个例子(出价和要价与愿意抛售或买入的人数相比较):

“市场触及超买是指在此价位,愿意抛售一类金融产品的人多于那些打算买入该类金融产品的人。 在市场超买的情况下,金融产品价格上涨停滞,引发大量做空交易。 一方面该种货币产品的出价不断上升,而另一方面下跌趋势正在场内酝酿。 市场超卖形成于货币对价格触底之时,要价远高于出价。 市场上出现众多愿以更有吸引力的价格购买交易产品的人,这就导致了许多做多订单。”

或是另外的示例(论述“过热”市场):

“市场超买和超卖是市场在经历了突然的、持续的单边趋势之后的一类条件性状况。 价格就像'过热',且未来走势需要调整。”

正如我们所见,这些示例并没有告知这些区域所在的过程(环境),或这些区域开始/结束的任何特定标志。

我们将进一步看到,由于市场是一个复杂的、动态的“有机体”,检测这些区域的算法不可能很简单或很明确;它会受多种因素影响。 

探测超买/超卖区域,虽然看起来很直截了当(运用传统指标时),但实际上是一个复杂的难题,其被正确解决的概率只有在远低于 100% 的情况下才有可能。 原因在此。 问题在于,我们要识别超买/超卖区域的环境,是一个非平稳过程,在该过程中,价格波动的幅度值和频率都在持续变化。 这是传统分析方法几乎完全没有考虑到的一个关键点。 然而,为了分析一个过程,我们必须知晓并理解它的本质。

“理解过程性质”与搜索此类区域有关,这意味着什么? 

这意味着数学模型,即指标、振荡器,以及分析和交易系统算法,必须要考虑到金融产品价格波动幅度和频率的持续变化。 然而,如果我们分析传统指标的算法,我们会发现它们无法“看到”价格波动频率的变化,也无法锚定趋势的开始。

金融产品价格走势的本质是分形。 也就是说,任何局部趋势都会形成分形支撑价位。

因此,结合这两种分形,我们得出了搜索温和趋势(振幅和频率分析)的必要性结论,但其应与参考分形相关。

因此,从脉冲均衡理论的角度,超买/超卖区域定义如下:

超买/超卖区域是趋势动态疲软的区域,而趋势起始点是参考支持分形;即趋势起始点是分形。 趋势疲软的标志是初级结构的特殊参数,趋势由其组成;即趋势内的振幅和波动频率。 

但这些初级结构是什么? 研究这些分形结构超出了本文范畴(唯有选择动态趋势时才会与这些结构有联系,但这是一个宽泛的主题,我们计划在另一篇文章中探讨)。 我只想提醒,形成趋势的烛条是这种结构经简化、剥离后的拟化物。 在本文论述中,承认了一些非关键性的简化(特别是对于较大的时间帧),我们打算用烛条作为此类结构。 我们将分别分析趋势烛台参数(沿用分析其它产品的参数)的变化,来搜索超买/超卖区域。

如上所言,传统指标常用于搜索超买/超卖区域,但实际上并未考虑到金融产品价格走势过程的上述因素,如趋势开始的分形起点,或趋势内市场波动频率的变化。 于下讨论的这些指标以绝对不同的数学算法实现“现场”版,即:除自适应指标外,指标计算的周期值,和因此的参考频率通常表示固定值。 在计算指标值时,它们用一个随机起点,而非固定在趋势起点初的那个点。


论超买/超卖区域检测的准确性

取决于识别超买/超卖区域的准确性(始终是概率估算,即预测),有三种不同类型的预测:早期预测,准确预测,和延迟预测。 作为定义预测类型的标准,我们采用趋势的最大值 — 它始终是支撑分形极值,此后于该处发生逆反(或调整,其幅度对于采用的交易策略至关重要)。 因此,预测点越接近此标准(按时间,或幅度),则超买/超卖区域出现的预测就越准确。

实际上,我们在谈论趋势末期的预测类型,这取决于检测超买/超卖区域的准确性。

我们来研究一下,以超买为例(USDCAD,D1):


趋势末期预测类型

图例 1. 趋势末期预测类型,取决于识别超买区域的准确性


图例 1 展示了用各种指标探测超买区域获得的三个红点。 红点从左到右:1 — 早期预测,2 — 准确预测,3 — 延迟预测。

显然,如果您仍有持仓,则“逼近”趋势极值(对趋势末期的准确预测)是一个理想的离场方案。 因此,预测超买/超卖区域的准确性,与其极值相关,直接影响在金融市场里进行交易的效率。

我们将在下面更详细地研究该主题,并评估交易中触及超买/超卖区域的后果 — 入场和离场两者皆有。 我们从自该区域入场的后果开始。 


在超买/超卖区域入场的后果

在这样的区域入场时,交易者会期望什么后果? 运用直观的简化分析,超买/超卖区域的出现通常与当前趋势内存在调整有关。 因此,我们研究以下入场顺序的选择。

选项 1. 这里没有趋势调整,或者(主观上)微不足道(尚未导致趋势逆转)。 为了进行分析,我们用图例 1 中的红点 1 和 2(我们不考虑红点 3,因为它位于趋势逆转区域中)。

后果: 

如果在趋势“末期”入场,并且与该趋势的方向一致,则一切都取决于趋势剩余的幅度。 如果剩余幅度很小(没有人可以保证趋势“末期”有足够的幅度),那么利润值可忽略不计,或为零,甚至为负,具体取决于交易者的行动及时程度,或平仓信号的准确性。 

至于较大的时间帧(例如 D1 或更高),则情况就不是那么确定了,因为剩余幅度对于短线策略可能足够了,这恰是因为烛条振幅在较小时间帧内会显得很大。 还有如红点 1 这种状况(图例 1,超买区域的早期预测)。 上涨趋势的剩余幅度值大约为 100 点(小数点后第 4 位为经典点数),只要您在该点位入场买入,就足以获取利润。 然而,应该理解,我们正在查看图例 1 中的历史数据,而在实际情况下,该红点是当前趋势在该时刻的最后可用点位,且无法预知该信号会超前多久,以及趋势的实际剩余幅度是多少。 甚至,需要针对多个时间帧进行复杂的分析,因为在这种情况下,较大的时间帧信号仅是一个初步信号,且为了降低风险,需要分析较小时间帧,这对于新入行的交易者来说会有很大困难。

如果在第 2 点处买入(图例 1,准确预测超买),结果将是负面的,因为该点位之后立即逆转了。 在此,推理与前面的示例类似。

如果您在趋势“末期”入场,但逆势而为,则在任何情况下您的风险都会升高:如果趋势延续,则必将导致亏损,而若逆转,则需要进行其他确认,例如价格的逆向走势活动,其条件尚不成熟。 举例来说,在红点 1 或 2 处入场卖出(图例 1)。 如果在红点 1 处入场卖出(上涨趋势末期的早期预测),则在这种情况下,上涨趋势有相当大的剩余幅度(大约 100 点)。 鉴于止损价位很难超过该值,因此持仓将会以亏损被平仓。 如果在第 2 点处(图例 1,上涨趋势的准确预测)入场卖出,则情况是完美的,因为它分别对应上涨趋势的结束,和下跌趋势的开始。

选项 2. .如果在此量度内趋势有相当大的调整,且逆向价格脉动活跃,那么趋势逆转的可能性就会增加。 

但何为“重大调整”? 当然,“重大调整”的概念是模糊逻辑的主题,因为调整深度并无唯一值,即在该价位上趋势将不可避免地延续。 这里只有一个范围值。 例如,对于调整深度低于 20%(在 0% 到 20% 之间的范围)的值,趋势很可能会延续。 然而,在实践中,我们可以看到这种趋势在调整了 50% 甚至 62% 之后也经常会延续。 尽管如此,超过 62% 的调整(当然,是有条件地)可视为临界值范围,趋势逆转的可能性会极速增加。

后果: 

在任何情况下,如果您在深度调整时顺趋势方向入场,则您的风险会激增。 如果该趋势仍无法掩盖该调整问题,且后者又过渡到逆反为趋势,则会造成亏损。 为了令趋势能在承受调整后仍能朝相同方向延续,您需要对当前动态附加进行重量级的确认,诸如趋势方向上的新脉动活动,其为条件,尚为提供。

如果您在趋势的深度调整范围入场,但却逆势,则在任何情况下风险都会升高:如果趋势延续,则可能会造成亏损,而要完全逆转需要更多确认,即调整和条件性的逆反价格走势的明显活动,目前尚无。

选项 1 和 2 的后果: 

因此,在超买/超卖区域时入场,若基于常规指标的信号,无论顺势亦或逆势的情况下,均是一个风险巨大的策略,因为“趋势余量不多”,且利用常规指标识别此类区域的精度并不高,这额外降低了趋势的剩余幅度。 单一的指标可在不同的市场情况下形成早期或延迟信号(您可以在任何金融产品的蚁形图表中看到它)。 与此同时,时间帧越小,风险越高;因为从绝对角度来看,较小时间帧的烛条幅度(因此,剩余趋势幅度的绝对值)比之较高时间帧烛条的相似幅度要小得多,而由于不同时间帧图表中价格变划的比例不同,这是不可避免的。 

我们来研究一个奇怪的特殊情况,即各个级别如何相互关联,从而完成趋势的分形极值相互关联。 在这种状况下,在顺势方向上的相同价位上有两次入场 — 第一次入场位于趋势末期的早期预测点(趋势高点的左侧),而第二次入场位于延迟预测区域(趋势高位右侧)。 

我们自问:如果两次入场都是在相同的价位上进行的,但在趋势末期极值的不同侧(在不同的时间)进行,哪次入场更安全? 我们来研究图例 2 中的示例:


在相同价位但不同时间入场的效率

图例 2. 在相同价位但不同时间入场的效率


图例 2 在同一价位但在不同时间两次入场的展示:

点位 1 — 入场买入 (趋势末期的早期预测点,默认设置下随机指标的超买信号),

点位 2 — 入场买入 (延迟趋势的预测点,默认设置下 MACD 指标的买入信号),

最大 — 局部上行趋势的极值。

图例 2 显示表明,尽管事实上入场在同一价位,但在趋势末期趋势预测点(点 1)入场更安全,由于此刻仍然没有逆向走势,且此时尚有趋势剩余幅度的储备,因此,亏损几乎不可能发生(至少在运用短线策略时)。 与此同时,在趋势末期延迟预测(点 2)区域中入场,虽然处于同一价位,但安全性较低,因为指标的延迟信号,价格已经进入调整(即逆向走势)区域; 因此,亏损的可能性更高。

任何意思上,有很多利用超买/超卖区域的入场策略和技巧(顺势和逆势)。 然而,有必要考虑以下因素:为了逆势入场,您手头必须有一些“滴水不漏”的非技术性(例如,基本的或基于新闻的)外部因素,才能冒险在这种非标准的环境下制定入场交易决定。


评估有关在超买/超卖区域开仓的风险损失

我们将理论结论用于测试,拿智能交易系统测试为例。 我们基于之前的文章使用一款 EA:如何降低交易者的风险(EA Reduse_risks,MT5 版本)。

我们的任务是用一个特殊的案例来评估在超买/超卖区域入场风险,及可能的损失。 为了降低在超买/超卖区域入场的概率,我们利用锚定局部趋势开始脉冲的算法。 稍后我们将讨论算法本身。 到目前为止,我们对 EA 测试结果感兴趣 — 首先,使用锚定趋势开始的模块进行测试(我们减少在超买/超卖区域入场的概率),然后禁用该模块进行测试(我们剔除这种锚定为代表的保护,增加在这些区域入场的概率 — 趋势“尾巴”。

我们测试最坏的情况,令其尽可能真实。 我们将特意举一个例子,其中初始利润结果为负。

第一次测试结果 (一般结果和余额图表):


第一次测试结果


图例 3. 启用最大程度降低在超买/超卖区域入场风险的模块常规测试结果,


第一次测试结果(余额)

图例 4. 启用最大程度降低在超买/超卖区域入场风险的模块余额/本金图表


图例 3 和 4 显示结果和第一个测试的图表,其中启用了在超买/超卖区域入场风险降低降至最低的模块。 您不要因第一次测试中缺乏存在而感到困惑,因为首先,我们所用 EA 只是为了研究,而不是针对实盘交易。 第二,对我们来说很重要,在这种最坏的情况下可以预示到什么后果。

我们现在禁用上述保护模块,并测试 EA。

第二次测试结果 (一般结果和余额图表):


第二次测试结果

图例 5. 禁用最大程度降低在超买/超卖区域入场风险的模块常规测试结果,


第二次测试结果(余额)

图例 6. 禁用最大程度降低在超买/超卖区域入场风险的模块余额/本金图表


图例 5 和 6 显示结果和第二个测试的图表,其中禁用了在超买/超卖区域入场风险降低降至最低的模块。

我们按一些重要参数比较这两个测试的结果,并在以下图例中显示:

恶化参数图表(交易效率)

图例 7. 忽略在超买/超卖区域入场风险时参数恶化(交易效率)的图表


图例 7 显示了第一个测试的结果 — 它是级别 1(所有参数的单个起始级别),而第二个测试结果是级别 2、3 和 4。 正如我们在图表中所见(测试 2 相对于测试 1),忽略了在超买/超卖区域内开仓相关的风险,以致会导致不利后果 — 在这种情况下,重要指标比之第一个指标的测试结果有了不容忽视的恶化。 它们最初是负数并不重要;重要的是,与最初的指标相比,它们已经有了不容忽视的恶化:

"1" — 测试 1 的结果是基准级别(对于在启用了风险最小化模块的情况下获得的每个参数),测试 2 的指标相对其已有了变化。

"2" — 一般训练的结果,恶化了 168%。

"3" — 存款提取(最大回撤值不断增长),恶化了 97%。

"4" — 恢复因子,恶化了 67%。

因此,我们从实践中获悉,如果不采取某些特殊措施,那么,考虑到市场的不稳定因素,有些入场会处于超买/超卖区域,从而恶化交易结算结果。

下面我们将研究在超买/超卖区域离场(现有持仓平仓)的后果。


在超买/超卖区域离场的后果

若在超买/超卖区域入场会承担巨大风险(故对交易者无条件危害),那么在此类区域离场(现有持仓平仓)将很有帮助,因为这会降低投资风险。 所有一切都绝对依赖指标的触发精度。 我们早前已经了解到,离场点越接近趋势极值(时间和幅度都越小),风险就越低。 时间和幅度的因素在特定的趋势/调整部分内是相互关联的:如果一个点在时间上更接近极值,那么它在幅度上也将更接近于该极值(当然,请参考图表指示线与时间轴的斜率)。

我们研究以上情况,以超卖为例:


在超卖区域内平仓

图例 8. 按不同指标在超卖区内的平仓


图例 8 显示两笔空头的平仓选项,其中:

(A-B) –下行趋势幅度,

红色箭头起点 — 卖出入场点(在形成支撑价格下跌的分形后立即有条件入场),

点 1 — 按随机指标、RSI(趋势末期的早期预测)得到的空头平仓点,和

点 2 — 按 MACD 指标得到的空头平仓点(趋势末期的延迟预测)。

从历史数据可以看出,在点 1 离场似乎为时过早 - 结果,我们获得了最高可能利润的约 50%,而延迟离场则令我们获得了最高可能利润的约 70%。 实际上,这意味着如果延迟信号更接近最终趋势极值,则它可能比早期信号更有利可图。 

但是,问题在于,我们可以在历史数据上比较这两个信号的效率,即仅在趋势已经逆转的情况下。 那时我们将无法再用第一个信号。 因此,在实际情况下,我们将:

— 要么在出现第一信号时立即采用它(图例 8 中点 1 处平仓), 

— 或忽略第一个信号(例如,仅把 MACD 指标作为过滤器 — 它不支持点 1 处的随机指标和 RSI 的动作,并于图例 8 中点 2 处平仓。

结论:

在超买/超卖区域中平仓(离场)很有用,因为可以降低投资风险。 即,

如果基于趋势末期的早期预测进行平仓,则由于价格趋势中存在一定的“操作范围”(剩余趋势幅度),因此在价格下跌时我们将获得额外的利润。 如果根据趋势末期的延迟预测平仓,则一切都取决于与趋势极值的距离。 离场点距趋势极值越远(即调整越强),交易结果越差。

因此,交易结果将取决于行为算法,交易者将依据指标信号(如果有的话)离场。 然而,金融市场上的大多数交易者或多或少都在交易中运用指标。

 再进一步,我们来研究搜索超买/超卖区域时常规指标的优缺点。 我们从交易终端中可用的那些流行指标开始。


运用传统指标检测超买/超卖区域的利弊分析

交易者运用各种指标来检测超买/超卖区域。 我们将注意力转向其中的一些,即:RSI,随机指标,布林带,MACD 和动量。 我们将在下面看到,这些指标的准确性很低 — 它们的信号常常延迟,而延迟对于特定的交易状况可能变得至关重要。

首先,常规指标的工作量很大,这是由指标算法底层公式在计算随机起点时引起的。 这是由于以下事实:公式中的计算周期是固定值。 然而,实际市场波动有一个周期,即使在一个时间帧内,其数值也会持续变化。 由于缺乏研究此类市场动态特征的原因,利用常规指标会导致定位超买/超卖区域起点的准确性较差,有时它仅与金融产品价格波动的实际结束时间一致。 针对这个原因,基于此类指标的算法通常不能够在较大的测试范围内获得稳定的利润。 我们将针对四种不同的趋势类型测试上述指标: 
  — 趋势稳定期,
  — 趋势活跃期,
  — 混合趋势(例如,伴随一些活跃元素的稳定期),以及
  — 窄幅震荡。

鉴于我们目前尚不清楚目前哪些指标是确切有效的,因此我们将针对趋势类型观察所有指标如何在群组内运作。 特定示例将考察一组指标的结果,从而检测所有趋势类型的超买/超卖区域 - 首先,使用默认设置。 由于我们从经验中知道常规指标的准确性较低,因此我们将尝试通过更改指标设置来以某种方式提高其(组)准确性,即,我们将采用一些新设置。 然后,我们将利用众所周知的分析工具来形成此类设置的逻辑。


利用斐波那契(Fibonacci)级值建立一组指标

交易者广泛使用斐波那契级值来识别重要的价位,例如调整或延申,并作为各种移动均线计算周期的固定值。

故此,使用斐波那契级数值来建立一组常规指标也是合乎逻辑的。

更改指标设置的逻辑:为了提高检测超买/超卖区域的准确性,指标信号必须更接近局部趋势的末端,即更接近趋势的最后分形极值。 考虑到有关该极值的指标信号既可能是早期信号,也可能是延迟信号,因此实际上有必要提高指标的“命中密度”,以趋势极值为目标。 为此目的,我们将更改指标的设置。 当然,这些都几乎是凭视觉估计的直观设置。 尽管如此,我们仍将应用一些逻辑 - 我们将使用最接近(相对于标准设置)斐波那契级数值来设置指标计算周期值。 甚至,在必要时,我们将根据需要选取价格类型,指标计算时会依据该价格类型。 我们还将尝试令这些新设置与特定指标的功能相适配。

我们来研究上述逻辑,考虑组中每个指标的新设置。

"Restless" 随机振荡器 :分析指标公式

随机振荡指标:随机振荡指标(振荡器)是最“灵敏”的指标之一,经常会导致信号极早。 因此,我们要令其放慢一点。 为此目的,我们更改 “slowing” 参数,设置 5 替代 3。 为什么是 5? 这是向上最接近斐波那契级数的数值。 结果会导致随机图表变得平滑,且不会严重减慢其对价格变化的反应。 我们已令随机指标“发挥其意义”,减少了检测超买/超卖区域的早期信号概率。 我们查看该指标的内部,并尝试分析其数学模型。 该指标有两条曲线(分量)— 其中一条是快速曲线(%K)和一条慢速曲线(%D)。

随机振荡指标快速分量的公式: </ s0>  

%K=((C- min)/(max⁡ - min⁡))*100;  

其中:

C — 最后的收盘价,

min — 在前 “n” 根柱线内的最低价,

max — 在前 “n” 根柱线内的最高价,

%K —  随机振荡器快速分量的当前值。

%D 是相对于 %K 且移动周期较短的移动平均值。 可以使用各种类型的平滑,例如简单、指数、平滑和权重。 这是指标的慢速分量部分。

参数 “slowing”(我们之前已更改)会影响信号的出现频率:参数值越大,在接近极限值时指标信号越少。

随机振荡指标的重要信号是曲线 %K 与曲线 %D 的交叉。 曲线 %K 比曲线 %D 更快(更灵敏),因为后者是前者的衍生品。 另一个重要信号是指标线超出了指标水平通道的 30-70(或 20-80),以此评估超买/超卖状态。 至于利用这些信号的建议,根据传统分析的来源,它们可能有所不同。 因此,交易者应根据他们的个人喜好和经验,以不同的方式来运用它们。

我们来研究该指标的数学模型。 这种算法的优缺点是什么? 它的分析模型非常简单;这就是指标的所作所为: 

▪  在历史记录中(在确定的,固定搜索深度)查找价格的高点和低点,并识别报价历史记录中给定深度的最大价格幅度(最大值 - 最小值),

▪  查找有关相同低点(С — 最小)的当前幅度,

▪  然后找到当前幅度与最大幅度的比率(这恰好是 %K,指标的快速分量),然后

▪  构造 %K 值的移动平均值(这恰好是指标的慢速分量 %D)。

这种模型的优点是什么?

实际上,指标检测的是当前振幅相对于某个参考振幅所占的份额。 基本上,一种好的方式,所提供的参考也会是正确的。

有什么矛盾?

主要缺点是,计算所依据的参考(最大值 - 最小值)不是很正确,这就是原因所在。 金融产品图表中振幅的基本边界是分形。 而这些分形(包括其中的过程)是市场动态的重要指标。 因此,更合乎逻辑的参考可能是不同方向的分形之间的价格幅度(即之前的局部趋势)。 在随机振荡指标(以及所有其他常规指标)中,几乎没有考虑市场的分形性。 分形(分形的烛条)在其算法中与其他烛条(“就像所有”)一起考虑。 然而,正如一部著名电影当中的某著名人物所说:“我们是兄弟,但我们并不平等。” 我们已经通过一个例子(图例 7 中的测试结果)看到,在未锚定分形级别的情况下采取行动会令交易结果恶化。 这意味着分形烛条确实很重要。

若是忽略分形性质,会发生以下情况:在报价历史记录中的某个随机深度处,测量一定的幅度,然后将其用作参考(在指标算法内部)。 这是正确的吗? 由于涉及全球性问题,例如分析市场价格动态的基本结构,这是一个值得深入讨论的问题(不过,这超出了本文讨论范围)。

摘要:一般来说,随机振荡指标是一个很好的指标。 即使没有考虑分形性(但这是传统分析的“系统性”问题),该指标也非常精明和敏感。 这不仅是由于其算法(通常比较幅度是一种正确的方法)而实现的,且还由于其标准默认设置(使用了较小的数据搜索深度,和具有较小计算周期的移动平均值)来实现, 实际上,这就决定了其良好的灵敏度。

我们还将研究其他指标

动量和 RSI 指标: 

在此,任务是提高灵敏度,因为这些指标大部分默认计算周期为 14。 我们在这里使用以上方法。 为此目的,我们将减少指标的计算周期值(以 8 替代 14)。 为什么是 8? 我们将周期值减小到最接近的斐波那契级数(忽略 13,因为该数值太接近 14,且实际上几乎不会改变任何东西),从而可从指标里获取早期的信号。 与此同时,为了令指标图表平滑,我们更改了计算指标的价格类型:我们用典型价格替代收盘价。 为什么是要典型价格? 因为它比收盘价更平衡。 而结果就是,RSI 围绕重要级别 30 和 70 附近产生的假响应较少,而动量指标在重要水平 100 之上针对较大的调整能提供更好的响应。 为什么我们要同时研究两个绝对不同的指标设置? 当然,在这种情况下,它们的设置是一致的,尽管这些指标的算法完全不同。

MACD 指标: 

与此类似,我们来更改此指标的设置。 为了减少 MACD 指标计算移动平均线的滞后,我们将标准默认设置的参数值更改为斐波那契级数中最接近的较小值。 结果就是,我们用设置(按典型价格 8、21、5),替换设置(按收盘价格 12、26、9),其中相关 MACD 指标参数从左到右为:快速 ЕМА,慢速 ЕМА,以及指标 SMA。 

布林带指标: 

该指标基于有关移动平均线的偏差。 因此,我们尝试设置参数。 我们将默认值设置为 1,替换默认值 2,且将收盘价替换为典型价。 与此同时,无需减少指标计算周期值,默认情况下为 20,因为即使此参数不增加,指标灵敏度也会很可观。 您甚至可以通过简单的直观控制看到:在新设置下,指标的最大曲线实际上变得如同快速移动平均线。 同时,指标变得更方便检测趋势段落 — 趋势现在超出了指标的所有三个曲线(趋势的较大部分,而不是以前设置的较小部分)。 如果价格在该指标之内,则这可能是趋势的起点,或者是在可识别趋势的不确定动态区域,作为可忽略盘整区域。 从直观来看,这比在指标的三条曲线(默认设置)组成的区域内搜索价格反弹要方便得多。

因此,我们已决定了设置。 当然,这样的设置并非某些经典、长期优化的结果;这些只是一组指标参数的逻辑预设,旨在增加超买/超卖区域的“命中密度”。 我们来尝试并了解在搜索此类区域时,是否可能以某种方式改进一组传统指标的操作。 

为此目的,我们同意测试一下它们如何处理不同的趋势类型,这会令我们能够更完整地评估不同市场价格动态的结果。


测试一组指标,检测不同趋势类型的超买/超卖区域

鉴于每个指标都有若干种信号类型,因此我们首先处理此问题。

选择指标信号的一个类型。

为了识别超买/超卖区域,来自指标的各类型信号都可加以运用。 由于传统技术分析中没有严格的规则,且对此仅是一般性建议,故每位交易者都会用到他们认为正确或方便的信号类型。 以下是这些类型的信号:

▪  指标的两条曲线的交点,

▪  信号级别与指标曲线之一交叉(如果指标有两条曲线),

▪  信号级别与指标曲线相交(如果指标只有一条曲线),并且

▪  指标曲线的逆转(如果指标只有一条曲线)。

使用指标曲线逆转似乎是有利可图的。 因此,它被一些作者推荐。 不过,此类信号通常为时过早。 最重要的是,指标曲线逆转模式本身可能被证明是错误的(调整,如同价格图表类似的方式进行校正)。 因此,在这里我们不会使用这种类型的指标信号(即使有时会牺牲准确性)。 就识别而言,我们打算用单值且更可靠的指标信号:基于曲线的交点,或基于临界级别与曲线交叉的信号。

趋势类型。

我们已经在上面为这些趋势类型(总共有四个)进行了命名。 我们将分别评估每种趋势类型的指标操作 — 首先,采用默认设置,然后选用我们已为组中每个指标定义的新设置。 

检测区域的准确性。

我们将依据相关趋势极值时间(上升趋势的绝对高点,或下降趋势的绝对低点)的距离值(以柱线图或特定时间帧的时间单位)来估计检测超买/超卖区域的准确性。 加号表示超前信号,而减号表示迟滞信号。 

注意! 趋势的有用段落从形成支撑分形开始,因为这种分形是未来趋势开始的最小迹象。

在稳定趋势中检测超买/超卖区域(使用指标的默认设置)。


在稳定趋势内工作的指标(默认设置)

图例 9. 指标在稳定趋势内检测超买/超卖区域(指标的标准默认设置)


图例 9 展示默认设置的传统指标(即随机振荡指标,动量指标和 RSI)的操作情况(在这种情况下,布林带指标采用修改后的设置,但在这里是一个帮助指标,只是为了直观地看到下跌趋势:趋势低于该指标下部曲线)。

动量指标触发的时刻利用垂直红色线段显示。 正如我们所见,指标响应在时间上很分散。 我们获得了以下误差值,作为距该局部趋势的最小分形级别的偏差(以柱线为单位)(加号表示超前信号,减号表示迟滞信号):随机振荡 “+12”,动量 “-7”,MACD “- 3“,RSI ”+4“。

我们更改指标的设置。 

在稳定趋势中检测超买/超卖区域(采用新的指标设置)。


在稳定趋势内操作的指标(新设置)

图例 10. 指标在稳定趋势内检测超买/超卖区域(指标的新设置)


图例 10 展示相同的指标操作,但采用新设置。 

动量指标触发的时刻利用垂直红色线段显示。 正如我们所见,在新设置下,指标响应值的离散度已大大降低。 我们获得了以下误差值作为与该局部趋势的最小分形级别的偏差(以柱线为单位)(加号表示超前信号,减号意味着迟滞信号):随机振荡指标从 “+12” 变化为 “+11”,动量 ”-7“ 到 ”-2“,MACD ”-3“ 到 ”-1“,RSI ”+4“ 到 ”+12“(信号是隐式的,仅与触发级别有关,因此我们可以忽略它 )和 “-1”。结果,趋势“覆盖率”的值得到了改善(请参见图例 10 中蓝色水平区域的扩展,并与图例 9 相比)。

因此,有关于稳定趋势类型,在这种情况下,指标的新设置比默认设置更有效。 来自 RSI 的信号是例外;然而,它还不够清晰(指标曲线没有越过 30 的重要级别,仅触及该级别),因此我们可以忽略它。 于此同时,我们要记住 RSI 的峰值(稍后我们将需要此信息)。

我们针对活跃趋势类型执行类似的工作,并查看新设置是否会有效。

在活跃趋势中检测超买/超卖区域(使用指标的默认设置)。


在活跃趋势内操作的指标(默认设置)

图例 11. 指标在活跃趋势内检测超买/超卖区域(指标的标准默认设置)

图例 11 展示默认设置下的传统指标(即随机振荡指标,动量指标,RSI 和布林带)的操作(此处布林带指标再次作为辅助工具,只是为了直观与该指标上部曲线吻合的上升趋势)。

动量指标触发的时刻利用垂直红色线段显示。 正如我们所见,指标响应在时间上很分散。 我们获得了以下误差值,作为与该局部趋势的最小分形级别的偏差(以柱线为单位)(加号表示超前信号,减号表示迟滞信号):随机振荡 “+5” 和 “-1”,动量 “0” (看涨点!),然后立即是 “-10”,MACD “-4”,RSI “+7” 和布林带 “-10”。

正如我们所见,指标的响应(信号)的分散程度很大。

我们更改指标的设置。

检测活跃趋势内的超买/超卖区域(采用新的指标设置)。


在活跃趋势内操作的指标(新设置)

图例 12. 指标在活跃趋势内检测超买/超卖区域(指标的新设置)


图例 12 展示相同的指标操作,但采用新设置。

动量指标触发的时刻利用垂直红色线段显示。 正如我们所见,指标触发点在时间上有很大分散,但大多数指标彼此“粘”在一起,而该组信号再次令 RSI 的准确性恶化。 我们获得了以下误差值,作为与该局部趋势的最小分形级别的偏差(以柱线为单位)(加号表示超前信号,减号表示迟滞信号):随机振荡从 “+5” 和 “-1” 更改为 “+4“ 和 ”-2“,动量 ”0“ 和 ”-10“ 为 ”+4“ 和 ”-2“,MACD ”-4“ 为 ”-2“,RSI ”+7“ 为 ”+8“,布林带从 “-10” 到 “-3”。

正如我们所见,几乎所有指标结果都得以改善。 随机振荡指标和 RSI(尤其是 RSI)指标是个例外,后者的信号不在其他指标信号的总体范围内(在图例中显示为问号和红色箭头)。 

因此,在这种情况下,关于活跃趋势类型,指标的新设置比默认设置更有效率。 与稳定趋势一样,RSI 的“孤立”信号也是一个例外。 我们要注意一下,RSI 仍然未能证明自身的良好表现。 正因为这个指标,其趋势“覆盖率”的数值没有得到改善(与图例 11 相比,图例 12 中蓝色水平区域的长度明显减小了)。 随机振荡指标检测这些区域的准确性明显降低了。 不过,在不考虑 RSI 的情况下,总体情况已有所改善 — 检测超买/超卖区域的团队准确性提高了。

我们来提高柱线 — 针对结构更复杂的趋势执行类似的操作,混合趋势(其中既有稳定的动态区间,也有活跃的动态区间)。

在混合趋势中检测超买/超卖区域(采用指标的默认设置)。


在混合趋势内操作的指标(标准设置)

图例 13. 指标在混合趋势内检测超买/超卖区域(指标的标准默认设置)


图例 13 展示一组指标在混合趋势上的操作 — 趋势的第一部分具有相对稳定的动态,而第二部分则处于活跃状态。 出于多样性,我们还用到了指标 CCI。 以默认设置获得的结果是:随机振荡:“+ 3” 和 “-3”,CCI:“-3”,RSI:“+1”,MACD:“-7”。MACD 在此组中提供的结果最差。

我们更改指标的设置。

在混合趋势中检测超买/超卖区域(采用新的指标设置)。


在混合趋势内操作的指标(新设置)

图例 14. 指标在混合趋势内检测超买/超卖区域(指标的新设置)


图例 14 展示同一组指标在混合趋势上操作,但采用新设置。 获得结果:随机振荡为 “+3” 和 “-3”,且数值保持不变,CCI:“-2” 更改为 “-3”,RSI:“-3” 更改为 “+1”,且 MACD:“-7” 更改为 “-5”。结果,除了 RSI 之外,总体操作效率得到了提高。 我们再次提醒:就混合趋势的准确性而言,相对于所有超前类型的趋势,RSI 的结果最差。

剩下另一种趋势类型,窄幅震荡。 我们尝试测试指标如何在此趋势上操作。 最有可能的是,这并不容易:在这种趋势下,许多因素都取决于其幅度。 如果其幅度很可观,那么实际上,该趋势的每个段落都可以归类为超前之一。 因此,基本上针对这种趋势很难说出其中的超买/超卖区域,因为,如果其幅度微不足道(在特定尺度内),则趋势段落是非常有条件的。 然而,我们来尝试从这个具有挑战性的选择中发掘出一些东西。

在窄幅震荡内操作的指标(默认设置)

在窄幅震荡中检测超买/超卖区域(采用指标的默认设置)。


在窄幅震荡内操作的指标(标准设置)

图例 15. 指标在窄幅震荡内检测超买/超卖区域(指标的标准默认设置)


图例 15 展示具有默认设置的指标如何操作,以便检测超买/超卖区域。 在这种窄幅震荡趋势中,“有用”部分(浅蓝色水平带)对于卖仓(不是买仓)很有用,一旦通道内的振幅微不足道,则立即在上行走势支撑分形时形成逆向烛条,且局部上行趋势(通道内)并未到来。 

我们更改指标的设置。

在窄幅震荡上检测超买/超卖区域(采用新的指标设置)。


在窄幅震荡内操作的指标(新设置)

图例 16. 指标在窄幅震荡内检测超买/超卖区域(新的指标设置)


图例 16 展示同一组指标如何按新设置操作,以便检测超买/超卖区域。 正如我们所见,局部趋势的有用部分(通道内的下行趋势)已经扩大,而趋势不确定性区域却有所减少,这为检测此类区域的准确性提供了改进的证据。

现在,我们已经完成测试一组指标在不同趋势类型上的操作方式。 不可忽视的是,RSI 所提供的操作质量较低。 在组中就像是“婴儿恐怖”。 我们来发掘诸如 RSI 操作的有关原因。


RSI 怎么会出错? 指标公式分析

为了理解 RSI 的操作原理,我们来分析该指标的数学公式。

这是 RSI 的公式:

RSI=100 - (100/(1+RS));

其中:

RS — 相对强弱比(平均价格增量与平均价格下降率之比)。

RS=EMAup/EMAdn;

其中:

EMAup — 所有蜡烛收盘价的指数移动平均线均高于前根蜡烛,并且

EMAdn — 所有蜡烛收盘价的指数移动平均线均低于前一根蜡烛。

通过指标公式分析,清晰地说明了为什么该指标在显示不同类型趋势上的超买/超卖区域时比其他指标更糟糕(至少在我们的示例当中)。 原因如下:

▪ 首先,价格的参与,并非作为计算 RSI 的主要市场参数(它使用了次要参数的比率 — 移动平均线,而且是指数平均线),这无条件地降低了指标的准确性。 甚至,在形成移动平均值时,用的是报价数组的单独(“补丁”)样本。

▪ 其次,指标(RS 参数)的逻辑核心已被“深埋”在算法之中 - 它在 RSI 计算公式的分母中,它的影响被消弱,因其未按设想使用参数, 不过是加一。 这与指标中使用的常规化(边界从 0 到 100)一起降低了指标的敏感性。 

因此,我们可以非常保守地假设,最好把 RSI 用作辅助过滤器,而不是警报指标;而用其他指标来检测确定交易系统信号的点位会更有效。 为什么我们要假设“保守”? 仅仅因为无条件陈述需要对该指标(具有不同的时间帧和金融产品)进行大规模调查。 不过,我感到有责任警告市场参与者,莫要过度信任这款指标广为宣传的无条件效率(至少,作为一种警惕)。

好了,我们已经研究了 RSI 的“数学”原理,所以现在我们回到指标组的工作。


评估根据设置和趋势类型,检测超买/超卖区域准确性的结果

如果您已经注意到,我们将使用时间标度(有关趋势极值时间的柱线距离)评估检测超买/超卖区域,以及趋势有用部分的准确性。 现在,我们来看看检测这些区域的准确性如何影响“覆盖”趋势幅度的效率。


指示趋势幅度覆盖范围

图例 17. 指示趋势幅度覆盖范围


图例 17 展示 EURUSD 图表,默认设置的随机振荡指标,作为检测超买区域的指标。 由于在这种情况下存在局部上行趋势,因此,我们的意思是多头仓位:

此示例展示了检测超买区域的准确性如何影响交易效率。 表示法如下:

1 — 趋势的全部幅度(当然,支撑分形幅度 — 在这种情况下分形向下 — 不予考虑,因为仅在形成此分形后,趋势才变得“可见”(或稍有区别))。

2 — 趋势的有用幅度(确定利润的幅度,前提是我们在红色箭头高亮显示的点位将多头持仓平仓),以及

3 — 趋势的剩余振幅(如果交易者使用随机振荡指标的信号作为超买区域的起点并平仓,则振幅顶端会“亏损”)。

从图例 17 所示的公式可以看出,超买区域检测的准确性越高,趋势幅度覆盖系数就越高(因此交易效率就越高)。 

显然,趋势越活跃(即,趋势偏离时间轴的角度越大,无论是上行趋势还是下行趋势),从提高检测超买/超卖区域准确性中获得的利润就越可观。因为活跃趋势中一根蜡烛(柱线)的振幅比其他趋势类型中的更宽。 实际上,市场生存周期中最大的一部分是其他类型的趋势(稳定,混合或窄幅震荡),而并非活跃的趋势。 因此,考虑到趋势类型,按时间参数检测此类区域来提高准确性,不能始终确保任何明显的幅度增益。 考虑到此类分析的维度(幅度增益值取决于记录区域的时间精度),我们将依据时间因子相关的精度来自我限制。 甚至,我们正在分析一组随机指标的操作,而不是特定的交易系统。 我们的任务是根据设置和趋势类型来评估这组指标在检测超买/超卖区域方面的能力。

无论如何,图例 17 中所示的公式可用来评估任何交易系统的效率,作为标准估计的附加参数。 

我们来按时间参数(针对所有趋势类型汇总)评估修改一组指标的设置时,它们检测超买/超卖区域的准确性的结果(最初,我们采用默认设置,而新的设置是基于斐波那契级数最接近的数字)。

检测超买/超卖区域准确性的强化曲线

图例 18. 根据设置和趋势类型,强化检测超买/超卖区域(通过一组指标)准确性的曲线


图例 18 展示根据指标设置和趋势类型改变(增强)检测超买/超卖区域准确性的曲线。 水平标度与初始精度级别相对应(采用指标组的默认设置)。 

垂直标度示意有关初始级别(采用默认设置)的精度变化值(采用指标的新设置)。 每种趋势类型都有其自己的颜色。

绿线示意稳定趋势中的准确度的变化。 蓝线示意活动趋势中的准确度变化。 藕荷色线示意混合趋势中的准确度变化。 橙色线示意窄幅震荡中的准确度变化。

根据该图型可以得出什么结论? 我并不认为针对提高准确性的绝对值我们能得出任何严肃的结论,例如“如果趋势混合在一起,则准确性的增长速度将比任何其他趋势类型慢”(对于此类陈述,必须进行全面研究 )。 不过,我们可以肯定地说,在新设置下检测超买/超卖区域的准确性基本上更高(在这种情况下,与默认设置相比,至少提高了四分之一)。 


传统指标检测超买/超卖区域的有效性结论

我们已经看到,在特定情况下,默认设置下,传统指标在检测超买/超卖区域时显示出较低的准确性。 在很多情况下,指标的信号为时过早(损失了趋势幅度的最大部分,因而大大降低了利润),或显著延迟(因而大大降低了获得任何利润的可能性 — 由于现存趋势逆转)。

我们已发现,我们应该在传统指标的数学模型中寻找不如预期的原因,而这些数学模型实际上并未考虑价格走势过程的非平稳性质。 这些指标的算法完全忽略了金融市场趋势结构的关键因素,即:它们没有考虑趋势起点和终点的分形特性,并且没有扩展蜡烛参数变化的动态(它们只是掩盖了它们),即趋势的构成,包括形成超买/超卖区域的所在。

取而代之,当特定指标依据底层算法公式进行计算时,会随机(非分形)选取起点计算指标值。 结果就是,指标计算值并非严格地从趋势起点开始,而是在当前趋势中间,或者它覆盖了先前趋势的一部分,而这会令预测结果严重失真。 这是出于以下事实:指标公式中的计算周期大部分是固定值,每位交易者随机“各自改变”指标计算周期值,即采用历史数据的深度。 

然而,市场会遵循其自身的法则:真实的市场波动具有一个周期(和频率为倒数),该周期值并非固定的,即使在很小的时间间隔内也会持续变化。 在这种关联下,锚定趋势起点似乎是合理的。 

由于缺乏考虑这种“天然”的市场动态特征,因此使用传统指标会导致注册超买/超卖区域的准确性降低,有时这仅与局部趋势的实际终结相吻合。 出于这个原因,基于这种传统指标的自动交易系统不能够在更长的测试范围内获得稳定的利润。 

当然,没有风险限制(止损)的交易系统不算在内 — 因为无视回撤,有时甚至会表现出无与伦比的获利能力结果,即使用的是传统指标也是如此。 然而,我们不能无视实盘交易中的风险,因为如果不使用止损,这样的回撤或早或晚会耗尽交易者的资金(我已测试了多个不同的交易系统,我的经验证明了这一点)。

为了增强检测超买/超卖区域的指标操作,我们使用了一种没有任何预优化的简单方法,并且采用(固定)设置代替了默认设置。 新设置如下:设置参数值更改为最接近的斐波那契级数值。 即便这种简单的更改,也令我们可以通过“time” 参数将检测到超买/超卖区域的准确性提高至少四分之一。 

基于测试结果,我们还更详细地分析了两个指标(在本例中为最佳指标和最差指标)的操作。 针对上述指标(随机振荡指标和相对强弱指标)的数学公式进行深入分析时,我们确定了影响这些指标运行质量的因素。 

例如,已发现即便采用默认设置,随机振荡数学模型也可以确保良好的性能。

与此同时,事实证明,正是因 RSI 众所周知的数学模型,其作为信号指标的操作才具有挑战性。 因此,尽管该指标广受欢迎,但它可能会有一些操作上的限制(不仅在检测超买/超卖区域时,而是更广泛的操作中)。 针对数学模型的分析表明,将 RSI 用作传统过滤器是合乎逻辑的,即,我们应关注指标值的范围,而不是某些时候与指标级别交叉(指标模型基本上不能确保任何高灵敏度)。


提升超买/超卖区域检测效率的新方法

那么,检测超买/超卖区域方法的新颖性实际上是什么? 我们来总结一下一般需求。 由于我们已讨论过考虑分形(趋势开始和结束)的必要性,以及分析趋势中元素的必要性,因此我们可以谈谈分形-蜡烛分析。


利用分形-蜡烛分析检测超买/超卖区域的指标算法的一般要求

考虑到用于检测超买/超卖区域的常规方法的缺点,可以推荐以下方法:

▪  应该选择一个有效的参考起点,而不是一个随机的参考起点(在传统指标中就是这样),以便计算任何指标的函数值(在任何时候)。 那起点是什么样的? 毫无疑问它是支撑分形的极值。 为什么是分形极值? 因为正是这样的级别才是市场动态的显式标记,市场参与者将其视为参考(例如,设置止损)。 上面我们已经提到,在传统指标的算法中缺少这些参考点,从而会降低检测超买/超卖区域的准确性。

▪  传统指标的计算周期为固定值,而实际价格变动具有持续变化的频率值波动(因此,计算周期值为波动)。 当检测到超买/超卖区域时,会导致此类指标的虚假错误。 

▪  根据脉冲均衡理论,在分析市场动态时,烛条不是成熟的基本结构,而传统蜡烛分析形态并不总是适合分析,因为烛条是此类形态的一个元素。 烛条尽管易于显示信息,但仍存在重大缺陷,例如:烛条内部看不到重要的分形级别。 甚至此外,开盘和收盘蜡烛几乎不会是分形的,因此需要针对这些位置之后的价格变动进行附加分析。 为了减少此类负面因素的作用,至少在某种程度上,在趋势内进行蜡烛分析时必须执行以下操作:

详细分析每根烛台的蜡烛“实体” / 烛台振幅比(以这种简化的方式表征蜡烛内部过程的总体活动,作为一种微趋势),

分析蜡烛内部的调整与其总振幅如何相关联(以这种简化的方式表征形成趋势的下一根蜡烛之前,形成蜡烛的最新阶段的过程动力学),以及

全方位的多尺度方法,即:由于开盘和收盘级别不是分形的,因此我们需要在更短的时间帧内对动力学进行额外的精确分析 - 既分析最近形成和收盘烛条(之前较大的烛条)的活动,也要分析下一根烛条开盘后的活动。

▪  关于检测超买/超卖区域分析系统的结构。 

根据脉冲均衡理论的因素,任何分析或交易系统的算法都必须是多模的,因为任何金融产品的价格走势都是一个复杂的非平稳过程,无法用简单的算法来描述。 以上检测超买/超卖区域的算法也完全适用(任何传统指标算法始终代表市场动态的简化建模)。 在检测这样的区域时,可以有许多动态形态。 因此,检测超买/超卖区域问题更具逻辑的解决方案是由逻辑 “OR(或)” 函数统一的,由多个变化(相对简单的算法)组成的通用算法。 为什么要使用逻辑 OR(或)? 由于理论上每个变化(表征这种区域开始的情况)均可由相同的概率形成,但我们事先无法确切知道会形成什么变化。

于上我们已经表明,分形分析和蜡烛分析的组合可能是市场动态建模的最有效选择。 当然,这与蜡烛分析的经典形态无关。 它涉及该领域中的一些较新的解决方案。

因此,我们着手解决挑战性问题的具体方法。


识别趋势“减速”迹象的相关方法

在我们之前的文章(如何降低交易者风险)中,我们展示了一种检测超买/超卖区域的准确方式(与传统指标相比),它是通过以下标准来识别当前局部趋势中的放缓迹象:

— 缩短相邻的分形支撑级别之间的距离(幅度)(我们需要三个分形来比较两个相邻段落的幅度),

— 增加烛条内部的调整深度,并减少蜡烛的“实体”(蜡烛内分析),以及

— 相对于上一根蜡烛的枢轴,更改蜡烛枢轴的偏移方向(需要三根蜡烛来比较这些级别)。

还有另一种方法 — 利用锚定趋势起点(作为进一步预测超买/超卖区域的起点)的方法。 我们来研究这种锚定算法。


锚定趋势起始点的算法

脉冲均衡理论表明,在分析或交易系统中的重要组成部分之一是锚定波浪走势起点,即局部趋势开始的模块。我们通过上面的特定示例(图例 7 中的图型)获悉,禁用该模块,即,忽略与“命中”超买/超卖区域有关的风险,极大地降低了交易系统的效率。 任何指标都是一种分析系统,理应考虑到这一点。 传统指标缺乏这种锚定是其操作不准确的核心因素。

如何在检测超买/超卖区域时采用此参数? 首先,这种锚定似乎是必要的,以便预测入场的趋势起点。 然而,事实证明,锚定趋势起点有助于检测以上区域。 为此目的,我们必须与局部趋势起点保持距离,这将增加“命中”走势“尾部”的可能性(这正是为什么我们需要检测超买/超卖区域)。

图例 19 下面示意锚定趋势起点的模块(作为 MT5 的智能交易系统 Reduce_risks 的一部分)。

在这种情况下,预测趋势起点的迹象是移动平均线和历史烛条的交点:M1 是 MA8 和 M15 则是 MA5。 移动平均值的计算周期取自斐波那契级数值。

请注意,M1 时间帧上的(烛条和 MA 的)交点不受限于某一根历史柱线。 它由逻辑 OR(或)设置 - 即可在历史记录的前一根柱线,亦或第二根柱线上,或历史记录的第三根柱线上(在 M1 上)。 对于 M15,在这种情况下,单个交点选项可用,即在历史记录的前一根柱线上。 这组潜在选项,在分析与该交点相关的局部趋势发展相关联的多变种实际市场情况时很有帮助。

展示入场的示例(采用该算法,我们降低了在超买/超卖区域入场的可能性)。 该算法是通用的 — 它可用于上行趋势和下行趋势,因为该算法并未(有意地)参照烛条方向。 

我们来研究锚定趋势起点(MQL5 版本)模块的代码片段:

int            handle_iMA_M1_period5;        // variable for storing the handle of the iMA indicator 
int            handle_iMA_M1_period8;        // variable for storing the handle of the iMA indicator 
int            handle_iMA_M1_period13;       // variable for storing the handle of the iMA indicator 
int            handle_iMA_M1_period60;       // variable for storing the handle of the iMA indicator 
int            handle_iMA_M15_period4;       // variable for storing the handle of the iMA indicator 
int            handle_iMA_M15_period5;       // variable for storing the handle of the iMA indicator 
int            handle_iMA_M15_period8;       // variable for storing the handle of the iMA indicator 
int            handle_iMA_H1_period24;       // variable for storing the handle of the iMA indicator 

...................................................................................................

 handle_iMA_M1_period5=iMA(m_symbol.Name(),PERIOD_M1,5,0,MODE_SMA,PRICE_TYPICAL);
//--- if the handle is not created 
   if(handle_iMA_M1_period5==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle of the iMA indicator for the symbol %s/%s, error code %d",
                  m_symbol.Name(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_FAILED);
     }
//--- create handle of the indicator iMA
   handle_iMA_M1_period8=iMA(m_symbol.Name(),PERIOD_M1,8,0,MODE_SMA,PRICE_TYPICAL);
//--- if the handle is not created 
   if(handle_iMA_M1_period8==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle of the iMA indicator for the symbol %s/%s, error code %d",
                  m_symbol.Name(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_FAILED);
     }



handle_iMA_M15_period5=iMA(m_symbol.Name(),PERIOD_M15,5,0,MODE_SMA,PRICE_TYPICAL);
//--- if the handle is not created 
   if(handle_iMA_M15_period5==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle of the iMA indicator for the symbol %s/%s, error code %d",
                  m_symbol.Name(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_FAILED);
     }

..........................................................................................................


    //--- minimize the risks associated with entering the overbought zone at the entrance to the market
      //--- binding to the beginning of a wave to reduce probability of an entrance in a overbought zone:
      //---    the beginning of a wave - not further three bars in the history of data (M1)
      bool beginning_wave_M1=
                             (arr_MA_M1_period8[1]>rates_M1[1].low && arr_MA_M1_period8[1]<rates_M1[1].high) ||
                             (arr_MA_M1_period8[2]>rates_M1[2].low && arr_MA_M1_period8[2]<rates_M1[2].high) ||
                             (arr_MA_M1_period8[3]>rates_M1[3].low && arr_MA_M1_period8[3]<rates_M1[3].high);
      //---    the beginning of a wave - on the previous bar of the senior timeframe (M15)
      bool beginning_wave_M15=
                              MA_M15_period5_1>rates_M15[1].low && MA_M15_period5_1<rates_M15[1].high;


...............................................................................................................


 if(amplitude_candles_M1 && 
         amplitude_candles_M15 && 
         amplitude_channel_M15 && 
         activity_previous_bar_M1 && 
         local_resistance_overcome && 
         beginning_wave_M1 && 
         beginning_wave_M15 &&    
         ascending_direction_2nd_bar_M1 && 
         ascending_direction_previous_bar_M1 && 
         ascending_MA_5and60 && 
         hierarchy_of_three_MA && 
         current_price_is_higher_than_MA && 
         ascending_direction_of_the_previous_candle_M15 && 
         ascending_MA_period4 && 
         hierarchy_of_two_MA_M15 && 
         current_price_is_higher_than_MAperiod4_M15 && 
         current_price_is_higher_than_MAperiod24_H1 && 
         share_of_body_M15 && 
         restriction_of_depth_of_correction_M15 && 
         ascending_tendency_M15 && 
         existence_of_a_shadow_M15 && 
         share_of_body_M1 && 
         previous_candle_no_flat && 
         restriction_of_depth_of_correction_M1 && 
         ascending_a_tendency_M1 && 
         existence_of_a_shadow_M1)

图例 19. 锚定趋势起点的模块。


 图例 19 示意锚定趋势起点的模块(作为 MT5 的智能交易系统 Reduce_risks 的一部分)。 注解:

 arr_MA_M1_period8[1], arr_MA_M1_period8[2], arr_MA_M1_period8[3] — 移动平均值计算周期为 8,分别在报价历史记录中(时间帧 M1)的前第二和第三根柱线上计算,

MA_M15_period5_1 — 移动平均值计算周期为 5,在历史记录的前一根柱线上计算(时间帧 M15),

rates_M1[1].low, rates_M1[2].low, rates_M1[3].low, rates_M1[1].high, rates_M1[2].high, rates_M1[3].high — 历史图表里各根柱线上烛条的极值(时间帧 M1),以及

rates_M15[1].low, rates_M15[1].high — 上一根柱线的烛条极值(时间帧 M15)。                                 

请注意,在 MQL5 版本中,该算法分两个步骤执行:首先,通过单独的变量(bool starting_wave_M1 和 bool starting_wave_M15)定义锚定趋势起点的条件,然后在 “if” 运算符(逻辑 AND(与),它们以绿色高亮显示)中验证这些变量的值。 

进而,我们将学习如何利用锚定趋势起点来检测超买/超卖区域。


距趋势起点远近的相关方法

故此,我们已识别出趋势的起点(当然,这是一个预测,由于并非每个趋势都会真正走得更远)。 现在我们必须看看如何将其用于检测超买/超卖区域。

此处带来的是结合了以上解决方案的综合方法 — 锚定趋势起点,并检测趋势放缓迹象(锚定点已确定之后)。 在我们所用的该方法的简化版本里,有个缺点是,即使在第一次调整时,此类指标也会将其视为超买/超卖区域。 所以,为减少指标发出假信号的可能性,我们可以用以下趋势属性: 

趋势(更确切地说,它的活跃部分)时间是一个有限值,在大多数情况下,任何时间帧(任何金融产品)都不会超过 10-15 根柱线。 

重要的结果是:

当前价格(以柱线为单位)越远离趋势起点(逼近指定的数字),趋势末期的可能性就越大(并且趋势末期越早出现的可能性越高)— 这是完全的超买/超卖区域,具体取决于趋势方向。 

由于忽略了最近处的响应(与锚定趋势起点有关),这种距趋势起点的合理距离能够减少假信号的数量。

 当然,如果价格逆势变化的幅度急剧增加,距离的影响就不那么重要了,我们将不得不考虑与逆势脉冲相关的风险类型(风险类别和相关算法),在我的那篇标题为《如何降低交易者的风险》的文章中有介绍。 以下是这些风险类别:与入场后价格波动幅度不确定性相关的风险,和与入场后价格崩溃相关的风险。 


结束语

好了,我们已完成了主题的第一部分:检测超买/超卖区域的方法。 我们学到了什么新东西?

▪  首先,我们已阐释了这种区域的概念,价格走势过程的性质,即它的分形性。 

▪  我们基于以下假设评估了在此类区域内入场,和在此类区域内平仓的后果,这些区域有各种更广泛的概念 — 不确定性区域(参见有关脉冲均衡理论的更多详细信息)。

▪  我们研究了一组传统指标如何采用标准和新设置(基于斐波那契级数的最接近值)来检测此类区域。 测试是全面的,即针对不同类型的趋势。 由于新设置是根据理论假设,而非通过大规模测试得到的,因此不能将其视为严格的交易建议。 与此同时,即使这样的预研究也表明,采用斐波那契级数值来设置传统指标(例如,与标准指标最接近的数值),通常是提高其准确性的积极因素,尤其对于检测超买/超卖区域。 故此,交易系统进行大规模优化时,这些设置可用作传统指标的初始值。

▪  通过分析该组指标中某些数学公式,我们知晓并非所有指标都可以用作预警指标。 例如,RSI 的数学模型很不幸就是这样的,因此,如果 RSI 是温度计,我们只会看到不确定的东西,例如“现在很热/很冷”,而不是确切的温度值。 原因是该指标的算法未用到主要数据(在某些情况下直接与市场价格比较),而是用了次要数据(移动平均值)。 甚至,这些移动平均线也非常具体,即“截断”(cut-off)— 不是用所选范围内的整个价格序列来计算价格,而仅用到同一范围内该序列的样本来计算它们。 因此,形成了一个有充分根据的假设,即 RSI 仅可用作常规筛选器,而不能用作警报指标,这样会更合理。 也就是说,更合理的方式应为,在选择响应点时,不要使用触发时间(它们与曲线相交),而是通过由其他指标给出的更大范围的指标值。 对于众多使用 RSI 的交易者来说,这个事实可能很有趣,因为它在传统技术分析中堪称“老牌”。 

▪ 与此同时,我们了解到这些指标,在检测超买/超卖区域时,其可以分析和直接比较主要数据(重要的是,图表中各个连续区间的幅度),并可更改设置,令其灵敏度更高。 这种指标的一个例子是随机振荡指标,用它作为警报指标似乎很合理。

▪  还提出了一些新方法来提高检测超买/超卖区域的准确性。 提出了一个复杂的分形-烛台分析,即:在算法上锚定趋势起点,距离,并分析较小尺度的动态(当前趋势中的每根烛条均视为较小时间帧内的推动力)。

实现。

▪  基于此处所述方法开发的检测超买/超卖区域的指标可在市场的此处找到。

▪  本文所用智能交易系统 Reduce_risks(Vladimir Karputov 的 MQL5 版本)的算法 — 代码随附于后(设置针对时间帧 M1)。 

如何降低交易者风险和此处中详细介绍了该 EA。重要! 开发此 EA 仅出于研究目的,并未打算同于实盘交易!


在有关检测超买/超卖区域方法的文章的第二部分中,我们将讨论以下主题: 

▪ 运用传统方法来检测超买/超卖区域的优缺点,所用以下分析工具: 

  • 自适应移动平均线 
  • 斐波那契级数, 
  • 偏离, 
  • 图表形态, 
  • 和运用上述方法的机会。

▪  强化上述分析工具效率的问题。


全部回复

0/140

量化课程

    移动端课程