外期行情 註冊接收即時和查詢
FQuote Objects
class FQuote()
on_error
錯誤事件
on_connected
連線成功事件
on_disonnected
斷線事件
on_tick_data_trade
成交價事件..傳入物件:FTickDataTrade
on_tick_data_bid
最佳買價量事件..傳入物件:FTickDataBid
on_tick_data_offer
最佳賣價量事件..傳入物件:FTickDataOffer
on_tick_data_implied
隱含價事件..傳入物件:FTickDataImplied
on_tick_data_high_low
最高最低價事件..傳入物件:FTickDataHighLow
on_tick_data_open_close
開盤價事件..傳入物件:FTickDataOpenclose
on_tick_data_settle
結算價事件..傳入物件:FTickDataOpen
get_current_server
def get_current_server()
目前連結主機
回傳值 str
範例
server = unitrade.fquote.get_current_server()
print(server) # 輸出目前連結的主機
get_server_list
def get_server_list()
透過可連結主機
回傳值 dict[Server]
型別 | 說明 | |
---|---|---|
key | str | servername |
value | Server | 主機物件 |
範例
server_list = unitrade.fquote.get_server_list()
for servername, server in server_list.items():
print(f'主機名稱: {servername})
set_sever_by_name
def set_sever_by_name(servername)
透過主機名稱切換連結主機
參數
參數 | 型別 | 說明 |
---|---|---|
servername | str | 主機名稱 |
回傳值 bool
型別 | 說明 |
---|---|
True | 切換連線成功 |
False | 切換連線失敗 |
範例
success = unitrade.fquote.set_sever_by_name("xxx")
if success:
print("連線成功")
else:
print("連線失敗")
get_subscribe
def get_subscribe()
查詢已註冊商品
回傳值 list[str]
型別 | 說明 |
---|---|
list | 註冊商品清單 |
範例
subscribes = unitrade.fquote.get_subscribe()
query_tick_data_trade
def query_tick_data_trade(exchange, symbol, ym, strike,
cp) -> FTickDataTradeResponse
查詢最後成交價量
參數
參數 | 型別 | 說明 |
---|---|---|
exchange | str | 交易所 |
symbol | str | 商品代號 |
ym | str | 年月 |
cp | str | CP |
strike | str | 履約價 |
回傳值 FTickDataTradeResponse
型別 | 說明 | |
---|---|---|
ok | bool | 是否成功 |
error | str | 錯誤訊息 |
data | FTickDataTrade | 成交價量資料 |
範例
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', strike='', display_denominator=1.0, display_multiply=1.0, total=33017, lastprice=21857.75, lastvolume=1, time='141835084'))
query_tick_data_bid
def query_tick_data_bid(exchange, symbol, ym, strike,
cp) -> FTickDataBidResponse
查詢最佳買進報價
參數
參數 | 型別 | 說明 |
---|---|---|
exchange | str | 交易所 |
symbol | str | 商品代號 |
ym | str | 年月 |
cp | str | CP |
strike | str | 履約價 |
回傳值 FTickDataBidResponse
型別 | 說明 | |
---|---|---|
ok | bool | 是否成功 |
error | str | 錯誤訊息 |
data | FTickDataBid | 最佳買進報價 |
範例
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', strike='', display_denominator=1.0, display_multiply=1.0, BidDOM1Price=21846.5, BidDOM1Volume=1, BidDOM2Price=21846.25, BidDOM2Volume=3, BidDOM3Price=21846.0, BidDOM3Volume=4, BidDOM4Price=21845.75, BidDOM4Volume=1, BidDOM5Price=21845.5, BidDOM5Volume=2, BidDOM6Price=21845.25, BidDOM6Volume=2, BidDOM7Price=21845.0, BidDOM7Volume=5, BidDOM8Price=21844.75, BidDOM8Volume=4, BidDOM9Price=21844.25, BidDOM9Volume=5, BidDOM10Price=21844.0, BidDOM10Volume=5))
query_tick_data_offer
def query_tick_data_offer(exchange, symbol, ym, strike,
cp) -> FTickDataOfferResponse
最佳賣出報價
參數
參數 | 型別 | 說明 |
---|---|---|
exchange | str | 交易所 |
symbol | str | 商品代號 |
ym | str | 年月 |
cp | str | CP |
strike | str | 履約價 |
回傳值 FTickDataOfferResponse
型別 | 說明 | |
---|---|---|
ok | bool | 是否成功 |
error | str | 錯誤訊息 |
data | FTickDataOffer | 最佳賣出報價 |
範例
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', strike='', display_denominator=1.0, display_multiply=1.0, OfferDOM1Price=21844.0, OfferDOM1Volume=1, OfferDOM2Price=21844.25, OfferDOM2Volume=2, OfferDOM3Price=21844.5, OfferDOM3Volume=3, OfferDOM4Price=21844.75, OfferDOM4Volume=2, OfferDOM5Price=21845.0, OfferDOM5Volume=1, OfferDOM6Price=21845.25, OfferDOM6Volume=1, OfferDOM7Price=21845.5, OfferDOM7Volume=4, OfferDOM8Price=21845.75, OfferDOM8Volume=1, OfferDOM9Price=21846.0, OfferDOM9Volume=4, OfferDOM10Price=21846.25, OfferDOM10Volume=3))
query_tick_data_implied
def query_tick_data_implied(exchange, symbol, ym, strike,
cp) -> FTickDataImpliedResponse
隱含買賣價量
參數
參數 | 型別 | 說明 |
---|---|---|
exchange | str | 交易所 |
symbol | str | 商品代號 |
ym | str | 年月 |
cp | str | CP |
strike | str | 履約價 |
回傳值 FTickDataImpliedResponse
型別 | 說明 | |
---|---|---|
ok | bool | 是否成功 |
error | str | 錯誤訊息 |
data | FTickDataImplied | 隱含買賣價量 |
範例
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', strike='', display_denominator=1.0, display_multiply=1.0, ImpliedBidPrice=0.0, ImpliedBidVolume=0, ImpliedOfferPrice=0.0, ImpliedOfferVolume=0))
query_tick_data_open_close
def query_tick_data_open_close(exchange, symbol, ym, strike,
cp) -> FTickDataOpencloseResponse
查詢開收盤價
參數
參數 | 型別 | 說明 |
---|---|---|
exchange | str | 交易所 |
symbol | str | 商品代號 |
ym | str | 年月 |
cp | str | CP |
strike | str | 履約價 |
回傳值 FTickDataOpencloseResponse
型別 | 說明 | |
---|---|---|
ok | bool | 是否成功 |
error | str | 錯誤訊息 |
data | FTickDataOpenclose | 開收盤價 |
範例
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', strike='', display_denominator=1.0, display_multiply=1.0, Opening=21956.75, Closing=21842.75))
query_tick_data_high_low
def query_tick_data_high_low(exchange, symbol, ym, strike,
cp) -> FTickDataHighLowResponse
查詢最高最低價
參數
參數 | 型別 | 說明 |
---|---|---|
exchange | str | 交易所 |
symbol | str | 商品代號 |
ym | str | 年月 |
cp | str | CP |
strike | str | 履約價 |
回傳值 FTickDataHighLowResponse
型別 | 說明 | |
---|---|---|
ok | bool | 是否成功 |
error | str | 錯誤訊息 |
data | FTickDataHighLow | 開收盤價 |
範例
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', strike='', display_denominator=1.0, display_multiply=1.0, High=21970.75, Low=21790.0))
query_tick_data_settle
def query_tick_data_settle(exchange, symbol, ym, strike,
cp) -> FTickDataSettleResponse
查詢結算價
參數
參數 | 型別 | 說明 |
---|---|---|
exchange | str | 交易所 |
symbol | str | 商品代號 |
ym | str | 年月 |
cp | str | CP |
strike | str | 履約價 |
回傳值 FTickDataSettleResponse
型別 | 說明 | |
---|---|---|
ok | bool | 是否成功 |
error | str | 錯誤訊息 |
data | FTickDataSettle | 結算價 |
範例
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', strike='', display_denominator=1.0, display_multiply=1.0, CurrStl=21945.25, NewStl=21945.25))
subscribe
def subscribe(exchange: str, symbol: str, ym: str, cp: str,
strike: str) -> Tuple[bool, str]
註冊
參數
參數 | 型別 | 說明 |
---|---|---|
exchange | str | 交易所 |
symbol | str | 商品代號 |
ym | str | 年月 |
cp | str | CP |
strike | str | 履約價 |
回傳值 Tuple[bool, str]
型別 | 說明 |
---|---|
bool | 是否成功 |
str | 錯誤訊息 |
unsubscribe
def unsubscribe(exchange: str, symbol: str, ym: str, cp: str,
strike: str) -> Tuple[bool, str]
反註冊
參數
參數 | 型別 | 說明 |
---|---|---|
exchange | str | 交易所 |
symbol | str | 商品代號 |
ym | str | 年月 |
cp | str | CP |
strike | str | 履約價 |
回傳值 Tuple[bool, str]
型別 | 說明 |
---|---|
bool | 是否成功 |
str | 錯誤訊息 |
get_history_bardata
def get_history_bardata(interval, startdate, enddate, productkind, exchange,
symbol, ym, cp, strike, count) -> BarDataResponse
查詢歷史K線資料
Parameters
Name | Type | Description |
---|---|---|
interval | str | D:日K、1K:分K |
startdate | datetime | 起始日期 (格式: datetime(YYYY, MM, DD, HH, mm ,ss)) |
enddate | datetime | 結束日期 (格式: datetime(YYYY, MM, DD, HH, mm ,ss)) |
productkind | str | 商品種類 1:期貨 2:選擇權 4:期貨價差 |
exchange | str | 交易所代號 |
symbol | str | 商品代號 |
ym | str | 年月 (格式: YYYYMM) |
cp | str | 選擇權類型 (F: 期貨, C: 選擇權Call, P: 選擇權Put) |
strike | str | 履約價(選擇權用) |
count | int | 取得K線數量 |
Returns BarDataResponse
Type | Description | |
---|---|---|
ok | bool | 是否成功 |
error | str | 錯誤訊息 |
data | List[BarData] | 歷史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)])
close
def close()
關閉物件
Format Objects
class Format()
I020_HEAD
成交價揭示
I021_HEAD
最高最低價揭示
I022_HEAD
盤前揭示成交價揭示
I060_HEAD
現貨價
I080_HEAD
委託簿揭示
I082_HEAD
盤前委託簿揭示
TICKDATATRADE
即時成交價量
TICKDATABID
即時最佳買進報價
TICKDATAOFFER
即時最佳賣出報價
TICKDATAIMPLIED
即時隱含買賣價量
TICKDATAHIGHLOW
即時最高最低價
TICKDATAOPENCLOSE
即時開收盤價
TICKDATASETTLE
即時結算價