2017-05-07 21 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 < - ...'...;) –

相关问题