over 4 years ago

解析HTML的方式

HTML Agility Pack:簡單好用的快速 HTML Parser

https://www.tradeking.com/

基本市況報導網站資料

以類股方式取得個股OHLC
http://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_1101.tw|tse_1102.tw|tse_1103.tw|tse_1104.tw|tse_1108.tw|tse_1109.tw|tse_1110.tw|&json=1&d=20150515&delay=0&_=1432626332924

Note: 上市股票的成交量不準, 都會較證交所的成交量少

上櫃

上櫃大盤資料-1
基本市況報導網站主頁取得資料網址(資料最早是只到20131111).

http://mis.twse.com.tw/stock/api/getChartOhlcStatis.jsp?ex=otc&ch=o00.tw&fqy=1&d=20150514
設定d就可以改變日期,取得的格式為json,格式如下:

"infoArray":[

    {
        "ex":"otc",
        "d":"20150515",
        "it":"t",
        "c":"o00",
        "n":"櫃買指數",
        "o":"139.61",
        "l":"138.56",
        "tk0":"o00.tw_otc_20150515_B_9999799396",
        "h":"140.18",
        "tk1":"o00.tw_otc_20150515_B_9999790892",
        "i":"oidx.tw",
        "ip":"0",
        "bt":"13:33:00",
        "v":"21006",
        "t":"13:33:00",
        "tlong":"1431667980000",
        "ch":"o00.tw",
        "z":"138.71",
        "y":"139.53"
    }
],

上櫃大盤資料-2
基本市況報導網站的大盤資訊頁面主頁取得資料網址(資料最早是只到20131111).
http://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=otc_o00.tw_20150515&json=1&delay=0&=20150515&_=1431696147306

"msgArray":[

    {
        "ex":"otc",
        "d":"20150515",
        "it":"t",
        "c":"o00",
        "n":"櫃買指數",
        "o":"139.61",
        "l":"138.56",
        "tk0":"o00.tw_otc_20150515_B_9999799396",
        "h":"140.18",
        "tk1":"o00.tw_otc_20150515_B_9999790892",
        "i":"oidx.tw",
        "ip":"0",
        "v":"21006",
        "t":"13:33:00",
        "tv":"1096",
        "tlong":"1431667980000",
        "ch":"o00.tw",
        "z":"138.71",
        "y":"139.53"
    }
],

後來發現這個主機也可以同時取得上市大盤,上櫃大盤及寶島指數的資料.
http://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_t00.tw|otc_o00.tw|tse_FRMSA.tw&json=1&delay=0&d=20150515&_=1431696152231

d=要取得的資料的日期 -> 20150515
資料最早是只到20131111

上櫃大盤資料-3

來源網頁首頁 > 指數及ETF > 櫃買指數 > 櫃買指數歷史資料查詢
分析取得由以下的webapi可取得資料,改變d參數可指定要取得的年月
http://www.tpex.org.tw/web/stock/iNdex_info/inxh/Inx_result.php?l=zh-tw&d=98/05/01&_=1431908425825

上櫃股票個股OHLC資訊-抓最新一天
http://www.tpex.org.tw/web/stock/aftertrading/daily_close_quotes/stk_quote_result.php?l=zh-tw&_=1432687291166

上櫃股票個股OHLC資訊-指定日期
http://www.tpex.org.tw/web/stock/aftertrading/daily_close_quotes/stk_quote_result.php?l=zh-tw&d=104/05/15&_=1432687154819

證交所資料

公開觀測站取得

上市櫃及ETF股票
上市-較麻煩
http://www.twse.com.tw/ch/trading/inc/STKCHOICE/STK02.php?STK=02
STK02.php: 指食品類股
STK=02: 指食品類股
要換為水泥類股則為
http://www.twse.com.tw/ch/trading/inc/STKCHOICE/STK01.php?STK=01
要抓ETF
http://www.twse.com.tw/ch/trading/inc/STKCHOICE/STK0099P.php?STK=0099P

上市-抓CSV
http://www.twse.com.tw/ch/trading/exchange/BWIBBU/BWIBBU_print.php?language=ch&save=htm&save=csv

上櫃
由上櫃股票個股本益比、殖利率、股價淨值比(依日期查詢)取全部股票列表
http://www.tpex.org.tw/web/stock/aftertrading/peratio_analysis/pera_print.php?l=zh-tw&d=104/05/07&c=&s=0,asc,0

公司基本資料
http://mops.twse.com.tw/mops/web/ajax_t05st03?TYPEK=all&step=1&firstin=1&off=1&queryName=co_id&co_id=2330

董監持股 (有些月份會無資料)
http://mops.twse.com.tw/mops/web/ajax_stapap1?TYPEK=sii&firstin=true&year=104&month=01&off=1&co_id=2330&step=0

申報轉讓

  1. 年度月份查詢 http://mops.twse.com.tw/mops/web/ajax_t56sb21?Run=Y&step=1&co_id=2330&year=102&smonth=01&emonth=12&isnew=false&sstep=1&firstin=true
  2. 最新資料(只價取最新部份) http://mops.twse.com.tw/mops/web/t56sb21_q1?Run=Y&step=1&co_id=2330&year=102&isnew=true&sstep=1&firstin=true

個股損益表
http://mops.twse.com.tw/mops/web/ajax_t164sb04?TYPEK=sii&year=102&month=02&step=1&firstin=1&off=1&co_id=3008&isnew=true

公開觀測站-彙總報表-財務報表 http://mops.twse.com.tw/mops/web/t163sb04

  1. 會以季的方式,將所有上市公司該季資料呈現
  2. 取得方式 網址: http://mops.twse.com.tw/mops/web/ajax_t163sb04 Type: Post 參數:
    encodeURIComponent:1
    step:1
    firstin:1
    off:1
    TYPEK:sii
    year:104
    season:01
    

採用IFRSs後之月營業收入資訊
http://mops.twse.com.tw/mops/web/ajax_t05st10_ifrs?TYPEK=sii&co_id=3008&run=Y&step=0&yearmonth=10403&off=1&year=104&month=03&firstin=true

股利分派
http://mops.twse.com.tw/server-java/t05st09sub?step=1&TYPEK=sii&YEAR=103&first

現金流量表

  1. 102年度後(年報) http://mops.twse.com.tw/mops/web/ajax_t164sb05?TYPEK=all&step=1&firstin=1&off=1&queryName=co_id&isnew=true&co_id=2330&year=103
  2. 101年度(含)前,只能一季一季查,而且回覆的格式比較奇怪 http://mops.twse.com.tw/mops/web/ajax_t05st39?TYPEK=all&step=1&firstin=1&off=1&queryName=co_id&isnew=alse&co_id=2330&year=100&season=01

簡明綜合損益表(四季)

  1. 102年度後 http://mops.twse.com.tw/mops/web/ajax_t163sb15?TYPEK=all&step=1&firstin=1&off=1&queryName=co_id&t05st29_c_ifrs=N&t05st30_c_ifrs=N&isnew=false&co_id=2330&year=103
  2. 101年度前合併 (主網: http://mops.twse.com.tw/mops/web/t05st30_c) http://mops.twse.com.tw/mops/web/ajax_t05st30_c?TYPEK=all&step=1&firstin=1&off=1&queryName=co_id&t05st29_c_ifrs=N&t05st30_c_ifrs=N&isnew=false&co_id=2330&year=99
  3. 101年度前非合併(主網: http://mops.twse.com.tw/mops/web/t05st30)

簡明綜合損益表(三年)
路徑: 財務報表>採IFRS後>簡明報表>

  1. 102年度後 http://mops.twse.com.tw/mops/web/ajax_t163sb17?TYPEK=all&step=1&firstin=1&off=1&queryName=co_id&t05st29_c_ifrs=N&t05st30_c_ifrs=N&isnew=true&co_id=2330&year=103
  2. 101年度前 http://mops.twse.com.tw/mops/web/ajax_t05st21?TYPEK=all&step=1&firstin=1&off=1&queryName=co_id&t05st29_c_ifrs=N&t05st30_c_ifrs=N&isnew=false&co_id=2330&year=95
  3. 101年度前但只能查101年度 http://mops.twse.com.tw/mops/web/ajax_t05st21?TYPEK=all&step=1&firstin=1&off=1&queryName=co_id&t05st29_c_ifrs=N&t05st30_c_ifrs=N&isnew=true&co_id=2330

Finance Data的API資料

//使用Yahoo finance Data的API資料
https://code.google.com/p/yahoo-finance-managed/wiki/csvHistQuotesDownload
https://greenido.wordpress.com/2009/12/22/yahoo-finance-hidden-api/
http://www.jarloo.com/yahoo_finance/
http://stackoverflow.com/questions/10040954/alternative-to-google-finance-api
//YQL
http://stackoverflow.com/questions/12417624/how-to-access-yahoo-finance-yql-query-with-historical-data

https://developer.yahoo.com/yql/console/?q=select%20%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22YHOO%22%2C%22AAPL%22%2C%22GOOG%22%2C%22MSFT%22)%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env#h=select++from+yahoo.finance.historicaldata+where+symbol+%3D+%222002.TW%22+and+startDate+%3D+%222015-01-11%22+and+endDate+%3D+%222015-03-10%22*

//各家提供資料的API
http://en.wikipedia.org/wiki/List_of_financial_data_feeds

http://thesimplesynthesis.com/article/finance-apis

http://www.blogbyben.com/2009/01/truly-simple-stock-api.html
http://weng32002.blogspot.tw/2011/04/api-yahoo-finance-stock-api.html
https://github.com/toomore/grs

匯率

http://finance.yahoo.com/currency-investing
http://stackoverflow.com/questions/3139879/how-do-i-get-currency-exchange-rates-via-an-api-such-as-google-finance

Google Finance API

Google Finance提供的資料項目及即時性列表 --> 有各大市場簡稱的列表

http://www.codeproject.com/Articles/221952/Simple-Csharp-DLL-to-download-data-from-Google-Fin
https://github.com/mdengler/stockquote/blob/master/stockquote.py

Korea
http://www.google.com/finance/getprices?q=KOSPI&x=KRX&i=86400&p=20d&f=d,c,h,l,o,v

Shanghi-上海綜合
http://www.google.com/finance/getprices?q=KOSPI&x=KRX&i=86400&p=20d&f=d,c,h,l,o,v

Taiwan otc twoii in yahoo
http://finance.yahoo.com/q?s=twoii^

//有很詳細的解釋
http://www.codeproject.com/Articles/221952/Simple-Csharp-DLL-to-download-data-from-Google-Fin

//取中鋼3天的資料
http://www.google.com/finance/getprices?q=2002&x=TPE&i=86400&p=3d&f=d,c,h,l,o,v
//取中鋼1個月
http://www.google.com/finance/getprices?q=2002&x=TPE&i=86400&p=1M&f=d,c,h,l,o,v
//取中鋼1年
http://www.google.com/finance/getprices?q=2002&x=TPE&i=86400&p=1Y&f=d,c,h,l,o,v

XCHANGE%3DTPE
MARKET_OPEN_MINUTE=540
MARKET_CLOSE_MINUTE=810
INTERVAL=86400
COLUMNS=DATE,CLOSE,HIGH,LOW,OPEN,VOLUME
DATA=
TIMEZONE_OFFSET=480
a1426656600,25.6,25.6,25.35,25.45,17377000
1,25.7,25.7,25.55,25.6,11766000
  • 其中a1426656600的a後面的數字是unit timestamp的時間,轉換後會得到2015/03/18, 13:30.
  • 第1個數字1是指以2015/03/18, 13:30為基準加1天,這樣可以算出天數.

//取大盤
http://www.google.com/finance/getprices?q=TAIEX&x=TPE&i=86400&p=3d&f=d,c,h,l,o,v

//History price
http://www.networkerror.org/component/content/44.html?task=view

http://www.quantshare.com/sa-426-6-ways-to-download-free-intraday-and-tick-data-for-the-us-stock-market

驗證可行1

//real time price
http://itsliferay.blogspot.tw/2011/09/get-real-time-stock-values-using-yahoo.html

//取2002即時股價
http://finance.google.com/finance/info?client=ig&q=TAIEX:2002
驗證可行2-但資料很少

http://www.focalshift.com/2014/06/24/the-google-finance-api-is-still-ticking/

驗證不可行3

http://www.jarloo.com/google-stock-api/

驗證可行4

//取得股票價格
http://yanghseng1107.blogspot.tw/2014/06/google-finance-api.html

透過 google finance api 來取得股票資訊
目前知道有兩種方式可以透過 google finance api 來取得股票資訊

http://finance.google.com/finance/info?client=ig&q=XXXX
其中 XXXX 表示股票代碼,如果要取得台積電(2330)的股票資訊,可以輸入TPE:2330
如 http://finance.google.com/finance/info?client=ig&q=TPE:2330

但如果要取得多個股票資訊如台積電(2330)、宏達電(2498)、大立光(3008),可以透過"," 來串連,如 http://finance.google.com/finance/info?client=ig&q=TPE:2330,TPE:2498,TPE:3008

http://www.google.com/finance/info?infotype=infoquoteall&q=XXXX
同樣的 XXXX 表示股票代碼,如果要取得台積電(2330)的股票資訊,可以輸入TPE:2330
如 http://www.google.com/finance/info?infotype=infoquoteall&q=2330

但如果要取得多個股票資訊如台積電(2330)、宏達電(2498)、大立光(3008),可以透過"," 來串連,如 http://www.google.com/finance/info?infotype=infoquoteall&q=2330,TPE:2498,TPE:3008
驗證可行5-多檔即時報價

http://www.codeproject.com/Articles/148041/Visualizing-Live-and-Historic-Stock-Data-Using-Sil

http://www.google.com/finance/info?q=TPE%3A2002,TPE%3A3008,TPE%3A2489,TPE%3A1101,TPE%3A1102

//其他API的設計參考
https://www.quandl.com/api/v1/datasets/WIKI/AAPL.csv?auth_token=YOURAPIKEY

https://books.google.com.tw/books?id=EU6wBAAAQBAJ&pg=SA15-PA24&lpg=SA15-PA24&dq=taiwan+stock+history+api&source=bl&ots=C4rSd0lLFG&sig=b0bCHcI0JA57MV-ifHw8gx7DxCg&hl=zh-TW&sa=X&ei=unEPVYzzD9DW8gWOlII4&ved=0CF4Q6AEwCTgK#v=onepage&q=taiwan%20stock%20history%20api&f=false

http://www.mathworks.com/matlabcentral/fileexchange/32745-get-intraday-stock-price/content/getHistoricalIntraDayStockPrice.m

https://www.bigmiketrading.com/brokers-data-feeds/31385-google-finance-historical-daily-data-retrieved-programmatically.html

https://github.com/quantopian/zipline/issues/215

C#範例程式取得股價資料

http://www.jarloo.com/get-historical-stock-data/

Yahoo美國官網取得2002中鋼歷史股價資料的網頁

http://finance.yahoo.com/q/hp?s=2002.TW&a=00&b=4&c=2000&d=02&e=20&f=2015&g=d

Yahoo美國官網取得大盤歷史股價資料的網頁

http://finance.yahoo.com/q/hp?s=TWII&a=00&b=4&c=2000&d=02&e=20&f=2015&g=d^

指數資料

http://finance.yahoo.com/market-overview/

http://finance.yahoo.com/stock-center/

Webapi的設計

Route HTTP Verb Description
/api/market/1 GET 大盤歷史資料
/api/stock/:stock_id GET 個股歷史資料

取台灣證交所的資料

http://forum.twbts.com/thread-6750-8-1.html
http://forum.twbts.com/viewthread.php?tid=12590

//取大盤資料
http://www.twse.com.tw/ch/trading/exchange/FMTQIK/FMTQIK2.php?STK_NO=&myear=2015&mmon=03&type=csv
/取個股日本益比、殖利率及股價淨值比
http://www.twse.com.tw/ch/trading/exchange/BWIBBU/BWIBBU.php?STK_NO=2002&myear=2015&mmon=02&type=csv

//大盤成交量及金額
http://www.twse.com.tw/ch/trading/exchange/FMTQIK/FMTQIK2.php?STK_NO=&myear=2015&mmon=04&type=csv

//個股成交量, typecsv,list
http://www.twse.com.tw/ch/trading/exchange/STOCK_DAY/STOCK_DAY_print.php?genpage=genpage/Report201502/201502_F3_1_8_3008.php&type=csv

http://www.dotblogs.com.tw/joysdw12/archive/2012/12/04/85380.aspx
https://msdn.microsoft.com/zh-tw/library/debx8sh9v=vs.110).aspx(


由證交所取得發行量加權股價指數歷史資料

這份表格依月份包含

  • 日期
  • 開盤指數
  • 最高指數
  • 最低指數
  • 收盤指數

程式碼如下:

using OpenQA.Selenium.Chrome;
using OpenQA.Selenium;

public void DownloadTwseMarketData()
{
    string targetUrl = "http://www.twse.com.tw/ch/trading/indices/MI_5MINS_HIST/MI_5MINS_HIST.php?myear=102&mmon=02";

    IWebDriver driver = new ChromeDriver("C:\\Temp");
    driver.Navigate().GoToUrl(targetUrl);

    IWebElement elems = driver.FindElement(By.ClassName("gray12"));
    IWebElement elem = driver.FindElement(By.XPath("//img[contains(@src, 'save_csv')]"));
    elem.Click();
}


玩股網的資料

加權
http://www.wantgoo.com/Stock2/js/StockInfo/DK/0000_240.js?id=20150324
櫃買
http://www.wantgoo.com/Stock2/js/StockInfo/DK/TWO_240.js?id=201503261507

資料
Stock
Change: -48.71
Deal: 9619.12
High: 9619.12
Last: 9697.53
Low: 9540.03
Open: 9579.63
StockName: "加權指數"
StockNo: "0000"
TotalVolume: 1151790

Array
Close: 9465.43
D9: 86.19003
Date: "2014-08-28T00:00:00.0000000+08:00"
High: 9502.42
K9: 90.6208
Last: 9476
Low: 9453.49
MACD_DIF: 24.4545
MACD_MACD9: -10.7164
MACD_OSC: 35.1709
Mean5: 9421.222
Mean5Volume: 961546
Mean10: 9325.177
Mean20: 9256.389
Mean20Volume: 893469
Mean60: 9331.688
Mean120: 9099.396
Open: 9499.22
RSI6: 76.16055
RSI12: 63.99078
StockNo: "0000"
Volume: 997990

其他盤後資料

http://jsjustweb.jihsun.com.tw/Z/ZG/ZG_F.djhtm
http://mypaper.pchome.com.tw/tony168324/post/1321659275
http://jesse0606.pixnet.net/blog/post/41253092-%E5%8F%96%E5%BE%97%E5%9F%BA%E6%9C%AC%E8%B3%87%E6%96%99
http://www.coco-in.net/thread-36393-1-1.html
http://www.coco-in.net/thread-19432-1-1.html
下載上市櫃交易明細
如何抓取 證交所的資料 證交所網頁改版

http://forum.twbts.com/viewthread.php?tid=12977

參考

← ng-book中,$q的學習筆記 Webstorm中使用SASS compile環境設定 →