使用 Elasticsearch 构建布林带趋势指标

如果您阅读我之前所写的“使用 Elasticsearch 计算布林带宽度”一文,可能还想使用 Elasticsearch来构建布林带趋势指标 (BBTrend)。 BBTrend 是 John Bollinger开发的一个相对较新的指标。 这指标既能反映标的股票的走势,又能体现强度和方向两个方面,为交易者提供了有价值的参考。 当 BBTrend 读数高于零时,它可以表示市场看涨,反之亦然。其值高于或低于零的程度决定了趋势背后的强度或动量。 BBTrend 涉及两个布林带,短周期和长周期。 一般来说短周期为 20,而长周期为50。
要了解如何使用Elasticsearch计算布林带(BB),可以参考前文。BBTrend 的计算公式如下:

在这里插入图片描述
在公式中:
p: 价格
SMA : 使用简单模型的移动平均值
short : 短周期滑动窗口
long : 长周期滑动窗口
abs : 绝对值函数
BBUshort : 短周期布林带上轨道线
BBLshort : 短周期布林带下轨道线
BBUlong : 长周期布林带上轨道线
BBLlong : 长周期布林带下轨道线

在本文中,我们将使用股票型公募基金作为样本,并专注于Elasticsearch作为分析的计算工具。 以下示例随机选用工银前沿医疗股票C基金,其代码为010685.OF。 数据选自Tushare大数据开放社区,时间范围为2020 年 12 月 01 日至 2021 年 4 月 30 日之间。 假设有一个填充了数据的 Elasticsearch 索引,其使用的数据映射与上一篇论文相同(使用Elasticsearch计算布林带宽度指标)。以下步骤说明操作流程,同时演示REST API请求主体的代码:

  1. 通过搜索操作收集所有相关文档:
    使用带有必要条件(must)子句的布林查询(bool query)来收集基金代码为010685.OF,和公告截止日期从2021年02月01日到2021年04月30日的文档。 由于需要计算50天的移动平均值,此多增加了约两个月的数据(从2020年12月01日到2020年1月31日)。
{
	"query": {
		"bool": {
			"must": [
				{"range": {"end_date": {"gte": "20201201", "lte": "20210430"}}},
		    	{"term": {"ts_code": "010685.OF"}}
			]
		}
	},
  1. 提取每日的复权单位净值:
    使用名为BBI的日期直方图(date_histogram)存储桶聚合,并配合参数field(字段)为end_date和interval(间隔)为 1d(1天),提取每日的复权单位净值(adj_nav)。由于子聚合使用管道(pipeline)聚合而无法直接采用文档字段,所以额外使用平均值(avg)聚合获取每日的复权单位净值,聚合名称为Daily。(若当天基金没有公布的值,其值的计算方法是从其前后公布的值推算而来。)
    "aggs": {
        "BBI": {
            "date_histogram": {
                &
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值