示例#1
0
    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")