好的股票買貴會變成爛投資,爛的股票在便宜的時候也會是個好投資,如果需要追蹤上百個(好的+爛的)股票就需要一些簡單的資料處理能力。
用YAHOO投資組合也能追蹤股價,但是要立即得到一些與股價連動的資訊(像是本益比,本淨比,殖利率...)就會需要自己來加工,所以需要EXCEL或Google試算表這樣的工具來幫忙,分享一下如何使用Google試算表(Spreadsheet)來追蹤當日股價.
這個作法其實有點小複雜,是藉由google的函式UrlFetchApp.fetch去抓取"台灣證交所"的資料,留給有興趣的人研究.不會寫程式的人照著以下步驟剪貼也是能夠用的.
首先當然要擁有一個GMAIL帳號,進入"雲端硬碟"之後,用"新增"功能增加"Google試算表".
進到試算表之後 "工具" > "指令碼編輯器" ,把以下的程式放到工作區.
function TWPRICE(code) {
var url = "http://mis.tse.com.tw/stock/api/getStock.jsp?ch=" + code + ".tw&json=1&_=";
var response = UrlFetchApp.fetch(url);
var json = response.getContentText("UTF-8");
var data = JSON.parse(json);
return data.msgArray[0].y;
}
function EMGPRICE(code) {
var formData = {
'SymbolID': String(code)
};
var options = {
'method' : 'post',
'payload' : formData
};
var url = "http://mis.tpex.org.tw/OTC/Quote.asmx/GETQ20";
var response = UrlFetchApp.fetch(url,options);
var xml = response.getContentText("UTF-8");
var document = XmlService.parse(xml);
var root = document.getRootElement();
var items = root.getChildren();
return items[10].getText();
}
把前面的專案儲存後,開始規劃一下投資組合的格式與資訊,在股價的那格貼上公式:
上市上櫃用這個公式:
=TWPRICE(A2)
興櫃用這個公式:
=EMGPRICE(A2)
整個公式唯一需要修改的地方就是"A2",他代表的是google試算表中台股代號所在的"欄位",他會依據該"欄位"的台股代號回傳股價.
有了股價與EPS就能得知本益比(P/E),EPS可能要辛苦一點自己KEY IN,一年也就四次.
完成,每天只要幾分鐘就可以追蹤百檔以上的好股票+爛股票.
備註:
股價有時候會有延遲或是抓不到的現象,可以關閉試算表再重新開啟更新,或是把錯誤的那格DELETE,再把公式重新貼上,就會正常了。
連結:
http://mis.twse.com.tw/stock/fibest.jsp?stock=2412
http://mis.tpex.org.tw/ib120stk.aspx
(2017.7.7修正) 因為本來用的Yahoo Fianace資料抓不到了,所以將文章更新成抓取"台灣證交所"的資料.不過目前只能抓到前一天收盤價,要抓即時股價的方式等我研究出來再更新.
(2018.2.2更新) 增加了查詢興櫃股票股價的公式,抓的是櫃買中心的資料.

整個公式唯一需要修改的地方就是三個"A2",他代表的是google試算表中台股代號所在的"欄位",他會依據該"欄位"的台股代號回傳股價. 是指高股息那格 A2 要改成 A3 嗎? P/B 怎麼算? 謝謝!
嗯 沒錯 高股息那格 A2 要改成 A3,在公式那格複製往下貼,自己也會變成A3. P/B也是要找一格手KEY每股淨值,然後再與EPS那一格相除.
=GoogleFinance(CONCATENATE(C15,".TW"),"PE") =GoogleFinance(CONCATENATE(C15,".TW"),"EPS")
今天使用的時候出現錯誤訊息 對 http://query.yahooapis.com/v1/public/yql?format=json&env=store://datatables.org/alltableswithkeys&q=select%20*%20from%20yahoo.finance.quote%20where%20symbol%20in%20(%272317.TW%27) 的要求失敗,系統回傳代碼 400。以下是伺服器的部分回應:{"error":{"lang":"en-US","description":"No definition found for Table yahoo.finance.quote"}} (請使用 muteHttpExceptions 選項查看完整回應) (第 4 行)。 是Yahoo修改API或是伺服器了嗎?
Yahoo提供的API無法連結了,過幾天我會再更新程式改用台灣證卷交易所的資料。
感謝提供 期待改用台灣証卷交影所資料的新程式中!
已更新囉!
感謝您啊! 但有些可以,有些不行,是何故?y 沒定義?但為何有的可以… 不行的出現 #ERROR 錯誤TypeError: 無法讀取 undefined 的「y」屬性。 (第 6 行)。 真的是很謝謝您的分享,並期待您研究出捉即時價格的方法。
重新測試,都可以了!但興櫃的不行。 感謝您的分享,並期待新程式喔!
我也發現抓不到興櫃股價,等我研究出來再更新囉.
謝謝大大的分享~~~ 希望證交所的資料可以一直能用
證交所可能也不想讓人連,過去都曾經 更改連線位置,萬一連不到我們就再來改囉.
出現 #ERROR 錯誤TypeError: 無法讀取 undefined 的「y」屬性。 (第 6 行) 請問要怎麼處理?
Delete 然後重貼公式
本來一切正常,但最近卻有些(非全部)會出現以下訊息: #ERROR! Syntax Error : Unexpected token : < (第五行) 是啥原因啊!第五行看來沒錯誤的 token 啊… 是否一個檔案中不能有過多的呼叫呢? 謝謝!
我目前使用都正常耶,刪除舊公式再重貼公式應該可解決問題。
感謝您指導,解決之前有些股票代號沒法用googlefinance抓取的問題,昨天發現這位先生抓取'玩股網',比較能取得即時股價 see http://hclovenote.blogspot.tw/2014/12/googlespreadsheet20141219.html
謝謝你的資訊,最近有點忙,找時間我再來研究這個,謝謝。
mobile01 這篇excel vba可以看一下 https://www.mobile01.com/topicdetail.php?f=511&t=4737630 我為了下載股票資料,找了很多程式論譠,麻辣學園…等等 沒看過這麼強的,只可惜他是玩票性質的,他根本不在意有沒有人看 那篇文章要不是因為有人問,不然也不會在第一頁活這麼久 那位仁兄的其它範例也很有看頭,不是其它論譠可以看到的 可惜程式功能強大,了解價值的人少,很多都沈到很後面了 有空也可以在mobile01搜尋來看
謝謝你的分享,這篇值得研究。
增加了查詢興櫃股票股價的程式, 在"指令碼編輯器"更新程式後,用=EMGPRICE("股票代碼")就能抓到興櫃的股價。
今日試用後,發覺Price欄位由API扣回的資料非當天(收盤)價格,請問是否有設定上的問題?
目前只能使用前日收盤價喔。
同上位網友留言,發現並非當天收盤的成交價,而是前一天的收盤價。
目前只能使用前日收盤價喔。
請問如果要擷取出股票名稱該怎麼修改呢?感謝
我的作法是這樣,在google sheet中先放上股票代號與名稱的資料,然後利用vlookup的涵式去比對,可以搜尋vlookup的用法來看看,有不少的教學文章。
非常感謝,好方便呀 ~ 之前用importhtml去捉,但都因為有數量限制, 所以很容易就超過了,這個就沒有上限的問題 ~
不客氣
請問美股股價如果不用googlefinance函式,是否也可以使用這種方式去捉 ?
這程式是到台灣證交所抓資料,要抓美股股價要改寫程式。用googlefinance函式比較簡單方便。
請問如何捉台股上櫃個股的歷史年度高低價 ? http://www.tpex.org.tw/web/stock/statistics/monthly/st42.php?l=zh-tw
想請問: 複製貼上程式碼後運行會出現下列錯誤 想請問該如何解決 Error on line 7: The entity "nbsp" was referenced, but not declared. (第 20 行,檔案名稱:程式碼)關閉
*****
*****
您好 我會出現 Error on line 47: The entity "nbsp" was referenced, but not declared. (第 20 行,檔案名稱:程式碼) 20行是 var document = XmlService.parse(Xml);