操作功能前請先登入

詳細功能請參考API Reference/dquote

Open In Colab

下載範例

查詢行情

成交價量

透過dquote.query_tick_data_trade方法實作,帶入商品代碼
回傳物件為DTickDataTradeResponse
ok為True表示查詢成功,data型別為DTickDataTrade
ok為False表示查詢失敗,error會呈現錯誤訊息

tickDataTradeResponse=unitrade.dquote.query_tick_data_trade('TXFG5')
#單筆成交價範例:
# DTickDataTradeResponse(ok=True, error='', data=DTickDataTrade(
# commodityid='TXFG5',\\商品代號
# infotime='132333276000',\\成交時間
# matchprice=21699.0,\\第一成交價
# matchquantity=2,\\第一成交量
# matchtotalqty=45901,\\成交總量 
# matchbuycnt=31986,\\成交買量
# matchsellcnt=30551,\\成交賣量
# matchtime='132333178000',\\成交時間
# matchpricedata=[],\\第2到第N成交價陣列
# matchqtydata=[]\\第2到第N成交量陣列
#))
#多筆成交價範例:
# DTickDataTradeResponse(ok=True, error='', data=DTickDataTrade(
# commodityid='TXFG5',\\商品代號
# infotime='133333276000',\\成交時間
# matchprice=21699.0,\\第一成交價
# matchquantity=2,\\第一成交量
# matchtotalqty=45901,\\成交總量 
# matchbuycnt=31986,\\成交買量
# matchsellcnt=30551,\\成交賣量
# matchtime='132333178000',\\成交時間
# matchpricedata=[21698.0,21699.0],\\第2到第N成交價陣列
# matchqtydata=[1,2]\\第2到第N成交量陣列
#))

最佳買賣價量

透過dquote.query_tick_data_bid_offer方法實作,帶入商品代碼
回傳物件為DTickDataBidOfferResponse
ok為True表示查詢成功,data型別為DTickDataBidOffer
ok為False表示查詢失敗,error會呈現錯誤訊息

tickDataBeforeBidOfferResponse=unitrade.dquote.query_tick_data_bid_offer('TXFG5')
# DTickDataBidOfferResponse(ok=True, error='', data=DTickDataBidOffer(
# commodityid='TXFG5',\\商品代號
# bp1=21704.0,\\第一檔委買價格
# bp2=21703.0,\\第二檔委買價格
# bp3=21702.0,\\第三檔委買價格
# bp4=21701.0,\\第四檔委買價格
# bp5=21700.0,\\第五檔委買價格
# bq1=5,\\第一檔委買數量
# bq2=3,\\第二檔委買數量
# bq3=7,\\第三檔委買數量
# bq4=3,\\第四檔委買數量
# bq5=5,\\第五檔委買數量
# sp1=21706.0,\\第一檔委賣價格
# sp2=21708.0,\\第二檔委賣價格
# sp3=21709.0,\\第三檔委賣價格
# sp4=21710.0,\\第四檔委賣價格
# sp5=21711.0,\\第五檔委賣價格
# sq1=4,\\第一檔委買數量
# sq2=1,\\第二檔委賣數量
# sq3=3,\\第三檔委賣數量
# sq4=12,\\第四檔委賣數
# sq5=16\\第五檔委賣數量
#)) 

開盤價價量

透過dquote.query_tick_data_open方法實作,帶入商品代碼
回傳物件為DTickDataOpenResponse
ok為True表示查詢成功,data型別為DTickDataOpen
ok為False表示查詢失敗,error會呈現錯誤訊息

tickdataopenResponse=unitrade.dquote.query_tick_data_open('TXFG5')
# DTickDataOpenResponse(ok=True, error='', data=DTickDataOpen(
# commodityid='TXFG5',\\商品代碼
# opentime='084500060000',\\開盤時間
# openprice=21820.0,\\開盤價
# openquantity=159\\開盤量
#))

最高最低價

透過dquote.query_tick_data_high_low方法實作,帶入商品代碼
回傳物件為DTickDataHighLowResponse
ok為True表示查詢成功,data型別為DTickDataHighLow
ok為False表示查詢失敗,error會呈現錯誤訊息

tickDataHignLowResponse=unitrade.dquote.query_tick_data_high_low('TXFG5')
# DTickDataHighLowResponse(ok=True, error='', data=DTickDataHighLow(
# commodityid='TXFG5',\\商品代碼
# showtime='105141451000',\\時間
# dayhighprice=21857.0,\\最高價
# daylowprice=21675.0\\最低價
#)) 

現貨價量

透過dquote.query_index_data方法實作,帶入商品代碼
回傳物件為DIndexDataResponse
ok為True表示查詢成功,data型別為DIndexData
ok為False表示查詢失敗,error會呈現錯誤訊息

#查詢現貨價量範例 
indexdataResponse=unitrade.dquote.query_index_data('TXF')
# DIndexDataResponse(ok=True, error='', data=DIndexData(
# index_kind='TXF',\\現貨代碼
# index_time='133325000000',\\現貨統計時間
# index_value=22003.5\\現貨價
#)) 

接收即時行情

成交和最佳買賣價

註冊

dquote.on_tick_data_trade事件接收即時成交價
dquote.on_tick_data_bid_offer事件接收最佳五檔
dquote.subscribe_trade_bid_offer方法可以註冊接收即時行情傳入商品代碼

#訂閱接收事件
unitrade.dquote.on_tick_data_trade = on_tick_data_trade
unitrade.dquote.on_tick_data_bid_offer = on_tick_data_bid_offer
#訂閱時帶商品代碼
subok,msg=unitrade.dquote.subscribe_trade_bid_offer('TXFG5')
print(f'註冊結果 {subok} {msg}') 
#成交價量接收處理
def on_tick_data_trade(tickdatatrade: DTickDataTrade):
    print(tickdatatrade)
    #DTickDataTrade(
    # commodityid='TXFG5',\\商品代號
    # infotime='132333276000',\\成交時間
    # matchprice=21699.0,\\第一成交價
    # matchquantity=2,\\第一成交量
    # matchtotalqty=45901,\\成交總量 
    # matchbuycnt=31986,\\成交買量
    # matchsellcnt=30551,\\成交賣量
    # matchtime='132333178000',\\成交時間
    # matchpricedata=[],\\第2到第N成交價陣列
    # matchqtydata=[]\\第2到第N成交量陣列
    #)
#最佳買賣價量接收處理
def on_tick_data_bid_offer(tickdatabidoffer: DTickDataBidOffer):
    print(tickdatabidoffer)
    #DTickDataBidOffer(
    # commodityid='TXFG5',\\商品代號
    # bp1=21704.0,\\第一檔委買價格
    # bp2=21703.0,\\第二檔委買價格
    # bp3=21702.0,\\第三檔委買價格
    # bp4=21701.0,\\第四檔委買價格
    # bp5=21700.0,\\第五檔委買價格
    # bq1=5,\\第一檔委買數量
    # bq2=3,\\第二檔委買數量
    # bq3=7,\\第三檔委買數量
    # bq4=3,\\第四檔委買數量
    # bq5=5,\\第五檔委買數量
    # sp1=21706.0,\\第一檔委賣價格
    # sp2=21708.0,\\第二檔委賣價格
    # sp3=21709.0,\\第三檔委賣價格
    # sp4=21710.0,\\第四檔委賣價格
    # sp5=21711.0,\\第五檔委賣價格
    # sq1=4,\\第一檔委買數量
    # sq2=1,\\第二檔委賣數量
    # sq3=3,\\第三檔委賣數量
    # sq4=12,\\第四檔委賣數
    # sq5=16\\第五檔委賣數量
    #)

反註冊

dquote.unsubscribe_trade_bid_offer方法可以反註冊停止接收即時行情,傳入商品代碼

unsub_ok,msg=unitrade.dquote.unsubscribe_trade_bid_offer('TXFA5')
print(f'反註冊結果  {unsub_ok} {msg}')

開盤價量

註冊

dquote.on_tick_data_open事件接收開盤價量
dquote.subscribe_open方法可以註冊接收開盤價量傳入商品代碼

#訂閱接收事件
unitrade.dquote.on_tick_data_open = on_tick_data_open
#訂閱時帶商品代碼
subok,msg=unitrade.dquote.subscribe_open('TXFG5')
print(f'註冊結果 {productid} {subok} {msg}') 
#開盤價量接收處理
def on_tick_data_open(tickdataopen: DTickDataOpen):
    print(tickdataopen) 
    #DTickDataOpen(
    # commodityid='TXFG5',\\商品代碼
    # opentime='084500060000',\\開盤時間
    # openprice=21820.0,\\開盤價
    # openquantity=159\\開盤量
    #)

反註冊

dquote.unsubscribe_open方法可以反註冊停止接收開盤價量,傳入商品代碼

unsub_ok,msg=unitrade.dquote.unsubscribe_open(productid)
print(f'反註冊結果 {productid} {unsub_ok} {msg}') 

最高最低價量

註冊

dquote.on_tick_data_high_low事件接收最高最低價
dquote.subscribe_high_low方法可以註冊接收最高最低價傳入商品代碼

#訂閱接收事件
unitrade.dquote.on_tick_data_high_low = on_tick_data_high_low
#訂閱時帶商品代碼
subok,msg=unitrade.dquote.subscribe_high_low('TXFG5')
print(f'註冊結果 {productid} {subok} {msg}') 
#最高最低價接收處理
def on_tick_data_high_low(tickdatahighlow: DTickDataHighLow):
    print(tickdatahighlow)  
    #DTickDataHighLow(
    # commodityid='TXFG5',\\商品代碼
    # showtime='105141451000',\\時間
    # dayhighprice=21857.0,\\最高價
    # daylowprice=21675.0\\最低價
    #) 

反註冊

dquote.unsubscribe_high_low方法可以反註冊停止接收最高最低價,傳入商品代碼

unsub_ok,msg=unitrade.dquote.unsubscribe_high_low(productid)
print(f'反註冊結果 {productid} {unsub_ok} {msg}')

現貨報價

註冊

dquote.on_index_data事件接收現貨價量
dquote.subscribe_index_data方法可以註冊接收現貨價量傳入商品代碼

#訂閱事件
unitrade.dquote.on_index_data = on_index_data
#註冊報價
subok,msg=unitrade.dquote.subscribe_index_data('1','TXF')
print(f'註冊結果 {index_id} {subok} {msg}')
#接收現貨價量處理
def on_index_data(indexdata: DIndexData):
    print(indexdata) 
    # DIndexData(
    # index_kind='TXF',\\現貨代碼
    # index_time='133325000000',\\現貨統計時間
    # index_value=22003.5\\現貨價
    #) 

反註冊

dquote.unsubscribe_index_data方法可以反註冊停止接收現貨價量,傳入商品代碼

#反註冊現貨價量接收
unsub_ok,msg=unitrade.dquote.unsubscribe_index_data('1',index_id)
print(f'反註冊結果 {index_id} {unsub_ok} {msg}')

接收即時收盤行情資料訊息含結算價及未平倉合約數(在V1.0.0.4版本開始提供)

註冊

dquote.on_tick_data_settle事件接收最高最低價
dquote.subscribe_settle方法可以註冊接收最高最低價傳入商品代碼

#訂閱接收事件
unitrade.dquote.on_tick_data_settle = on_tick_data_settle
#訂閱時帶商品代碼
subok,msg=unitrade.dquote.subscribe_settle('TXFH5')
print(f'註冊結果 {productid} {subok} {msg}') 
def on_tick_data_settle(tickdatasettle: DTickDataSettle):
    print(tickdatasettle)  
    #DTickDataSettle(
    # commodityid='TXFH5',
    #  period_high_price=23414.0,
    #  period_low_price=20375.0,
    #  daily_high_price=23406.0,
    #  daily_low_price=22977.0,
    #  open_price=23241.0,
    #  last_bid_price=22990.0,
    #  last_ask_price=22994.0,
    #  close_price=22990.0,
    #  total_bid_orders=68643,
    #  total_bid_volume=106919,
    #  total_ask_orders=66629,
    #  total_ask_volume=109130,
    #  total_trades=141625,
    #  total_trade_volume=105402,
    #  merged_bid_orders=69154,
    #  merged_bid_volume=109064,
    #  merged_ask_orders=67274,
    #  merged_ask_volume=110849,
    #  merged_volume=105411,
    #  settlement_price=22996.0,
    #  open_interest=95637,
    #  block_trade_volume=0)

反註冊

dquote.unsubscribe_settle方法可以反註冊停止接收即時收盤行情資料訊息含結算價及未平倉合約數,傳入商品代碼

unsub_ok,msg=unitrade.dquote.unsubscribe_settle(productid)
print(f'反註冊結果 {productid} {unsub_ok} {msg}')

查詢收盤行情資料訊息含結算價及未平倉合約數(在V1.0.0.4版本開始提供)

透過dquote.query_tick_data_settle方法實作, 傳入參數:商品代碼 回傳物件為DTickDataSettleResponse

以下為查詢1分K範例

response = unitrade.dquote.query_tick_data_settle("TXFH5")
# DTickDataSettleResponse(ok=True,
#  error='',
#  data=DTickDataSettle(commodityid='TXFH5',
#  period_high_price=23414.0,
#  period_low_price=20375.0,
#  daily_high_price=23406.0,
#  daily_low_price=22977.0,
#  open_price=23241.0,
#  last_bid_price=22990.0,
#  last_ask_price=22994.0,
#  close_price=22990.0,
#  total_bid_orders=68643,
#  total_bid_volume=106919,
#  total_ask_orders=66629,
#  total_ask_volume=109130,
#  total_trades=141625,
#  total_trade_volume=105402,
#  merged_bid_orders=69154,
#  merged_bid_volume=109064,
#  merged_ask_orders=67274,
#  merged_ask_volume=110849,
#  merged_volume=105411,
#  settlement_price=22996.0,
#  open_interest=95637,
#  block_trade_volume=0))

查詢歷史K線行情(在V1.0.0.4版本開始提供)

透過dquote.get_history_bardata方法實作, 傳入參數:interval(D:日K、1K:分K). 起始日期.結束日期.商品種類.商品代碼. 取得K線數量

回傳物件為BarDataResponse

以下為查詢1分K範例

 response = unitrade.dquote.get_history_bardata("1K", datetime(2025, 6, 10, 0, 0, 0), datetime(2025, 7, 7, 0, 0, 0), "1", "MXFG5", 2)
 # BarDataResponse(ok=True,
#  error='',
#  data=[BarData(productId='MXFG5',
#  productkind=None,
#  date='20250627',
#  time='084500',
#  open=22199.0,
#  high=22206.0,
#  low=22186.0,
#  close=22191.0,
#  volume=1608),
#  BarData(productId='MXFG5',
#  productkind=None,
#  date='20250627',
#  time='084600',
#  open=22191.0,
#  high=22195.0,
#  low=22178.0,
#  close=22187.0,
#  volume=761)])