You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言Highcharts股票K线图中添加Simple Moving Average?

在Highstock K线图中添加SMA的解决方案

你用的add_SMA()是quantmod包专门配合chartSeries()使用的函数,和highcharter的语法不兼容,所以直接调用会失败。要在highstock图里加SMA,得先自行计算均线数据,再用highcharter的方法添加进去,具体操作如下:

  1. 计算SMA数据:用quantmod的SMA()函数,基于股票收盘价计算50日和200日均线,用Cl(price)可以快速提取收盘价列。
  2. 添加到Highstock图:通过hc_add_series()把计算好的SMA序列以折线形式添加到K线图上,指定颜色和名称方便区分。

完整代码如下:

library(quantmod)
library(highcharter)

start <- format(as.Date("2015-01-01"), "%Y-%m-%d")
end <- format(as.Date("2024-10-03"), "%Y-%m-%d")

ticker <- "PFE"

price <- getSymbols(ticker, auto.assign = FALSE, from = start, to = end)

# 计算50日和200日SMA
sma50 <- SMA(Cl(price), n = 50)
sma200 <- SMA(Cl(price), n = 200)

highchart(type = "stock") %>% 
  hc_add_series(price, name = ticker) %>% 
  # 添加50日SMA
  hc_add_series(sma50, name = "50日SMA", color = "black", type = "line") %>% 
  # 添加200日SMA
  hc_add_series(sma200, name = "200日SMA", color = "red", type = "line") %>% 
  hc_title(text = "<b>Price Candlestick Chart with SMA 2015-2024</b>")

补充说明:

  • Cl(price)等价于price[,4],用来提取收盘价列,SMA计算必须基于单一价格序列(比如收盘价)
  • 添加SMA时指定type = "line",确保均线以折线形式展示
  • 命名参数name会在图表图例中显示,方便识别不同均线

内容的提问来源于stack exchange,提问作者newbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 18:52:47