取得臺灣證券交易所與證券櫃檯買賣中心OpenAPI的資料

更新於 發佈於 閱讀時間約 8 分鐘

傳說中,股票交易會從三個面向作分析: 技術面、籌碼面、基本面。以量化程式交易來說,技術面就是透過券商API取得即時資料與歷史資料,轉換成K棒做技術分析;籌碼面是透過買賣日報取得分點資料作分析;基本面則是透過臺灣證券交易所與證券櫃檯買賣中心OpenAPI取得公司治理與財務報表等資料進行分析。


本篇主要介紹如何利用OpenAPI取得相關資料。這邊用一個簡單的例子當作範例,來取得目前上市與上櫃的股票代碼。當開發量化交易程式的時候,我們會發現上市上櫃股票家數不宜寫死,因為隨時有新的公司上市上櫃,也會有下市下櫃的狀況發生,所以最好是透過一個隨時更新的表格做後續處理。至於如何取得現有的上市上櫃股票代碼,我們可以利用臺灣證券交易所與證券櫃檯買賣中心OpenAPI。


臺灣證券交易所OpenAPI的網址為https://openapi.twse.com.tw/

證券櫃檯買賣中心OpenAPI的網址為https://www.tpex.org.tw/openapi/


讀者可以點進這兩個網址挑選喜歡的功能來做其他功能的開發。因為筆者習慣把這些資料都轉為csv格式,所以我們會透過CsvHelper與Newtonsoft.Json將網站丟進來的Json格式轉換為csv格式。實際的流程也很簡單,對OpenAPI的網誌發起要求,將收到的資料做格式轉化,實際程式碼如下所示:


	private async Task GetAllTWSEStockInfo(string path)
{
string reqtwse = "https://openapi.twse.com.tw/v1/exchangeReport/BWIBBU_d";
string csvtwse = await GetHttpData(reqtwse);
//Debug.WriteLine(csv);
File.WriteAllText(path, csvtwse);
}

private async Task GetAllTPEXStockInfo(string path)
{
string reqtpex = "https://www.tpex.org.tw/openapi/v1/tpex_mainboard_peratio_analysis";
string csvtpex = await GetHttpData(reqtpex);
//Debug.WriteLine(csv);
File.WriteAllText(path, csvtpex);
}

private async Task<string> GetHttpData(string weblink)
{
HttpClientHandler handler = new HttpClientHandler();
handler.UseDefaultCredentials = true;
HttpClient client = new HttpClient(handler);
try
{
HttpResponseMessage response = await client.GetAsync(weblink);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
string csv = jsonToCSV(responseBody, ",");
return csv;
}
catch (HttpRequestException e)
{
Debug.WriteLine("Exception Caught! Message :{0} ", e.Message);
return null;
}
}

private static DataTable jsonStringToTable(string jsonContent)
{
DataTable dt = JsonConvert.DeserializeObject<DataTable>(jsonContent);
return dt;
}

private static string jsonToCSV(string jsonContent, string delimiter)
{
StringWriter csvString = new StringWriter();
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
Delimiter = delimiter,
MissingFieldFound = null
};

using (var csv = new CsvWriter(csvString, configuration))
{
using (var dt = jsonStringToTable(jsonContent))
{
foreach (DataColumn column in dt.Columns)
{
csv.WriteField(column.ColumnName);
}
csv.NextRecord();
foreach (DataRow row in dt.Rows)
{
for (var i = 0; i < dt.Columns.Count; i++)
{
csv.WriteField(row[i]);
}
csv.NextRecord();
}
}
}

return csvString.ToString();
}


這樣就完成了這段簡單的範例。至於不同的資料,如何進行分析,可以參考財報狗或是玩股網的資料格式,自己做個轉換。資料的收集與累積需要長時間的耐力進行,這也是資料庫分析可貴的地方,與大家共勉之。


留言
avatar-img
留言分享你的想法!
avatar-img
Gary Hu的沙龍
4會員
11內容數
Gary Hu的沙龍的其他內容
2025/04/14
從2023年之前,美股會直接預扣30% 股息預扣稅率,但是在2023年通過台美稅務協定後,你想在美國券商(例如 TD Ameritrade、Firstrade、Charles Schwab 等)享有台美稅務協定下的21% 股息預扣稅率,關鍵就在於正確填寫並提交一份W-8BEN 表格。 以下是步
Thumbnail
2025/04/14
從2023年之前,美股會直接預扣30% 股息預扣稅率,但是在2023年通過台美稅務協定後,你想在美國券商(例如 TD Ameritrade、Firstrade、Charles Schwab 等)享有台美稅務協定下的21% 股息預扣稅率,關鍵就在於正確填寫並提交一份W-8BEN 表格。 以下是步
Thumbnail
2024/12/21
小弟走跳江湖多年,也累績了一些職場心得,在年底轉職熱門時刻,希望能夠幫助到一些有緣人。
2024/12/21
小弟走跳江湖多年,也累績了一些職場心得,在年底轉職熱門時刻,希望能夠幫助到一些有緣人。
2024/10/13
本地端生成式AI工具LM Studio安裝介紹,包含如何手動載入AI模型的技巧。
Thumbnail
2024/10/13
本地端生成式AI工具LM Studio安裝介紹,包含如何手動載入AI模型的技巧。
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
對於剛接觸Python程式的使用者來說,要一口氣學會爬蟲可能相對困難,但若想即時且輕鬆獲得台股相關數據,你可以利用證交所所提供的API進行數據蒐集。只需要簡單幾行程式碼,就能輕鬆抓到台股上千支股票的每日資訊,是不是棒呆了!!
Thumbnail
對於剛接觸Python程式的使用者來說,要一口氣學會爬蟲可能相對困難,但若想即時且輕鬆獲得台股相關數據,你可以利用證交所所提供的API進行數據蒐集。只需要簡單幾行程式碼,就能輕鬆抓到台股上千支股票的每日資訊,是不是棒呆了!!
Thumbnail
本文章內容主要是讓你學會使用證券交易所提供的資料來源,自行整理籌碼資訊的方法。教學內容包括瞭解三大法人買賣金額、信用交易統計、市場成交資訊等,並提供了Excel匯入資料的操作步驟。透過此教學,快速上手去抓取您所需要的資料。
Thumbnail
本文章內容主要是讓你學會使用證券交易所提供的資料來源,自行整理籌碼資訊的方法。教學內容包括瞭解三大法人買賣金額、信用交易統計、市場成交資訊等,並提供了Excel匯入資料的操作步驟。透過此教學,快速上手去抓取您所需要的資料。
Thumbnail
透過數字貨幣交易所的OPEN API文件找到自己需要的資訊
Thumbnail
透過數字貨幣交易所的OPEN API文件找到自己需要的資訊
Thumbnail
之前在如何撈取台美股所有的股號的資料並儲存於SQLite? Part 1討論到如何使用stocksymbol撈取台美股股票代碼,在這篇我們繼續介紹如何針對我們撈取的股票代碼進行資料撈取。
Thumbnail
之前在如何撈取台美股所有的股號的資料並儲存於SQLite? Part 1討論到如何使用stocksymbol撈取台美股股票代碼,在這篇我們繼續介紹如何針對我們撈取的股票代碼進行資料撈取。
Thumbnail
之前在如何撈取台美股所有的股號的資料並儲存於SQLite? Part 1討論到如何使用stocksymbol撈取台美股股票代碼,在這篇我們介紹另一種方法撈取清單。
Thumbnail
之前在如何撈取台美股所有的股號的資料並儲存於SQLite? Part 1討論到如何使用stocksymbol撈取台美股股票代碼,在這篇我們介紹另一種方法撈取清單。
Thumbnail
在此系列文章,我們將討論如何在Google Colab的環境下,撈取所有台美股的股票代碼,並獲取相關細節,最後將獲取的資訊存取於SQLite資料庫中。在此篇文章中,我們先來探討如何獲取所有的股票代碼。 步驟1 於stocksymbol註冊帳號並獲取API金鑰。 於Colab筆記本中安
Thumbnail
在此系列文章,我們將討論如何在Google Colab的環境下,撈取所有台美股的股票代碼,並獲取相關細節,最後將獲取的資訊存取於SQLite資料庫中。在此篇文章中,我們先來探討如何獲取所有的股票代碼。 步驟1 於stocksymbol註冊帳號並獲取API金鑰。 於Colab筆記本中安
Thumbnail
In this series of article, we will discuss how to pull stock detailed information for All Tickers in the US and TW Market.
Thumbnail
In this series of article, we will discuss how to pull stock detailed information for All Tickers in the US and TW Market.
Thumbnail
對於中長線投資的人來說,公司的產業資訊與營運狀況是非常重要的資訊,每當公司公告營運狀況,如月份營收、定期財務報表等資訊時,往往會對股價形成極大的波動。 那麼投資人該去哪裡找正確無誤的基本面分析資料?
Thumbnail
對於中長線投資的人來說,公司的產業資訊與營運狀況是非常重要的資訊,每當公司公告營運狀況,如月份營收、定期財務報表等資訊時,往往會對股價形成極大的波動。 那麼投資人該去哪裡找正確無誤的基本面分析資料?
Thumbnail
我用 GOOGLEFINANCE 做了樣版,可以讓你抓股價、找匯率資訊、翻出股票過往的歷史資料,歡迎來看看!
Thumbnail
我用 GOOGLEFINANCE 做了樣版,可以讓你抓股價、找匯率資訊、翻出股票過往的歷史資料,歡迎來看看!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News