操作功能前請先登入

詳細功能請參考API Reference/dquote

Open In Colab

查詢成交價

#查詢成交和最佳買賣價接收範例  
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}')