当 MACD 与 Elasticsearch 中的 BB 结合时,... PlatoBlockchain 数据智能。 垂直搜索。 哎。

当 MACD 与 Elasticsearch 中的 BB 结合时,......

黄伟德

移动平均收敛散度 (MACD) 是基于趋势和动量的指标,而 Bollinger 波段 (BB) 是一个基于波动率的指标。 当MACD与BB结合时,一些专业人士称其为MACD BB,另一些专业人士称其为BB MACD。 在本文中,使用名称 MACD BB。 两个技术分析指标的组合继承了两个指标的能力,提供了对市场趋势的洞察。 从我密集的网络搜索来看,无处可说是谁发明了这个指标。 如果有人知道,请分享来源。 但是,许多交易平台和论坛都将此指标作为高级功能提供。 建议读者阅读我之前的两篇文章,快速对这两个指标以及它们使用 Elasticsearch 的实现有一个基本的了解。
根据文章“使用 Elasticsearch 构建 MACD 直方图”,MACD涉及短期和长期指数加权移动平均线(EWMA)。 这两个术语的常见做法是 12 和 26。

当 MACD 与 Elasticsearch 中的 BB 结合时,... PlatoBlockchain 数据智能。 垂直搜索。 哎。

在文章“通过 Elasticsearch 计算布林带宽度”,BB根据每日价格的简单移动平均线(SMA)和标准差(SD)构建上带(BBU)和下带(BBL)。 BB 的中线是 SMA。 从 MACD BB 的术语来说,它使用 MACD 而不是价格。 BBL 和 BBU 的计算解释如下,其中滑动窗口(window)为 20 或 26,标准差(n)为 1 或 2,通常做法。

基本上,MACD、BBU 和 BBL 将绘制在图表上,用户可以观察 MACD 和两个波段的交点。 当MACD突破BBU时,显示出强劲的上升趋势信号。 同样,当MACD突破BBL时,显示出强烈的下行信号。 使用图表来描述含义要容易得多。 在本文中,我们尝试将 MACD 和 BB 应用于免佣金交易所交易基金 (ETF),并专注于将 Elasticsearch 作为分析工具。 下面的例子随机选择了“富达国际多因子ETF”。 其股票代码为FDEV。 数据选自投资者交易所 IEX 提供的 1 年 2021 月 31 日至 2021 年 12 月 26 日之间的时间范围。 MACD最常用的参数是短期的10和长期的1。 根据很多网络文章,在计算BB时,SMA的周期是XNUMX,BB的标准差是XNUMX。
在下图中,绘制了 MACD 及其 BBL、BBU 和 SMA。 如果 MACD 值高于 BBU 并且与前面时间戳中的值相比是一个增量,则它是一个水蓝色点。 如果 MACD 值高于 BBU 且为递减,则为蓝点。 如果 MACD 值低于 BBL 且为递减,则为红点。 如果 MACD 值低于 BBL 并且是一个增量,则它是一个橙色点。 对于其他情况,它是一个灰点。 读者可以很容易地观察到红色/橙色线低于 BBL,蓝色/水蓝色线高于 BBU。 此外,当 MACD 值从零以下上升并越过零时(考虑由 MACD 产生的看涨信号),在大多数情况下会紧随其后出现相应的水蓝色点。 同理,当 MACD 值从零上方跌破零时(考虑 MACD 产生的看跌信号),相应的红点将随之而来。 线的斜率表示趋势的动量。

但是,当我们尝试结合典型值来解释MACD值从BBU或BBL突破的点时,它似乎与价格的上升或下降趋势不匹配,如下图所示。 波动性增加的潜在迹象和未来可能的交易机会不容易捕捉,有时方向会逆转。

尽管大多数交易平台都提供MACD BB指标并给出相同的评论,“它不适合新手交易者”,但其Elasticsearch实现显示无缝集成且易于理解。 假设有一个填充有数据的 Elasticsearch 索引,其使用的数据映射与上一篇论文中描述的相同。 以下步骤演示了 REST API 请求正文的代码。

通过搜索操作收集所有相关文件

使用带有“must”子句的“bool”查询来收集符号为FDEV且日期在1年2021月31日至2021年26月1.5日之间的文档。由于计算了15个交易日移动平均线,因此调整了附加数据2021个月(1年2021月XNUMX日至XNUMX年XNUMX月XNUMX日)

计算基金的每日典型值

使用名为 MACD 的“date_histogram”聚合,参数“field”为“date”,参数“interval”为“1d”来提取基金每天的价格。 然后是一个名为 TP 的“scripted_metric”聚合,计算典型价格,它等于最高价、最低价和收盘价的平均价格。

提取桶的日期

由于额外的数据,后续操作需要稍后过滤掉超出范围的部分。 名为“DateStr”的“min”聚合用于获取存储桶的日期。 在 Elasticsearch 服务器中,日期以纪元时间存储。 时间单位为毫秒,时区为UTC。

选择包含 1 个以上文档的存储桶

为了过滤掉空桶(非交易日),使用名为 STP 的“bucket_selector”聚合来选择文档计数大于 0 的桶。

计算典型值的每日12个交易日和26个交易日的EWMA

使用“moving_fn”聚合,命名为EWMA12,参数window为12,参数“buckets_path”为TP.value,计算典型值的12个交易日EWMA。 EWMA 是使用函数 MovingFunctions.ewma 计算的,参数 alpha 为 2/(window+1)。 EWMA26 聚合可以用同样的方式完成。

计算MACD

使用名为 macd 的“bucket_script”聚合和参数“buckets_path”来指定来自 EWMA12 和 EWMA26 的结果。 然后根据脚本中的公式计算 MACD 指标。

计算典型值的每日10天简单移动平均线

使用“moving_fn”聚合,命名为SMA10,参数窗口为10,参数“buckets_path”为MACD,计算MACD值的10天SMA。 SMA 使用未加权平均函数 (MovingFunctions.unweightedAvg) 计算。

计算典型值的每日 10 天标准差

使用名为 SD10 的“moving_fn”聚合,参数窗口为 10,参数“buckets_path”为 MACD,计算 10 天 MACD 标准偏差。 SD 使用标准偏差函数 (MovingFunctions.stdDev) 计算。

计算MACD BB

使用两个名为 BBU10 和 BBL10 的“bucket_script”聚合,使用参数“buckets_path”来指定来自 SMA10 聚合和 SD10 聚合的结果。 然后,根据 SMA10 加上或减去 SD10 的值计算 BBL10 和 BBU10。

识别MACD值的类型

a) 使用名为 MACD_Diff 的“衍生”聚合,并带有参数“buckets_path”来指定 MACD 的值,以确定它是从前面时间戳的 MACD 增加还是减少。

b) 使用名为 MACDType 的“bucket_script”聚合,参数“buckets_path”指定来自 BBL10、BBU10、macd 和 MACD_Diff 聚合的结果,以对 MACD 值的类型进行分类。

➤ 如果 MACD_Diff 是递减且 macd 值 < BBL,则键入 1
➤ 如果 MACD_Diff 是增量且 MACD 值 < BBL,则键入 2
➤ 如果 MACD_Diff 是增量且 macd 值,则键入 3 > BBU
➤ 如果 MACD_Diff 是递减且 macd 值,则键入 4 > BBU
➤ 其他情况输入 0

过滤掉额外的输出文件

使用名为 SMACD_BB 的“bucket_selector”聚合,参数“buckets_path”为“DateStr”,以选择“script”语句中指定的正确存储桶。 选择标准是日期在 1 年 2021 月 1612137600000 日或之后的那些桶(纪元时间 XNUMX,以毫秒为单位)。

收集结果后,我们可以绘制如前所示的图形。 类型 3 的点颜色为水蓝色,类型 4 为蓝色,类型 1 为红色,类型 2 为橙色,其他为灰色。

读者可以进一步参考GitHub上的开源项目(MACD_BB)

备注:

一、感谢IEX(Investors Exchange)提供ETF数据,也感谢GitHub提供开源项目存储。

二、 本文基于技术思想,不构成任何投资建议。 读者在使用时须自行承担责任。

三、 文章可能还有错误,还望各位读者指正。

四、 那些有兴趣的读者可以参考作者所著的书籍,了解 Elasticsearch 的所有基本技能。 “Advanced Elasticsearch 7.0”,2019 年 9781789957754 月,Packt,ISBN:XNUMX。

Source: https://wtwong316.medium.com/when-macd-couples-with-bb-in-elasticsearch-3cca987c0678?source=rss——-8—————–cryptocurrency

时间戳记:

更多来自 M中号