操作功能前請先登入
詳細功能請參考API Reference/dquote
查詢成交價
#查詢成交和最佳買賣價接收範例
productid='TXFI4'#商品代碼
if loginresponse.ok == True:
display(fig)
display(fig2)
#查詢開盤價量
tickdataopenResponse=api.dquote.query_tick_data_open(productid)
if tickdataopenResponse.ok == True:
tickdataopen=tickdataopenResponse.data
cur = list(fig2.data[0].cells.values)
cur[col2_idx['開盤時間']] = tickdataopen.opentime
cur[col2_idx['開盤價']] = tickdataopen.openprice
cur[col2_idx['開盤量'] ]= tickdataopen.openquantity
with fig.batch_update():
fig2.data[0].cells.values = cur
else:
print("tickdataopen "+tickdataopenResponse.error)
#查詢成交價量
tickDataTradeResponse=api.dquote.query_tick_data_trade(productid)
if tickDataTradeResponse.ok == True:
tickdatatrade=tickDataTradeResponse.data
cur = list(fig.data[0].cells.values)
cur[col_idx['成交時間']] = tickdatatrade.matchtime
cur[col_idx['成交價']] = tickdatatrade.matchprice
cur[col_idx['成交量']] = tickdatatrade.matchquantity
with fig.batch_update():
fig.data[0].cells.values = cur
else:
print("tickdatatrade "+tickDataTradeResponse.error)
#查詢最高最低價
tickDataHignLowResponse=api.dquote.query_tick_data_high_low(productid)
if tickDataHignLowResponse.ok == True:
tickdatahighlow=tickDataHignLowResponse.data
cur = list(fig2.data[0].cells.values)
cur[col2_idx['最高']] = tickdatahighlow.dayhighprice
cur[col2_idx['最低']] = tickdatahighlow.daylowprice
cur[col2_idx['最高低價時間']] = tickdatahighlow.showtime
with fig.batch_update():
fig2.data[0].cells.values = cur
else:
print("tickdatahighlow "+tickDataTradeResponse.error)
#查詢最佳買賣價量
tickDataBeforeBidOfferResponse=api.dquote.query_tick_data_bid_offer(productid)
if tickDataBeforeBidOfferResponse.ok == True:
tickdatabidoffer=tickDataBeforeBidOfferResponse.data
cur = list(fig.data[0].cells.values)
cur[col_idx['買價1']] = tickdatabidoffer.bp1
cur[col_idx['買量1']] = tickdatabidoffer.bq1
cur[col_idx['買價2']] = tickdatabidoffer.bp2
cur[col_idx['買量2']] = tickdatabidoffer.bq2
cur[col_idx['買價3']] = tickdatabidoffer.bp3
cur[col_idx['買量3']] = tickdatabidoffer.bq3
cur[col_idx['買價4']] = tickdatabidoffer.bp4
cur[col_idx['買量4']] = tickdatabidoffer.bq4
cur[col_idx['買價5']] = tickdatabidoffer.bp5
cur[col_idx['買量5']] = tickdatabidoffer.bq5
cur[col_idx['賣價1']] = tickdatabidoffer.sp1
cur[col_idx['賣量1']] = tickdatabidoffer.sq1
cur[col_idx['賣價2']] = tickdatabidoffer.sp2
cur[col_idx['賣量2']] = tickdatabidoffer.sq2
cur[col_idx['賣價3']] = tickdatabidoffer.sp3
cur[col_idx['賣量3']] = tickdatabidoffer.sq3
cur[col_idx['賣價4']] = tickdatabidoffer.sp4
cur[col_idx['賣量4']] = tickdatabidoffer.sq4
cur[col_idx['賣價5']] = tickdatabidoffer.sp5
cur[col_idx['賣量5']] = tickdatabidoffer.sq5
with fig.batch_update():
fig.data[0].cells.values = cur
else:
print("tickdatabidoffer "+tickDataBeforeBidOfferResponse.error)
註冊成交和最佳買賣價接收
#訂閱成交和最佳買賣價接收範例
productid='TXFG4'#商品代碼
#開盤價量接收處理
def on_tick_data_open(tickdataopen: DTickDataOpen):
cur = list(fig2.data[0].cells.values)
cur[col_idx['開盤時間']] = tickdataopen.opentime
cur[col_idx['開盤價']] = tickdataopen.openprice
cur[col_idx['開盤量'] ]= tickdataopen.openquantity
with fig2.batch_update():
fig2.data[0].cells.values = cur
#成交價量接收處理
def on_tick_data_trade(tickdatatrade: DTickDataTrade):
cur = list(fig.data[0].cells.values)
cur[col_idx['成交時間']] = tickdatatrade.matchtime
cur[col_idx['成交價']] = tickdatatrade.matchprice
cur[col_idx['成交量']] = tickdatatrade.matchquantity
with fig.batch_update():
fig.data[0].cells.values = cur
#最高最低價接收處理
def on_tick_data_high_low(tickdatahighlow: DTickDataHighLow):
cur = list(fig2.data[0].cells.values)
cur[col_idx['最高']] = tickdatahighlow.dayhighprice
cur[col_idx['最低']] = tickdatahighlow.daylowprice
cur[col_idx['最高低價時間']] = tickdatahighlow.showtime
with fig2.batch_update():
fig2.data[0].cells.values = cur
#最佳買賣價量接收處理
def on_tick_data_bid_offer(tickdatabidoffer: DTickDataBidOffer):
cur = list(fig.data[0].cells.values)
cur[col_idx['買價1']] = tickdatabidoffer.bp1
cur[col_idx['買量1']] = tickdatabidoffer.bq1
cur[col_idx['買價2']] = tickdatabidoffer.bp2
cur[col_idx['買量2']] = tickdatabidoffer.bq2
cur[col_idx['買價3']] = tickdatabidoffer.bp3
cur[col_idx['買量3']] = tickdatabidoffer.bq3
cur[col_idx['買價4']] = tickdatabidoffer.bp4
cur[col_idx['買量4']] = tickdatabidoffer.bq4
cur[col_idx['買價5']] = tickdatabidoffer.bp5
cur[col_idx['買量5']] = tickdatabidoffer.bq5
cur[col_idx['賣價1']] = tickdatabidoffer.sp1
cur[col_idx['賣量1']] = tickdatabidoffer.sq1
cur[col_idx['賣價2']] = tickdatabidoffer.sp2
cur[col_idx['賣量2']] = tickdatabidoffer.sq2
cur[col_idx['賣價3']] = tickdatabidoffer.sp3
cur[col_idx['賣量3']] = tickdatabidoffer.sq3
cur[col_idx['賣價4']] = tickdatabidoffer.sp4
cur[col_idx['賣量4']] = tickdatabidoffer.sq4
cur[col_idx['賣價5']] = tickdatabidoffer.sp5
cur[col_idx['賣量5']] = tickdatabidoffer.sq5
with fig.batch_update():
fig.data[0].cells.values = cur
#訂閱接收事件
api.dquote.on_tick_data_open = on_tick_data_open
api.dquote.on_tick_data_high_low = on_tick_data_high_low
api.dquote.on_tick_data_trade = on_tick_data_trade
api.dquote.on_tick_data_bid_offer = on_tick_data_bid_offer
if loginresponse.ok == True:
subok,msg=api.dquote.subscribe_trade_bid_offer(productid)
print(f'註冊成交買賣價量 {productid} {subok} {msg}')
subok,msg=api.dquote.subscribe_high_low(productid)
print(f'註冊最高最低價 {productid} {subok} {msg}')
subok,msg=api.dquote.subscribe_open(productid)
print(f'註冊開收盤價 {productid} {subok} {msg}')
display(fig)
display(fig2)
else:
print(loginresponse.error)
##反註冊成交和最佳買賣價接收
#反註冊報價
unsub_ok,msg=api.dquote.unsubscribe_trade_bid_offer(productid)
print(f'反註冊成交買賣價量 {productid} {unsub_ok} {msg}')
unsub_ok,msg=api.dquote.unsubscribe_high_low(productid)
print(f'反註冊最高最低價 {productid} {unsub_ok} {msg}')
unsub_ok,msg=api.dquote.unsubscribe_open(productid)
print(f'反註冊開收盤價 {productid} {unsub_ok} {msg}')
查詢現貨價
#查詢現貨價範例
index_id='TXF'#代碼
display(fig3)
if loginresponse.ok == True:
#查詢
indexdataResponse=api.dquote.query_index_data(index_id)
if indexdataResponse.ok == True:
indexdata=indexdataResponse.data
cur = list(fig3.data[0].cells.values)
cur[col3_idx['現貨統計時間']] = indexdata.index_time
cur[col3_idx['現貨價格']] = indexdata.index_value
with fig3.batch_update():
fig3.data[0].cells.values = cur
else:
print(indexdataResponse.error)
訂閱現貨價量接收
#訂閱現貨價量接收範例
index_id='TXF' #代碼
#接收現貨價量處理
def on_index_data(indexdata: DIndexData):
cur = list(fig3.data[0].cells.values)
cur[col3_idx['現貨統計時間']] = indexdata.index_time
cur[col3_idx['現貨價格']] = indexdata.index_value
with fig3.batch_update():
fig3.data[0].cells.values = cur
#訂閱事件
api.dquote.on_index_data = on_index_data
if loginresponse.ok == True:
#註冊報價
subok,msg=api.dquote.subscribe_index_data('1',index_id)
print(f'註冊現貨價量 {index_id} {subok} {msg}')
display(fig3)
else:
print(loginresponse.error)
反註冊現貨價接收
#反註冊現貨價接收
unsub_ok,msg=api.dquote.unsubscribe_indexdata('1',index_id)
print(f'反註冊現貨價量 {index_id} {unsub_ok} {msg}')