RSI BB 还是RSI & BB? 很简单,让我们用 Elasticsearch 来实现吧!

本文探讨了如何利用Elasticsearch实现相对强弱指数(RSI)与布林带(BB)的结合,用于确认股票的超买和超卖信号。通过RSI BB和RSI & BB的对比分析,发现RSI BB在某些场景下能更准确地把握买卖点。示例展示了如何处理数据并应用在股票型公募基金上,揭示了RSI与BB结合在趋势确认上的价值。

相对强弱指数 (Relative Strength Index) 是 J. Walles Widler Jr. 于 1978 年开发,到现在也经常使用的一项技术分析指标,主要用于判断股票或商品的超买或超卖情况。 与 MACD 一样,相对强弱指数(RSI) 是一个趋势跟踪动量指标。RSI与MACD 不同之处在于它衡量的是收益和损失的移动平均线,而不是价格变化的移动平均线。 当近期收益增加时 RSI 值增加,当近期损失增加时 RSI 值减少。

在之前所写《当 MACD 与布林带在 Elasticsearch中结合时, …》一文中,MACD 和布林带(BB) 是紧耦合在一起。 计算MACD BB 的BB是基于MACD 值而不是每日价格。然而,在WEB 上同时出现RSI和BB的相关文章,大多数是基于价格来构建BB。根据发布在Investopedia的《How Do I Create a Trading Strategy with Bollinger Bands and the RSI? 》一文中,作者建议使用 RSI 的结论作为补充证据,以确认从布林带总结出价格提高或降低趋势。当价格到达布林带上限 (BBU)且RSI读数为 70+ 时,可以确认超买信号增强。当价格到达布林带下限 (BBL) 且 RSI 低于 30- 时,可以确认超卖信号增强。在本文中,我们将按照 MACD BB 方法检验 RSI BB,看看对趋势的确认是否有帮助。本文将使用 Elasticsearch 来实现,处理过程显示了无缝集成并且易于理解。推荐读者阅读我之前所写的文章,可快速对BB和使用Elasticsearch的实现细节有一个基本的了解。

前面说过,RSI的计算涉及近期平均收益(gain)和近期平均亏损(loss)两种数据,周期一般为14。 当天的收益定义为当前价格大于前一个价格时的差额,否则收益为0。同理,当天的亏损定义为当前价格小于前一个价格时的差额绝对值,否则损失为 0。 对于滑动窗口(window) 为n,最近平均收益可以简单移动平均收益(SMAgain,n) 表示。最近平均损失可以简单移动平均损失(SMAloss,n) 表示。然而简单移动平均函数(SMA)默认只使用过去数据,但是RSI 需要包括当前数据。 因此将 SMA 向右移动 1 个数据,并表示为 SMAgain,n,1 和 SMAloss,n,1。 因此,RSI 的方程可以改写如下:
在这里插入图片描述
在《使用Elasticsearch计算布林带宽度指标》一文中, BB基于SMA和每日价格(Daily)的标准差 (SD) 以构建BBU 和BBL。 BB 的中线是 SMA。 滑动窗口window为20或26,标准差n的个数在通常情况下为1或2。
在这里插入图片描述
如果使用与MACD BB相同的概念,RSI BB 将定义如下:
在这里插入图片描述
本文尝试将 RSI & BB 和 RSI BB 应用Tushare大数据开放社区提供的股票型公募基金,并专注于将 Elasticsearch 作为分析工具。 下面的例子随机选择了"工银研究精选股票" (代码为000803.OF)。 数据选自提供的 2021年01月01日到2021年04月30日之间的时间范围。RSI的窗口是14,SMA的窗口是20,标准差的个数是2。

在下面的两个图表中,首先RSI与每日的复权单位净值(Daily)一起绘制,RSI大于 70 并与前一个时间戳中的RSI值相比是一个增量,使用水蓝色点。如果 RSI大于 70但为减量,则为蓝色点。RSI小于30并与前一个时间戳中的RSI值相比是一个减量,则为红色点。如果RSI小于30但为减量,则为橙色点。 对于其他情况,则为灰色点。RSI图表与之后显示的 MACD图表相比,RSI 似乎是一个更好的净值趋势跟踪指

SYSTEM_THREAD_EXCEPTION_NOT_HANDLED_M (1000007e) This is a very common bugcheck. Usually the exception address pinpoints the driver/function that caused the problem. Always note this address as well as the link date of the driver/image that contains this address. Some common problems are exception code 0x80000003. This means a hard coded breakpoint or assertion was hit, but this system was booted /NODEBUG. This is not supposed to happen as developers should never have hardcoded breakpoints in retail code, but ... If this happens, make sure a debugger gets connected, and the system is booted /DEBUG. This will let us see why this breakpoint is happening. Arguments: Arg1: ffffffffc0000005, The exception code that was not handled Arg2: fffff8017536020f, The address that the exception occurred at Arg3: fffff980bb806e88, Exception Record Address Arg4: fffff980bb8066c0, Context Record Address Debugging Details: ------------------ *** WARNING: Unable to verify timestamp for KMDFjubb.sys *** WARNING: Unable to verify timestamp for win32k.sys KEY_VALUES_STRING: 1 Key : AV.Dereference Value: NullClassPtr Key : AV.Fault Value: Read Key : Analysis.CPU.Sec Value: 2 Key : Analysis.DebugAnalysisProvider.CPP Value: Create: 8007007e on WIN-E6RUS8U7A5V Key : Analysis.DebugData Value: CreateObject Key : Analysis.DebugModel Value: CreateObject Key : Analysis.Elapsed.Sec Value: 34 Key : Analysis.Memory.CommitPeak.Mb Value: 76 Key : Analysis.System Value: CreateObject BUGCHECK_CODE: 7e BUGCHECK_P1: ffffffffc0000005 BUGCHECK_P2: fffff8017536020f BUGCHECK_P3: fffff980bb806e88 BUGCHECK_P4: fffff980bb8066c0 EXCEPTION_RECORD: fffff980bb806e88 -- (.exr 0xfffff980bb806e88) ExceptionAddress: fffff8017536020f (nt!IoDeleteDevice+0x000000000000000f) ExceptionCode: c0000005 (Access violation) ExceptionFlags: 00000000 NumberParameters: 2 Parameter[0]: 0000000000000000 Parameter[1]: 0000000000000030 Attempt to read from address 0000000000000030 CONTEXT: fffff980bb8066c0 -- (.cxr 0xfffff980bb8066c0) rax=00000000c0000035 rbx=00000000c0000035 rcx=0000000000000000 rdx=00000000000001ea rsi=ffffe6050d238000 rdi=ffffe60503066e30 rip=fffff8017536020f rsp=fffff980bb8070c0 rbp=0000000000000000 r8=ffffa98adc24518c r9=0000000000000004 r10=00000000ffffffff r11=0000000000000066 r12=ffffa98adc246390 r13=ffffffff80003090 r14=fffff80202996018 r15=ffffe60503066e30 iopl=0 nv up ei ng nz na po nc cs=0010 ss=0018 ds=002b es=002b fs=0053 gs=002b efl=00050286 nt!IoDeleteDevice+0xf: fffff801`7536020f 8b4130 mov eax,dword ptr [rcx+30h] ds:002b:00000000`00000030=???????? Resetting default scope BLACKBOXBSD: 1 (!blackboxbsd) BLACKBOXNTFS: 1 (!blackboxntfs) BLACKBOXPNP: 1 (!blackboxpnp) BLACKBOXWINLOGON: 1 CUSTOMER_CRASH_COUNT: 1 PROCESS_NAME: System READ_ADDRESS: fffff80175cfb390: Unable to get MiVisibleState Unable to get NonPagedPoolStart Unable to get NonPagedPoolEnd Unable to get PagedPoolStart Unable to get PagedPoolEnd fffff80175c0f400: Unable to get Flags value from nt!KdVersionBlock fffff80175c0f400: Unable to get Flags value from nt!KdVersionBlock unable to get nt!MmSpecialPagesInUse 0000000000000030 ERROR_CODE: (NTSTATUS) 0xc0000005 - 0x%p 0x%p %s EXCEPTION_CODE_STR: c0000005 EXCEPTION_PARAMETER1: 0000000000000000 EXCEPTION_PARAMETER2: 0000000000000030 EXCEPTION_STR: 0xc0000005 STACK_TEXT: fffff980`bb8070c0 fffff802`0294189b : ffffe604`dc0f2510 00000000`c0000035 ffffe605`0d238000 fffff802`02996018 : nt!IoDeleteDevice+0xf fffff980`bb8070f0 ffffe604`dc0f2510 : 00000000`c0000035 ffffe605`0d238000 fffff802`02996018 00000000`00000100 : KMDFjubb+0x189b fffff980`bb8070f8 00000000`c0000035 : ffffe605`0d238000 fffff802`02996018 00000000`00000100 fffff801`7949d500 : 0xffffe604`dc0f2510 fffff980`bb807100 ffffe605`0d238000 : fffff802`02996018 00000000`00000100 fffff801`7949d500 fffff980`bb807168 : 0xc0000035 fffff980`bb807108 fffff802`02996018 : 00000000`00000100 fffff801`7949d500 fffff980`bb807168 fffff802`02996018 : 0xffffe605`0d238000 fffff980`bb807110 00000000`00000100 : fffff801`7949d500 fffff980`bb807168 fffff802`02996018 00000000`00240022 : KMDFjubb+0x56018 fffff980`bb807118 fffff801`7949d500 : fffff980`bb807168 fffff802`02996018 00000000`00240022 fffff802`02943e90 : 0x100 fffff980`bb807120 fffff802`02943613 : 00000000`00000000 00000000`00000000 ffffe605`0d238000 ffffe605`03066e30 : WDFLDR!WdfVersionBind+0xa0 [minkernel\wdf\framework\kmdf\src\dynamic\loader\wdfldr.cpp @ 1939] fffff980`bb807190 00000000`00000000 : 00000000`00000000 ffffe605`0d238000 ffffe605`03066e30 fffff980`bb807360 : KMDFjubb+0x3613 SYMBOL_NAME: KMDFjubb+189b MODULE_NAME: KMDFjubb IMAGE_NAME: KMDFjubb.sys STACK_COMMAND: .cxr 0xfffff980bb8066c0 ; kb BUCKET_ID_FUNC_OFFSET: 189b FAILURE_BUCKET_ID: AV_KMDFjubb!unknown_function OS_VERSION: 10.0.19041.1 BUILDLAB_STR: vb_release OSPLATFORM_TYPE: x64 OSNAME: Windows 10 FAILURE_ID_HASH: {2b47d1a7-6ea4-d7e7-85f7-38462657640d} Followup: MachineOwner
11-18
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值