RSI指标详解图解

SI指标最早是被用于期货交易中,后来人们发现用该指标来指导股票市场投资效果也十分不错,并对该指标的特点不断进行归纳和总结。

RSI指标详解图解

工具/原料

  • 外汇书籍

方法/步骤

  1. RSI指标的计算方法

    N日RSI=[A÷(A+B)]×100%

    公式中,A——N日内收盘涨幅之和

    B——N日内收盘跌幅之和(取正值)

    N日RSI=100-100/(1+RS)

          从计算公式上看,我们可以看到,RSI的计算非常简单,实际理解为:在某一阶段价格上涨所产生的波动占整个波动的半分比。

    RSI指标详解图解
  2. RSI取值的大小

    RSI的变动范围在0—100之间,强弱指标值一般分布在20—80。(如下图所示)

    RSI值市场特征投资操作

    80—100极强卖出

    50—80强买入

    20—50弱观望

    0—20极弱买入

          这里的“极强”、“强”、“弱”和“极弱”只是一个相对的分析概念,是一个相对的区域。有的投资者也可把它们取值为30、70或15、85,根据个人的喜好吧,没有绝对性。

    RSI指标详解图解
  3. 怎样理解RSI相对强弱指标?

    RSI相对强弱指标(RelativeStrenthIndex)以一特定时期内价格的变动情况推测价格未来的变动方向,并根据价格涨跌幅度显示市场的强弱。

    短期RSI在20以下水平,由下往上交叉长期RSI,为买进信号。短期RSI在80以上水平,由上往下交叉长期RSI,为卖出信号。价格一波比一波低,相反的,RSI却一波比一波高时,价格很容易反转上涨。价格一波比一波高,相反的,RSI却一波比一波低时,价格很容易反转下跌。

    RSI在50以下为弱势区,50以上为强势区。由下向上突破50线为由弱转强,由上向下突破50线为由强转弱。一般认为RSI在50以上准确性较高。

    RSI指标详解图解
  4. 强弱指标较适用于资本市场的短线投资

     最后,温馨提示:在目前的市场中还没有出现一个十全十美的技术分析工具,RSI也是如此。我们还应该参考其他指标综合分析,不能简单地依赖RSI的讯号而作出买卖决定。具体的使用,就随机应变了。

    END

注意事项

  • 祝你能够获得更多的外汇知识,以便更好的进行外汇市场交易操作!
<think>我们正在讨论pandas_ta库中的KDJ、STOCH和STOCHRSI指标。根据用户的问题,需要详细说明这三个指标的计算原理和使用方法。 注意:用户特别提到了pandas_ta库,所以我们将围绕该库的实现展开。 1. KDJ指标(随机指标的一种变体): KDJ指标由三条线组成:K线、D线和J线。它实际上是随机指标(Stochastic Oscillator)的改进版本,加入了J线(即K线与D线的差值)来反映市场的动能。 在pandas_ta中,KDJ指标通常通过`kdj`函数计算。 2. STOCH指标(随机指标): 随机指标(Stochastic Oscillator)也称为KD指标,由George Lane提出。它通过比较当前收盘价与一定周期内的价格范围来度量市场的超买超卖状态。 在pandas_ta中,STOCH指标通过`stoch`函数计算。 3. STOCHRSI指标(随机相对强弱指标): 随机相对强弱指标(Stochastic RSI)是RSI的随机指标版本。它首先计算RSI,然后对RSI值应用随机指标的计算方法。 在pandas_ta中,STOCHRSI指标通过`stochrsi`函数计算。 下面我们将分别详细说明这三个指标的计算原理和在pandas_ta中的使用方法。 注意:由于pandas_ta库的文档可能更新,以下内容基于当前版本(0.3.14b0)的实现。 一、KDJ指标(在pandas_ta中通过`kdj`函数实现) 计算步骤: 1. 计算最近N天的未成熟随机值RSV(Raw Stochastic Value): $$ RSV = \frac{Close_t - LL_t}{HH_t - LL_t} \times 100 $$ 其中: - $Close_t$:当日收盘价 - $LL_t$:过去N天的最低价(包括当天) - $HH_t$:过去N天的最高价(包括当天) N为周期,通常取9。 2. 计算K值(快速随机线): $$ K_t = \frac{2}{3} \times K_{t-1} + \frac{1}{3} \times RSV_t $$ 其中,$K_{t-1}$为前一日的K值,初始值通常取50。 3. 计算D值(慢速随机线): $$ D_t = \frac{2}{3} \times D_{t-1} + \frac{1}{3} \times K_t $$ 其中,$D_{t-1}$为前一日的D值,初始值通常取50。 4. 计算J值(动能线): $$ J_t = 3 \times K_t - 2 \times D_t $$ 在pandas_ta中,`kdj`函数的参数: - high: 最高价序列 - low: 最低价序列 - close: 收盘价序列 - length: 计算RSV的周期(默认9) - signal: 计算D值的平滑周期(默认3),但注意在KDJ中,K和D都是平滑3次,所以这里signal参数可能用于D值的平滑周期?实际上,在pandas_ta的kdj实现中,D值是对K值的移动平均,默认是3期。 - offset: 偏移量(默认0) 输出:返回三个序列:K, D, J 示例代码: df.ta.kdj(high='high', low='low', close='close', length=9, signal=3, append=True) 输出列名:'K_9_3', 'D_9_3', 'J_9_3' 二、STOCH指标(在pandas_ta中通过`stoch`函数实现) 随机指标(STOCH)通常由两条线组成:%K线和%D线。%K线是快速线,%D线是%K线的移动平均线。 计算步骤: 1. 计算%K值: $$ \%K_t = \frac{Close_t - LL_{t, n}}{HH_{t, n} - LL_{t, n}} \times 100 $$ 其中: - $Close_t$:当日收盘价 - $LL_{t, n}$:过去n天(包括当天)的最低价 - $HH_{t, n}$:过去n天(包括当天)的最高价 n为周期,通常取14。 2. 计算%D值:%D是%K的m期移动平均(通常为3期),可以是简单移动平均(SMA)或指数移动平均(EMA)等。 $$ \%D_t = SMA(\%K, m) $$ 在pandas_ta中,`stoch`函数的参数: - high: 最高价序列 - low: 最低价序列 - close: 收盘价序列 - fast_k: 计算%K的周期(默认14) - slow_k: 对%K进行平滑的周期(默认1,即不做平滑)?注意:这里与常见设置不同,常见的是先计算%K(快速线)然后对%K进行平滑得到慢速线(称为慢速%K),然后再对慢速%K进行平滑得到%D(慢速%K的移动平均)。但pandas_ta的stoch函数有两个平滑步骤: 第一步:计算原始%K(fast_k周期) 第二步:对原始%K进行slow_k期的平滑(得到慢速%K) 第三步:对慢速%K进行slow_d期的平滑(得到%D) 因此,实际上,pandas_ta的stoch函数输出两个值:慢速%K(即经过两次平滑?实际上,慢速%K是第一次平滑,%D是第二次平滑)和%D。 具体实现(根据源码): stoch_k = (close - low.rolling(fast_k).min()) / (high.rolling(fast_k).max() - low.rolling(fast_k).min()) * 100 stoch_k = stoch_k.rolling(slow_k).mean() # 慢速%K,即对原始%K进行slow_k期的移动平均 stoch_d = stoch_k.rolling(slow_d).mean() # %D,对慢速%K进行slow_d期的移动平均 所以,默认参数:fast_k=14, slow_k=3, slow_d=3 输出:返回两个序列:慢速%K(通常称为K线)和%D(通常称为D线) 示例代码: df.ta.stoch(high='high', low='low', close='close', fast_k=14, slow_k=3, slow_d=3, append=True) 输出列名:'STOCHk_14_3_3', 'STOCHd_14_3_3' 注意:在传统定义中,随机指标的%K线(快速线)就是上述公式计算的原始%K,而%D线是%K线的3期移动平均。但在pandas_ta中,通过设置slow_k=1,slow_d=3,可以得到传统意义上的%K(原始)和%D(%K的3期平均)吗? 实际上,如果设置slow_k=1,则慢速%K就是原始%K(因为1期平均就是自身),然后%D就是原始%K的3期平均。所以,如果想得到传统意义的随机指标,可以设置slow_k=1, slow_d=3。 三、STOCHRSI指标(在pandas_ta中通过`stochrsi`函数实现) 随机相对强弱指标(STOCHRSI)是对RSI指标应用随机指标的计算方法。它计算的是RSI值在给定周期内的位置。 计算步骤: 1. 计算RSI值(通常周期为14): $$ RSI_t = 100 - \frac{100}{1 + RS} $$ 其中,RS = 平均上涨幅度 / 平均下跌幅度(通常使用指数移动平均) 2. 计算StochRSI值(%K): $$ StochRSI_t = \frac{RSI_t - \min(RSI_{t-n}, \cdots, RSI_t)}{\max(RSI_{t-n}, \cdots, RSI_t) - \min(RSI_{t-n}, \cdots, RSI_t)} \times 100 $$ 其中,n为计算StochRSI的周期(通常为14)。 3. 对StochRSI进行平滑(可选): 通常还会计算一个移动平均线(%D)作为信号线。 在pandas_ta中,`stochrsi`函数的参数: - close: 收盘价序列(用于计算RSI) - length: RSI的周期(默认14) - rsi_length: 已弃用,用length代替(新版本中直接用length) - k: 计算StochRSI的%K的周期(即上述步骤2中的n,默认14) - d: 计算StochRSI的%D的周期(即对%K进行移动平均的周期,默认3) - smooth_k: 对%K进行平滑的移动平均类型(默认1,即SMA,周期为1?实际上,这里的smooth_k参数是用于对%K进行平滑的移动平均的周期,如果设置为1则不平滑,如果大于1则进行平滑。注意:在pandas_ta中,smooth_k参数表示对%K的平滑周期,而d参数表示对平滑后的%K再进行一次移动平均得到%D) - mamode: 移动平均模式(默认'sma',可选'ema'等) 计算过程(根据源码): 1. 计算RSIrsi = ta.rsi(close, length=length) 2. 计算StochRSI的%K(原始): stochrsi_k = (rsi - rsi.rolling(k).min()) / (rsi.rolling(k).max() - rsi.rolling(k).min()) * 100 3. 对%K进行平滑(如果smooth_k>1): stochrsi_k = stochrsi_k.rolling(smooth_k).mean() # 使用mamode指定的移动平均类型 4. 计算StochRSI的%D(即对平滑后的%K再进行d期的移动平均): stochrsi_d = stochrsi_k.rolling(d).mean() # 同样使用mamode指定的移动平均类型,但注意:这里源码中对于d期的平均也是用同样的mamode? 输出:返回两个序列:%K(可能经过平滑)和%D(%K的d期平均) 示例代码: df.ta.stochrsi(close='close', length=14, k=14, d=3, smooth_k=1, mamode='sma', append=True) 输出列名:'STOCHRSIk_14_14_3_1', 'STOCHRSId_14_14_3_1' 注意:默认情况下,smooth_k=1,即不对%K进行平滑。此时,%K就是原始StochRSI值,%D就是%K的3期移动平均。 总结: - KDJ指标:输出K、D、J三条线,计算基于最高价、最低价、收盘价,先计算RSV,再对RSV进行指数平滑(3期)得到K,再对K平滑得到D,最后计算J=3K-2D。 - STOCH指标:输出慢速%K和%D。先计算原始%K(fast_k周期),然后对原始%K进行slow_k期平滑得到慢速%K,再对慢速%K进行slow_d期平滑得到%D。 - STOCHRSI指标:输出%K和%D。先计算RSI,再对RSI值计算随机指标(k周期)得到原始%K,然后对原始%K进行smooth_k期平滑得到最终%K,再对%K进行d期平滑得到%D。 使用建议: - 在震荡行情中,这些指标的超买超卖信号较为有效;在趋势行情中,指标可能长期处于超买或超卖区。 - 可以结合其他指标(如MACD、移动平均线等)进行综合判断。 下面给出在pandas_ta中使用这三个指标的示例代码: 示例代码: import pandas_ta as ta # 计算KDJ指标 df.ta.kdj(append=True) # 使用默认参数:length=9, signal=3 # 计算STOCH指标(传统设置:%K为14天原始值,%D为%K的3天移动平均) df.ta.stoch(fast_k=14, slow_k=1, slow_d=3, append=True) # 此时,慢速%K就是原始%K,所以%D就是原始%K的3天平均 # 计算STOCHRSI指标(默认参数:RSI周期14,StochRSI的%K周期14,%D周期3,不对%K进行平滑) df.ta.stochrsi(append=True) 注意:以上计算后,指标结果会添加到DataFrame中,列名分别为: KDJ: 'K_9_3', 'D_9_3', 'J_9_3' STOCH: 'STOCHk_14_1_3', 'STOCHd_14_1_3' STOCHRSI: 'STOCHRSIk_14_14_3_1', 'STOCHRSId_14_14_3_1' 最后,我们生成相关问题。</think>### pandas_ta库中KDJ、STOCH、STOCHRSI指标详解 #### 一、KDJ指标(随机指标) **计算原理**: KDJ是随机指标(Stochastic Oscillator)的变体,通过价格波动幅度判断超买超卖区域,包含三条线: 1. **K线(快速线)**: $$ K_t = \frac{2}{3} \times K_{t-1} + \frac{1}{3} \times RSV_t $$ 2. **D线(慢速线)**: $$ D_t = \frac{2}{3} \times D_{t-1} + \frac{1}{3} \times K_t $$ 3. **J线(方向线)**: $$ J_t = 3 \times K_t - 2 \times D_t $$ 其中 **RSV(未成熟随机值)** 计算: $$ RSV_t = \frac{Close_t - \min(Low_{t-n})}{\max(High_{t-n}) - \min(Low_{t-n})} \times 100 $$ - $n$为周期(默认9) - $K_{t-1}, D_{t-1}$初始值通常取50 **pandas_ta实现**: ```python # 计算KDJ指标(默认周期9) df.ta.kdj(append=True) ``` **输出列**: - `K_9_3`:快速线(黄线) - `D_9_3`:慢速线(紫线) - `J_9_3`:方向线(绿线) **使用场景**: - **超买信号**:K/D > 80 - **超卖信号**:K/D < 20 - **金叉死叉**:K线上穿D线(买入),K线下穿D线(卖出) --- #### 二、STOCH指标(随机振荡器) **计算原理**: 经典随机指标,包含两条线: 1. **%K(快速线)**: $$ \%K_t = \frac{Close_t - \min(Low_{t-n})}{\max(High_{t-n}) - \min(Low_{t-n})} \times 100 $$ 2. **%D(慢速线)**: $$ \%D_t = SMA(\%K, m) $$ - $n$:价格周期(默认14) - $m$:%K的平滑周期(默认3) - $SMA$:简单移动平均 **pandas_ta实现**: ```python # 计算STOCH指标(默认14,3) df.ta.stoch(append=True) ``` **输出列**: - `STOCHk_14_3_3`:%K线(快速线) - `STOCHd_14_3_3`:%D线(慢速线) **与KDJ的区别**: | 特性 | STOCH | KDJ | |------------|----------------|----------------| | **输出线** | %K, %D | K, D, J | | **平滑** | 单次SMA | 双重指数平滑 | | **敏感度** | 较高 | 较低 | --- #### 三、STOCHRSI指标(随机RSI) **计算原理**: 对RSI值进行随机化处理,解决传统RSI的钝化问题: 1. **计算RSI**: $$ RSI_t = 100 - \frac{100}{1 + RS} $$ $RS = \frac{\text{平均上涨幅度}}{\text{平均下跌幅度}}$(默认周期14) 2. **计算StochRSI**: $$ StochRSI_t = \frac{RSI_t - \min(RSI_{t-k})}{\max(RSI_{t-k}) - \min(RSI_{t-k})} \times 100 $$ - $k$:RSI窗口周期(默认14) 3. **信号线**: $$ Signal_t = SMA(StochRSI, d) $$ - $d$:平滑周期(默认3) **pandas_ta实现**: ```python # 计算STOCHRSI(默认周期14,3) df.ta.stochrsi(append=True) ``` **输出列**: - `STOCHRSIk_14_14_3_1`:StochRSI线 - `STOCHRSId_14_14_3_1`:信号线 **核心优势**: - 波动范围固定(0-100),避免传统RSI的周期依赖问题 - 对短期价格变动更敏感[^1] --- ### 三指标对比与使用建议 | 指标 | 最佳场景 | 缺陷 | 参数调整建议 | |------------|-------------------|---------------|--------------------| | **KDJ** | 中短期趋势交易 | 震荡行情易失效 | 周期9→6(短线) | | **STOCH** | 超买超卖判断 | 单边行情滞后 | 结合50中线过滤信号 | | **STOCHRSI**| 震荡行情反转点 | 需配合趋势指标 | RSI周期14→21(降噪)| **组合策略示例**: ```python # 综合指标计算 df.ta.kdj(length=9, append=True) df.ta.stoch(length=14, append=True) df.ta.stochrsi(length=14, rsi_length=21, append=True) # 多指标协同信号 df['buy_signal'] = (df['K_9_3'] > 20) & (df['STOCHk_14_3_3'] > 20) & (df['STOCHRSIk_14_21_3_1'] < 30) ``` > **关键提示**:避免在强趋势行情中单独使用随机指标,建议结合MACD或移动平均线过滤信号[^2]。 --- ### 可视化示例 ```python import matplotlib.pyplot as plt fig, (ax1, ax2) = plt.subplots(2, figsize=(12, 8)) df[['close','K_9_3','D_9_3']].plot(ax=ax1, title='KDJ') ax1.axhline(80, color='gray', linestyle='--') ax1.axhline(20, color='gray', linestyle='--') df[['STOCHRSIk_14_14_3_1','STOCHRSId_14_14_3_1']].plot(ax=ax2, title='STOCHRSI') ax2.axhline(80, color='red', alpha=0.3) ax2.axhline(20, color='green', alpha=0.3) plt.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值