操作功能前請先登入
詳細功能請參考API Reference/fquote
查詢成交價
透過fquote.query_tick_data_trade方法實作,帶入商品
回傳物件為FTickDataTradeResponse
ok為True表示查詢成功,data型別為FTickDataTrade
ok為False表示查詢失敗,error會呈現錯誤訊息
#查詢成交和最佳買賣價範例
#查詢最後成交價量
response = unitrade.fquote.query_tick_data_trade("CME", "NQ", "202509", "", "F"))
# FTickDataTradeResponse(ok=True, error='', data=FTickDataTrade(
# exchage='CME',//交易所
# symbol='NQ',//商品代號
# ym='202509',//年月
# cp='F',//CP
# strike='',//履約價
# display_denominator=1.0,//分母
# display_multiply=1.0,//倍率
# total=33017,//總量
# lastprice=21857.75,//成交價
# lastvolume=1,//成交量
# time='141835084'//成交時間
#))
查詢最佳買進報價
透過fquote.query_tick_data_bid方法實作,帶入商品
回傳物件為FTickDataBidResponse
ok為True表示查詢成功,data型別為FTickDataBid
ok為False表示查詢失敗,error會呈現錯誤訊息
response = unitrade.fquote.query_tick_data_bid("CME", "NQ", "202509", "", "F")
# FTickDataBidResponse(ok=True, error='', data=FTickDataBid(
# exchage='CME',//交易所
# symbol='NQ',//商品代號
# ym='202509',//年月
# cp='F',//CP
# strike='',//履約價
# display_denominator=1.0,//分母
# display_multiply=1.0,//倍率
# BidDOM1Price=21846.5,//最佳買價1
# BidDOM1Volume=1,//最佳買量1
# BidDOM2Price=21846.25,//最佳買價2
# BidDOM2Volume=3,//最佳買量2
# BidDOM3Price=21846.0,//最佳買價3
# BidDOM3Volume=4,//最佳買量3
# BidDOM4Price=21845.75,//最佳買價4
# BidDOM4Volume=1,//最佳買量4
# BidDOM5Price=21845.5,//最佳買價5
# BidDOM5Volume=2,//最佳買量5
# BidDOM6Price=21845.25,//最佳買價6
# BidDOM6Volume=2,//最佳買量6
# BidDOM7Price=21845.0,//最佳買價7
# BidDOM7Volume=5,//最佳買量7
# BidDOM8Price=21844.75,//最佳買價8
# BidDOM8Volume=4,//最佳買量8
# BidDOM9Price=21844.25,//最佳買價9
# BidDOM9Volume=5,//最佳買量9
# BidDOM10Price=21844.0,//最佳買價10
# BidDOM10Volume=5//最佳買量10
#))
查詢最佳賣出報價
透過fquote.query_tick_data_offer方法實作,帶入商品
回傳物件為FTickDataOfferResponse
ok為True表示查詢成功,data型別為FTickDataOffer
ok為False表示查詢失敗,error會呈現錯誤訊息
response = unitrade.fquote.query_tick_data_offer("CME", "NQ", "202509", "", "F")
# FTickDataOfferResponse(ok=True, error='', data=FTickDataOffer(
# exchage='CME',//交易所
# symbol='NQ',//商品代號
# ym='202509',//年月
# cp='F',//CP
# strike='',//履約價
# display_denominator=1.0,//分母
# display_multiply=1.0,//倍率
# OfferDOM1Price=21844.0,//最佳賣價1
# OfferDOM1Volume=1,//最佳賣量1
# OfferDOM2Price=21844.25,//最佳賣價2
# OfferDOM2Volume=2,//最佳賣量2
# OfferDOM3Price=21844.5,//最佳賣價3
# OfferDOM3Volume=3,//最佳賣量3
# OfferDOM4Price=21844.75,//最佳賣價4
# OfferDOM4Volume=2,//最佳賣量4
# OfferDOM5Price=21845.0,//最佳賣價5
# OfferDOM5Volume=1,//最佳賣量5
# OfferDOM6Price=21845.25,//最佳賣價6
# OfferDOM6Volume=1,//最佳賣量6
# OfferDOM7Price=21845.5,//最佳賣價7
# OfferDOM7Volume=4,//最佳賣量7
# OfferDOM8Price=21845.75,//最佳賣價8
# OfferDOM8Volume=1,//最佳賣量8
# OfferDOM9Price=21846.0,//最佳賣價9
# OfferDOM9Volume=4,//最佳賣量9
# OfferDOM10Price=21846.25,//最佳賣價10
# OfferDOM10Volume=3//最佳賣量10
#))
隱含買賣價量
透過fquote.query_tick_data_implied方法實作,帶入商品
回傳物件為FTickDataImpliedResponse
ok為True表示查詢成功,data型別為FTickDataImplied
ok為False表示查詢失敗,error會呈現錯誤訊息
response = unitrade.fquote.query_tick_data_implied("CME", "NQ", "202509", "", "F")
# FTickDataImpliedResponse(ok=True, error='', data=FTickDataImplied(
# exchage='CME',//交易所
# symbol='NQ',//商品代號
# ym='202509',//年月
# cp='F',//CP
# strike='',//履約價
# display_denominator=1.0,//分母
# display_multiply=1.0,//倍率
# ImpliedBidPrice=0.0,//隱含買價
# ImpliedBidVolume=0,//隱含買量
# ImpliedOfferPrice=0.0,//隱含賣價
# ImpliedOfferVolume=0//隱含賣量
#)
查詢開收盤價
透過fquote.query_tick_data_open_close方法實作,帶入商品
回傳物件為FTickDataOpencloseResponse
ok為True表示查詢成功,data型別為FTickDataOpenclose
ok為False表示查詢失敗,error會呈現錯誤訊息
response = unitrade.fquote.query_tick_data_open_close("CME", "NQ", "202509", "", "F")
# FTickDataOpencloseResponse(ok=True, error='', data=FTickDataOpenclose
# exchage='CME',//交易所
# symbol='NQ',//商品代號
# ym='202509',//年月
# cp='F',//CP
# strike='',//履約價
# display_denominator=1.0,//分母
# display_multiply=1.0,//倍率
# Opening=21956.75,//開盤價
# Closing=21842.75//收盤價
#))
查詢最高最低價
透過fquote.query_tick_data_high_low方法實作,帶入商品
回傳物件為FTickDataHighLowResponse
ok為True表示查詢成功,data型別為FTickDataHighLow
ok為False表示查詢失敗,error會呈現錯誤訊息
response = unitrade.fquote.query_tick_data_high_low("CME", "NQ", "202509", "", "F")
# FTickDataHighLowResponse(ok=True, error='', data=FTickDataHighLow(
# exchage='CME',//交易所
# symbol='NQ',//商品代號
# ym='202509',//年月
# cp='F',//CP
# strike='',//履約價
# display_denominator=1.0,//分母
# display_multiply=1.0,//倍率
# High=21970.75,//最高價
# Low=21790.0//最低價
#))
查詢結算價
透過fquote.query_tick_data_settle方法實作,帶入商品
回傳物件為FTickDataSettleResponse
ok為True表示查詢成功,data型別為FTickDataSettle
ok為False表示查詢失敗,error會呈現錯誤訊息
response = unitrade.fquote.query_tick_data_settle("CME", "NQ", "202509", "", "F")
# FTickDataSettleResponse(ok=True, error='', data=FTickDataSettle(
# exchage='CME',//交易所
# symbol='NQ',//商品代號
# ym='202509',//年月
# cp='F',//CP
# strike='',//履約價
# display_denominator=1.0,//分母
# display_multiply=1.0,//倍率
# CurrStl=21945.25,//目前結算價
# NewStl=21945.25//最新結算價
#))
訂閱成交和最佳買賣價接收
fquote.on_tick_data_trade事件接收成交價量
fquote.on_tick_data_bid事件接收最佳買價
fquote.on_tick_data_offer事件接收最佳賣價
fquote.on_tick_data_implied事件接收隱含價
fquote.on_tick_data_high_low事件接收最高最低價
fquote.on_tick_data_open_close事件接收開收盤價
fquote.on_tick_data_settle事件接收結算價
fquote.subscribe方法可以註冊接收即時行情傳入商品
#訂閱接收事件
unitrade.fquote.on_tick_data_trade = on_tick_data_trade
unitrade.fquote.on_tick_data_bid = on_tick_data_bid
unitrade.fquote.on_tick_data_offer = on_tick_data_offer
unitrade.fquote.on_tick_data_implied = on_tick_data_implied
unitrade.fquote.on_tick_data_high_low = on_tick_data_high_low
unitrade.fquote.on_tick_data_open_close = on_tick_data_open_close
unitrade.fquote.on_tick_data_settle = on_tick_data_settle
# 註冊報價
subok, msg = unitrade.fquote.subscribe("CME", "NQ", "202509", "", "F")
#成交價量處理
def on_tick_data_trade(tickdatatrade: FTickDataTrade):
print(tickdatatrade)
# FTickDataTrade(
# exchage='CME',//交易所
# symbol='NQ',//商品代號
# ym='202509',//年月
# cp='F',//CP
# strike='',//履約價
# display_denominator=1.0,//分母
# display_multiply=1.0,//倍率
# total=33017,//總量
# lastprice=21857.75,//成交價
# lastvolume=1,//成交量
# time='141835084'//成交時間
#))
#最佳買價處理
def on_tick_data_bid(tickdatabid: FTickDataBid):
print(tickdatabid)
# FTickDataBid(
# exchage='CME',//交易所
# symbol='NQ',//商品代號
# ym='202509',//年月
# cp='F',//CP
# strike='',//履約價
# display_denominator=1.0,//分母
# display_multiply=1.0,//倍率
# BidDOM1Price=21846.5,//最佳買價1
# BidDOM1Volume=1,//最佳買量1
# BidDOM2Price=21846.25,//最佳買價2
# BidDOM2Volume=3,//最佳買量2
# BidDOM3Price=21846.0,//最佳買價3
# BidDOM3Volume=4,//最佳買量3
# BidDOM4Price=21845.75,//最佳買價4
# BidDOM4Volume=1,//最佳買量4
# BidDOM5Price=21845.5,//最佳買價5
# BidDOM5Volume=2,//最佳買量5
# BidDOM6Price=21845.25,//最佳買價6
# BidDOM6Volume=2,//最佳買量6
# BidDOM7Price=21845.0,//最佳買價7
# BidDOM7Volume=5,//最佳買量7
# BidDOM8Price=21844.75,//最佳買價8
# BidDOM8Volume=4,//最佳買量8
# BidDOM9Price=21844.25,//最佳買價9
# BidDOM9Volume=5,//最佳買量9
# BidDOM10Price=21844.0,//最佳買價10
# BidDOM10Volume=5//最佳買量10
#))
#最佳賣價處理
def on_tick_data_offer(tickdataOffer: FTickDataOffer):
# FTickDataOffer(
# exchage='CME',//交易所
# symbol='NQ',//商品代號
# ym='202509',//年月
# cp='F',//CP
# strike='',//履約價
# display_denominator=1.0,//分母
# display_multiply=1.0,//倍率
# OfferDOM1Price=21844.0,//最佳賣價1
# OfferDOM1Volume=1,//最佳賣量1
# OfferDOM2Price=21844.25,//最佳賣價2
# OfferDOM2Volume=2,//最佳賣量2
# OfferDOM3Price=21844.5,//最佳賣價3
# OfferDOM3Volume=3,//最佳賣量3
# OfferDOM4Price=21844.75,//最佳賣價4
# OfferDOM4Volume=2,//最佳賣量4
# OfferDOM5Price=21845.0,//最佳賣價5
# OfferDOM5Volume=1,//最佳賣量5
# OfferDOM6Price=21845.25,//最佳賣價6
# OfferDOM6Volume=1,//最佳賣量6
# OfferDOM7Price=21845.5,//最佳賣價7
# OfferDOM7Volume=4,//最佳賣量7
# OfferDOM8Price=21845.75,//最佳賣價8
# OfferDOM8Volume=1,//最佳賣量8
# OfferDOM9Price=21846.0,//最佳賣價9
# OfferDOM9Volume=4,//最佳賣量9
# OfferDOM10Price=21846.25,//最佳賣價10
# OfferDOM10Volume=3//最佳賣量10
#))
#隱含買賣價接收處理
def on_tick_data_implied(ticksataimplied: FTickDataImplied):
print(ticksataimplied)
# FTickDataImplied(
# exchage='CME',//交易所
# symbol='NQ',//商品代號
# ym='202509',//年月
# cp='F',//CP
# strike='',//履約價
# display_denominator=1.0,//分母
# display_multiply=1.0,//倍率
# ImpliedBidPrice=0.0,//隱含買價
# ImpliedBidVolume=0,//隱含買量
# ImpliedOfferPrice=0.0,//隱含賣價
# ImpliedOfferVolume=0//隱含賣量
#)
#最高最低價接收處理
def on_tick_data_high_low(tickdatahighlow: FTickDataHighLow):
print(tickdatahighlow)
# FTickDataHighLow(
# exchage='CME',//交易所
# symbol='NQ',//商品代號
# ym='202509',//年月
# cp='F',//CP
# strike='',//履約價
# display_denominator=1.0,//分母
# display_multiply=1.0,//倍率
# High=21970.75,//最高價
# Low=21790.0//最低價
#))
#開收盤價接收處理
def on_tick_data_open_close(tickdataopenclose: FTickDataOpenclose):
print(tickdataopenclose)
# FTickDataOpenclose
# exchage='CME',//交易所
# symbol='NQ',//商品代號
# ym='202509',//年月
# cp='F',//CP
# strike='',//履約價
# display_denominator=1.0,//分母
# display_multiply=1.0,//倍率
# Opening=21956.75,//開盤價
# Closing=21842.75//收盤價
#))
#結算價接收處理
def on_tick_data_settle(tickdatasettle: FTickDataSettle):
print(tickdatasettle)
# FTickDataSettle(
# exchage='CME',//交易所
# symbol='NQ',//商品代號
# ym='202509',//年月
# cp='F',//CP
# strike='',//履約價
# display_denominator=1.0,//分母
# display_multiply=1.0,//倍率
# CurrStl=21945.25,//目前結算價
# NewStl=21945.25//最新結算價
#))
反註冊報價
fquote.unsubscribe方法可以反註冊停止接收即時行情,傳入商品代碼
#反註冊報價
unsub_ok,msg=unitrade.fquote.unsubscribe("CME", "NQ", "202509", "", "F")
print(f'反註冊報價 {productid} {unsub_ok} {msg}')
查詢歷史K線行情(在V1.0.0.4版本開始提供)
透過fquote.get_history_bardata方法實作, 傳入參數:interval(D:日K、1K:分K). 起始日期.結束日期.商品種類.商品代碼. 取得K線數量
回傳物件為BarDataResponse
以下為查詢1分K範例
response = unitrade.fquote.get_history_bardata("1K", datetime(2025, 6, 10, 0, 0, 0), datetime(2025, 7, 7, 0, 0, 0), "1", "CMX", "GC", "202508", "F", "", 2)
# BarDataResponse(ok=True,
# error='',
# data=[BarData(productId='CMX|GC|202508|F|',
# productkind=None,
# date='20250626',
# time='144500',
# open=3350.3,
# high=3351.1,
# low=3350.2,
# close=3350.6,
# volume=169),
# BarData(productId='CMX|GC|202508|F|',
# productkind=None,
# date='20250626',
# time='144600',
# open=3350.7,
# high=3351.4,
# low=3350.6,
# close=3351.3,
# volume=82)])