如何在R语言Highcharts股票K线图中添加Simple Moving Average?
在Highstock K线图中添加SMA的解决方案
你用的add_SMA()是quantmod包专门配合chartSeries()使用的函数,和highcharter的语法不兼容,所以直接调用会失败。要在highstock图里加SMA,得先自行计算均线数据,再用highcharter的方法添加进去,具体操作如下:
- 计算SMA数据:用quantmod的
SMA()函数,基于股票收盘价计算50日和200日均线,用Cl(price)可以快速提取收盘价列。 - 添加到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
相关产品推荐
相关产品推荐

