R

如何使用 quantmod 和 ttr 遍歷所有股票?

  • November 8, 2017

我剛開始使用 quantmod 包。如果我想根據最近的表現來選擇股票,那麼我需要遍歷所有股票,比如紐約證券交易所。所以我需要:

  1. 獲取所有股票程式碼
  2. 選擇那些確實有數據的符號
  3. 一個一個地循環遍歷它們(例如,每次,將股票數據下載為[Math Processing Error] $ X $ ,並做一些分析。然後循環到下一個,並將其設置為[Math Processing Error] $ X $ )

我的問題是:我該怎麼做?這是我的部分想法:

  1. 使用TTR 包中的**stockSymbols()**函式:AllSym <- stockSymbols(). 的第一列AllSym是所有潛在的符號。
  2. 用於getSymbols(AllSym[i,1])循環所有庫存i

這裡的問題:

  1. 並非所有來自 TTR 的符號都有數據。有些使用時可能會出錯getSymbols。我其實並不關心這個特定的股票。那麼我怎樣才能繼續循環呢?[如何使用該try功能?]
  2. getSymbols函式將自動將股票程式碼作為變數。我如何將其複制(或設置)到[Math Processing Error] $ X $ (而不是像 $ APPL $ )?
  3. 如何循環遍歷變數,並將它們的名稱保存為向量中的字元串?例如,如果我們確實使用getSymbols函式來獲取名稱為股票程式碼的數據。我怎樣才能遍歷這些股票?[請注意,它們的變數名稱AllSym作為字元串儲存在第一列]

非常感謝你!

嘗試以下操作:

library(quantmod)  # also loads xts and TTR

# Fetch all Symbols & store only the tickers to retrieve the data
symbols <- stockSymbols()
symbols <- symbols[,1]

接下來我們將指定儲存數據的位置

dataset<- xts() # Only run once

以下程式碼是將 OHLC 數據下載到您的環境的循環。然後它將儲存下載公司的調整關閉並將它們合併到dataset

# cool progress bar to see the % of completion
n <- length(symbols)
pb <- txtProgressBar(min = 0, max = n, style=3)


# Actual loop: 
for(i in 1:length(symbols)) {
 symbols[i]-> symbol
# specify the "from" date to desired start date
 tryit <- try(getSymbols(symbol,from="2014-01-01", src='yahoo'))
 if(inherits(tryit, "try-error")){
   i <- i+1
 } else {
 # specify the "from" date to desired start date
 data <- getSymbols(symbol, from="2014-01-01", src='yahoo')
 dataset <- merge(dataset, Ad(get(symbols[i])))
 rm(symbol)
 }
 setTxtProgressBar(pb, i)
}

如果循環中斷,比如說在第 50 次迭代,那麼只需通過更改以下內容重新執行最後一個程式碼塊

# cool progress bar to see the % of completion
n <- length(symbols)
pb <- txtProgressBar(min = 0, max = n, style=3)


# Actual loop: 
# IF IT BREAKS ON THE 50th ITERATION, it must be skipped, therefore change it to 51
for(i in 51:length(symbols)) { 
 symbols[i]-> symbol
...

繼續做,直到symbols筋疲力盡。請記住,它會將所有數據下載到您的環境中,並且所有調整後的收盤價都可以在dataset

引用自:https://quant.stackexchange.com/questions/18758