如何用R語言下載到國內股票數據?

要求日線級別就可以,2000年開始,還有一些基本面指標,如PE、PB、市值等。最好說的詳細些,謝謝。


quantmod你值得擁有!

先挖坑,後續補充詳細說明。


[原]量化投資教程:用R語言打造量化分析平台

概述

和Python計算環境中的tushare包一樣,在R中我們使用quantmod包接入第三方數據源,實現自定義量化分析平台的構建。

本文打算以陌陌的股票分析為背景,介紹如何通過quantmod包構建專屬的量化分析平台。

什麼是quantmod

quantmod就是提供給寬客們使用的專業模塊,Quantmod本身提供強大的數據接入能力,默認是雅虎財經的數據源,此外quantmod還以繪製專業的行情分析圖表以及各種技術指標計算等功能著稱,常常只要幾行函數就能完成從數據獲取和處理到畫圖的複雜功能,其工作效率之高讓行家裡手都覺得膛目結舌。

利用API讀取在線行情

首先,我們利用雅虎財經的默認介面直接體驗一下讀取多隻股票。

原理

利用API讀取的方式,我們需要設定一個讀取序列和對應的配置,獲取行情函數getSymbols類似於原生的assign和get函數,用函數的方式將變數名傳入後完成變數的賦值。

基於這個原理,我寫了一個Quote函數來優化參數配置的體驗。首先我們需要定義一個股票池序列,然後調用Quote函數獲取某隻股票的行情返回數據。

下面以美股的陌陌、360和A股的平安銀行為例:

代碼

# 載入quantmod包
if(!require(quantmod)){
install.packages("quantmod")
}
# 股票行情匹配函數
Quote = function(code){
index = match(code,universes)
temp = lapply(universes,get)
return(temp[[index]])
}
# 基本配置
universes &<&<- c("000001.SZ","QIHU","MOMO") from = "2015-01-04" to = Sys.Date() # 結束時間設為當前日期 src= "yahoo" # 來源雅虎財經 # 行情載入 速度有點慢,耐心等待 quantmod::getSymbols(universes,from=from,to=to,src=src) # 繪製行情 quantmod::chartSeries(Quote("MOMO"),up.col="red",dn.col="green",TA="addVo(); addADX();addMACD(); addSMA(n=10);addBBands(n=14,sd=2,draw="bands")")

效果利用CSV讀取離線行情

接著,在離線模式或者網路訪問緩慢的情況下,我們也可以用一些實現準備好的CSV文件來讀取行情。

原理

分析底層數據結構後,我們知道quantmod包讀取後的數據格式是 xts 和 zoo,我們只需要將csv文件按一定的格式讀取到內存後再進行相應變換,quantmod強大的分析和作圖能力就可以為我們所用。

zoo本身是一種時間序列格式,而xts則是在這基礎上一種時間序列格式的加強版。在讀取csv的時候,我們需要用首行確定header。在轉化為zoo時,我們則需要首列來確定時間序列對應的時間。最後通過xts轉化為可以被quantmod識別的xts時間序列對象。下面以平安銀行為例:

代碼

# 載入 zoo 時間序列包
library(zoo)
library(quantmod)
# 配置文件路徑
filePath = "/Users/harryzhu/temp.csv"
# 讀取CSV並轉化時間格式
csv &<- read.csv(filePath,header=TRUE,sep=",") csv$LZ_GPA_QUOTE_TCLOSE &<- as.POSIXct(as.character(csv$LZ_GPA_QUOTE_TCLOSE),tz="",format="%Y%m%d") # 轉化為zoo類型 temp = read.zoo(csv) # 轉化我xts類型 payh =as.xts(temp[,1]);colnames(payh)="Close" # 製圖 chartSeries(payh,name="000001.SZ") # 添加MACD曲線 addMACD()

效果指標計算

參考官方文檔,我們知道,利用quantmod和TTR包,我們可以快速計算常見指標,下面是對應的計算列表。

指標名TTR 函數名quantmod 函數名威爾斯懷爾德移動方向指標ADXaddADX真實波幅ATRaddATR布林通道BBandsaddBBands布林帶寬N/AaddBBands百分比布林帶N/AaddBBands順勢指標CCIaddCCI資金流動CMFaddCMF錢德動量指標CMOaddCMO雙指數移動平均線DEMAaddDEMA離勢價格偏離指數DPOaddDPO指數平滑移動平均線EMAaddEMA價格信封N/AaddEnvelope指數量權移動平均線EVWMAaddEVWMA期權期貨到期N/AaddExpiry異同平均線MACDaddMACD動量momentumaddMomentum變動率ROCaddROC相對強弱指數RSIaddRSI轉折點信號SARaddSAR簡單移動平均線SMAaddSMA隨機動量指數SMIaddSMI三重平滑振蕩指數TRIXaddTRIX成交量N/AaddVo加權移動平均法WMAaddWMA零延遲指數移動平均線ZLEMAaddZLEMA

章節附註

綜上所述,我們可以發現,利用quantmod包,我們可以快速實現各種姿勢的行情獲取以及常見的關鍵指標的計算和繪製。

參考資料

  • quantmod官方文檔

作為分享主義者(sharism),本人所有互聯網發布的圖文均遵從CC版權,轉載請保留作者信息並註明作者 Harry Zhu 的 FinanceR 專欄:FinanceR - SegmentFault,如果涉及源代碼請註明GitHub地址:harryprince (HarryZhu) · GitHub。微信號: harryzhustudio

商業使用請聯繫作者。


Wind R Api


我使用quantmod獲取中國股票數據。但是使用時一定要同時使用以下函數。

getSymbols(獲取股價數據),

getDividends(獲取分紅數據)

getSplits(獲取送股數據)

因為雅虎數據的分紅和送股數據是不全的,因此計算出來的前向復權數據是不準確的。我的補救方法是查詢上交所和深交所的分紅送股數據,然後補全quantmod獲取的數據,最後改寫quantmod的adjustOHLC函數計算Adj.Close。

查看了quantmod的adjustOHLC函數,會調用getDividends和getSplits函數,需要將上文中補全的分紅送股數據分別賦值給div和split然後計算ratios。用ratios乘以收盤價就是準確的前向復權收盤價了。

查詢交易所的分紅數據很好理解,十股分紅2元,比例就是0.2,用0.2補全遺漏的分紅信息。送股比例的計算,如果十股送三股,那麼送股比例就是10/13=0.769。

改寫後的adjustOHLC代碼以後貼出來。

分割線-----

改用python的tushare獲取國內股票數據,爬取新浪財經的數據,無論實時還是盤後數據都可以當天更新了,提供前向和後向復權數據


沒有quantmod強大,但厚臉貼出我自己的程序。目前只能下載日線數據,和近幾日的交易明細。

wangguansong/getstocks-netease · GitHub

基本用法:

下載上證指數歷史日價格,保存到csv文件,並載入到R空間中:

GetSymbols.netease(code="0000001", from="20150101", to="20150131",
savefile="SH000001.csv", dfname="SH000001")


WindR無壓力


不用那麼麻煩。

我們網站有level2成交明細數據,免費價量數據,免費換手率振幅數據。

都是Excel CSV格式,可以直接打開分析。


用quantmod,你自己選想要的資料庫來源,雅虎或者別的,好像有三個庫。資料庫之間可能有細微差異,不過不影響整體。


好東西,值得學習


用得著這麼麻煩嗎!一個EXCEL搞定

http://wk.baidu.com/view/aed699ceb9d528ea81c779e2?pcf=2#2

拿去不謝


這裡有我整理的日線數據,Excel格式,會定期更新。

  • 上證A股日線數據,1999.12.09 至 2016.06.08,前復權,1095支股票
  • 深證A股日線數據,1999.12.09 至 2016.06.08,前復權,1766支股票
  • 深證創業板日線數據,1999.12.09 至 2016.06.08,前復權,510支股票


還是用專業軟體導出 再用R讀比較靠譜 一些實時的數據只能買介面的


推薦閱讀:

富豪和平民都虧了,股票的錢誰賺走的呢?
趨勢跟蹤交易初學者的困擾,求老師指點?
纏中說禪里的中樞理論,和我們通常在k線圖中看到前高,前低有什麼區別?
「纏論」是不是金融界里民科的產物?
在下跌中出現一個背馳,會把這個下跌終結到什麼程度?

TAG:股票 | R編程語言 |