2017-05-07 41 views
0

我想基於特定標準檢索股票OHLC數據,例如,只有s & p 500高於他們自己的MA5。有沒有辦法使用quantmod來做到這一點?例如,我可以在getSymbols函數中輸入if函數嗎?in quantmod:如何獲得所有符合特定標準的股票

附件是我用不標準的代碼:

require(quantmod) 
options(scipen=999) 
spy <- getSymbols(c('SPY', 'IBM') , src = 'yahoo', from = '2007-01-01', auto.assign = T) 
tail(cbind(SPY, IBM)) 
+0

我不認爲這可以做到。檢索符號後,您必須自行檢查條件。 –

回答

2

我不認爲這是可能的。您必須獲取所有符號,計算感興趣的指標,然後篩選符合條件的指標。

這是一種檢索所有S & P500符號(大約需要10分鐘,因爲請求之間暫停1秒)並計算每個符號200天sma的方法。

library(rvest) 
library(quantmod) 
library(TTR) 
tbl <- read_html('https://en.wikipedia.org/wiki/List_of_S%26P_500_companies') %>% html_nodes(css = 'table') 
tbl <- tbl[1] %>% html_table() %>% as.data.frame() 
tbl$Ticker.symbol <- gsub(pattern = '\\.', '-', tbl$Ticker.symbol) # BRK.B -> BRK-B (yahoo uses '-') 
head(tbl$Ticker.symbol) 
[1] "MMM" "ABT" "ABBV" "ACN" "ATVI" "AYI" 

quotes <- new.env() 
getSymbols(tbl$Ticker.symbol, src = 'yahoo', from = '2007-01-01', env = quotes) 

sma_200 <- lapply(quotes, function(x) { 
    SMA(x[, 4], n = 200) 
}) 
+0

非常感謝@Martin Schmelzer,我得到了這個錯誤,你知道要克服它嗎? :「download.file錯誤(粘貼(yahoo.URL,」s =「,Symbols.name,」&a =「,from.m,: 無法打開URL'http://ichart.finance.yahoo.com/ table.csv?s = BRK.B&a = 0&b = 01&c = 2007&d = 4&e = 07&f = 2017&g = d&q = q&y = 0&z = BRK.B&x = .csv' 另外:警告信息: 在download.file(paste yahoo.URL,「s =」,Symbols.name,「&a =」,from.m,: 無法打開網址'http://ichart.finance.yahoo.com/table.csv?s=BRK.B&a= 0&b = 01&c = 2007&d = 4&e = 07&f = 2017&g = d&q = q&y = 0&z = BRK.B&x = .csv':HTTP status'404 Not Found'「 – mql4beginner

+1

再次檢查我的代碼。引起你的錯誤的那個)在yahoo上使用「 - 」,所以在符號列表中使用我的gsub函數 –

+1

我忘了'tbl $ Ticker.symbol < - ...'...;) –

相關問題