取得臺灣證券交易所與證券櫃檯買賣中心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的沙龍的其他內容
2024/12/21
小弟走跳江湖多年,也累績了一些職場心得,在年底轉職熱門時刻,希望能夠幫助到一些有緣人。
2024/12/21
小弟走跳江湖多年,也累績了一些職場心得,在年底轉職熱門時刻,希望能夠幫助到一些有緣人。
2024/10/13
本地端生成式AI工具LM Studio安裝介紹,包含如何手動載入AI模型的技巧。
Thumbnail
2024/10/13
本地端生成式AI工具LM Studio安裝介紹,包含如何手動載入AI模型的技巧。
Thumbnail
看更多
你可能也想看
Thumbnail
常常被朋友問「哪裡買的?」嗎?透過蝦皮分潤計畫,把日常購物的分享多加一個步驟,就能轉換成現金回饋。門檻低、申請簡單,特別適合學生與上班族,讓零碎時間也能創造小確幸。
Thumbnail
常常被朋友問「哪裡買的?」嗎?透過蝦皮分潤計畫,把日常購物的分享多加一個步驟,就能轉換成現金回饋。門檻低、申請簡單,特別適合學生與上班族,讓零碎時間也能創造小確幸。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
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 做了樣版,可以讓你抓股價、找匯率資訊、翻出股票過往的歷史資料,歡迎來看看!
Thumbnail
無論是投資或是資料科學專案,經常需要股市資料作分析。證交所在政府資料開放平台中提供了個股日成交資訊,也可以透過API查詢歷史記錄,但很容易因為頻繁抓取資料而被暫時的鎖IP,之後會再寫另外一篇文章說明。
Thumbnail
無論是投資或是資料科學專案,經常需要股市資料作分析。證交所在政府資料開放平台中提供了個股日成交資訊,也可以透過API查詢歷史記錄,但很容易因為頻繁抓取資料而被暫時的鎖IP,之後會再寫另外一篇文章說明。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News