如何下載股票歷史數據?

做論文需要數據,求大神指點!!!!!!!!!!!!!!!!!!!!


第一名和第二名的答案都很贊,分別發現了可以分別容易獲得和使用A股、美股數據的地方,而我們Ricequant - Beta上面提供的集齊了A股以及美股的數據,除此之外還有豐富的股票分類,400+財務指標的數據,只需要使用同一套非常易用的API就可以讀取到這些數據了,而美股數據我們看到了市面上的一些數據以後依然不滿意,我們就喪心病狂的直接從Nasdaq和SEC拿數據了,後面美股的分紅、拆分以及美股的財務數據(官方標準)我們也會陸續開放!

點擊這裡就可以進入我們提供的IPython Notebook雲服務了:

接著可以創建自己的IPython Notebook來做類似matlab的互動式數據研究:

也感謝IPython團隊做出來如此強大的Open Source工具,而我們Ricequant提供了伺服器和數據介面來方便大家做研究,所有API的設計也是圍繞著強大的pandas庫,由美國著名對沖基金AQR開源出來的,正因為這個庫可以基於matrix類似excel的方式處理數據,才會讓Python對數據的處理能力更上一個台階,造成了現在非常流行。

專門的調用數據做研究的文檔:Ricequant - Beta , 以及我會一直跟進維護的文檔:

OK,讓我們看一個實例,比如我想調用某幾個股票來做研究,首先我可能想知道Ricequant上有哪些證券可以用?(股票、ETF、LOF亦或是分級基金,這些都有!):

現在我想查詢一下超圖軟體的16年的一個月的股價:

可以看到還對停牌現象做了處理,即股價連續,但是交易量為0,並且知道下一個交易日是什麼時候,復牌以後交易量繼續:

一次獲取多個股票也是沒問題的:

數據調用出來以後使用pandas的to_csv變成文件格式:

數據你想落地我們也是不會阻止的...

用同一個介面還可以訪問到8000+的美股數據:

接著我們還支持了400+的整理過的高質量財務數據,他們還被按照時間序列保存了10年的,文檔是我們花了幾個月的時間一個一個指標整理的:Ricequant - Beta

你都可以在你自己得notebook裡面調用快速分析出來你需要的符合某些財務指標的股票,整個過程都是秒級相應(所有數據丟進去了內存..):

更喪心病狂的是還有大量的輿情數據:

如何上手呢?可以跟隨我們不斷推出的notebook教學:Notebook
量化交易板塊教學:Tutorial

除了拿數據還可以做什麼呢?比如雲端的畫圖分 用Ricequant 做主成分分析法(PCA) 建立統計因子模型的一些分享:

比如寫一個策略調用已有的數據試試是否能賺錢:

部署到實盤模擬交易中看實時模擬的情況:

還有參加比賽試試自己的Quant能力Ricequant - Beta , 強悍的選手們在1月份的大跌情況下依然二月初獲得了不錯的正收益

數據是美妙的,數據也應該是開放的,基於數據而產生更多有價值的事情和想法。

祝新年快樂


1樓給出了一個很好的A股例子,受到LS古月同學的啟發,我在雪球上下載了所有美股股票的歷史數據。

接下來我會舉個栗子,就簡單3步,讓你在3分鐘內準備好,並開始下載所有美股歷史交易數據(daily).
Talk is cheap, I"ll show you the code.

第一步:
下載美股公司列表,分別是納斯達克,紐交所,美國證券交易所,三個CSV文件
下載地址,納斯達克官網:Company List: NASDAQ, NYSE, AMEX Companies

第二步:
建立三個交易所同名文件夾,用來方便放置股票歷史交易數據。
目錄結構是這樣的:

第三步:
把如下Python小代碼(放心!!很簡單,不到30行,不會代碼你都能看懂,不懂也沒關係,直接運行)COPY到你本地,運行。

import urllib2,csv,cookielib

#site = "http://xueqiu.com/S/AAPL/historical.csv"
#site= "http://www.nseindia.com/live_market/dynaContent/live_watch/get_quote/getHistoricalData.jsp?symbol=JPASSOCIATfromDate=1-JAN-2012toDate=1-AUG-2012datePeriod=unselectedhiddDwnld=true"
hdr = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.3",
"Accept-Encoding": "none",
"Accept-Language": "en-US,en;q=0.8",
"Connection": "keep-alive"}

#req = urllib2.Request(site, headers=hdr)
symbolTest = "APPL"
Exchange = "NASDAQ"

try:
with open(Exchange +".csv") as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(row["Symbol"], row["Name"])
symbol = row["Symbol"].strip()

if "^" not in symbol:
site = "http://xueqiu.com/S/" + symbol + "/historical.csv"
req = urllib2.Request(site, headers=hdr)
page = urllib2.urlopen(req)
#content = page.read()
with open(Exchange + "/"+symbol+".csv","w") as symbolCSV:
symbolCSV.write(page.read())
else:
print "symbol contains ^, not valid, passed..."

except urllib2.HTTPError, e:
print e.fp.read()

代碼將就看哈。
下載完成後,結果是這樣的,納斯達克和紐交所分別有大概三千家公司,AMEX有不到400家。
平均每個文件大概200K,所有總計1G左右。

完。

需要補充的:
1. 美股股票代碼列表裡有些包含字元 ^, 這個我不是很明白,可能是已經退市的股票或者轉移到其他交易所上市的股票,這樣的股票代碼被忽略了,而且雪球也查詢不到。
2. 今天早上剛下載的,雖然對雪球的數據比較信任,但還是會抽樣檢查數據的準確性。
Yahoo和GOOGLE的Finance API是不是都關閉或者開始收費了?有知道的朋友請告知,謝謝。
3. 接下來就看各位各顯神通了,把數據輸入到大家喜歡的資料庫,開始折騰吧。

我個人的計劃是將數據插入到MongoDB,然後開始個簡單粗暴的研究:購買不同股價組合的收益表現會有差別嗎?比如在不同年份購買1刀以下的股票,以及其他某價格區間的股票,哪個收益會更高?


如果是寫程序下載,個人比較喜歡和常用的是以下幾個:

一、新浪實時股票數據:

1、數據鏈接

http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData?page=1num=100sort=symbolasc=1node=hs_asymbol=_s_r_a=init

2、數據格式

[{symbol:"sh600000",code:"600000",name:"浦發銀行",trade:"18.49",pricechange:"0.310",changepercent:"1.705",buy:"18.49",sell:"18.50",settlement:"18.18",open:"18.26",high:"18.61",low:"18.20",volume:53304071,amount:983362559,ticktime:"15:04:02",per:7.334,pb:1.276,mktcap:34490268.646335,nmc:34490268.646335,turnoverratio:0.28576},…]

註:新浪的PE為靜態PE,PB數據也不是很準確,在股票發生除權時未能進行修正。


二、雪球實時股票數據:

1、數據鏈接

http://xueqiu.com/stock/quote.json?code=SH000001%2CSZ399001_=1441781801093

註:

(1)可以以「%2C」為分隔,一次性獲取多隻股票的實時交易數據。

(2)需要先執行雪球******(此處隱去關鍵字,原因你懂的)以獲取雪球的Cookie,否則雪球會返回「遇到錯誤,請刷新頁面或者重新登錄帳號後再試」的錯誤信息。

2、數據格式

{"quotes":[{"symbol":"SH000001","exchange":"SH","code":"000001","name":"上證指數","current":"3580.00","percentage":"1.81","change":"63.81","open":"3533.63","high":"3583.41","low":"3533.63","close":"3580.0","last_close":"3516.19","high52week":"5178.19","low52week":"2850.71","volume":"2.83856476E10","volumeAverage":"33269612703","marketCapital":"2.675083799528E13","eps":"0.0","pe_ttm":"","pe_lyr":"","beta":"0.0","totalShares":"7472301116","time":"Thu
Dec 17 15:03:53 +0800
2015","afterHours":"0.0","afterHoursPct":"0.0","afterHoursChg":"0.0","afterHoursTime":"Wed
Oct 19 21:59:01 -0400
2011","updateAt":"1450258212131","dividend":"","yield":"0.0","turnover_rate":"0.0","instOwn":"0.0","rise_stop":"0.0","fall_stop":"0.0","currency_unit":"CNY","amount":"3.814396132856E11","net_assets":"0.0","hasexist":"false","has_warrant":"0","type":"12","flag":"1","rest_day":"","amplitude":"1.42","lot_size":"0","tick_size":"0.0","kzz_stock_symbol":"","kzz_stock_name":"","kzz_stock_current":"0.0","kzz_convert_price":"0.0","kzz_covert_value":"0.0","kzz_cpr":"0.0","kzz_putback_price":"0.0","kzz_convert_time":"","kzz_redempt_price":"0.0","kzz_straight_price":"0.0","kzz_stock_percent":"","pb":"0.0","benefit_before_tax":"0.0","benefit_after_tax":"0.0","convert_bond_ratio":"","totalissuescale":"","outstandingamt":"","maturitydate":"","remain_year":"","convertrate":"","interestrtmemo":"","release_date":"","circulation":"0.0","par_value":"0.0","due_time":"0.0","value_date":"","due_date":"","publisher":"","redeem_type":"","issue_type":"","bond_type":"","warrant":"","sale_rrg":"","rate":"","after_hour_vol":"0","float_shares":"2568300000000","float_market_capital":"9.194514E15","disnext_pay_date":"","convert_rate":"","psr":""},…]}

三、獲取指數及個股的歷史數據

1、指數數據鏈接

http://q.stock.sohu.com/hisHq?code=zs_000001start=20000504end=20151215stat=1order=Dperiod=dcallback=historySearchHandlerrt=jsonpr=0.83914957150533670.9677250558488026

2、個股數據鏈接


http://q.stock.sohu.com/hisHq?code=cn_000001start=20000504end=20151215stat=1order=Dperiod=dcallback=historySearchHandlerrt=jsonpr=0.83914957150533670.9677250558488026


3、數據格式

historySearchHandler([{"status":0,"hq":[["2015-12-15","3518.13","3510.35","-10.31","-0.29%","3496.85","3529.96","200471344","27627494.00","-"],…],"code":"zs_000001","stat":["累計:","2000-05-08至2015-12-15","1674.03","91.16%",998.23,6124.04,333257871767,35829038015.97,"-"]}])

這幾個鏈接返回的都是json格式的數據,簡單易懂,容易解析。

希望對題主有所幫助。


---------------------------------------------------------------------------------------------------------------------------------

雪球2016年4月修改了數據讀取的鏈接如下:

http://xueqiu.com/v4/stock/quote.json?code=SZ399001_=1460380110118

2016.4.12更新。


雅虎財經. 哪要那麼麻煩


評論里有大神說復權有問題,我沒確認過,可能是有問題的.如果對此在意的同學請選用其它大神的數據下載方法或者自己核實以後再用!


深交所:

http://table.finance.yahoo.com/table.csv?s=000001.sz

上交所:

http://table.finance.yahoo.com/table.csv?s=600000.ss

對應股票代碼改了就可以了,直接複製到瀏覽器下載. 格式是csv,可以直接用excel打開.


如今有一些金融的創業公司,內部有著龐大的金融資料庫,開放一些API供量化研究的人使用。比如JoinQuant、優礦等等。下面我就示範一下如何獲取平安銀行2015年以來的歷史交易數據。
以優礦uqer.io+Python為例:
首先我們登錄官網,打開研究數據文檔查看有哪些數據https://uqer.io/data/browse/0/?page=1

題主要求股票的歷史數據,我還是假定你需要的是歷史價格數據,其他數據獲取方法是一樣的。

我們打開歷史價格數據的API說明文檔:

根據文檔,需要填寫的最主要的信息就是股票代碼,起止時間,在此我們修改API如下:
DataAPI.MktEqudGet(tradeDate=u"",secID=u"",ticker=u"000001",beginDate=u"20150101",endDate=u"20151231",isOpen="",field=u"",pandas="1")
新建Notebook,輸入修改後的API代碼,ctrl+enter就可以查看到數據。

如果你想下載數據採用這樣的代碼:
df = DataAPI......(輸入api)
df.to_csv("price.csv",encoding="gbk")
這行代碼會把獲取數據的結果保存在df中,df.to_csv(「price.csv」,encoding="gbk)會把df文件放到price.csv文件裡面,按照中文gbk編碼

點擊側邊欄Data就可以看見了.

最後還是想安利一下大家多學Python益處多,我學Python的時候就是在優礦上寫一些量化策略,配合著liaoxuefeng的Python中文文檔和Python官方文檔,自己構建一些指標,這樣對Python處理數據的能力會有很大提高。大家可以搜一些金融工程研報,複製一下裡面的指標,基本處理過六七份金融工程研報,數據處理的能力就會有很明顯的提高了。

親身體驗,學金融一定要多學計算機,多學數學,多實踐,多思考。
祝各位早日學好Python,輕鬆搞定各種數據!
----------------------------------------------------更新-----------------------------------------------------
另外,我想再介紹一下tushare財經數據包,tushare是一個財經數據包,可以點擊官網http://tushare.org/index.html查看詳細內容。主要採用Python去調用首先,我們安裝了Python之後,再cmd裡面輸入pip install tushare,就已經完成導入了。
打開jupyter/pycharm/sublime.....,寫一段代碼,引入tushare包,調用數據參考官網的說明,我還保存到了新建的data.csv文件裡面了

import pandas as pd
import tushare as ts
df=ts.get_hist_data("600848") #一次性獲取全部日k線數據
df.to_csv("data.csv")#導出數據
df#查看數據

(tushare提供不僅僅歷史數據,還有新聞,宏觀經濟,行業分類,股指期貨,基金等等甚至還有雪球社交統計)
特色大數據是通聯數據提供的,具體API要到通聯數據去查看如何調用。


添加一個R的方法,有一個yahoo/google finance API數據的軟體包quantmod 裡面的getSymbol函數系列可以直接獲取日間數據,用做一般的研究應該足夠了。


前面的回答都很棒,但能否有「種」簡潔明了的方法就可解決所有問題呢?答:一套好的數據API(你不需要懂,去做就好!可以幫你省去東拼西湊的煩惱),BigQuant數據API在設計之初就秉持對用戶友好的理念,同時BigQuant有豐富並且高質量的金融數據,包括基礎數據、歷史數據、財報數據、特色因子數據等,接下來為大家介紹一些常用的數據API,只需簡單的粘貼替換,就可以得到你想要的數據,歡迎大家拿去使用 。

獲取歷史數據——以貴州茅台舉例

獲取貴州茅台代碼、證券名稱、上市日期、上市板、公司名稱、公司成立日期、公司省份

獲取財報數據——以貴州茅台舉例

獲取財報發布時間信息數據,比如發布日期、財報類型、財報對應的年份、財報對應的季度

註:財報類型如果為20131231表示13年年報,20140331表示14年一季報

獲取特色因子數據——以貴州茅台舉例

獲取量價因子

註:open_$i中的$符號表示該因子可以回溯,沒有$符號表示該因子不能回溯。比如open_$iopen_$i中指明了i取值範圍是[0 .. 20],i為0表示當天的因子值,i=1表示前1天的因子值,以此類推。

只需前往平台將代碼進行複製,替換你想要的數據敲擊回車,你就可以輕鬆獲得你想要的全部數據。

更多詳細內容可前往原帖尋找研究:[量化學堂-新手專區]BigQuant數據API詳解


根本不用那麼麻煩。隨便找個券商的通達信版本的交易軟體,都不用交易賬號登陸,直接打開獨立行情進去。選菜單「系統」—「盤後數據下載」,然後下載你需要的類型就好了。下載好了之後,選擇菜單「系統」—「數據導出」—「滬深高級導出」,再選擇你想導出的類型和方式就好了。我之前做了個個股票穿越機:輸入代碼,就會從過去15年的交易數據中,搜索出歷史上走勢相近的個股,基礎數據就是用的這個。


3積極回答問題,這個我會,我有5種途徑。
最簡單最經濟的,下載一個免費的股票終端,比方說同花順通達信大智慧東方財富網之類的。我用的都是東方財富(我不是做廣告,有很多類似的軟體,有免費的有收費的),其他幾個肯定也可以。在行情界面,調整到技術分析,這時候顯示的應該是K線圖,調整到你要的周期,在界面里找導出數據這個選項,通常在K線圖上面有這個按鈕。一鍵導出,生成excel,又快又簡單,還免費。

其他的方法比這個繁瑣,比方說去新浪網抓數據,起碼得會編程語言,我以前就用這種方法,用matlab抓。好處是直接用matlab分析了,不過我後來發現excel有很多強大的功能(需要載入宏),可以替代matlab一些,至少針對我的需求可以替代,就漸漸主要用excel了,不要看不起excel喔~


上面都提到了各類歷史數據的來源,主要是以交易日為單位,如果你想要分鐘數據或者秒數據,或者tick 數據,就必須得花大價錢了


WIND,同花順,choice都可以實現。目前萬德和同花順應該個人拿不到免費試用賬號,可以去東方財富網下載一個choice終端,申請一個免費試用賬號,15天免費試用。安裝之後,打開excel找到choice插件,就可以導出數據了,包括歷史數據,多維數據等等,有代碼前提下也可以用插件里的函數導出股票所有的數據信息。
如果公司很多個,可以先建立自選股list,然後excel選中自選股中一攬子股票,選取所需指標,時間段,確定,就ok啦!


wind裡面有的,可以直接導出


有這麼麻煩么?利用現有各種免費收費介面自動化提取的方案就不說了,雅虎新浪萬德彭博路透等等等等,有能力用的都知道,沒能力的知道了幹嘛?只說手工提取日線,最常見通達信,分析圖按住方向鍵DOWN,Down不動為止,菜單中找導出數據,完事兒。通達信還有一個Datatool,給券商補數據的,可下分筆,自己玩兒去。基本面數據,上交所格式化數據是現成的,寫個小工具自己爬,再簡單一些,用神奇的神器MS Excel代爬代刷新。不會用Excel?你還是不是職業投資者?你爬數據來幹嘛?Excel的強大,誰用誰知道。三個月前沒事兒閑極無聊,用Excel調用東財介面寫了個免費Level2行情盯盤帶預警系統。


首先創業型量化團隊都是窮逼,我承認公開數據應該免費但是附加價值在哪裡,邊際收益巨低
其次非專業可以用網上年費資源,實質已經丟失競爭力。學習可以,生產差的遠
最後模型優化怎是這些數據可以支撐的,僅僅回測據我所知最多可以免費過獲取一分鐘數據。玩具而已。而且庫表數據需自助維護

我就是同花順做資料庫的,也見過非常專業的量化團,對於提問者只能『呵呵』。除了模型是高超額收益數據的


學python,感謝樓上各位的實例


看到你們的答案,我是這種表情……

可能我比較low,不就是下載一下股票數據嗎?用得著拿大炮打蚊子?

以下是choice資料庫的股票數據下載流程:

咦?數據量超過200萬了???
我不得不承認這是一種局限性,如果題主你真的要一次性下載200萬以上的數據那麼請無視我。
怎麼辦?少下載一些就好了。


方法:瀏覽器直接下載
舉例:002566益盛葯業,起始2015年1月4日,終止2016年1月8日,在地址欄直接輸入如下網址
http://quotes.money.163.com/service/chddata.html?code=1002566start=20150104end=20160108

欄位組成分析:(固定不變的部分就略過了)
1)"code="之後的七位數字決定了下載哪只股票的數據,滬市在股票代碼前加0,深市在代碼前加1。貌似是為了與各種指數做區分。上證綜指code=0000001,滬深300指數code=0000300。代碼都是七位!
2)"start=","end=",決定了下載數據的日期區間。格式:年+月+日。可以省略及之後的部分,此時下載全部歷史數據。

如果需要批量下載多隻股票數據,本人有現成的R代碼,私戳我。

都是公開數據,應該沒什麼侵權問題吧→_→


論文寫作要數據怎麼辦,股票歷史數據下載方法如下:

下載所有股票的歷史數據,以同花順股票軟體為例:

1、首先切換到要下載數據的股票K線形態,按「F1」進入「日線某某股票歷史成交」;

2、點擊滑鼠右鍵-&>數據導出-&>導出所有數據-&>在「請選擇導出的類型」中選擇excel或txt,,只有這二種格式可以選擇;


3、選取好後點擊下一步,在「導入導出對話框模板」中選擇要的項目(如最高價、最低價,開盤價等,默認是全選);


4、點下一步,完成。默認保存路徑在桌面上。


這上面都是代碼大神~對於我這種不會代碼的人來說完全不懂
我通常會用銳思資料庫裡面的數據特別說明的是 一般財經類學校都會購買 如果你們學校沒買的話也可以試用的,不過就是下載的條數少了點
使用方法超級小白,只要選好你要的數據點擊下載就可以生成excel表格

如果題主需要我再給出詳細步驟。。。
就醬。


今天就貼步驟。。。


血和淚的教訓,Yahoo Finance 的數據有問題,還是用其他的吧。


推薦閱讀:

如果你有兒女即將步入大學學習金融,你會叮囑 ta 什麼?
關於艾略特波浪理論,你都有哪些獨特的見解?
做投資分析假設的時候應該怎樣計算每年的支出?
如何快速入門金融經濟學,看懂財經新聞?
「金融市場上的零和遊戲只能增加個人財富,毫無社會價值」這種說法合理嗎?

TAG:金融學 | 投資 | 股票 | 論文 | 金融 |