2023年7月19日 星期三

【Python交易程式開發現場53】接收商品報價(1) | 將訂閱商品資訊存入記憶體

使用QTableWidget訂閱商品報價(1) | 將訂閱商品資訊填入QtTableWidget


結論: 修改了Part V. 第670行後, 即搞定

##############################################################################
# V - View | 主視窗類別 | 按鈕送出訊號所對應之槽函數
##############################################################################

MyMainWindow():

    def twTest3(self):  #ctw slot function
        print("3-查詢")    
        self.listWidget.addItem("3-查詢")
        self.listWidget.addItem("m_nCode: " + str(twQueryStocks("0", STOCK_ID)) )  
        #def twQueryStocks(twPageNo, twStocks):  #(ctw-3-2. 查詢)
        # 3-【查詢】    
        # twPageNo: self.txtPageNo.get().replace(' ','')
        # twStocks: self.txtStocks.get().replace(' ','')      



1. 選擇訂閱的商品:


##############################################################################
# III. 群益API 按鈕事件所對應之相閞 tw Slot槽函數 (於V.槽函數所會用到的子工具函數區)
##############################################################################

#-----------------------------------------------------------------------------
#  Part1. (tw函數1) 呼叫API函數區,tw呼叫類函數(連線,查報價,下單,查倉位)【III.1】
#-----------------------------------------------------------------------------

twQueryStock()

def twQueryStocks(twPageNo, twStocks):  #(ctw-3-2. 查詢)   # skq3
# 3-【查詢】    
# twPageNo: self.txtPageNo.get().replace(' ','')
# twStocks: self.txtStocks.get().replace(' ','')    
    try:
        if(twPageNo == ''):
            pn = 0
        else:
            pn = int(twPageNo) #?
        m_nCode = skQ.SKQuoteLib_RequestStocks(pn,twStocks)
        return m_nCode
    except Exception as e:
            messagebox.showerror("error!",e)


第670行

##############################################################################
# V - View | 主視窗類別 | 按鈕送出訊號所對應之槽函數
##############################################################################

MyMainWindow():

    def twTest3(self):  #ctw slot function
        print("3-查詢")    
        self.listWidget.addItem("3-查詢")
        self.listWidget.addItem("m_nCode: " + str(twQueryStocks("0", "TX00")) )  
        #def twQueryStocks(twPageNo, twStocks):  #(ctw-3-2. 查詢)
        # 3-【查詢】    
        # twPageNo: self.txtPageNo.get().replace(' ','')
        # twStocks: self.txtStocks.get().replace(' ','')    


2. 訂閱商品報價回傳:

第500行

##############################################################################
#  IV - 群益API事件
##############################################################################
class SKQuoteLibEvents:

    def OnNotifyQuoteLONG(self, sMarketNo, nStockidx):    #ctw # 3-【查詢】回報    
        pStock = sk.SKSTOCKLONG()
        m_nCode = skQ.SKQuoteLib_GetStockByIndexLONG(sMarketNo, nStockidx, pStock)
        strMsg = '代碼:',pStock.bstrStockNo,'--名稱:',pStock.bstrStockName,'--開盤價:',str(pStock.nOpen/math.pow(10,pStock.sDecimal)),'--最高:',\
            str(pStock.nHigh/math.pow(10,pStock.sDecimal)),'--最低:',\
            str(pStock.nLow/math.pow(10,pStock.sDecimal)),'--成交價:',str(pStock.nClose/math.pow(10,pStock.sDecimal))\
            ,'--總量:',str(pStock.nTQty)
               
        twStrMsg=twTuple_2_Str(strMsg)
        send.run(twStrMsg)  #發射Signal訊號
       
        """
        strMsg = Gobal_ServerTime_Information["text"], \
            '--1代碼:',pStock.bstrStockNo,\
            '--2成交價:',pStock.nClose/math.pow(10,pStock.sDecimal),\
            '--3成交量:',pStock.nTickQty,\
            '--4總量:',pStock.nTQty,\
            '--5買量:',pStock.nBc,\
            '--6賣量:',pStock.nAc,\
            '--7最高:',pStock.nHigh/math.pow(10,pStock.sDecimal),\
            '--8最低:',pStock.nLow/math.pow(10,pStock.sDecimal)
        WriteMessage(strMsg,Gobal_Quote_ListInformation)
        """
        #twSaveQuoteToFile(pStock)






沒有留言:

張貼留言

prog-0318

test test1 Written with StackEdit .