def getMyStockAcntInfo(self): inXAQuery = win32com.client.DispatchWithEvents("XA_DataSet.XAQuery", XAQueryEvents) inXAQuery.LoadFromResFile("C:\\eBEST\\xingAPI\\Res\\CSPAQ12300.res") inXAQuery.SetFieldData('CSPAQ12300InBlock1', 'RecCnt', 0, 1) inXAQuery.SetFieldData('CSPAQ12300InBlock1', 'AcntNo', 0, self.user.account_number) inXAQuery.SetFieldData('CSPAQ12300InBlock1', 'Pwd', 0, self.user.account_pw) inXAQuery.SetFieldData('CSPAQ12300InBlock1', 'BalCreTp', 0, 0) #0: 전체, 1: 현물, 9: 선물대용 inXAQuery.SetFieldData('CSPAQ12300InBlock1', 'CmsnAppTpCode', 0, 1)#0: 수수료 미적용, 1: 수수료 적용 inXAQuery.SetFieldData('CSPAQ12300InBlock1', 'D2balBaseQryTp', 0, 1)#0: 전부조회, 1: 잔고 0 이상만 조회 inXAQuery.SetFieldData('CSPAQ12300InBlock1', 'UprcTpCode', 0, 0)#0: 평균단가, 1: BEP단가 inXAQuery.Request(False) while XAQueryEvents.queryState == 0: pythoncom.PumpWaitingMessages() XAQueryEvents.queryState = 0 nCount = inXAQuery.GetBlockCount('CSPAQ12300OutBlock3') #내가 소유한 주식 정보 얻기 for i in range(nCount): code = inXAQuery.GetFieldData('CSPAQ12300OutBlock3', 'IsuNo', i) name = inXAQuery.GetFieldData('CSPAQ12300OutBlock3', 'IsuNm', i) balqty = int(inXAQuery.GetFieldData('CSPAQ12300OutBlock3', 'BalQty', i)) bnsbasebalqty = int(inXAQuery.GetFieldData('CSPAQ12300OutBlock3', 'BnsBaseBalQty', i)) sellpnlamt = float(inXAQuery.GetFieldData('CSPAQ12300OutBlock3', 'SellPnlAmt', i)) pnlrat = float(inXAQuery.GetFieldData('CSPAQ12300OutBlock3', 'PnlRat', i)) * 100 avgprc = float(inXAQuery.GetFieldData('CSPAQ12300OutBlock3', 'AvrUprc', i)) sellableqty = float(inXAQuery.GetFieldData('CSPAQ12300OutBlock3', 'SellAbleQty', i)) balevalamt = float(inXAQuery.GetFieldData('CSPAQ12300OutBlock3', 'BalEvalAmt', i)) evalpnl = float(inXAQuery.GetFieldData('CSPAQ12300OutBlock3', 'EvalPnl', i)) ordableamt = float(inXAQuery.GetFieldData('CSPAQ12300OutBlock3', 'OrdAbleAmt', i)) prdayprice = float(inXAQuery.GetFieldData('CSPAQ12300OutBlock3', 'PrdayCprc', i)) c=Company() c.stockCode = code[1:] #주식번호 c.stockName = name #주식회사 이름 c.balQty = balqty #잔고수량 c.bnsBaseBalQty = bnsbasebalqty #매매기준 잔고 수량 c.sellPnlAmt = sellpnlamt#매도손익금액 c.pnlRat = pnlrat #손익률 c.avgPrice = avgprc #평균단가 c.sellAbleQty = sellableqty #매도가능수량 c.balEvalAmt = balevalamt#잔고평가금액 c.evalPnl = evalpnl#평가손익 c.ordAbleAmt = ordableamt#주문가능금액 c.prdayPrice = prdayprice#전일가 self.myStockList[c.stockCode] = c inXAQuery.LoadFromResFile("C:\\eBEST\\xingAPI\\Res\\CSPAQ12200.res") inXAQuery.SetFieldData('CSPAQ12200InBlock1', 'RecCnt', 0, 1) inXAQuery.SetFieldData('CSPAQ12200InBlock1', 'AcntNo', 0, self.user.account_number) inXAQuery.SetFieldData('CSPAQ12200InBlock1', 'Pwd', 0, self.user.account_pw) inXAQuery.SetFieldData('CSPAQ12200InBlock1', 'BalCreTp', 0, 0) #0: 전체, 1: 현물, 9: 선물대용 inXAQuery.Request(False) while XAQueryEvents.queryState == 0: pythoncom.PumpWaitingMessages() XAQueryEvents.queryState = 0 #나의 자산 정보 갖고 오기 #self.myStockAcnt.mnyOrdAbleAmt = float(inXAQuery.GetFieldData('CSPAQ12200OutBlock2', 'MgnRat100pctOrdAbleAmt', 0)) self.myStockAcnt.mnyOrdAbleAmt = float(inXAQuery.GetFieldData('CSPAQ12200OutBlock2', 'D2Dps', 0)) self.myStockAcnt.mnyoutAbleAmt = float(inXAQuery.GetFieldData('CSPAQ12200OutBlock2', 'MnyoutAbleAmt', 0)) self.myStockAcnt.investOrgAmt = float(inXAQuery.GetFieldData('CSPAQ12200OutBlock2', 'InvstOrgAmt', 0)) print("set myStockList variable")