廚師在做菜,沒有食材,就沒有可口料理;但如何快速與新鮮獲取食材,這就必須透過物流處理。相同的,金融計算與分析的過程,如何快速抓取資料是一件非常重要的事情,沒有大量的資料,就無法分析。
教學的過程,都必須特別強調在資訊與科技的進步下,如何確實執行"資料不落地",所謂的資料不落地,就是不手動抓取資料。
在學術教學或者是學生的論文研究,基本上都是要求需要透過TEJ 的API來獲取即時資料。TEJ 的API需要額外購買,通常都是業界機構或者學術機構才有本錢購買。
就外部教學上,都是透過R語言的"qauntmod"套件進行示範。換句話說,就一般業餘的使用者而言,通常都是建議透過Yahoo Finance來取得盤後資料。這裡必須提醒,Yahoo Finance所取得盤後資料,難免會有些錯誤,但基於免費的精神下,也就不太強求了!
以下,就透過套件與迴圈來連續抓取資料。
rm(list=ls())
Sys.setlocale("LC_TIME","english")
#***********************************************
# Load Packages
#***********************************************
packages=c("xts","quantmod")
for(i in packages){
if(!require(i,character.only = TRUE)) install.packages(i)
library(i,character.only = TRUE)
}
#********************************************************
# Parms Setting
#********************************************************
SD <- "2020-01-03"
ED <- as.character(Sys.Date())
#***********************************************
# Download Data
#***********************************************
Tickers <- c("2330.TW","2454.TW","2317.TW")
Tickers <- sort(unique(c(Tickers)))
Names <- paste0(Tickers)
NoF = length(Tickers)
pb = winProgressBar(title = "progress bar", min = 0,
max = NoF, width = 300)
RawSTK <- list()
for (i in seq(1,length(Tickers))){
tem = loadSymbols(Tickers[i], from = as.Date(SD), to =as.Date(ED),
auto.assign = FALSE, return.class = 'xts')
RawSTK[[i]] <- adjustOHLC(tem,use.Adjusted=TRUE)
rm(tem)
Sys.sleep(0.01)
setWinProgressBar(pb, i, title=paste( round(i/NoF*100, 0),
"% Download Data from Yahoo by hcLee"))
}
close(pb)
names(RawSTK) <- Names
save(RawSTK, file="RawSTK.RData")
透過以上的程式,就可以把資料下載後,存到RawSTK這個串列變數。
留言
張貼留言