Historical Candles
查詢上市櫃、興櫃及指數歷史股價(依代碼查詢)。單次查詢區間須小於 1 年;上市櫃個股日資料最遠可回溯至 2010 年,指數部分最遠可回溯至 2015 年,興櫃則可回溯至 2024 年。
historical/candles/{symbol}
Parameters
| Name | Type | Description |
|---|---|---|
symbol* | string | 股票代碼 |
from | string | 開始日期(格式:yyyy-MM-dd),未帶時預設為 1 個月前 |
to | string | 結束日期(格式:yyyy-MM-dd),未帶時預設為今日 |
timeframe | string | K線週期,未帶時預設為 D 日K;可選 1 1 分K;3 3 分K;5 5 分K;10 10 分K;15 15 分K;30 30 分K;60 60 分K;D 日K;W 週K;M 月K |
adjusted | string | 還原股價啟用,可選 true、false(僅日/週/月K有效) |
fields | string | 欄位選擇,未帶時預設為 open,high,low,close,volume,average(不含 turnover、change,需要時請明確指定);可選 open、high、low、close、volume、average、turnover、change(各欄位適用 timeframe 請見 Response 表格) |
sort | string | 時間排序,未帶時預設為 desc 降冪;可選 asc 升冪 |
info
- 歷史資料於每交易日盤後 16:30 前完成更新。
- 日K資料涵蓋:上市櫃個股自 2010 年、指數自 2015 年、興櫃自 2024 年起。
- 查詢區間(
from~to)單次須小於 1 年,恰好或超過 1 年會回傳 400 Bad Request(例:from=2024-01-01&to=2024-12-31可查詢;from=2023-12-31&to=2024-12-31恰好 1 年會被拒絕)。from不可晚於to,否則亦回傳 400。 - 分K歷史資料(含興櫃)自 2023-05-23 起提供。
- 查詢區間內查無資料(完全為非交易日、或早於該 timeframe 的資料起始日)會回傳 404 Resource Not Found,而非空陣列。
Example
日K範例
查詢日K並指定日期區間:
- Python
- Node.js
from taishin_sdk import TaishinSDK, Order
sdk = TaishinSDK()
accounts = sdk.login("Your ID", "Your password", "Your cert path", "Your cert password") # 需登入後,才能取得行情權限
sdk.init_realtime(accounts[0]) # 建立行情連線
reststock = sdk.marketdata.rest_client.stock
print(reststock.historical.candles(**{"symbol": "0050", "from": "2023-02-06", "to": "2023-02-08", "fields": "open,high,low,close,volume,change"}))
const { TaishinSDK } = require('taishin-sdk');
const sdk = new TaishinSDK();
const accounts = sdk.login("Your ID", "Your Password", "Your Cert Path", "Your Cert Password");
sdk.initRealtime(accounts[0]); // 建立行情連線
const client = sdk.marketdata.restClient
client.stock.historical.candles({ symbol: '0050', from: '2023-02-06', to: '2023-02-08', fields: 'open,high,low,close,volume,change' })
.then(data => console.log(data));
Response Body:
{
"symbol": "0050",
"type": "EQUITY",
"exchange": "TWSE",
"market": "TSE",
"timeframe": "D",
"data": [
{
"date": "2023-02-08",
"open": 120.1,
"high": 120.95,
"low": 120,
"close": 120.85,
"volume": 9239321,
"change": 1.85
},
{
"date": "2023-02-07",
"open": 119.1,
"high": 119.25,
"low": 118.55,
"close": 119,
"volume": 8787291,
"change": -0.25
},
{
"date": "2023-02-06",
"open": 120.1,
"high": 120.1,
"low": 119.25,
"close": 119.25,
"volume": 14297030,
"change": -1.75
}
],
"sort": "desc"
}
分K範例
查詢 1 分K並指定日期區間(含均價 average):
- Python
- Node.js
from taishin_sdk import TaishinSDK, Order
sdk = TaishinSDK()
accounts = sdk.login("Your ID", "Your password", "Your cert path", "Your cert password") # 需登入後,才能取得行情權限
sdk.init_realtime(accounts[0]) # 建立行情連線
reststock = sdk.marketdata.rest_client.stock
print(reststock.historical.candles(**{"symbol": "2330", "from": "2026-04-23", "to": "2026-04-23", "timeframe": "1", "fields": "open,high,low,close,volume,average"}))
const { TaishinSDK } = require('taishin-sdk');
const sdk = new TaishinSDK();
const accounts = sdk.login("Your ID", "Your Password", "Your Cert Path", "Your Cert Password");
sdk.initRealtime(accounts[0]); // 建立行情連線
const client = sdk.marketdata.restClient
client.stock.historical.candles({ symbol: '2330', from: '2026-04-23', to: '2026-04-23', timeframe: '1', fields: 'open,high,low,close,volume,average' })
.then(data => console.log(data));
Response Body:
{
"symbol": "2330",
"type": "EQUITY",
"exchange": "TWSE",
"market": "TSE",
"timeframe": "1",
"data": [
{
"date": "2026-04-23T13:30:00.000+08:00",
"open": 2080,
"high": 2080,
"low": 2080,
"close": 2080,
"volume": 5330,
"average": 2090.96
},
{
"date": "2026-04-23T13:24:00.000+08:00",
"open": 2090,
"high": 2090,
"low": 2085,
"close": 2090,
"volume": 104,
"average": 2092.31
},
{
"date": "2026-04-23T13:23:00.000+08:00",
"open": 2090,
"high": 2095,
"low": 2085,
"close": 2090,
"volume": 215,
"average": 2092.32
}
],
"sort": "desc"
}
還原股價範例
查詢還原股價(adjusted=true,僅日/週/月K)時,回應會多帶 adjusted 欄位。還原調整的是最近一次除權息日之前的歷史價格(除權息日當天起的價格與未還原查詢相同),change 亦以還原後序列計算。例如 2412 於 2026-07-09 除息,查詢除息日前兩日,回傳的即為還原後價格:
historical/candles/2412?from=2026-07-07&to=2026-07-08&adjusted=true&fields=open,high,low,close,volume,change
Response Body:
{
"symbol": "2412",
"type": "EQUITY",
"market": "TSE",
"exchange": "TWSE",
"timeframe": "D",
"data": [
{
"date": "2026-07-08",
"open": 136.23,
"high": 136.71,
"low": 134.3,
"close": 134.3,
"volume": 25356630,
"change": -1.44
},
{
"date": "2026-07-07",
"open": 136.23,
"high": 136.71,
"low": 135.26,
"close": 135.74,
"volume": 18969753,
"change": -0.48
}
],
"sort": "desc",
"adjusted": true
}
Response
| Name | Type | Description | 適用 timeframe |
|---|---|---|---|
symbol* | string | 股票代號 | — |
type | string | 證券類型(可能不回傳) | — |
market | string | 市場別(可能不回傳) | — |
exchange* | string | 交易所 | — |
timeframe* | string | K線週期 | — |
data* | object[] | K線資料 | — |
>> date* | string | 日期(日/週/月K為 yyyy-MM-dd;分K為 ISO 8601 含時區,例:2026-04-23T13:30:00.000+08:00) | 全部 |
>> open | number | K線開盤價 | 全部 |
>> high | number | K線最高價 | 全部 |
>> low | number | K線最低價 | 全部 |
>> close | number | K線收盤價 | 全部 |
>> volume | number |