Matlab如何獲取股票數據
從開通公眾號以來,我一共寫過兩篇關於股票的帖子。而這兩篇的帖子,側重點都在於如何獲取股票數據。
前陣子,我讀到了一篇帖子,同樣是關於如何獲取股票數據的,是我先前未曾了解的,大致是,Matlab自身就能夠讀取雅虎的股票數據。有興趣的朋友可以在網上搜索「Matlab讀取yahoo股票數據」。
運用這種方法讀取股票數據的代碼如下,以貴州茅台2017年11月1日至2017年12月1日為例:
c=yahoo;
D=fetch(c,600519.ss,11/01/17,12/01/17);
我用這種方法在我電腦上作為嘗試,很遺憾,並沒有成功,因為缺少license。
於是,我就打算自己寫腳本去讀取yahoo的股票數據。同樣以貴州茅台為例,整個獲取數據的動圖如下:
在這裡簡單介紹一下整個實現的邏輯。核心內容仍然是讀取網頁,至於起止日期,哪支股票,日線周線月線的定義,這類信息統統是與網頁的地址有關。對此,需要對目標對象的網址進行一個初步的分析,嘗試分析其中的規律。
最終在確定網頁地址之後,讀取網頁所運用的函數是
[str,status]=urlread(url);
在獲取網頁內容之後,通過正則法進行數據的獲取,其中包含日期,開盤價,收盤價,最高價,最低價等等。
這種獲取股票數據的方式存在一種弊端,就是Matlab在讀取yahoo數據時經常會出現不穩定的現象,經常會讀取網頁失敗。雖然這種方法看似很不錯,不過當這種方法影響到自身處理數據的效率時,就不得不放棄這種方法。
於是,我又開始嘗試研究新的一種批量獲取股票數據的方法。回歸到最原始的辦法,就是從同花順去下載歷史數據,而下載的步驟,我在先前的兩篇帖子中都有介紹,有興趣的朋友可以點擊這個鏈接"炒股只看MACD能賺錢嗎?"。再加上10月份我剛完成的"Matlab如何製作滑鼠精靈",那麼新的方法就出現了。先來看一下整體效果的動圖。
正如你所看到的,整個下載貴州茅台歷史數據以及相應的數據轉化,整個過程耗時16秒左右。如果說,今後要對大批量的股票做股票池進行分析篩選的話,我所給出的建議是,先通過上述所提及的方式,下載完目標股票的歷史數據,並今後通過http://hq.sinajs.cn介面依次對目標股票進行更新。這個介面的數據讀取,還是很快的,通過下面這個動圖可以查看一下讀取數據耗費的時間,同樣以貴州茅台為例:
通過這個動圖可以看到,單支股票數據更新耗時只需要0.1秒到0.2秒左右,並且這個介面幾乎很少有不響應請求的時候。
關於歷史數據下載部分的代碼,這其中並沒有特別新穎的點,大多是融合之前幾篇帖子裡面的想法。不過在這裡,我簡單分享一個這個帖子中一個對於我而言較新的想法。於此對應的問題就是,如何判斷同花順中數據下載已經完成。
1. 最開始時,我設置了一個標定量,初始值為5秒,也就是5秒之後默認已經完成下載,然後點擊「完成」按鈕。
不過這個處理方式並不實惠,並且存在故障的可能,如果在5秒之後仍然未完成下載的話。
2. 對此,我的處理方式是,截取同花順中的下載進度條,讀取進度條進度,當進度顯示100%時,點擊「完成」並進入數據處理部分。接下來,我通過設置斷點的方式來細化這部分內容。
其中,識別進度條所使用的函數是ocr函數。
以上就是今天分享的內容,如果對於其中有部分技術細節不明白的地方,不妨翻一翻過往的帖子,大體上換湯不換藥。
如果你有興趣,歡迎關注我的微信公眾號「打浦橋程序員」,謝謝
推薦閱讀:
※為什麼滬港通開通以後,AH 股折價反而擴大了?
※雪球上的易碎品被人肉了嗎?是不是團隊欺騙?
※出現了!出現了!你們要的【公開薦股】出現了!
※2015年7月股災是否「洗劫了中產階級的財富」?
※化冰之時徹骨寒,下跌途中孕反彈