news 2026/6/25 12:18:45

Overlap:RMA(运行移动平均线)技术指标详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Overlap:RMA(运行移动平均线)技术指标详解

Overlap:RMA(运行移动平均线)技术指标详解

一、RMA的定义

RMA(Running Moving Average,运行移动平均线)也被称为Wilder’s Moving Average(威尔德移动平均线),是技术分析大师J. Welles Wilder在1978年出版的《技术交易系统新概念》(New Concepts in Technical Trading Systems)一书中引入的一种特殊移动平均线。

核心定位

RMA的本质其实是一种指数移动平均线(EMA),但它采用了一个特定的平滑系数公式。你可以把它理解为“威尔德版本的EMA”,而它最著名的应用场景,就是作为RSI(相对强弱指数)指标的核心计算组件。

RMA与EMA的区别

对比维度RMA(运行移动平均)EMA(指数移动平均)
平滑系数(Alpha)固定为1 / period通常为2 / (period + 1)
与EMA的关系RMA是EMA使用特定Alpha时的一种特例更通用的指数平滑形式
典型应用威尔德系列指标(RSI、ADX等)的核心计算各类趋势跟踪和动量指标
对近期价格的权重权重相对较小(当period较大时)通常给予近期价格更高权重

这一公式也说明了为什么RMA(或Wilder平滑)常被评价为“速度较慢”,因为它相当于一个有较长有效周期的EMA。

二、RMA的计算方法

1. 核心公式

RMA的计算基于一个递归公式:
RMAt=Pricet×α+RMAt−1×(1−α) \mathrm{RMA}_t = \mathrm{Price}_t \times \alpha + \mathrm{RMA}_{t-1} \times (1 - \alpha)RMAt=Pricet×α+RMAt1×(1α)
其中平滑系数α\alphaα为周期的倒数:
α=1length \alpha = \frac{1}{\mathrm{length}}α=length1

2. 计算步骤

第一步:初始化第一个RMA值

与EMA类似,第一个RMA值通常使用简单移动平均(SMA)作为初始值。
RMAinitial=SMA(Price,length) \mathrm{RMA}_{\text{initial}} = \mathrm{SMA}(\mathrm{Price}, \mathrm{length})RMAinitial=SMA(Price,length)
第二步:递归计算后续值

从第length + 1个数据点开始,使用递推公式计算:
RMAt=1length×Pricet+(1−1length)×RMAt−1 \mathrm{RMA}_t = \frac{1}{\mathrm{length}} \times \mathrm{Price}_t + \left(1 - \frac{1}{\mathrm{length}}\right) \times \mathrm{RMA}_{t-1}RMAt=length1×Pricet+(1length1)×RMAt1

3. 计算示例

length = 3为例:

时间价格计算过程RMA值
t1100初始SMA100.00
t2105105 × 0.333 + 100 × 0.667101.67
t3102102 × 0.333 + 101.67 × 0.667101.78
t4108108 × 0.333 + 101.78 × 0.667103.85

4. pandas_ta中的实现

pandas_ta库中,RMA函数直接调用了pandas的ewm方法,并传入alpha = 1 / length作为平滑参数:

# pandas_ta中RMA的简化实现defrma(close,length=10):alpha=1.0/lengthreturnclose.ewm(alpha=alpha,min_periods=length).mean()

5. 参数说明

参数类型默认值说明
closepd.Series必需收盘价序列
lengthint10RMA的计算周期,控制平滑程度
offsetint0结果偏移周期数

三、RMA的使用方法

1. 作为RSI的核心计算组件

RMA最广为人知的应用是作为RSI指标的计算基础。在RSI计算中:

  • 上涨幅度的平滑使用RMA(周期14)
  • 下跌幅度的平滑同样使用RMA(周期14)

2. 作为趋势跟踪工具

与EMA类似,RMA可以作为趋势跟踪均线使用:

RMA状态趋势含义操作倾向
RMA向上运行上升趋势,买方力量主导以做多为主
RMA向下运行下降趋势,卖方力量主导以做空为主
RMA走平趋势可能减弱或进入盘整观望

3. 价格穿越信号

价格与RMA的穿越是最简单的入场/出场信号:

信号类型触发条件操作建议
买入信号价格从下方上穿RMA考虑建立多头仓位
卖出信号价格从上方下穿RMA考虑平仓或建立空头

4. 与其他指标配合

RMA本身并不作为独立的交易信号源使用,更多是作为其他指标(如RSI、ADX)的计算基础。pandas_ta库的许多函数都支持通过mamode参数指定使用RMA作为平滑方式。

四、使用pandas_ta计算RMA

1. 函数完整参数

pandas_ta.overlap.rma(close,length=None,offset=None,**kwargs)

返回值pd.Series——RMA值序列。

2. 示例代码

importpandasaspdimportpandas_taastaimportnumpyasnpimportmatplotlib.pyplotasplt# ========== 第一步:准备数据 ==========np.random.seed(42)dates=pd.date_range(start='2023-01-01',end='2024-12-31',freq='D')n=len(dates)trend=np.linspace(0,45,n)cycle=np.sin(np.linspace(0,6*np.pi,n))*15noise=np.random.randn(n)*3price_series=100+trend+cycle+noise# 添加趋势变化区间price_series=price_series.astype(float)foriinrange(300,450):price_series[i]=price_series[300]+(i-300)*0.2foriinrange(450,600):price_series[i]=price_series[450]-(i-450)*0.15df=pd.DataFrame(index=dates[:n])df['close']=price_series[:n]print("="*60)print("数据预览:")print(df.head())print("\n"+"="*60+"\n")# ========== 第二步:计算RMA ==========# 默认参数 length=10df['RMA']=ta.rma(df['close'])print("RMA计算结果(最近10行):")print(df[['close','RMA']].tail(10))print("\n"+"="*60+"\n")# ========== 第三步:不同周期RMA对比 ==========df['RMA_5']=ta.rma(df['close'],length=5)df['RMA_10']=ta.rma(df['close'],length=10)df['RMA_20']=ta.rma(df['close'],length=20)print("不同周期RMA对比(最近5行):")print(df[['close','RMA_5','RMA_10','RMA_20']].tail())print("\n"+"="*60+"\n")# ========== 第四步:RMA与EMA对比 ==========# 计算等效周期的EMA进行对比# RMA(period) ≈ EMA(2*period - 1)df['EMA_19']=ta.ema(df['close'],length=19)# 对应RMA(10)print("RMA(10) vs EMA(19) 对比(最近10行):")print(df[['close','RMA_10','EMA_19']].tail(10))print("\n"+"="*60+"\n")# ========== 第五步:价格穿越信号 ==========df['price_above_rma']=df['close']>df['RMA_10']df['cross_above']=(df['price_above_rma']==True)&(df['price_above_rma'].shift(1)==False)df['cross_below']=(df['price_above_rma']==False)&(df['price_above_rma'].shift(1)==True)df['signal']=''df.loc[df['cross_above'],'signal']='买入(价格上穿RMA)'df.loc[df['cross_below'],'signal']='卖出(价格下穿RMA)'print("价格穿越信号统计:")print(f"买入信号数量:{df['cross_above'].sum()}")print(f"卖出信号数量:{df['cross_below'].sum()}")print("\n"+"="*60+"\n")# ========== 第六步:策略回测 ==========# 策略:价格 > RMA 时持仓多头df['position']=(df['close']>df['RMA_10']).astype(int)df['returns']=df['close'].pct_change()df['strategy_returns']=df['position'].shift(1)*df['returns']total_return_buyhold=(1+df['returns']).prod()-1total_return_strategy=(1+df['strategy_returns']).prod()-1print("="*60)print("策略绩效统计(RMA穿越策略回测):")print(f"买入持有策略总收益率:{total_return_buyhold:.2%}")print(f"RMA穿越策略总收益率:{total_return_strategy:.2%}")print("\n注意:此为简化回测,仅供参考")print("="*60+"\n")# ========== 第七步:可视化 ==========plt.figure(figsize=(14,10))plt.subplot(2,1,1)plt.plot(df.index[-200:],df['close'][-200:],label='Close Price',linewidth=1.5,color='black')plt.plot(df.index[-200:],df['RMA_10'][-200:],label='RMA (10)',linewidth=1.5,color='blue')plt.plot(df.index[-200:],df['EMA_19'][-200:],label='EMA (19) - Equivalent',linewidth=1,color='orange',linestyle='--')plt.title('RMA(10) vs EMA(19) 对比 (Last 200 days)',fontsize=14)plt.ylabel('Price')plt.legend()plt.grid(True,alpha=0.3)plt.subplot(2,1,2)plt.plot(df.index[-200:],df['close'][-200:],label='Close Price',linewidth=1,alpha=0.5,color='black')plt.plot(df.index[-200:],df['RMA_5'][-200:],label='RMA (5) - 短线',linewidth=1,alpha=0.7)plt.plot(df.index[-200:],df['RMA_10'][-200:],label='RMA (10) - 标准',linewidth=1.5,color='blue')plt.plot(df.index[-200:],df['RMA_20'][-200:],label='RMA (20) - 长线',linewidth=1.5,color='green')plt.title('RMA:不同周期对比与穿越信号',fontsize=14)plt.xlabel('Date')plt.ylabel('Price')plt.legend(loc='upper left')plt.grid(True,alpha=0.3)plt.tight_layout()plt.show()

五、总结

RMA(运行移动平均线)是技术分析大师威尔德引入的一种特殊移动平均线,其核心价值与定位如下:

维度特点
核心定位威尔德版本EMA,平滑系数α = 1/period
与EMA关系RMA(period) ≈ EMA(2×period - 1)
主要用途RSI、ADX等威尔德系列指标的计算基础
默认参数length=10
最佳应用场景作为RSI、ADX等指标的平滑工具,也可作为趋势跟踪均线
主要局限本质是EMA的一种特例,不具备独立的理论突破
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/25 12:18:27

虚空藏义海论

虚空藏义海论目录第一卷 序说与经宗总明第一章 经题释义与经名辨异1.1 经名总释:"虚空藏菩萨经" 五字分科释义1.2 本经四名的表法意义1.3 本经在大乘经藏中的地位1.4 本经的传译与版本第二章 说经缘起与会众因缘2.1 说法时处:佉罗底翅山与牟尼…

作者头像 李华
网站建设 2026/6/25 12:18:23

Chrome 标签页太多怎么办?我把 TabSyncer 的 NewTab 做成了工作入口

如果你经常在 Chrome 里打开几十个标签页,第二天却不知道从哪里继续,普通新标签页其实帮不上太多忙。 它能搜索,也能打开常用网站。 但它很难帮你回到昨天那组项目资料、学习资料、旅游攻略、论文参考,或者一组还没看完的文章。…

作者头像 李华
网站建设 2026/6/25 12:17:32

ebgp邻居非直连无法建立邻居解决方法(2)

一 拓扑说明R1、R2、R3通过ospf建立邻居,R1和R3通过非直连物理接口建立EBGP邻居注意:默认情况下,BGP认为EBGP邻居是直连可达的。如果EBGP邻居间不是直连可达,则必须在BGP视图下配置允许同非直接相连网络上的邻居建立EBGP连接。二 R1和R3设备配…

作者头像 李华
网站建设 2026/6/25 12:17:23

AlienFX Tools实战指南:3种方案解决Alienware灯光风扇控制难题

AlienFX Tools实战指南:3种方案解决Alienware灯光风扇控制难题 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools AlienFX Tools是一套专为Ali…

作者头像 李华
网站建设 2026/6/25 12:14:47

基于OpenClaw与GLM-4.7-Flash的智能API自动化测试实践

1. 项目概述与核心价值最近在折腾一个挺有意思的自动化测试项目,核心是围绕OpenClaw这个开源工具,让它去驱动GLM-4.7-Flash这个轻量级大模型,来对一堆API接口进行连续、稳定的验证,最后还能自动生成一份清晰可读的测试报告。听起来…

作者头像 李华
网站建设 2026/6/25 12:13:17

基于LAMA模型的智能视频水印清除方案:释放你的创作自由

基于LAMA模型的智能视频水印清除方案:释放你的创作自由 【免费下载链接】WatermarkRemover 批量去除视频中位置固定的水印 项目地址: https://gitcode.com/gh_mirrors/wa/WatermarkRemover 在数字内容创作时代,视频水印常常成为内容重用的主要障碍…

作者头像 李华