sharebook-kr / mojito

python wrapper for the KIS
MIT License
75 stars 42 forks source link

50건이상 보유내역 조회기능이 없습니다 #3

Closed winhoho4 closed 1 year ago

winhoho4 commented 2 years ago

스팩의 경우 보면 "연속 거래 여부", "연속조회검색조건100", "연속조회키100 " 가 필요 하다고 합니다. 저 같은 경우 아래 처럼 "연속조회검색조건100", "연속조회키100 " 는 수신 받게 해두었는데요 .. 그리고 연속 거래 여부는 해더에 들어 있기 때문에 결과 값에 추가 하도록 수정 했습니다. 컬럼명도 한글을 선호해서 한글로 변환하도록 수정해두었습니다.

def fetch_balance(self, acc_no: str, CTX_AREA_FK100 = '', CTX_AREA_NK100 = '') -> dict:
    """주식잔고조회
    Args:
        acc_no (str): 계좌번호 앞8자리
    Returns:
        dict: _description_
    """
    path = "uapi/domestic-stock/v1/trading/inquire-balance"
    url = f"{self.BASE_URL}/{path}"
    headers = {
       "content-type": "application/json",
       "authorization": self.access_token,
       "appKey": self.api_key,
       "appSecret": self.api_secret,
       "tr_id": "TTTC8434R",
       "tr_cont": "" if CTX_AREA_NK100 == "" else "N"
    }
    params = {
        'CANO': acc_no,
        'ACNT_PRDT_CD': '22',
        'AFHR_FLPR_YN': 'N',
        'OFL_YN': 'N',
        'INQR_DVSN': '01',
        'UNPR_DVSN': '01',
        'FUND_STTL_ICLD_YN': 'N',
        'FNCG_AMT_AUTO_RDPT_YN': 'N',
        'PRCS_DVSN': '01',
        'CTX_AREA_FK100': CTX_AREA_FK100,
        'CTX_AREA_NK100': CTX_AREA_NK100
    }
    res = requests.get(url, headers=headers, params=params)

    s = res.text
    korkey = {'ASST_ICDC_ERNG_RT':'자산증감수익율','ASST_ICDC_AMT':'자산증감액','BFDY_TOT_ASST_EVLU_AMT':'전일총자산평가금액','TOT_STLN_SLNG_CHGS':'총대주매각대금','EVLU_PFLS_SMTL_AMT':'평가손익합계금액','EVLU_AMT_SMTL_AMT':'평가금액합계금액','PCHS_AMT_SMTL_AMT':'매입금액합계금액','FNCG_GLD_AUTO_RDPT_YN':'융자금자동상환여부','NASS_AMT':'순자산금액','TOT_EVLU_AMT':'총평가금액','SCTS_EVLU_AMT':'유가평가금액','TOT_LOAN_AMT':'총대출금액','THDT_TLEX_AMT':'금일제비용금액','BFDY_TLEX_AMT':'전일제비용금액','D2_AUTO_RDPT_AMT':'D+2자동상환금액','THDT_SLL_AMT':'금일매도금액','BFDY_SLL_AMT':'전일매도금액','NXDY_AUTO_RDPT_AMT':'익일자동상환금액','THDT_BUY_AMT':'금일매수금액','BFDY_BUY_AMT':'전일매수금액','CMA_EVLU_AMT':'CMA평가금액','PRVS_RCDL_EXCC_AMT':'가수도정산금액','NXDY_EXCC_AMT':'익일정산금액','DNCA_TOT_AMT':'예수금총금액','output2':'응답상세2','STCK_LOAN_UNPR':'주식대출단가','SBST_PRIC':'대용가격','GRTA_RT_NAME':'보증금율명','ITEM_MGNA_RT_NAME':'종목증거금율명','BFDY_CPRS_ICDC':'전일대비증감','FLTT_RT':'등락율','EXPD_DT':'만기일자','STLN_SLNG_CHGS':'대주매각대금','LOAN_AMT':'대출금액','LOAN_DT':'대출일자','EVLU_ERNG_RT':'평가수익율','EVLU_PFLS_RT':'평가손익율','EVLU_PFLS_AMT':'평가손익금액','EVLU_AMT':'평가금액','PRPR':'현재가','PCHS_AMT':'매입금액','PCHS_AVG_PRIC':'매입평균가격','ORD_PSBL_QTY':'주문가능수량','HLDG_QTY':'보유수량','THDT_SLL_QTY':'금일매도수량','THDT_BUYQTY':'금일매수수량','BFDY_SLL_QTY':'전일매도수량','BFDY_BUY_QTY':'전일매수수량','TRAD_DVSN_NAME':'매매구분명','PRDT_NAME':'상품명','PDNO':'상품번호','output1':'응답상세1','CTX_AREA_NK100':'연속조회키100','CTX_AREA_FK100':'연속조회검색조건100','msg1':'응답메세지','msg_cd':'응답코드','rt_cd':'성공 실패 여부'}
    for token in korkey :
        s = s.replace(token.lower(), korkey[token])

    j = json.loads(s)

    # headers['tr_cont']    연속 거래 여부    
    #F or M : 다음 데이터 있음
    #D or E : 마지막 데이터
    j['연속 거래 여부'] = res.headers['tr_cont']

    return j
brayden-jo commented 1 year ago

tr_cont가 'M'인 경우 연속조회하도록 수정했습니다.