绘制非美国股票的蜡烛图

Plot ly Candlestick charts for stocks not from USA

我一直在尝试 R,因为创建图表和进行快速数学分析似乎很容易,但我 运行 遇到了一个问题,问题是我想使用 plotly 来绘制我的数据,但是我无法使用美国以外股票的代码,这就是问题所在,我正在尝试此页面 https://plot.ly/r/candlestick-charts/ 中的第一个示例,当我尝试添加代码 BMV:BIMBOA 而不是 AAPL 时,它将发送我因为“:”

而出错

这是我试过的方法

library(plotly)
library(quantmod)

Symbolname <- "BMV:BIMBOA"

getSymbols(Symbolname, src = "google")
df <- data.frame(Date=index(Symbolname),coredata(Symbolname))
df <- tail(df, 30)

p <- df %>%
  plot_ly(x = ~Date, type="candlestick",
          open = ~Symbolname.Open, close = ~Symbolname.Close,
          high = ~Symbolname.High, low = ~Symbolname.Low) %>%
  layout(title = "Basic Candlestick Chart")

# Create a shareable link to your chart
# Set up API credentials: https://plot.ly/r/getting-started
chart_link = api_create(p, filename="finance/candlestick-basic")
chart_link

并且它不起作用,我收到错误 symbolname.open not found,作为旁注,如果我使用 BMV:BIMBOA 而不是符号名 var,我收到错误 "BMV" is not成立。 我试过只使用 BIMBOA,但由于 xts 对象中的行被称为 "BMV:BIMBOA.Open" 它不起作用。

是否有解决此问题的方法或任何其他方法来读取此数据并使用 plotly 绘制图表?

也试过这个:

BMVBIMBOA <- `BMV:BIMBOA`

getSymbols("BMV:BIMBOA", src = "google")
df <- data.frame(Date=index(BMVBIMBOA),coredata(BMVBIMBOA))
df <- tail(df, 30)

p <- df %>%
  plot_ly(x = ~Date, type="candlestick",
          open = ~BMVBIMBOA.Open, close = ~BMVBIMBOA.Close,
          high = ~BMVBIMBOA.High, low = ~BMVBIMBOA.Low) %>%
  layout(title = "Basic Candlestick Chart")

错误在下面两行

          open = ~BMVBIMBOA.Open, close = ~BMVBIMBOA.Close,
          high = ~BMVBIMBOA.High, low = ~BMVBIMBOA.Low) %>%
  layout(title = "Basic Candlestick Chart")

这里有几个问题:

  1. getSymbols 的默认模式是通过 side-effect,经常(通常?)不受欢迎。由于 R 通常不喜欢变量名中的冒号(尽管它可以正常工作),这使情况变得复杂。

  2. 您对 indexcoredata 的使用(我假设都在 zoo 包中)不正确。这两个函数需要一个 object,但你提供了一个长度为 1 character 的向量 ("BMV:BIMBOA").

  3. (我认为)结果数据中的列名是特定于符号的,所以找不到Symbolname.Open;用实际名称替换它们。

让我们绕过副作用,希望能更接近您想要的。

library(zoo)
library(plotly)
library(quantmod)
Symbolname <- "BMV:BIMBOA"
mydata <- getSymbols(Symbolname, src = "google", auto.assign = FALSE)
df <- data.frame(Date=index(mydata),coredata(mydata))
df <- tail(df, 30)
p <- df %>%
  plot_ly(x = ~Date, type="candlestick",
          open = ~BMV.BIMBOA.Open, close = ~BMV.BIMBOA.Close,
          high = ~BMV.BIMBOA.High, low = ~BMV.BIMBOA.Low) %>%
  layout(title = "Basic Candlestick Chart")