【问题标题】:Quantmod, getSymbols, Extracting Open,Close Price, Volume in RQuantmod,getSymbols,提取开盘价,收盘价,R 中的交易量
【发布时间】:2021-11-08 09:20:46
【问题描述】:

我正在尝试生成一个包含每个股票代码(在第 1 列中)的 Excel 文件 - 开盘价、收盘价、最高价、最低价、成交量。到目前为止,我使用以下函数提取了一个代码列表(来自另一个 excel 文件,列“符号”):

library(readxl)
library("dplyr")
 
stocks_data <- read_excel(file.choose())
                       
v1<-pull(stocks_data,Symbol) 

接下来,我想为列表 V1 中的每个代码创建带有打开、关闭、成交量等的附加列(仅适用于最后一个收盘日,然后将其全部保存在一个 excel 文件中)。是否有一个快速的功能来实现这一点?谢谢。

期望的输出:

【问题讨论】:

    标签: r dplyr quantmod


    【解决方案1】:

    我们可以下载股票列表并从每个 xts 对象中提取最后一行。

    library(quantmod)
    library(tidyverse)
    
    tickers <- c('ATVI', 'TTWO')
    stocks <- new.env()
    
    ohlcva <- c("Open", "High", "Low", "Close", "Volume", 'Adjusted')
    
    
    getSymbols.yahoo(tickers,env = stocks)
    #> [1] "ATVI" "TTWO"
    
    
    tbl <- eapply(stocks, function(.x) xts::last(.x) %>% as_tibble %>%  set_names(ohlcva)) 
    
    tbl <- 
    imap(tbl, ~mutate(.x, Symbol = .y) %>%
           select(Symbol, everything())) %>% 
      bind_rows()
    
    tbl
    #> # A tibble: 2 × 7
    #>   Symbol  Open  High   Low Close   Volume Adjusted
    #>   <chr>  <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
    #> 1 ATVI    78.2  80.8  77.3  79.6 12096300     79.6
    #> 2 TTWO   153.  156   152.  154.   2893500    154.
    
    write_excel_csv(tbl, 'stock_info.csv')
    

    reprex package (v2.0.0) 于 2021-09-13 创建

    【讨论】:

    • 谢谢。这很好用!我意识到别的东西,我提取了很多不必要的数据......让我解释一下。当我创建股票列表(v1)时 - 有没有一种快速的方法来只选择“交易量”列中交易量非零的代码?
    • 刚刚找到了简单的解决方案:data 0] 过滤掉非零交易量符号。再次感谢!
    • 我刚刚注意到它在将 tbl 放在一起时提取了 3 天前的关闭数据。知道为什么吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 2011-07-31
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多