R
如何使用 quantmod 和 ttr 遍歷所有股票?
我剛開始使用 quantmod 包。如果我想根據最近的表現來選擇股票,那麼我需要遍歷所有股票,比如紐約證券交易所。所以我需要:
- 獲取所有股票程式碼
- 選擇那些確實有數據的符號
- 一個一個地循環遍歷它們(例如,每次,將股票數據下載為[Math Processing Error] $ X $ ,並做一些分析。然後循環到下一個,並將其設置為[Math Processing Error] $ X $ )
我的問題是:我該怎麼做?這是我的部分想法:
- 使用TTR 包中的**stockSymbols()**函式:
AllSym <- stockSymbols()
. 的第一列AllSym
是所有潛在的符號。- 用於
getSymbols(AllSym[i,1])
循環所有庫存i
:這裡的問題:
- 並非所有來自 TTR 的符號都有數據。有些使用時可能會出錯
getSymbols
。我其實並不關心這個特定的股票。那麼我怎樣才能繼續循環呢?[如何使用該try
功能?]- 該
getSymbols
函式將自動將股票程式碼作為變數。我如何將其複制(或設置)到[Math Processing Error] $ X $ (而不是像 $ APPL $ )?- 如何循環遍歷變數,並將它們的名稱保存為向量中的字元串?例如,如果我們確實使用
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