Skip to main content

Historical Candles

查詢上市櫃及興櫃歷史股價(依代碼查詢)。單次查詢區間最長為 1 年;上市櫃個股日資料最遠可回溯至 2010 年,指數部分最遠可回溯至 2015 年,興櫃則可回溯至 2024 年。

historical/candles/{symbol}

Parameters

NameTypeDescription
symbol*string股票代碼
fromstring開始日期(格式:yyyy-MM-dd),未帶時預設為 1 個月前
tostring結束日期(格式:yyyy-MM-dd),未帶時預設為今日
timeframestringK 線週期,未帶時預設為 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
adjustedstring還原股價啟用,可選 truefalse(僅日/週/月 K 有效) (v2.2.8 新增)
fieldsstring欄位選擇,可選 openhighlowclosevolumeaverageturnoverchange(各欄位適用 timeframe 請見 Response 表格)
sortstring時間排序,預設為 desc 降冪;可選 asc 升冪
info
  • 日資料更新時間暫定為每交易日 15:30。
  • 查詢區間(from ~ to)一次最長為 1 年,超過會回傳 400 Bad Request(錯誤訊息:Date range must be less than one year)。
  • 分 K 歷史資料自 2023-05-23 起提供。若查詢區間完全落在起始日前、或完全為非交易日,會回傳 404 Resource Not Found(而非空陣列)。
  • 興櫃歷史資料可回溯至 2024 年(實際起點依標的而異)。

Response

NameTypeDescription適用 timeframe
type*string證券類型
exchange*string交易所
market*string市場別
symbol*string股票代號
timeframe*stringK 線週期
data*object[]K 線資料
data.date*string日期(日/週/月 K 為 yyyy-MM-dd;分 K 為 ISO 8601 含時區,例:2026-07-09T13:30:00.000+08:00全部
data.opennumberK 線開盤價全部
data.highnumberK 線最高價全部
data.lownumberK 線最低價全部
data.closenumberK 線收盤價全部
data.volumenumberK 線成交量/成交金額,單位請見下方說明全部
data.averagenumber成交均價(自開盤累計)僅分 K
data.turnovernumberK 線成交金額(元)僅日/週/月 K
data.changenumberK 線漲跌僅日/週/月 K
caution

volume 單位依標的與 timeframe 不同:

  • 整股標的:分 K 為「成交張數」,日/週/月 K 為「成交股數」(1 張 = 1,000 股)。
  • 興櫃股票:分 K 與日/週/月 K 皆為「成交股數」。
  • 指數:分 K 為「成交金額」,日/週/月 K 為「成交股數」。

Examples

日 K 範例

查詢日 K 並指定日期區間:

from fubon_neo.sdk import FubonSDK, Order

sdk = FubonSDK()

accounts = sdk.login("Your ID", "Your password", "Your cert path", "Your cert password") # 需登入後,才能取得行情權限

sdk.init_realtime() # 建立行情連線

reststock = sdk.marketdata.rest_client.stock
# reststock.historical.candles(**{"symbol": "0050", "from": "2026-06-01", "to": "2026-06-05"}) # 2.2.3 及以前版本

## 2.2.4 及以後版本 (使用 Exception 進行例外處理)
from fubon_neo.fugle_marketdata.rest.base_rest import FugleAPIError

try:
reststock.historical.candles(**{"symbol": "0050", "from": "2026-06-01", "to": "2026-06-05", "fields": "open,high,low,close,volume,turnover,change"})
except FugleAPIError as e:
print(f"Error: {e}")
print("------------")
print(f"Status Code: {e.status_code}") # 例: 429
print(f"Response Text: {e.response_text}") # 例: {"statusCode":429,"message":"Rate limit exceeded"}

Response Body:

{
"symbol": "0050",
"type": "EQUITY",
"exchange": "TWSE",
"market": "TSE",
"timeframe": "D",
"data": [
{
"date": "2026-06-05",
"open": 105,
"high": 105.35,
"low": 102.8,
"close": 104.15,
"volume": 337031371,
"turnover": 34914259576,
"change": -1.95
},
{
"date": "2026-06-04",
"open": 106.75,
"high": 107,
"low": 106.05,
"close": 106.1,
"volume": 236782252,
"turnover": 25181889523,
"change": -1.5
},
{
"date": "2026-06-03",
"open": 107.3,
"high": 107.85,
"low": 107.1,
"close": 107.6,
"volume": 79592362,
"turnover": 8559208311,
"change": 1.9
}
]
}

分 K 範例

查詢 1 分 K 並指定日期區間(含均價 average):

from fubon_neo.sdk import FubonSDK, Order

sdk = FubonSDK()

accounts = sdk.login("Your ID", "Your password", "Your cert path", "Your cert password") # 需登入後,才能取得行情權限

sdk.init_realtime() # 建立行情連線

reststock = sdk.marketdata.rest_client.stock

## 2.2.4 及以後版本 (使用 Exception 進行例外處理)
from fubon_neo.fugle_marketdata.rest.base_rest import FugleAPIError

try:
reststock.historical.candles(**{"symbol": "2330", "from": "2026-07-09", "to": "2026-07-09", "timeframe": "1", "fields": "open,high,low,close,volume,average"})
except FugleAPIError as e:
print(f"Error: {e}")
print("------------")
print(f"Status Code: {e.status_code}") # 例: 429
print(f"Response Text: {e.response_text}") # 例: {"statusCode":429,"message":"Rate limit exceeded"}

Response Body:

{
"symbol": "2330",
"type": "EQUITY",
"exchange": "TWSE",
"market": "TSE",
"timeframe": "1",
"data": [
{
"date": "2026-07-09T13:30:00.000+08:00",
"open": 2415,
"high": 2415,
"low": 2415,
"close": 2415,
"volume": 6261,
"average": 2433.85
},
{
"date": "2026-07-09T13:24:00.000+08:00",
"open": 2430,
"high": 2435,
"low": 2430,
"close": 2435,
"volume": 114,
"average": 2439.56
},
{
"date": "2026-07-09T13:23:00.000+08:00",
"open": 2435,
"high": 2440,
"low": 2430,
"close": 2430,
"volume": 262,
"average": 2439.6
}
]
}
info

'*' 表示必揭示欄位。