# kiwoompy > 키움증권 REST API Python 라이브러리 키움증권 OpenAPI(https://openapi.kiwoom.com)를 Python에서 간편하게 사용할 수 있도록 만든 라이브러리입니다. --- # 홈 # kiwoompy ¶ 키움증권 REST API Python 라이브러리 키움증권 OpenAPI(https://openapi.kiwoom.com)를 Python에서 간편하게 사용할 수 있도록 만든 라이브러리입니다. ## 특징 ¶ - OAuth2 인증 — 접근토큰 발급·만료 관리 자동화 - 환경 분리 — 모의투자( demo ) / 실계좌( real ) 한 줄로 전환 - 유량 제어 내장 — 모의 2건/초, 실전 20건/초 자동 적용 (커스터마이징 가능) - 자동 재시도 — 네트워크 오류·5xx 서버 오류 지수 백오프 재시도 - 입력값 보완 — 계좌번호 상품코드 누락 시 자동 보완 + 경고 로그 - 타입 힌트 완전 지원 — IDE 자동완성 및 정적 분석 최적화 - Python 3.12+ ## 빠른 시작 ¶ ``` from kiwoompy import KiwoomClient # 모의투자 환경 — 토큰 발급까지 한 줄로 client = KiwoomClient( env="demo", appkey="YOUR_APP_KEY", secretkey="YOUR_APP_SECRET", ) ``` 시작하기 → API 레퍼런스 → ## 키움증권 REST API 알리미 ¶ 키움증권 REST API 공지사항·변경 사항을 텔레그램으로 받아볼 수 있는 채널입니다. 📢 텔레그램 채널 구독하기 새 공지가 등록될 때마다 자동으로 알림이 전송됩니다. ## AI / LLM 지원 ¶ 이 문서 사이트는 llms.txt 스펙을 지원합니다. AI 에이전트나 LLM이 kiwoompy를 파악할 때 아래 파일을 활용할 수 있습니다. - /llms.txt — 문서 구조 및 주요 페이지 링크 요약 - /llms-full.txt — 전체 문서 + API 레퍼런스 (함수 시그니처·파라미터·반환값 포함) --- # 시작하기 # 시작하기 ¶ kiwoompy 설치부터 접근토큰 발급까지의 기본 흐름을 안내합니다. ## 설치 ¶ ``` pip install kiwoompy ``` uv 사용 시: ``` uv add kiwoompy ``` ## 사전 준비 ¶ - 키움증권 OpenAPI 신청 후 App Key / App Secret 발급 - Python 3.12 이상 보안 주의 App Key 와 App Secret 은 코드에 하드코딩하지 마세요. 환경 변수, 시크릿 매니저 등 프로젝트 환경에 맞는 방법으로 안전하게 관리하세요. 계좌번호 형식 계좌번호는 "12345678-01" 형식(8자리 + 상품코드)이 원칙입니다. 상품코드를 생략하고 "12345678" 만 입력해도 라이브러리가 자동으로 -01 을 붙여줍니다. ## 기본 사용법 ¶ ### 클라이언트 초기화 ¶ KiwoomClient 하나로 HTTP 통신·토큰 발급을 한번에 처리합니다. ``` from kiwoompy import KiwoomClient client = KiwoomClient( env="demo", # "demo"(모의투자) 또는 "real"(실계좌) appkey="YOUR_APP_KEY", secretkey="YOUR_APP_SECRET", ) ``` 초기화와 동시에 접근토큰이 자동으로 발급됩니다. ### context manager 활용 ¶ ``` from kiwoompy import KiwoomClient with KiwoomClient(env="demo", appkey="...", secretkey="...") as client: # API 호출 pass # with 블록 종료 시 HTTP 세션 자동 종료 ``` ### 토큰 갱신 ¶ ``` client.refresh_token(appkey="...", secretkey="...") ``` ### 고급 사용 — 내부 객체 직접 접근 ¶ 테스트 모킹이나 세밀한 제어가 필요할 때는 KiwoomApi / KiwoomAuth 를 직접 사용할 수 있습니다. ``` from kiwoompy import KiwoomApi, KiwoomAuth api = KiwoomApi(env="demo") auth = KiwoomAuth(api) token = auth.issue_token(appkey="...", secretkey="...") ``` KiwoomClient 의 내부 객체에도 프로퍼티로 접근 가능합니다. ``` client.api # KiwoomApi — HTTP 통신 계층 client.auth # KiwoomAuth — 토큰 발급·갱신 client.query # KiwoomQuery — 계좌·잔고·손익 조회 client.order # KiwoomOrder — 매수·매도·정정·취소 주문 ``` ## 조회 ¶ client.query 로 계좌·잔고·손익·주문체결 내역을 조회합니다. ``` # 계좌 잔고 조회 balance = client.query.get_account_balance() print(balance.tot_evlt_amt) # 총평가금액 for item in balance.holdings: print(item.stk_nm, item.evlt_amt) # 종목명, 평가금액 # 미체결 주문 조회 unfilled = client.query.get_unfilled_orders( all_stock_type="all", # "all": 전체, "single": 종목 trade_type="all", # "all" / "sell" / "buy" exchange="all", # "all" / "krx" / "nxt" ) # 예수금 조회 deposit = client.query.get_deposit(query_type="normal") # "normal" / "estimated" print(deposit.entr) # 예수금 print(deposit.pymn_alow_amt) # 출금가능금액 ``` ## 주문 ¶ client.order 로 매수·매도·정정·취소 주문을 제출합니다. 실계좌 주의 env="real" 환경에서는 실제 계좌에 주문이 접수됩니다. 반드시 env="demo" (모의투자)로 먼저 테스트하세요. ``` # 시장가 매수 result = client.order.buy( "005930", quantity="1", trade_type="market", # "market" / "limit" / "best" 등 ) print(result.ord_no) # 주문번호 # 지정가 매도 result = client.order.sell( "005930", quantity="1", trade_type="limit", price="75000", ) # 정정 modified = client.order.modify( original_order_no=result.ord_no, stock_code="005930", modify_quantity="1", modify_price="74000", ) # 취소 (잔량 전부) client.order.cancel( original_order_no=result.ord_no, stock_code="005930", cancel_quantity="0", # "0" 입력 시 잔량 전부 취소 ) ``` ### 매매구분 ( trade_type ) 값 목록 ¶ | 값 | 의미 | | --- | --- | | "limit" | 보통(지정가) | | "market" | 시장가 | | "conditional" | 조건부지정가 | | "best" | 최유리지정가 | | "priority" | 최우선지정가 | | "stop" | 스톱지정가 | | "mid" | 중간가 | | "limit_ioc" / "market_ioc" / "best_ioc" | IOC 계열 | | "limit_fok" / "market_fok" / "best_fok" | FOK 계열 | | "pre_market" | 장시작전시간외 | | "after_hours" | 시간외단일가 | | "post_market" | 장마감후시간외 | ## 유량 제어 ¶ kiwoompy는 키움 공식 정책에 따라 환경별 요청 속도를 자동으로 제한합니다. | 환경 | 기본 제한 | | --- | --- | | 모의투자 ( demo ) | 2건/초 | | 실계좌 ( real ) | 20건/초 | 직접 조정이 필요할 때는 rps 파라미터를 사용합니다: ``` # 초당 1건으로 제한 api = KiwoomApi(env="demo", rps=1.0) ``` ## 자동 재시도 ¶ 네트워크 오류나 5xx 서버 오류 발생 시 지수 백오프로 최대 3회 자동 재시도합니다. | 상황 | 동작 | | --- | --- | | 네트워크 오류 / 타임아웃 | 재시도 (최대 3회, 1→2→4초) | | 5xx 서버 오류 | 재시도 (최대 3회) | | 4xx 인증 오류 | 즉시 예외 발생 (재시도 없음) | ## 에러 처리 ¶ ``` from kiwoompy import KiwoomAuthError, KiwoomApiError try: token = auth.issue_token(appkey="wrong", secretkey="wrong") except KiwoomAuthError as e: print(f"인증 실패: {e}") # App Key / Secret Key 오류 except KiwoomApiError as e: print(f"API 오류: {e}") # 네트워크·서버 오류 ``` | 예외 | 발생 조건 | | --- | --- | | KiwoomAuthError | 잘못된 키, 토큰 미발급 상태에서 API 호출 | | KiwoomApiError | 네트워크 오류, 5xx 서버 오류, 응답 파싱 실패 | --- # 계좌·잔고 조회 # 계좌·잔고 조회 ¶ 계좌번호 목록, 예수금, 보유 종목 잔고, 수익률, 미체결·체결 내역을 조회하는 방법을 안내합니다. ## 계좌번호 조회 ¶ 토큰에 연결된 계좌번호 목록을 가져옵니다. ``` from kiwoompy import KiwoomClient client = KiwoomClient(env="demo", appkey="...", secretkey="...") accounts = client.query.get_account_numbers() print(accounts.account_numbers) # ['12345678-01', '12345678-02'] ``` KiwoomClient 는 초기화 시 계좌번호를 자동으로 설정합니다. 별도로 계좌번호를 지정하지 않아도 대부분의 조회 메서드가 동작합니다. ## 예수금 조회 ¶ ``` # 일반 조회 deposit = client.query.get_deposit(query_type="normal") print(deposit.entr) # 예수금 print(deposit.pymn_alow_amt) # 출금가능금액 print(deposit.ord_alow_amt) # 주문가능금액 print(deposit.d2_entra) # D+2 예수금 # 추정 조회 (미체결 주문 반영) deposit_est = client.query.get_deposit(query_type="estimated") ``` | 필드 | 설명 | | --- | --- | | entr | 예수금 | | pymn_alow_amt | 출금가능금액 | | ord_alow_amt | 주문가능금액 | | d1_entra | D+1 예수금 | | d2_entra | D+2 예수금 | | nrpy_loan | 미상환융자금 | ## 보유 종목 잔고 조회 ¶ get_account_balance() 는 보유 종목별 매입금액, 평가금액, 평가손익, 수익률을 반환합니다. ``` balance = client.query.get_account_balance() # 계좌 전체 요약 print(balance.tot_pur_amt) # 총매입금액 print(balance.tot_evlt_amt) # 총평가금액 print(balance.tot_evlt_pl) # 총평가손익 print(balance.tot_prft_rt) # 총수익률(%) # 종목별 상세 for item in balance.holdings: print(f"{item.stk_nm}({item.stk_cd})") print(f" 보유수량: {item.rmnd_qty}주") print(f" 매입단가: {item.pur_pric}원") print(f" 현재가: {item.cur_prc}원") print(f" 평가손익: {item.evltv_prft}원 ({item.prft_rt}%)") ``` NXT 거래소 잔고를 함께 조회하려면 exchange 파라미터를 변경합니다. ``` balance_nxt = client.query.get_account_balance(exchange="NXT") ``` ### AccountBalance 주요 필드 ¶ | 필드 | 설명 | | --- | --- | | tot_pur_amt | 총매입금액 | | tot_evlt_amt | 총평가금액 | | tot_evlt_pl | 총평가손익 | | tot_prft_rt | 총수익률(%) | | prsm_dpst_aset_amt | 추정예탁자산 | | tot_loan_amt | 총대출금액 | | holdings | 보유종목 목록 ( list[HoldingItem] ) | ### HoldingItem 주요 필드 ¶ | 필드 | 설명 | | --- | --- | | stk_cd | 종목코드 | | stk_nm | 종목명 | | rmnd_qty | 보유수량 | | trde_able_qty | 매도가능수량 | | pur_pric | 매입단가 | | cur_prc | 현재가 | | evlt_amt | 평가금액 | | evltv_prft | 평가손익 | | prft_rt | 수익률(%) | ## 계좌평가현황 조회 ¶ get_account_evaluation() 은 계좌 전체 평가 현황과 종목별 손익을 반환합니다. ``` evaluation = client.query.get_account_evaluation() print(evaluation.acnt_nm) # 계좌명 print(evaluation.entr) # 예수금 print(evaluation.tot_est_amt) # 총평가금액 print(evaluation.aset_evlt_amt) # 자산평가금액 print(evaluation.tdy_lspft) # 당일손익 print(evaluation.tdy_lspft_rt) # 당일손익률(%) for item in evaluation.holdings: print(f"{item.stk_nm}: 손익 {item.pl_amt}원 ({item.pl_rt}%)") ``` 상장폐지 종목을 제외하고 조회하려면: ``` evaluation = client.query.get_account_evaluation(query_type="exclude_delisted") ``` ## 미체결 주문 조회 ¶ ``` # 전체 종목, 전체 매매구분 unfilled = client.query.get_unfilled_orders( all_stock_type="0", # "0": 전체, "1": 특정 종목 trade_type="all", # "all" / "sell" / "buy" ) for order in unfilled: print(f"주문번호: {order.ord_no}") print(f" 종목: {order.stk_nm}({order.stk_cd})") print(f" 구분: {order.io_tp_nm}") print(f" 주문수량: {order.ord_qty}주 / 미체결: {order.oso_qty}주") print(f" 주문단가: {order.ord_pric}원") ``` 특정 종목의 미체결만 조회: ``` unfilled = client.query.get_unfilled_orders( all_stock_type="1", trade_type="all", stock_code="005930", ) ``` ## 체결 내역 조회 ¶ ``` filled = client.query.get_filled_orders( query_type="all", # "all": 전체, "by_stock": 종목별 sell_type="all", # "all" / "sell" / "buy" ) for order in filled: print(f"주문번호: {order.ord_no} / 종목: {order.stk_nm}") print(f" 체결가: {order.cntr_pric}원 / 체결수량: {order.cntr_qty}주") print(f" 수수료: {order.tdy_trde_cmsn}원 / 세금: {order.tdy_trde_tax}원") ``` ## 계좌 수익률 조회 ¶ 보유 종목별 수익률 목록을 조회합니다. ``` returns = client.query.get_account_return() for item in returns: print(f"{item.stk_nm}({item.stk_cd})") print(f" 매입금액: {item.pur_amt}원 / 당일실현손익: {item.tdy_sel_pl}원") ``` ## 다음 단계 ¶ - 주문하기 → — 매수·매도·정정·취소 주문 방법 - 포트폴리오 모니터링 예제 → — 잔고 조회를 활용한 실전 예제 --- # 주문하기 # 주문하기 ¶ 매수·매도·정정·취소 주문 흐름과 각 메서드 사용법을 안내합니다. 실계좌 주의 env="real" 환경에서는 실제 계좌에 주문이 접수됩니다. 반드시 env="demo" (모의투자)로 먼저 테스트하세요. ## 환경 설정 ¶ ``` from kiwoompy import KiwoomClient # 모의투자 환경 (테스트용) client = KiwoomClient(env="demo", appkey="...", secretkey="...") # 실계좌 환경 (실제 주문 발생) # client = KiwoomClient(env="real", appkey="...", secretkey="...") ``` ## 매수 주문 ¶ ### 시장가 매수 ¶ ``` result = client.order.buy( stock_code="005930", # 삼성전자 quantity="1", trade_type="market", ) print(result.ord_no) # 주문번호 print(result.dmst_stex_tp) # 거래소 (KRX / NXT) ``` ### 지정가 매수 ¶ ``` result = client.order.buy( stock_code="005930", quantity="10", trade_type="limit", price="70000", # 주문단가 (원) ) ``` ### 최유리지정가 매수 ¶ ``` result = client.order.buy( stock_code="005930", quantity="5", trade_type="best", ) ``` ### 스톱지정가 매수 ¶ ``` result = client.order.buy( stock_code="005930", quantity="1", trade_type="stop", price="72000", # 주문단가 condition_price="71000", # 스톱가 (이 가격 이상이 되면 주문 발동) ) ``` ## 매도 주문 ¶ ``` # 시장가 매도 result = client.order.sell( stock_code="005930", quantity="1", trade_type="market", ) # 지정가 매도 result = client.order.sell( stock_code="005930", quantity="1", trade_type="limit", price="75000", ) ``` ## 정정 주문 ¶ 미체결 주문의 가격이나 수량을 변경합니다. ``` # 매수 주문 후 가격 정정 buy_result = client.order.buy( stock_code="005930", quantity="10", trade_type="limit", price="70000", ) # 70,000원 → 71,000원으로 정정 modified = client.order.modify( original_order_no=buy_result.ord_no, stock_code="005930", modify_quantity="10", modify_price="71000", ) print(modified.ord_no) # 새 주문번호 print(modified.mdfy_qty) # 정정수량 ``` 정정 후 주문번호 정정 주문이 접수되면 새 주문번호( ord_no )가 발급됩니다. 이후 추가 정정·취소 시에는 새 주문번호를 사용해야 합니다. ## 취소 주문 ¶ ``` # 잔량 전부 취소 client.order.cancel( original_order_no=buy_result.ord_no, stock_code="005930", cancel_quantity="0", # "0" 입력 시 잔량 전부 취소 ) # 일부 취소 (5주만) client.order.cancel( original_order_no=buy_result.ord_no, stock_code="005930", cancel_quantity="5", ) ``` ## 주문 → 체결 확인 흐름 ¶ 주문 접수 후 체결 여부를 확인하는 일반적인 흐름입니다. ``` import time # 1. 매수 주문 result = client.order.buy( stock_code="005930", quantity="1", trade_type="limit", price="70000", ) order_no = result.ord_no # 2. 미체결 확인 unfilled = client.query.get_unfilled_orders( all_stock_type="0", trade_type="buy", ) is_unfilled = any(o.ord_no == order_no for o in unfilled) print("미체결 중:", is_unfilled) # 3. 체결 내역 확인 filled = client.query.get_filled_orders( query_type="all", sell_type="buy", ) for order in filled: if order.ord_no == order_no: print(f"체결가: {order.cntr_pric}원 / 체결수량: {order.cntr_qty}주") ``` ## 매매구분 ( trade_type ) 전체 목록 ¶ | 값 | 한글명 | 비고 | | --- | --- | --- | | "limit" | 보통(지정가) | price 필수 | | "market" | 시장가 | price 생략 | | "conditional" | 조건부지정가 | | | "best" | 최유리지정가 | | | "priority" | 최우선지정가 | | | "stop" | 스톱지정가 | condition_price 필수 | | "mid" | 중간가 | | | "limit_ioc" | 보통(IOC) | | | "market_ioc" | 시장가(IOC) | | | "best_ioc" | 최유리(IOC) | | | "limit_fok" | 보통(FOK) | | | "market_fok" | 시장가(FOK) | | | "best_fok" | 최유리(FOK) | | | "pre_market" | 장시작전시간외 | | | "after_hours" | 시간외단일가 | | | "post_market" | 장마감후시간외 | | ## 거래소 구분 ( exchange ) ¶ | 값 | 설명 | | --- | --- | | "KRX" | 한국거래소 (기본값) | | "NXT" | 넥스트트레이드 | | "SOR" | 최선주문집행 | ## 신용 주문 ¶ 신용융자 매수·매도도 동일한 인터페이스로 사용합니다. ``` # 신용 매수 result = client.order.credit_buy( stock_code="005930", quantity="10", trade_type="limit", price="70000", ) # 신용 매도 (융자 상환) result = client.order.credit_sell( stock_code="005930", quantity="10", trade_type="market", credit_deal_type="33", # "33": 융자, "99": 융자합 credit_loan_date="20240101", # 융자 시 대출일 필수 (YYYYMMDD) ) ``` ## 에러 처리 ¶ ``` from kiwoompy import KiwoomAuthError, KiwoomApiError try: result = client.order.buy( stock_code="005930", quantity="1", trade_type="market", ) except KiwoomAuthError as e: print(f"인증 오류: {e}") # 토큰 만료, 잘못된 키 등 except KiwoomApiError as e: print(f"주문 실패: {e}") # 잔고 부족, 종목 오류 등 ``` ## 다음 단계 ¶ - 계좌·잔고 조회 → — 체결 후 잔고·손익 확인 - 조건부 자동 주문 예제 → — 현재가 기반 자동 주문 예제 --- # 시세·종목 정보 # 시세·종목 정보 ¶ 현재가, 종목 기본정보, 일별 주가, 차트 데이터, 순위 정보를 조회하는 방법을 안내합니다. ## 종목 기본정보 조회 ¶ 현재가, 등락률, 재무지표(PER·PBR·EPS·ROE), 시가총액을 한번에 가져옵니다. ``` from kiwoompy import KiwoomClient client = KiwoomClient(env="demo", appkey="...", secretkey="...") info = client.query.get_stock_info("005930") # 삼성전자 print(f"종목명: {info.stk_nm}") print(f"현재가: {info.cur_prc}원") print(f"등락률: {info.flu_rt}%") print(f"시가: {info.open_pric}원") print(f"고가: {info.high_pric}원") print(f"저가: {info.low_pric}원") print(f"거래량: {info.trde_qty}주") print(f"시가총액: {info.mac}원") print(f"PER: {info.per}") print(f"PBR: {info.pbr}") print(f"EPS: {info.eps}원") print(f"ROE: {info.roe}%") print(f"52주 최고: {info.oyr_hgst}원") print(f"52주 최저: {info.oyr_lwst}원") ``` ## 종합 시세표 조회 ¶ 현재가·호가·예상체결가 등을 포함한 종합 시세를 조회합니다. ``` summary = client.query.get_market_summary("005930") print(f"현재가: {summary.cur_prc}원 ({summary.flu_rt}%)") print(f"전일종가: {summary.pred_close_pric}원") print(f"예상체결가: {summary.exp_cntr_pric}원 / {summary.exp_cntr_qty}주") print(f"총매수잔량: {summary.tot_buy_req}주") print(f"총매도잔량: {summary.tot_sel_req}주") print(f"조회시각: {summary.date} {summary.tm}") ``` ## 관심종목 일괄 조회 ¶ 여러 종목의 현재가를 한 번에 조회합니다. 종목코드를 | 로 구분합니다. ``` watchlist = client.query.get_watchlist_info("005930|000660|035720") for item in watchlist.items: print(f"{item.stk_nm}({item.stk_cd}): {item.cur_prc}원 ({item.flu_rt}%)") ``` ## 상장 종목 리스트 ¶ 시장별 전체 상장 종목 코드와 이름을 조회합니다. ``` # 코스피 종목 리스트 kospi = client.query.get_stock_list(market_type="kospi") for item in kospi.items: print(f"{item.stk_cd}: {item.stk_nm}") # 코스닥 종목 리스트 kosdaq = client.query.get_stock_list(market_type="kosdaq") ``` 지원하는 market_type 값: "kospi" , "kosdaq" , "etf" , "elw" , "konex" , "gold" 등 ## 일별 주가 조회 ¶ 특정 날짜 기준으로 일별 주가와 투자자별 순매수 데이터를 조회합니다. ``` daily = client.query.get_daily_prices( stock_code="005930", query_date="20240101", display_type="qty", # "qty": 수량, "amount": 금액 ) for item in daily.items: print(f"{item.dt}: 시{item.open_pric} 고{item.high_pric} 저{item.low_pric} 종{item.close_pric} 거래량{item.trde_qty}") ``` ## 차트 데이터 조회 ¶ ### 틱 차트 ¶ ``` tick_chart = client.query.get_stock_tick_chart( stock_code="005930", tick_scope="3", # "1" / "3" / "5" / "10" / "30" adjusted="adjusted", # "adjusted": 수정주가, "raw": 원주가 ) for candle in tick_chart.items[:5]: print(f"시간: {candle.cntr_tm} 종가: {candle.cur_prc} 거래량: {candle.trde_qty}") ``` ### 분봉 차트 ¶ ``` min_chart = client.query.get_stock_min_chart( stock_code="005930", min_scope="5", # "1" / "3" / "5" / "10" / "15" / "30" / "45" / "60" adjusted="adjusted", ) for candle in min_chart.items[:10]: print(f"{candle.cntr_tm}: {candle.open_pric}/{candle.high_pric}/{candle.low_pric}/{candle.cur_prc} 거래량:{candle.trde_qty}") ``` ### 일봉 차트 ¶ ``` day_chart = client.query.get_stock_day_chart( stock_code="005930", base_date="20240101", # 기준일자 (YYYYMMDD) adjusted="adjusted", ) for candle in day_chart.items[:20]: print(f"{candle.dt}: 종가 {candle.cur_prc}원 거래량 {candle.trde_qty}주") ``` ### 주봉·월봉·연봉 차트 ¶ ``` # 주봉 week_chart = client.query.get_stock_week_chart("005930", base_date="20240101") # 월봉 month_chart = client.query.get_stock_month_chart("005930", base_date="20240101") # 연봉 year_chart = client.query.get_stock_year_chart("005930", base_date="20240101") ``` ## 순위 정보 조회 ¶ ### 거래량 급증 종목 ¶ ``` surge = client.query.get_trade_qty_surge( market="kospi", # "all" / "kospi" / "kosdaq" exchange="krx", # "krx" / "nxt" / "all" sort_type="surge_qty", # "surge_qty" / "surge_ratio" stock_cond="0", trade_qty_cond="0", credit_cond="0", ) for item in surge.items[:10]: print(f"{item.stk_nm}: 거래량 {item.trde_qty}주") ``` ### 등락률 상위 종목 ¶ ``` price_change = client.query.get_price_change_upper( market="kospi", exchange="krx", sort_type="rise_ratio", # "rise_ratio" / "rise_gap" / "fall_ratio" / "fall_gap" / "flat" stock_cond="0", trade_qty_cond="0", credit_cond="0", trade_amt="0", ) for item in price_change.items[:10]: print(f"{item.stk_nm}: {item.flu_rt}% 현재가 {item.cur_prc}원") ``` ## 투자자별 매매 동향 ¶ 장중 투자자별(외국인·기관·개인 등) 순매수 상위 종목을 조회합니다. ``` investor = client.query.get_intraday_investor_trading( market_type="kospi", investor_type="foreign", # "foreign" / "institution" / "trust" / ... exchange="all", ) for item in investor.items[:10]: print(f"{item.stk_nm}: 순매수 {item.netbuy_qty}주") ``` ## 다음 단계 ¶ - 실시간 시세 → — WebSocket으로 실시간 현재가·호가 수신 - 조건부 자동 주문 예제 → — 현재가 기반 자동 주문 --- # 실시간 시세 # 실시간 시세 ¶ WebSocket을 통해 주식 체결, 호가, 주문체결 등 실시간 데이터를 수신하는 방법을 안내합니다. ## 기본 구조 ¶ 실시간 기능은 asyncio 기반 비동기 API입니다. KiwoomRealtime 을 async with 로 사용하면 연결과 종료가 자동으로 처리됩니다. ``` import asyncio from kiwoompy import KiwoomClient from kiwoompy.realtime import KiwoomRealtime from kiwoompy.models import RealtimeEvent async def main(): client = KiwoomClient(env="demo", appkey="...", secretkey="...") async with KiwoomRealtime(client.api, env="demo") as rt: # 구독 등록 await rt.subscribe( type="0B", # 주식체결 items=["005930", "000660"], # 삼성전자, SK하이닉스 callback=on_trade, ) await asyncio.sleep(60) # 60초간 수신 asyncio.run(main()) ``` ## 콜백 함수 ¶ 콜백은 async def 로 정의하고 RealtimeEvent 를 인자로 받습니다. ``` from kiwoompy.models import RealtimeEvent async def on_trade(event: RealtimeEvent) -> None: print(f"TR: {event.type} / 종목: {event.item}") print(f" 현재가: {event.values.get('10', '')}원") print(f" 등락률: {event.values.get('12', '')}%") print(f" 거래량: {event.values.get('15', '')}주") ``` event.values 는 dict[str, str] 이며 키는 키움 실시간 필드 번호입니다. ## 실시간 TR 타입 ¶ | TR 타입 | 이름 | items | | --- | --- | --- | | "00" | 주문체결 | [""] (계좌 기반, 종목코드 불필요) | | "04" | 잔고 | [""] (계좌 기반) | | "0A" | 주식기세 | 종목코드 목록 | | "0B" | 주식체결 | 종목코드 목록 | | "0C" | 주식우선호가 | 종목코드 목록 | | "0D" | 주식호가잔량 | 종목코드 목록 | | "0E" | 주식시간외호가 | 종목코드 목록 | | "0H" | 주식예상체결 | 종목코드 목록 | | "0J" | 업종지수 | 업종코드 목록 | | "1h" | VI발동/해제 | 종목코드 목록 | ## 주식체결 ( 0B ) 주요 필드 ¶ | 필드 번호 | 설명 | | --- | --- | | "10" | 현재가 | | "11" | 전일대비 | | "12" | 등락률 | | "13" | 누적거래량 | | "14" | 누적거래대금 | | "15" | 체결량 | | "20" | 시가 | | "21" | 고가 | | "22" | 저가 | | "27" | 최우선매도호가 | | "28" | 최우선매수호가 | ## 주문체결 ( 00 ) 주요 필드 ¶ | 필드 번호 | 설명 | | --- | --- | | "9203" | 주문번호 | | "913" | 주문상태 (접수/체결/취소/거부) | | "302" | 종목명 | | "900" | 주문수량 | | "901" | 주문가격 | | "902" | 미체결수량 | | "905" | 주문구분 (매수/매도/정정/취소) | | "910" | 체결가 | | "911" | 체결량 | ## 여러 TR 동시 구독 ¶ ``` async def on_trade(event: RealtimeEvent) -> None: price = event.values.get("10", "") print(f"[체결] {event.item}: {price}원") async def on_orderbook(event: RealtimeEvent) -> None: ask = event.values.get("27", "") bid = event.values.get("28", "") print(f"[호가] {event.item}: 매도 {ask} / 매수 {bid}") async def on_my_order(event: RealtimeEvent) -> None: status = event.values.get("913", "") name = event.values.get("302", "") print(f"[내 주문] {name}: {status}") async def main(): client = KiwoomClient(env="demo", appkey="...", secretkey="...") async with KiwoomRealtime(client.api, env="demo") as rt: # 주식체결 구독 await rt.subscribe("0B", items=["005930", "000660"], callback=on_trade) # 호가잔량 구독 await rt.subscribe("0D", items=["005930"], callback=on_orderbook) # 내 주문체결 구독 (계좌 기반 — items에 빈 문자열) await rt.subscribe("00", items=[""], callback=on_my_order) await asyncio.sleep(300) # 5분간 수신 ``` ## 구독 해제 ¶ ``` async with KiwoomRealtime(client.api, env="demo") as rt: await rt.subscribe("0B", items=["005930", "000660"], callback=on_trade) await asyncio.sleep(30) # 특정 종목만 해제 await rt.unsubscribe("0B", items=["000660"]) # 해당 TR 전체 해제 await rt.unsubscribe("0B") await asyncio.sleep(30) ``` ## 자동 재연결 ¶ 연결이 끊기면 지수 백오프(1초 → 최대 30초)로 자동 재연결하고 기존 구독을 복원합니다. 별도 처리 없이 동작합니다. 재연결을 비활성화하려면: ``` rt = KiwoomRealtime(client.api, env="demo", reconnect=False) ``` ## 구독 제한 ¶ 키움 공식 정책에 따라 최대 100건 까지 구독할 수 있습니다. 초과 시 KiwoomApiError 가 발생합니다. ``` from kiwoompy import KiwoomApiError try: await rt.subscribe("0B", items=["005930"], callback=on_trade) except KiwoomApiError as e: print(f"구독 실패: {e}") ``` ## 다음 단계 ¶ - 실시간 현재가 수신 예제 → — 실전 코드 예제 --- # 포트폴리오 모니터링 # 포트폴리오 모니터링 ¶ 보유 종목의 현재 평가금액, 손익, 수익률을 조회해서 출력하는 예제입니다. ## 전체 코드 ¶ ``` from kiwoompy import KiwoomClient, KiwoomApiError client = KiwoomClient( env="demo", appkey="YOUR_APP_KEY", secretkey="YOUR_APP_SECRET", ) def print_portfolio(): # 예수금 deposit = client.query.get_deposit() print("=" * 50) print(f"예수금: {int(deposit.entr):>15,}원") print(f"출금가능: {int(deposit.pymn_alow_amt):>15,}원") print(f"주문가능: {int(deposit.ord_alow_amt):>15,}원") print("=" * 50) # 잔고 balance = client.query.get_account_balance() print(f"총매입금액: {int(balance.tot_pur_amt):>15,}원") print(f"총평가금액: {int(balance.tot_evlt_amt):>15,}원") print(f"총평가손익: {int(balance.tot_evlt_pl):>15,}원") print(f"총수익률: {float(balance.tot_prft_rt):>14.2f}%") print(f"추정예탁자산: {int(balance.prsm_dpst_aset_amt):>15,}원") print() if not balance.holdings: print("보유 종목 없음") return # 종목별 상세 print(f"{'종목명':<12} {'보유':>6} {'매입단가':>10} {'현재가':>10} {'평가손익':>12} {'수익률':>8}") print("-" * 65) for item in balance.holdings: print( f"{item.stk_nm:<12} " f"{item.rmnd_qty:>6}주 " f"{int(item.pur_pric):>10,}원 " f"{int(item.cur_prc):>10,}원 " f"{int(item.evltv_prft):>12,}원 " f"{float(item.prft_rt):>7.2f}%" ) print_portfolio() ``` ## 실행 예시 ¶ ``` ================================================== 예수금: 5,000,000원 출금가능: 4,800,000원 주문가능: 4,800,000원 ================================================== 총매입금액: 2,000,000원 총평가금액: 2,150,000원 총평가손익: 150,000원 총수익률: 7.50% 추정예탁자산: 7,150,000원 종목명 보유 매입단가 현재가 평가손익 수익률 ----------------------------------------------------------------- 삼성전자 10주 70,000원 72,000원 20,000원 2.86% SK하이닉스 5주 200,000원 226,000원 130,000원 13.00% ``` ## 손익 상위 종목 정렬 ¶ ``` balance = client.query.get_account_balance() # 수익률 기준 내림차순 정렬 sorted_holdings = sorted( balance.holdings, key=lambda x: float(x.prft_rt), reverse=True, ) print("수익률 순위") for i, item in enumerate(sorted_holdings, 1): print(f"{i}. {item.stk_nm}: {float(item.prft_rt):.2f}%") ``` ## 손절 대상 종목 찾기 ¶ 수익률이 특정 기준 이하인 종목을 필터링합니다. ``` STOP_LOSS_THRESHOLD = -5.0 # -5% 이하면 손절 검토 balance = client.query.get_account_balance() candidates = [ item for item in balance.holdings if float(item.prft_rt) <= STOP_LOSS_THRESHOLD ] if candidates: print(f"손절 검토 종목 ({STOP_LOSS_THRESHOLD}% 이하):") for item in candidates: print(f" {item.stk_nm}: {float(item.prft_rt):.2f}% ({item.evltv_prft}원)") else: print("손절 검토 종목 없음") ``` ## 미체결 주문 포함 현황 ¶ ``` # 잔고 + 미체결 한번에 확인 balance = client.query.get_account_balance() unfilled = client.query.get_unfilled_orders(all_stock_type="0", trade_type="all") print(f"보유 종목: {len(balance.holdings)}개") print(f"미체결 주문: {len(unfilled)}건") for order in unfilled: print(f" [{order.io_tp_nm}] {order.stk_nm} {order.oso_qty}주 @ {order.ord_pric}원") ``` ## 관련 가이드 ¶ - 계좌·잔고 조회 → - 주문하기 → --- # 조건부 자동 주문 # 조건부 자동 주문 ¶ 현재가를 조회해서 조건에 맞으면 자동으로 주문을 제출하는 예제입니다. 실계좌 주의 이 예제를 env="real" 로 실행하면 실제 계좌에 주문이 접수됩니다. 반드시 env="demo" (모의투자)로 먼저 충분히 테스트하세요. ## 목표 가격 도달 시 매수 ¶ 지정한 종목의 현재가가 목표 가격 이하로 내려오면 매수 주문을 제출합니다. ``` import time from kiwoompy import KiwoomClient, KiwoomApiError client = KiwoomClient(env="demo", appkey="...", secretkey="...") STOCK_CODE = "005930" # 삼성전자 TARGET_PRICE = 70000 # 이 가격 이하가 되면 매수 BUY_QUANTITY = "1" CHECK_INTERVAL = 10 # 10초마다 확인 print(f"{STOCK_CODE} 현재가 모니터링 시작 (목표: {TARGET_PRICE:,}원 이하)") while True: info = client.query.get_stock_info(STOCK_CODE) current_price = int(info.cur_prc.replace(",", "").replace("-", "").replace("+", "")) print(f"현재가: {current_price:,}원 ({info.flu_rt}%)") if current_price <= TARGET_PRICE: print(f"목표 가격 도달! {current_price:,}원 ≤ {TARGET_PRICE:,}원 → 매수 주문") try: result = client.order.buy( stock_code=STOCK_CODE, quantity=BUY_QUANTITY, trade_type="limit", price=str(current_price), ) print(f"매수 주문 완료 — 주문번호: {result.ord_no}") break except KiwoomApiError as e: print(f"주문 실패: {e}") break time.sleep(CHECK_INTERVAL) ``` ## 수익률 기반 자동 매도 ¶ 보유 종목의 수익률이 목표치에 도달하면 전량 매도합니다. ``` import time from kiwoompy import KiwoomClient, KiwoomApiError client = KiwoomClient(env="demo", appkey="...", secretkey="...") TAKE_PROFIT = 5.0 # 수익률 +5% 이상이면 매도 STOP_LOSS = -3.0 # 수익률 -3% 이하면 손절 CHECK_INTERVAL = 30 # 30초마다 확인 print(f"익절: +{TAKE_PROFIT}% / 손절: {STOP_LOSS}%") while True: balance = client.query.get_account_balance() for item in balance.holdings: profit_rate = float(item.prft_rt) if profit_rate >= TAKE_PROFIT: print(f"[익절] {item.stk_nm}: {profit_rate:.2f}% → 전량 매도") try: result = client.order.sell( stock_code=item.stk_cd, quantity=item.trde_able_qty, # 매도가능수량 trade_type="market", ) print(f" 매도 주문 완료 — 주문번호: {result.ord_no}") except KiwoomApiError as e: print(f" 매도 실패: {e}") elif profit_rate <= STOP_LOSS: print(f"[손절] {item.stk_nm}: {profit_rate:.2f}% → 전량 매도") try: result = client.order.sell( stock_code=item.stk_cd, quantity=item.trde_able_qty, trade_type="market", ) print(f" 손절 주문 완료 — 주문번호: {result.ord_no}") except KiwoomApiError as e: print(f" 손절 실패: {e}") time.sleep(CHECK_INTERVAL) ``` ## 주문 후 미체결 취소 ¶ 지정가 주문 후 일정 시간 안에 체결되지 않으면 자동으로 취소합니다. ``` import time from kiwoompy import KiwoomClient client = KiwoomClient(env="demo", appkey="...", secretkey="...") STOCK_CODE = "005930" WAIT_SECONDS = 60 # 60초 안에 체결 안 되면 취소 # 지정가 매수 주문 result = client.order.buy( stock_code=STOCK_CODE, quantity="1", trade_type="limit", price="68000", ) order_no = result.ord_no print(f"주문 접수 — 주문번호: {order_no}") # 체결 대기 time.sleep(WAIT_SECONDS) # 미체결 확인 unfilled = client.query.get_unfilled_orders(all_stock_type="0", trade_type="buy") still_unfilled = next((o for o in unfilled if o.ord_no == order_no), None) if still_unfilled: remaining = still_unfilled.oso_qty print(f"미체결 {remaining}주 → 취소 주문") client.order.cancel( original_order_no=order_no, stock_code=STOCK_CODE, cancel_quantity="0", # 잔량 전부 취소 ) print("취소 완료") else: print("이미 체결됨") ``` ## 관련 가이드 ¶ - 주문하기 → - 시세·종목 정보 → - 계좌·잔고 조회 → --- # 실시간 현재가 수신 # 실시간 현재가 수신 ¶ WebSocket으로 주식 체결 데이터를 실시간으로 수신하는 예제입니다. ## 단일 종목 현재가 출력 ¶ ``` import asyncio from kiwoompy import KiwoomClient from kiwoompy.realtime import KiwoomRealtime from kiwoompy.models import RealtimeEvent client = KiwoomClient(env="demo", appkey="...", secretkey="...") async def on_trade(event: RealtimeEvent) -> None: price = event.values.get("10", "") change = event.values.get("11", "") rate = event.values.get("12", "") volume = event.values.get("15", "") print(f"[{event.item}] 현재가: {price}원 전일대비: {change} 등락률: {rate}% 체결량: {volume}주") async def main(): async with KiwoomRealtime(client.api, env="demo") as rt: await rt.subscribe("0B", items=["005930"], callback=on_trade) await asyncio.sleep(60) asyncio.run(main()) ``` ## 여러 종목 동시 수신 ¶ ``` import asyncio from kiwoompy import KiwoomClient from kiwoompy.realtime import KiwoomRealtime from kiwoompy.models import RealtimeEvent client = KiwoomClient(env="demo", appkey="...", secretkey="...") WATCHLIST = ["005930", "000660", "035720", "005380", "051910"] async def on_trade(event: RealtimeEvent) -> None: v = event.values print( f"{event.item:>8} " f"현재가: {v.get('10', ''):>8}원 " f"등락률: {v.get('12', ''):>6}% " f"거래량: {v.get('13', ''):>12}주" ) async def main(): async with KiwoomRealtime(client.api, env="demo") as rt: await rt.subscribe("0B", items=WATCHLIST, callback=on_trade) print(f"{len(WATCHLIST)}개 종목 실시간 수신 시작") await asyncio.sleep(300) asyncio.run(main()) ``` ## 체결 + 호가 동시 수신 ¶ ``` import asyncio from kiwoompy import KiwoomClient from kiwoompy.realtime import KiwoomRealtime from kiwoompy.models import RealtimeEvent client = KiwoomClient(env="demo", appkey="...", secretkey="...") async def on_trade(event: RealtimeEvent) -> None: v = event.values print(f"[체결] {event.item}: {v.get('10')}원 체결량: {v.get('15')}주") async def on_orderbook(event: RealtimeEvent) -> None: v = event.values # 매도 1~5호가 asks = [v.get(f"4{i+1}", "") for i in range(5)] # 매수 1~5호가 bids = [v.get(f"5{i+1}", "") for i in range(5)] print(f"[호가] {event.item} 매도1: {asks[0]} 매수1: {bids[0]}") async def main(): async with KiwoomRealtime(client.api, env="demo") as rt: await rt.subscribe("0B", items=["005930"], callback=on_trade) await rt.subscribe("0D", items=["005930"], callback=on_orderbook) await asyncio.sleep(60) asyncio.run(main()) ``` ## 내 주문 체결 알림 ¶ 주문 접수·체결·취소 이벤트를 실시간으로 수신합니다. ``` import asyncio from kiwoompy import KiwoomClient from kiwoompy.realtime import KiwoomRealtime from kiwoompy.models import RealtimeEvent client = KiwoomClient(env="demo", appkey="...", secretkey="...") async def on_my_order(event: RealtimeEvent) -> None: v = event.values status = v.get("913", "") # 주문상태: 접수/체결/취소/거부 name = v.get("302", "") # 종목명 order_no = v.get("9203", "") # 주문번호 side = v.get("905", "") # 주문구분: 매수/매도 qty = v.get("900", "") # 주문수량 filled_qty = v.get("911", "") # 체결량 filled_price = v.get("910", "") # 체결가 print(f"[{status}] {name} ({side}) — 주문번호: {order_no}") if status == "체결": print(f" 체결가: {filled_price}원 / 체결량: {filled_qty}주") async def main(): async with KiwoomRealtime(client.api, env="demo") as rt: # 계좌 기반 구독 — items에 빈 문자열 전달 await rt.subscribe("00", items=[""], callback=on_my_order) print("주문체결 알림 수신 대기 중...") await asyncio.sleep(3600) # 1시간 asyncio.run(main()) ``` ## 실행 예시 ¶ ``` 005930 현재가: 71,500원 등락률: +1.42% 거래량: 12,345,678주 000660 현재가: 185,000원 등락률: -0.54% 거래량: 3,456,789주 005930 현재가: 71,600원 등락률: +1.56% 거래량: 12,346,100주 ``` ## 관련 가이드 ¶ - 실시간 시세 가이드 → — TR 타입 목록 및 필드 설명 - 조건부 자동 주문 → — 실시간 데이터 기반 자동 주문 --- # 개요 # API 레퍼런스 ¶ kiwoompy의 전체 공개 API 목록입니다. ## 구현된 모듈 ¶ | 모듈 | 역할 | 주요 클래스·함수 | | --- | --- | --- | | client | 통합 진입점 파사드 + HTTP 저수준 클라이언트 | KiwoomClient , KiwoomApi | | auth | OAuth2 접근토큰 발급·유효성 관리 | KiwoomAuth | | models | 요청·응답 데이터 구조, 타입 별칭 | TokenRequest , TokenResponse , Env , AccountNo | | exceptions | 커스텀 예외 계층 | KiwoomError , KiwoomApiError , KiwoomAuthError | | utils | 입력값 정규화 등 공통 유틸리티 | normalize_account_no | ## 준비 중인 모듈 ¶ | 모듈 | 역할 | | --- | --- | | query | 시세·잔고·계좌·종목 정보 조회 | | order | 매수·매도·정정·취소 주문 | --- # 인증 (auth) # 인증 (auth) ¶ 키움증권 OAuth2 접근토큰 발급 및 유효성 관리를 담당하는 모듈입니다. ## kiwoompy.auth ¶ 인증 모듈 — OAuth2 접근토큰 발급 및 폐기 (au10001, au10002). ### KiwoomAuth ¶ ``` KiwoomAuth(api: KiwoomApi) ``` 키움 REST API 인증 관리자. 접근토큰 발급 후 KiwoomApi 계층에 저장하여 이후 모든 API 호출에서 자동으로 재사용되도록 한다. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | api | KiwoomApi | HTTP 클라이언트 인스턴스. 토큰을 발급 즉시 이 객체에 저장한다. | required | HTTP 클라이언트 인스턴스. 토큰을 발급 즉시 이 객체에 저장한다. ``` def __init__(self, api: KiwoomApi) -> None: self._api = api self._expires_at: datetime | None = None ``` #### is_token_valid ¶ ``` is_token_valid() -> bool ``` 현재 토큰이 유효한지 확인한다. Returns: | Type | Description | | --- | --- | | bool | 토큰이 발급되어 있고 아직 만료되지 않으면 True . | 토큰이 발급되어 있고 아직 만료되지 않으면 True . ``` def is_token_valid(self) -> bool: """현재 토큰이 유효한지 확인한다. Returns: 토큰이 발급되어 있고 아직 만료되지 않으면 ``True``. """ if self._expires_at is None: return False return datetime.now() < self._expires_at ``` #### issue_token ¶ ``` issue_token(appkey: str, secretkey: str) -> TokenResponse ``` 접근토큰을 발급하고 API 클라이언트에 저장한다 (au10001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | appkey | str | 키움증권 앱 키. | required | | secretkey | str | 키움증권 시크릿 키. | required | 키움증권 앱 키. 키움증권 시크릿 키. Returns: | Type | Description | | --- | --- | | TokenResponse | 발급된 토큰 정보 ( TokenResponse ). | 발급된 토큰 정보 ( TokenResponse ). Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 앱 키·시크릿 키가 올바르지 않거나 인증 서버 4xx 응답. | | KiwoomApiError | 서버 5xx 오류, 네트워크 타임아웃, 응답 파싱 실패. | 앱 키·시크릿 키가 올바르지 않거나 인증 서버 4xx 응답. 서버 5xx 오류, 네트워크 타임아웃, 응답 파싱 실패. ``` def issue_token(self, appkey: str, secretkey: str) -> TokenResponse: """접근토큰을 발급하고 API 클라이언트에 저장한다 (au10001). Args: appkey: 키움증권 앱 키. secretkey: 키움증권 시크릿 키. Returns: 발급된 토큰 정보 (`TokenResponse`). Raises: KiwoomAuthError: 앱 키·시크릿 키가 올바르지 않거나 인증 서버 4xx 응답. KiwoomApiError: 서버 5xx 오류, 네트워크 타임아웃, 응답 파싱 실패. """ request = TokenRequest(appkey=appkey, secretkey=secretkey) raw = self._api.post("/oauth2/token", asdict(request)) response = self._parse_response(raw) self._api.set_token(response.token) self._expires_at = self._parse_expires_dt(response.expires_dt) return response ``` #### revoke_token ¶ ``` revoke_token(appkey: str, secretkey: str) -> None ``` 현재 발급된 접근토큰을 폐기하고 내부 상태를 초기화한다 (au10002). 폐기 후에는 해당 토큰으로 API를 호출할 수 없다. 성공 시 KiwoomApi 에 저장된 토큰과 만료일시를 초기화한다. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | appkey | str | 키움증권 앱 키. | required | | secretkey | str | 키움증권 시크릿 키. | required | 키움증권 앱 키. 키움증권 시크릿 키. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰이 발급되지 않았거나 폐기 요청이 실패한 경우. | | KiwoomApiError | 서버 5xx 오류, 네트워크 타임아웃, 응답 파싱 실패. | 토큰이 발급되지 않았거나 폐기 요청이 실패한 경우. 서버 5xx 오류, 네트워크 타임아웃, 응답 파싱 실패. ``` def revoke_token(self, appkey: str, secretkey: str) -> None: """현재 발급된 접근토큰을 폐기하고 내부 상태를 초기화한다 (au10002). 폐기 후에는 해당 토큰으로 API를 호출할 수 없다. 성공 시 ``KiwoomApi``에 저장된 토큰과 만료일시를 초기화한다. Args: appkey: 키움증권 앱 키. secretkey: 키움증권 시크릿 키. Raises: KiwoomAuthError: 토큰이 발급되지 않았거나 폐기 요청이 실패한 경우. KiwoomApiError: 서버 5xx 오류, 네트워크 타임아웃, 응답 파싱 실패. """ auth_header = self._api.get_auth_header() # get_auth_header()가 토큰 존재 여부를 검증하므로 이 시점에서 _token은 반드시 str token: str = self._api._token # type: ignore[assignment] # noqa: SLF001 request = RevokeTokenRequest(appkey=appkey, secretkey=secretkey, token=token) raw = self._api.post( "/oauth2/revoke", {"appkey": request.appkey, "secretkey": request.secretkey, "token": request.token}, headers={**auth_header, "api-id": "au10002"}, ) return_code = raw.get("return_code") if return_code is not None and return_code != 0: msg = raw.get("return_msg", "폐기 실패") raise KiwoomAuthError(f"접근토큰 폐기 실패 (return_code={return_code}): {msg}") self._api.set_token("") self._expires_at = None ``` --- # HTTP 클라이언트 (api) # 클라이언트 (client · api) ¶ ## KiwoomClient ¶ KiwoomApi 와 KiwoomAuth 를 통합한 사용자 진입점 파사드입니다. 초기화 시 접근토큰을 자동으로 발급합니다. ## kiwoompy.client ¶ KiwoomClient — KiwoomApi, KiwoomAuth, KiwoomQuery, KiwoomOrder를 통합한 사용자 진입점 파사드. ### KiwoomClient ¶ ``` KiwoomClient(env: Env = 'demo', appkey: str = '', secretkey: str = '', rps: float | None = None) ``` 키움증권 REST API 통합 클라이언트. KiwoomApi (HTTP 통신·유량 제어), KiwoomAuth (토큰 발급·갱신), KiwoomQuery (계좌·잔고·손익 조회), KiwoomOrder (주식·신용 주문)를 하나로 묶은 파사드 클래스. 초기화 시 접근토큰을 자동으로 발급한다. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | env | Env | 환경 구분. "real" (운영) 또는 "demo" (모의투자). 기본값 "demo" . | 'demo' | | appkey | str | 키움증권 앱 키. | '' | | secretkey | str | 키움증권 시크릿 키. | '' | | rps | float | None | 초당 최대 요청 수. None 이면 환경별 기본값 사용 ( demo 2건/초, real 20건/초). | None | 환경 구분. "real" (운영) 또는 "demo" (모의투자). 기본값 "demo" . 키움증권 앱 키. 키움증권 시크릿 키. 초당 최대 요청 수. None 이면 환경별 기본값 사용 ( demo 2건/초, real 20건/초). Examples: 기본 사용법: ``` from kiwoompy import KiwoomClient client = KiwoomClient( env="demo", appkey="YOUR_APP_KEY", secretkey="YOUR_APP_SECRET", ) balance = client.query.get_account_balance() print(balance.tot_evlt_amt) # 총평가금액 ``` context manager: ``` with KiwoomClient(env="demo", appkey="...", secretkey="...") as client: unfilled = client.query.get_unfilled_orders(all_stock_type="0", trade_type="0") result = client.order.buy("005930", "1", trade_type="3") # 시장가 매수 ``` ``` def __init__( self, env: Env = "demo", appkey: str = "", secretkey: str = "", rps: float | None = None, ) -> None: self._api = KiwoomApi(env=env, rps=rps) self._auth = KiwoomAuth(self._api) self._query = KiwoomQuery(self._api) self._order = KiwoomOrder(self._api) self._auth.issue_token(appkey=appkey, secretkey=secretkey) ``` #### api property ¶ ``` api: KiwoomApi ``` 내부 KiwoomApi 인스턴스. 고급 사용자나 테스트에서 HTTP 클라이언트에 직접 접근할 때 사용한다. #### auth property ¶ ``` auth: KiwoomAuth ``` 내부 KiwoomAuth 인스턴스. 토큰 유효성 확인이나 수동 갱신이 필요할 때 사용한다. #### order property ¶ ``` order: KiwoomOrder ``` 내부 KiwoomOrder 인스턴스. 주식·신용 매수/매도/정정/취소 주문 메서드에 접근한다. Examples: ``` result = client.order.buy("005930", "1", trade_type="3") result = client.order.cancel(result.ord_no, "005930", "0") ``` #### query property ¶ ``` query: KiwoomQuery ``` 내부 KiwoomQuery 인스턴스. 계좌·잔고·손익·주문체결 조회 메서드에 접근한다. Examples: ``` balance = client.query.get_account_balance() unfilled = client.query.get_unfilled_orders(all_stock_type="0", trade_type="0") ``` #### close ¶ ``` close() -> None ``` HTTP 클라이언트 세션을 닫는다. ``` def close(self) -> None: """HTTP 클라이언트 세션을 닫는다.""" self._api.close() ``` #### refresh_token ¶ ``` refresh_token(appkey: str, secretkey: str) -> TokenResponse ``` 접근토큰을 재발급한다. 토큰 만료 전후로 명시적으로 갱신이 필요할 때 호출한다. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | appkey | str | 키움증권 앱 키. | required | | secretkey | str | 키움증권 시크릿 키. | required | 키움증권 앱 키. 키움증권 시크릿 키. Returns: | Type | Description | | --- | --- | | TokenResponse | 새로 발급된 TokenResponse . | 새로 발급된 TokenResponse . ``` def refresh_token(self, appkey: str, secretkey: str) -> TokenResponse: """접근토큰을 재발급한다. 토큰 만료 전후로 명시적으로 갱신이 필요할 때 호출한다. Args: appkey: 키움증권 앱 키. secretkey: 키움증권 시크릿 키. Returns: 새로 발급된 ``TokenResponse``. """ return self._auth.issue_token(appkey=appkey, secretkey=secretkey) ``` ## KiwoomApi ¶ HTTP 통신, 유량 제어, 자동 재시도를 담당하는 저수준 클라이언트입니다. 테스트 모킹이나 세밀한 제어가 필요할 때 직접 사용합니다. ## kiwoompy.api ¶ REST 통신 계층 — base URL 관리, 토큰 보관, HTTP get/post 단일 진입점. ### KiwoomApi ¶ ``` KiwoomApi(env: Env = 'demo', rps: float | None = None) ``` 키움 REST API HTTP 클라이언트. 모든 HTTP 호출은 이 클래스를 통해서만 이루어진다. 발급된 접근토큰을 내부에 보관하고, 이후 요청 헤더에 자동으로 포함한다. 유량 제어 : 환경별 기본 RPS를 자동 적용한다. - 실전( real ): 기본 20건/초 - 모의( demo ): 기본 2건/초 rps 파라미터로 직접 조정할 수 있다. 재시도 : 네트워크 오류·타임아웃·5xx 서버 오류는 지수 백오프로 최대 _MAX_ATTEMPTS 회 재시도한다. 4xx 인증 오류는 재시도하지 않는다. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | env | Env | 환경 구분. "real" (운영) 또는 "demo" (모의투자). | 'demo' | | rps | float | None | 초당 최대 요청 수. None 이면 환경별 기본값 사용. | None | 환경 구분. "real" (운영) 또는 "demo" (모의투자). 초당 최대 요청 수. None 이면 환경별 기본값 사용. ``` def __init__(self, env: Env = "demo", rps: float | None = None) -> None: self._base_url: str = _BASE_URLS[env] self._token: str | None = None self._rate_limiter = _RateLimiter(rps if rps is not None else _DEFAULT_RPS[env]) self._client = httpx.Client( base_url=self._base_url, headers={"Content-Type": "application/json;charset=UTF-8"}, timeout=_TIMEOUT, ) ``` #### close ¶ ``` close() -> None ``` HTTP 클라이언트 세션을 닫는다. ``` def close(self) -> None: """HTTP 클라이언트 세션을 닫는다.""" self._client.close() ``` #### get_auth_header ¶ ``` get_auth_header() -> dict[str, str] ``` 현재 저장된 접근토큰으로 Authorization 헤더를 반환한다. Returns: | Type | Description | | --- | --- | | dict [ str , str ] | {"Authorization": "Bearer "} 형태의 딕셔너리. | {"Authorization": "Bearer "} 형태의 딕셔너리. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰이 아직 발급되지 않은 경우. | 토큰이 아직 발급되지 않은 경우. ``` def get_auth_header(self) -> dict[str, str]: """현재 저장된 접근토큰으로 Authorization 헤더를 반환한다. Returns: ``{"Authorization": "Bearer "}`` 형태의 딕셔너리. Raises: KiwoomAuthError: 토큰이 아직 발급되지 않은 경우. """ if self._token is None: raise KiwoomAuthError("접근토큰이 없습니다. issue_token()을 먼저 호출하세요.") return {"Authorization": f"Bearer {self._token}"} ``` #### post ¶ ``` post(path: str, body: dict, headers: dict[str, str] | None = None) -> dict ``` JSON POST 요청을 보내고 응답 JSON을 반환한다. 유량 제어 후 요청을 전송한다. 네트워크 오류·타임아웃·5xx는 지수 백오프로 재시도한다. 4xx 응답( KiwoomAuthError )은 재시도하지 않고 즉시 raise한다. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | path | str | 엔드포인트 경로 (예: "/oauth2/token" ). | required | | body | dict | 요청 본문 딕셔너리. | required | | headers | dict [ str , str ] | None | 추가 요청 헤더. None 이면 기본 헤더만 사용. | None | 엔드포인트 경로 (예: "/oauth2/token" ). 요청 본문 딕셔너리. 추가 요청 헤더. None 이면 기본 헤더만 사용. Returns: | Type | Description | | --- | --- | | dict | 응답 JSON을 파싱한 딕셔너리. | 응답 JSON을 파싱한 딕셔너리. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | HTTP 4xx 응답 (인증 실패 등). 재시도 없음. | | KiwoomApiError | 최대 재시도 후에도 5xx·네트워크·파싱 오류가 지속되는 경우. | HTTP 4xx 응답 (인증 실패 등). 재시도 없음. 최대 재시도 후에도 5xx·네트워크·파싱 오류가 지속되는 경우. ``` @_retry def post(self, path: str, body: dict, headers: dict[str, str] | None = None) -> dict: """JSON POST 요청을 보내고 응답 JSON을 반환한다. 유량 제어 후 요청을 전송한다. 네트워크 오류·타임아웃·5xx는 지수 백오프로 재시도한다. 4xx 응답(``KiwoomAuthError``)은 재시도하지 않고 즉시 raise한다. Args: path: 엔드포인트 경로 (예: ``"/oauth2/token"``). body: 요청 본문 딕셔너리. headers: 추가 요청 헤더. ``None``이면 기본 헤더만 사용. Returns: 응답 JSON을 파싱한 딕셔너리. Raises: KiwoomAuthError: HTTP 4xx 응답 (인증 실패 등). 재시도 없음. KiwoomApiError: 최대 재시도 후에도 5xx·네트워크·파싱 오류가 지속되는 경우. """ self._rate_limiter.acquire() try: response = self._client.post(path, json=body, headers=headers) except httpx.TimeoutException as exc: raise KiwoomApiError(f"요청 타임아웃: {path}") from exc except httpx.RequestError as exc: raise KiwoomApiError(f"네트워크 오류: {exc}") from exc if 400 <= response.status_code < 500: raise KiwoomAuthError( f"인증 오류: {response.text}", status_code=response.status_code, ) if response.status_code >= 500: raise KiwoomApiError( f"서버 오류: {response.text}", status_code=response.status_code, ) try: return response.json() except Exception as exc: raise KiwoomApiError(f"응답 파싱 실패: {response.text}") from exc ``` #### set_token ¶ ``` set_token(token: str) -> None ``` 발급된 접근토큰을 저장한다. 이후 모든 요청에 자동 포함된다. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | token | str | 접근토큰 문자열. | required | 접근토큰 문자열. ``` def set_token(self, token: str) -> None: """발급된 접근토큰을 저장한다. 이후 모든 요청에 자동 포함된다. Args: token: 접근토큰 문자열. """ self._token = token ``` --- # 모델 (models) # 모델 (models) ¶ 요청·응답 데이터 구조 및 타입 별칭을 정의하는 모듈입니다. ## kiwoompy.models ¶ kiwoompy 공통 데이터 모델 — 타입 별칭 및 TR별 요청/응답 dataclass. ### AccountNo ¶ ``` AccountNo = str ``` 계좌번호. "12345678-01" 형식 (8자리 계좌번호 + 상품코드). 입력값 정규화는 :func: kiwoompy.utils.normalize_account_no 사용. ### AfterAmtQtyType ¶ ``` AfterAmtQtyType = Literal['amount', 'qty'] ``` 금액수량구분 (장마감후투자자별). - "amount" : 금액 — API "1" - "qty" : 수량 — API "2" ### AfterTradeType ¶ ``` AfterTradeType = Literal['net_buy', 'buy', 'sell'] ``` 장마감후 매매구분. - "net_buy" : 순매수 — API "0" - "buy" : 매수 — API "1" - "sell" : 매도 — API "2" ### AmtQtyType ¶ ``` AmtQtyType = Literal['amount', 'qty'] ``` 금액수량구분 (종목별투자자기관별). - "amount" : 금액 — API "1" - "qty" : 수량 — API "2" ### ChartAdjustedPrice ¶ ``` ChartAdjustedPrice = Literal['adjusted', 'raw'] ``` 수정주가구분. - "adjusted" : 수정주가 반영 — API "1" - "raw" : 미반영 — API "0" ### ChartAmtQtyType ¶ ``` ChartAmtQtyType = Literal['amount', 'qty'] ``` 금액수량구분 (투자자 차트). - "amount" : 금액 — API "1" - "qty" : 수량 — API "2" ### ChartMinScope ¶ ``` ChartMinScope = Literal['1', '3', '5', '10', '15', '30', '45', '60'] ``` 주식 분봉 범위. - "1" : 1분 - "3" : 3분 - "5" : 5분 - "10" : 10분 - "15" : 15분 - "30" : 30분 - "45" : 45분 - "60" : 60분 ### ChartSectorMarket ¶ ``` ChartSectorMarket = Literal['kospi', 'kosdaq', 'kospi200'] ``` 업종차트 시장구분. - "kospi" : 코스피 — API "0" - "kosdaq" : 코스닥 — API "1" - "kospi200" : 코스피200 — API "2" ### ChartTickScope ¶ ``` ChartTickScope = Literal['1', '3', '5', '10', '30'] ``` 주식/업종 틱 범위. - "1" : 1틱 - "3" : 3틱 - "5" : 5틱 - "10" : 10틱 - "30" : 30틱 ### ChartTradeType ¶ ``` ChartTradeType = Literal['net_buy', 'buy', 'sell'] ``` 매매구분 (투자자 차트). - "net_buy" : 순매수 — API "0" - "buy" : 매수 — API "1" - "sell" : 매도 — API "2" ### ChartUnitType ¶ ``` ChartUnitType = Literal['thousand', 'single'] ``` 단위구분 (종목별투자자기관별차트). - "thousand" : 천주 — API "1000" - "single" : 단주 — API "1" ### CreditMarketType ¶ ``` CreditMarketType = Literal['%', '1', '0'] ``` 신용융자 시장거래구분. - "%" : 전체 - "1" : 코스피 - "0" : 코스닥 ### CreditQueryType ¶ ``` CreditQueryType = Literal['loan', 'short'] ``` 신용매매동향 조회구분. - "loan" : 융자 — API "1" - "short" : 대주 — API "2" ### CreditStockGradeType ¶ ``` CreditStockGradeType = Literal['%', 'A', 'B', 'C', 'D', 'E'] ``` 신용종목등급구분. - "%" : 전체 - "A" ~ "E" : 각 등급 ### DisplayType ¶ ``` DisplayType = Literal['qty', 'amount'] ``` 일별주가 표시구분. - "qty" : 수량 — API "0" - "amount" : 금액(백만원) — API "1" ### ElwFlucType ¶ ``` ElwFlucType = Literal['surge', 'plunge'] ``` ELW 등락구분. - "surge" : 급등 (1) - "plunge" : 급락 (2) ### ElwRightType ¶ ``` ElwRightType = Literal['all', 'call', 'put', 'dc', 'dp', 'ex', 'early_call', 'early_put'] ``` ELW 권리구분. - "all" : 전체 (000) - "call" : 콜 (001) - "put" : 풋 (002) - "dc" : DC (003) - "dp" : DP (004) - "ex" : EX (005) - "early_call" : 조기종료콜 (006) - "early_put" : 조기종료풋 (007) ### ElwSortType ¶ ``` ElwSortType = Literal['rise_rate', 'rise_gap', 'fall_rate', 'fall_gap', 'volume', 'amount', 'expire'] ``` ELW 정렬구분. - "rise_rate" : 상승율순 (1) - "rise_gap" : 상승폭순 (2) - "fall_rate" : 하락율순 (3) - "fall_gap" : 하락폭순 (4) - "volume" : 거래량순 (5) - "amount" : 거래대금순 (6) - "expire" : 잔존일순 (7) ### Env ¶ ``` Env = Literal['real', 'demo'] ``` 운영( real ) / 모의투자( demo ) 환경 구분. ### EstimatedPriceType ¶ ``` EstimatedPriceType = Literal['buy', 'sell'] ``` 추정단가구분. - "buy" : 매수단가 — API "1" - "sell" : 매도단가 — API "2" ### EtfDuration ¶ ``` EtfDuration = Literal['1w', '1m', '6m', '1y'] ``` ETF 기간구분. - "1w" : 1주 (0) - "1m" : 1달 (1) - "6m" : 6개월 (2) - "1y" : 1년 (3) ### FrgnDuration ¶ ``` FrgnDuration = Literal['1', '3', '5', '10', '20', '120', 'custom'] ``` 기관/외국인 연속매매 기간. - "1" : 최근 1일 - "3" : 3일 - "5" : 5일 - "10" : 10일 - "20" : 20일 - "120" : 120일 - "custom" : 시작일자/종료일자로 직접 지정 ( "0" 전달) ### FrgnStockSectType ¶ ``` FrgnStockSectType = Literal['stock', 'sector'] ``` 기관/외국인 종목업종구분. - "stock" : 종목(주식) (0) - "sector" : 업종 (1) ### GoldOrderTradeType ¶ ``` GoldOrderTradeType = Literal['normal', 'normal_ioc', 'normal_fok'] ``` 금현물 매매구분. - "normal" : 보통 (00) - "normal_ioc" : 보통(IOC) (10) - "normal_fok" : 보통(FOK) (20) ### GoldStockCode ¶ ``` GoldStockCode = Literal['M04020000', 'M04020100'] ``` 금현물 종목코드. - "M04020000" : 금 99.99_1kg - "M04020100" : 미니금 99.99_100g ### HighLowSelectType ¶ ``` HighLowSelectType = Literal['high', 'low'] ``` 신고저구분. - "high" : 신고가 — API "1" - "low" : 신저가 — API "2" ### InstitutionTradeType ¶ ``` InstitutionTradeType = Literal['sell', 'buy'] ``` 기관 매매구분 (순매도/순매수). - "sell" : 순매도 — API "1" - "buy" : 순매수 — API "2" ### IntraAmtQtyType ¶ ``` IntraAmtQtyType = Literal['amount_qty', 'amount', 'qty'] ``` 금액수량구분 (장중투자자별). - "amount_qty" : 금액&수량 — API "1" ### InvestorTradeType ¶ ``` InvestorTradeType = Literal['net_buy', 'buy', 'sell'] ``` 종목별투자자 매매구분. - "net_buy" : 순매수 — API "0" - "buy" : 매수 — API "1" - "sell" : 매도 — API "2" ### InvestorType ¶ ``` InvestorType = Literal['foreign', 'institution', 'trust', 'insurance', 'bank', 'pension', 'gov', 'other_corp'] ``` 투자자별 (장중투자자별). - "foreign" : 외국인 — API "6" - "institution" : 기관계 — API "7" - "trust" : 투신 — API "1" - "insurance" : 보험 — API "0" - "bank" : 은행 — API "2" - "pension" : 연기금 — API "3" - "gov" : 국가 — API "4" - "other_corp" : 기타법인 — API "5" ### InvestorType2 ¶ ``` InvestorType2 = Literal['individual', 'foreign', 'financial_inv', 'trust', 'private_fund', 'other_fin', 'bank', 'insurance', 'pension', 'gov', 'other_corp', 'institution'] ``` 투자자구분 (투자자별일별매매종목). - "individual" : 개인 — API "8000" - "foreign" : 외국인 — API "9000" - "financial_inv" : 금융투자 — API "1000" - "trust" : 투신 — API "3000" - "private_fund" : 사모펀드 — API "3100" - "other_fin" : 기타금융 — API "5000" - "bank" : 은행 — API "4000" - "insurance" : 보험 — API "2000" - "pension" : 연기금 — API "6000" - "gov" : 국가 — API "7000" - "other_corp" : 기타법인 — API "7100" - "institution" : 기관계 — API "9999" ### MrkcondExchangeType ¶ ``` MrkcondExchangeType = Literal['krx', 'nxt', 'all'] ``` 시세·종목정보 거래소구분. - "krx" : KRX — API "1" - "nxt" : NXT — API "2" - "all" : 통합 — API "3" ### MrktType3 ¶ ``` MrktType3 = Literal['all', 'kospi', 'kosdaq'] ``` 시장구분 3자리 코드 (전체/코스피/코스닥). - "all" : 전체 — API "000" - "kospi" : 코스피 — API "001" - "kosdaq" : 코스닥 — API "101" ### MrktType3Ext ¶ ``` MrktType3Ext = Literal['all', 'kospi', 'kosdaq', 'kospi200'] ``` 시장구분 3자리 (가격급등락용, KOSPI200 포함). - "all" : 전체 — API "000" - "kospi" : 코스피 — API "001" - "kosdaq" : 코스닥 — API "101" - "kospi200" : 코스피200 — API "201" ### NewStockRightsType ¶ ``` NewStockRightsType = Literal['all', 'rights_cert', 'rights_deed'] ``` 신주인수권구분. - "all" : 전체 — API "00" - "rights_cert" : 신주인수권증권 — API "05" - "rights_deed" : 신주인수권증서 — API "07" ### OrderExchange ¶ ``` OrderExchange = Literal['KRX', 'NXT', 'SOR'] ``` 주문 국내거래소구분. - "KRX" : 한국거래소 - "NXT" : 넥스트트레이드 - "SOR" : 최선주문집행 ### OrderTradeType ¶ ``` OrderTradeType = Literal['limit', 'market', 'conditional', 'best', 'priority', 'limit_ioc', 'market_ioc', 'best_ioc', 'limit_fok', 'market_fok', 'best_fok', 'stop', 'mid', 'mid_ioc', 'mid_fok', 'pre_market', 'after_hours', 'post_market'] ``` 매매구분 (사람이 읽기 쉬운 키 → API 코드로 자동 변환됨). - "limit" : 보통(지정가) — API "0" - "market" : 시장가 — API "3" - "conditional" : 조건부지정가 — API "5" - "best" : 최유리지정가 — API "6" - "priority" : 최우선지정가 — API "7" - "limit_ioc" : 보통(IOC) — API "10" - "market_ioc" : 시장가(IOC) — API "13" - "best_ioc" : 최유리(IOC) — API "16" - "limit_fok" : 보통(FOK) — API "20" - "market_fok" : 시장가(FOK) — API "23" - "best_fok" : 최유리(FOK) — API "26" - "stop" : 스톱지정가 — API "28" - "mid" : 중간가 — API "29" - "mid_ioc" : 중간가(IOC) — API "30" - "mid_fok" : 중간가(FOK) — API "31" - "pre_market" : 장시작전시간외 — API "61" - "after_hours" : 시간외단일가 — API "62" - "post_market" : 장마감후시간외 — API "81" ### PERType ¶ ``` PERType = Literal['low_pbr', 'high_pbr', 'low_per', 'high_per', 'low_roe', 'high_roe'] ``` 고저PER 구분. - "low_pbr" : 저PBR — API "1" - "high_pbr" : 고PBR — API "2" - "low_per" : 저PER — API "3" - "high_per" : 고PER — API "4" - "low_roe" : 저ROE — API "5" - "high_roe" : 고ROE — API "6" ### RealtimeType ¶ ``` RealtimeType = Literal['00', '04', '0A', '0B', '0C', '0D', '0E', '0F', '0G', '0H', '0I', '0J', '0U', '0g', '0m', '0s', '0u', '0w', '1h'] ``` 실시간 수신 TR 타입. - "00" : 주문체결 - "04" : 잔고 - "0A" : 주식기세 - "0B" : 주식체결 - "0C" : 주식우선호가 - "0D" : 주식호가잔량 - "0E" : 주식시간외호가 - "0F" : 주식당일거래원 - "0G" : ETF NAV - "0H" : 주식예상체결 - "0I" : 국제금환산가격 - "0J" : 업종지수 - "0U" : 업종등락 - "0g" : 주식종목정보 - "0m" : ELW 이론가 - "0s" : 장시작시간 - "0u" : ELW 지표 - "0w" : 종목프로그램매매 - "1h" : VI발동/해제 ### RkinfoBaseDateType ¶ ``` RkinfoBaseDateType = Literal['today', 'prev'] ``` 기준일구분. - "today" : 당일기준 — API "0" - "prev" : 전일기준 — API "1" ### RkinfoBidSortType ¶ ``` RkinfoBidSortType = Literal['net_buy_qty', 'net_sell_qty', 'buy_ratio', 'sell_ratio'] ``` 호가잔량상위 정렬구분 (ka10020). - "net_buy_qty" : 순매수잔량순 — API "1" - "net_sell_qty" : 순매도잔량순 — API "2" - "buy_ratio" : 매수비율순 — API "3" - "sell_ratio" : 매도비율순 — API "4" ### RkinfoBidTradeType ¶ ``` RkinfoBidTradeType = Literal['buy', 'sell'] ``` 호가잔량급증 매매구분 (ka10021). - "buy" : 매수잔량 — API "1" - "sell" : 매도잔량 — API "2" ### RkinfoMarketType ¶ ``` RkinfoMarketType = Literal['all', 'kospi', 'kosdaq'] ``` 순위정보 시장구분. - "all" : 전체 — API "000" - "kospi" : 코스피 — API "001" - "kosdaq" : 코스닥 — API "101" ### RkinfoOrgType ¶ ``` RkinfoOrgType = Literal['foreign', 'foreign_corp', 'financial_inv', 'trust', 'other_finance', 'bank', 'insurance', 'pension', 'gov', 'other_corp', 'institution'] ``` 장중투자자별 기관구분 (ka10065). - "foreign" : 외국인 — API "9000" - "foreign_corp" : 외국계 — API "9100" - "financial_inv" : 금융투자 — API "1000" - "trust" : 투신 — API "3000" - "other_finance" : 기타금융 — API "5000" - "bank" : 은행 — API "4000" - "insurance" : 보험 — API "2000" - "pension" : 연기금 — API "6000" - "gov" : 국가 — API "7000" - "other_corp" : 기타법인 — API "7100" - "institution" : 기관계 — API "9999" ### RkinfoPriceChangeSortType ¶ ``` RkinfoPriceChangeSortType = Literal['rise_ratio', 'rise_gap', 'fall_ratio', 'fall_gap', 'flat'] ``` 전일대비등락률상위 정렬구분 (ka10027). - "rise_ratio" : 상승률 — API "1" - "rise_gap" : 상승폭 — API "2" - "fall_ratio" : 하락률 — API "3" - "fall_gap" : 하락폭 — API "4" - "flat" : 보합 — API "5" ### RkinfoSortCndType ¶ ``` RkinfoSortCndType = Literal['qty', 'amount'] ``` 동일순매매 정렬조건 (ka10062). - "qty" : 수량 — API "1" - "amount" : 금액 — API "2" ### RkinfoStexType ¶ ``` RkinfoStexType = Literal['krx', 'nxt', 'all'] ``` 순위정보 거래소구분. - "krx" : KRX — API "1" - "nxt" : NXT — API "2" - "all" : 통합 — API "3" ### RkinfoSurgeSort2Type ¶ ``` RkinfoSurgeSort2Type = Literal['surge_qty', 'surge_ratio'] ``` 급증 정렬구분 (ka10021/ka10022). - "surge_qty" : 급증량 — API "1" - "surge_ratio" : 급증률 — API "2" ### SectAmtQtyType ¶ ``` SectAmtQtyType = Literal['amount', 'qty'] ``` 업종별 금액수량구분. - "amount" : 금액 (0) - "qty" : 수량 (1) ### SectExchangeType ¶ ``` SectExchangeType = Literal['krx', 'nxt', 'all'] ``` 업종 거래소구분. - "krx" : KRX (1) - "nxt" : NXT (2) - "all" : 통합 (3) ### SectMrktType ¶ ``` SectMrktType = Literal['kospi', 'kosdaq', 'kospi200'] ``` 업종 시장구분. - "kospi" : 코스피 (0) - "kosdaq" : 코스닥 (1) - "kospi200" : 코스피200 (2) ### SectorMarketType ¶ ``` SectorMarketType = Literal['kospi', 'kosdaq', 'kospi200', 'kospi100', 'krx100'] ``` 업종코드 리스트 시장구분. - "kospi" : 코스피(거래소) — API "0" - "kosdaq" : 코스닥 — API "1" - "kospi200" : KOSPI200 — API "2" - "kospi100" : KOSPI100 — API "4" - "krx100" : KRX100(통합지수) — API "7" ### SlbMrktType ¶ ``` SlbMrktType = Literal['kospi', 'kosdaq'] ``` 대차거래 시장구분. - "kospi" : 코스피 (001) - "kosdaq" : 코스닥 (101) ### StkMarketType ¶ ``` StkMarketType = Literal['kospi', 'kosdaq', 'kotc', 'konex', 'etn', 'loss_etn', 'gold', 'vol_etn', 'infra', 'elw', 'mutual_fund', 'rights', 'reit', 'etf', 'high_yield'] ``` 종목정보 리스트 시장구분. - "kospi" : 코스피 — API "0" - "kosdaq" : 코스닥 — API "10" - "kotc" : K-OTC — API "30" - "konex" : 코넥스 — API "50" - "etn" : ETN — API "60" - "loss_etn" : 손실제한 ETN — API "70" - "gold" : 금현물 — API "80" - "vol_etn" : 변동성 ETN — API "90" - "infra" : 인프라투융자 — API "2" - "elw" : ELW — API "3" - "mutual_fund" : 뮤추얼펀드 — API "4" - "rights" : 신주인수권 — API "5" - "reit" : 리츠종목 — API "6" - "rights_deed" : 신주인수권증서 — API "7" - "etf" : ETF — API "8" - "high_yield" : 하이일드펀드 — API "9" ### ThemeSearchType ¶ ``` ThemeSearchType = Literal['all', 'theme', 'stock'] ``` 테마 검색구분. - "all" : 전체검색 (0) - "theme" : 테마검색 (1) - "stock" : 종목검색 (2) ### TickMinType ¶ ``` TickMinType = Literal['tick', 'minute'] ``` 틱/분 구분. - "tick" : 틱 — API "0" - "minute" : 분 — API "1" ### TodayPrevType ¶ ``` TodayPrevType = Literal['today', 'prev'] ``` 당일전일구분. - "today" : 당일 — API "1" - "prev" : 전일 — API "2" ### UnitType ¶ ``` UnitType = Literal['thousand', 'single'] ``` 단위구분. - "thousand" : 천주 — API "1000" - "single" : 단주 — API "1" ### AccountBalance dataclass ¶ ``` AccountBalance(tot_pur_amt: str, tot_evlt_amt: str, tot_evlt_pl: str, tot_prft_rt: str, prsm_dpst_aset_amt: str, tot_loan_amt: str, tot_crd_loan_amt: str, tot_crd_ls_amt: str, holdings: list[HoldingItem] = list()) ``` 계좌평가잔고내역 응답 (kt00018). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | tot_pur_amt | str | 총매입금액 (단위: 원). | required | | tot_evlt_amt | str | 총평가금액 (단위: 원). | required | | tot_evlt_pl | str | 총평가손익금액 (단위: 원). | required | | tot_prft_rt | str | 총수익률(%) (단위: %). | required | | prsm_dpst_aset_amt | str | 추정예탁자산 (단위: 원). | required | | holdings | list [ HoldingItem ] | 종목별 잔고 목록. | list () | 총매입금액 (단위: 원). 총평가금액 (단위: 원). 총평가손익금액 (단위: 원). 총수익률(%) (단위: %). 추정예탁자산 (단위: 원). 종목별 잔고 목록. ### AccountEvaluation dataclass ¶ ``` AccountEvaluation(acnt_nm: str, brch_nm: str, entr: str, d2_entra: str, tot_est_amt: str, aset_evlt_amt: str, tot_pur_amt: str, prsm_dpst_aset_amt: str, tdy_lspft: str, tdy_lspft_rt: str, lspft_ratio: str, lspft_rt: str, holdings: list[AccountEvaluationItem] = list()) ``` 계좌평가현황 응답 (kt00004). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | acnt_nm | str | 계좌명. | required | | entr | str | 예수금 (단위: 원). | required | | aset_evlt_amt | str | 예탁자산평가액 (단위: 원). | required | | tot_pur_amt | str | 총매입금액 (단위: 원). | required | | prsm_dpst_aset_amt | str | 추정예탁자산 (단위: 원). | required | | tdy_lspft_rt | str | 당일손익율 (단위: %). | required | | holdings | list [ AccountEvaluationItem ] | 종목별 평가 목록. | list () | 계좌명. 예수금 (단위: 원). 예탁자산평가액 (단위: 원). 총매입금액 (단위: 원). 추정예탁자산 (단위: 원). 당일손익율 (단위: %). 종목별 평가 목록. ### AccountEvaluationItem dataclass ¶ ``` AccountEvaluationItem(stk_cd: str, stk_nm: str, rmnd_qty: str, avg_prc: str, cur_prc: str, evlt_amt: str, pl_amt: str, pl_rt: str, loan_dt: str, pur_amt: str, setl_remn: str, pred_buyq: str, pred_sellq: str, tdy_buyq: str, tdy_sellq: str) ``` 종목별계좌평가현황 항목 (kt00004 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | rmnd_qty | str | 보유수량 (단위: 주). | required | | avg_prc | str | 평균단가 (단위: 원). | required | | cur_prc | str | 현재가 (단위: 원). | required | | evlt_amt | str | 평가금액 (단위: 원). | required | | pl_amt | str | 손익금액 (단위: 원). | required | | pl_rt | str | 손익율 (단위: %). | required | 종목코드. 종목명. 보유수량 (단위: 주). 평균단가 (단위: 원). 현재가 (단위: 원). 평가금액 (단위: 원). 손익금액 (단위: 원). 손익율 (단위: %). ### AccountNumbers dataclass ¶ ``` AccountNumbers(account_numbers: list[str]) ``` 계좌번호조회 응답 (ka00001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | account_numbers | list [ str ] | 계좌번호 목록. | required | 계좌번호 목록. ### AccountReturnItem dataclass ¶ ``` AccountReturnItem(dt: str, stk_cd: str, stk_nm: str, cur_prc: str, pur_pric: str, pur_amt: str, rmnd_qty: str, tdy_sel_pl: str, tdy_trde_cmsn: str, tdy_trde_tax: str, crd_tp: str, loan_dt: str, setl_remn: str, clrn_alow_qty: str, crd_amt: str, crd_int: str, expr_dt: str) ``` 계좌수익률 항목 (ka10085 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | cur_prc | str | 현재가 (단위: 원). | required | | pur_pric | str | 매입가 (단위: 원). | required | | rmnd_qty | str | 보유수량 (단위: 주). | required | | tdy_sel_pl | str | 당일매도손익 (단위: 원). | required | 종목코드. 종목명. 현재가 (단위: 원). 매입가 (단위: 원). 보유수량 (단위: 주). 당일매도손익 (단위: 원). ### AfterCloseInvestorItem dataclass ¶ ``` AfterCloseInvestorItem(stk_cd: str, stk_nm: str, cur_prc: str, flu_rt: str, trde_qty: str, ind_invsr: str, frgnr_invsr: str, orgn: str) ``` 장마감후투자자별매매 단일 항목 (ka10066). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | cur_prc | str | 현재가 (원). | required | | flu_rt | str | 등락률 (%). | required | | trde_qty | str | 거래량 (주). | required | | ind_invsr | str | 개인투자자. | required | | frgnr_invsr | str | 외국인투자자. | required | | orgn | str | 기관계. | required | 종목코드. 종목명. 현재가 (원). 등락률 (%). 거래량 (주). 개인투자자. 외국인투자자. 기관계. ### AfterCloseInvestorTrading dataclass ¶ ``` AfterCloseInvestorTrading(items: list[AfterCloseInvestorItem]) ``` 장마감후투자자별매매 응답 (ka10066). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ AfterCloseInvestorItem ] | 종목별 투자자 매매 리스트. | required | 종목별 투자자 매매 리스트. ### AfterHoursRank dataclass ¶ ``` AfterHoursRank(items: list[AfterHoursRankItem]) ``` 시간외단일가등락율순위 응답 (ka10098). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ AfterHoursRankItem ] | 시간외단일가등락율순위 종목 리스트. | required | 시간외단일가등락율순위 종목 리스트. ### AfterHoursRankItem dataclass ¶ ``` AfterHoursRankItem(rank: str, stk_cd: str, stk_nm: str, cur_prc: str, pred_pre_sig: str, pred_pre: str, flu_rt: str, sel_tot_req: str, buy_tot_req: str, acc_trde_qty: str, acc_trde_prica: str, tdy_close_pric: str, tdy_close_pric_flu_rt: str) ``` 시간외단일가등락율순위 단일 항목 (ka10098). ### AfterhoursOrderbook dataclass ¶ ``` AfterhoursOrderbook(base_time: str, ovt_cur_prc: str, ovt_flu_rt: str, ovt_acc_trde_qty: str, ovt_sell_tot: str, ovt_buy_tot: str, sel_bid_tot: str, buy_bid_tot: str) ``` 시간외단일가 호가 응답 (ka10087). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | base_time | str | 호가잔량기준시간 (HHMMSS). | required | | ovt_cur_prc | str | 시간외단일가 현재가 (원). | required | | ovt_flu_rt | str | 시간외단일가 등락률 (%). | required | | ovt_acc_trde_qty | str | 시간외단일가 누적거래량 (주). | required | | ovt_sell_tot | str | 시간외단일가 매도호가총잔량. | required | | ovt_buy_tot | str | 시간외단일가 매수호가총잔량. | required | | sel_bid_tot | str | 매도호가총잔량. | required | | buy_bid_tot | str | 매수호가총잔량. | required | 호가잔량기준시간 (HHMMSS). 시간외단일가 현재가 (원). 시간외단일가 등락률 (%). 시간외단일가 누적거래량 (주). 시간외단일가 매도호가총잔량. 시간외단일가 매수호가총잔량. 매도호가총잔량. 매수호가총잔량. ### AllSectorIndex dataclass ¶ ``` AllSectorIndex(items: list[AllSectorIndexItem]) ``` 전업종지수요청 응답 (ka20003). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ AllSectorIndexItem ] | 전업종지수 리스트. | required | 전업종지수 리스트. ### AllSectorIndexItem dataclass ¶ ``` AllSectorIndexItem(stk_cd: str, stk_nm: str, cur_prc: str, pre_sig: str, pred_pre: str, flu_rt: str, trde_qty: str, wght: str, trde_prica: str, upl: str, rising: str, stdns: str, fall: str, lst: str, flo_stk_num: str) ``` 전업종지수 단일 항목. ### BidQtySurge dataclass ¶ ``` BidQtySurge(items: list[BidQtySurgeItem]) ``` 호가잔량급증 응답 (ka10021). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ BidQtySurgeItem ] | 호가잔량급증 종목 리스트. | required | 호가잔량급증 종목 리스트. ### BidQtySurgeItem dataclass ¶ ``` BidQtySurgeItem(stk_cd: str, stk_nm: str, cur_prc: str, pred_pre_sig: str, pred_pre: str, base_rt: str, now: str, sdnin_qty: str, sdnin_rt: str, tot_buy_qty: str) ``` 호가잔량급증 단일 항목 (ka10021). ### BidQtyUpper dataclass ¶ ``` BidQtyUpper(items: list[BidQtyUpperItem]) ``` 호가잔량상위 응답 (ka10020). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ BidQtyUpperItem ] | 호가잔량상위 종목 리스트. | required | 호가잔량상위 종목 리스트. ### BidQtyUpperItem dataclass ¶ ``` BidQtyUpperItem(stk_cd: str, stk_nm: str, cur_prc: str, pred_pre_sig: str, pred_pre: str, trde_qty: str, tot_sel_req: str, tot_buy_req: str, netprps_req: str, buy_rt: str) ``` 호가잔량상위 단일 항목 (ka10020). ### BrokerEntry dataclass ¶ ``` BrokerEntry(name: str, code: str, qty: str) ``` 거래원 단일 항목 (ka10002). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | name | str | 거래원명. | required | | code | str | 거래원 코드. | required | | qty | str | 거래량 (주). | required | 거래원명. 거래원 코드. 거래량 (주). ### BrokerInstantVolume dataclass ¶ ``` BrokerInstantVolume(items: list[BrokerInstantVolumeItem]) ``` 거래원순간거래량 응답 (ka10052). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ BrokerInstantVolumeItem ] | 순간거래량 리스트. | required | 순간거래량 리스트. ### BrokerInstantVolumeItem dataclass ¶ ``` BrokerInstantVolumeItem(tm: str, stk_cd: str, stk_nm: str, trde_ori_nm: str, tp: str, mont_trde_qty: str, acc_netprps: str, cur_prc: str, flu_rt: str) ``` 거래원순간거래량 단일 항목 (ka10052). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | tm | str | 시간 (HHMMSS). | required | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | trde_ori_nm | str | 거래원명. | required | | tp | str | 구분 (매도/매수). | required | | mont_trde_qty | str | 순간거래량 (주). | required | | acc_netprps | str | 누적순매수 (주). | required | | cur_prc | str | 현재가 (원). | required | | flu_rt | str | 등락률 (%). | required | 시간 (HHMMSS). 종목코드. 종목명. 거래원명. 구분 (매도/매수). 순간거래량 (주). 누적순매수 (주). 현재가 (원). 등락률 (%). ### BrokerItem dataclass ¶ ``` BrokerItem(code: str, name: str, gb: str) ``` 회원사 단일 항목 (ka10102). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | code | str | 회원사 코드. | required | | name | str | 회원사명. | required | | gb | str | 구분. | required | 회원사 코드. 회원사명. 구분. ### BrokerList dataclass ¶ ``` BrokerList(items: list[BrokerItem]) ``` 회원사 리스트 응답 (ka10102). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ BrokerItem ] | 회원사 리스트. | required | 회원사 리스트. ### BrokerStockTrend dataclass ¶ ``` BrokerStockTrend(items: list[BrokerStockTrendItem]) ``` 증권사별종목매매동향 응답 (ka10078). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ BrokerStockTrendItem ] | 일별 매매동향 리스트. | required | 일별 매매동향 리스트. ### BrokerStockTrendItem dataclass ¶ ``` BrokerStockTrendItem(dt: str, cur_prc: str, flu_rt: str, acc_trde_qty: str, netprps_qty: str, buy_qty: str, sell_qty: str) ``` 증권사별종목매매동향 단일 항목 (ka10078). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | dt | str | 일자 (YYYYMMDD). | required | | cur_prc | str | 현재가 (원). | required | | flu_rt | str | 등락률 (%). | required | | acc_trde_qty | str | 누적거래량 (주). | required | | netprps_qty | str | 순매수수량 (주). | required | | buy_qty | str | 매수수량 (주). | required | | sell_qty | str | 매도수량 (주). | required | 일자 (YYYYMMDD). 현재가 (원). 등락률 (%). 누적거래량 (주). 순매수수량 (주). 매수수량 (주). 매도수량 (주). ### BrokerSupplyAnalysis dataclass ¶ ``` BrokerSupplyAnalysis(items: list[BrokerSupplyItem]) ``` 거래원매물대분석 응답 (ka10043). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ BrokerSupplyItem ] | 일별 분석 리스트. | required | 일별 분석 리스트. ### BrokerSupplyItem dataclass ¶ ``` BrokerSupplyItem(dt: str, close_pric: str, sel_qty: str, buy_qty: str, netprps_qty: str, trde_wght: str) ``` 거래원매물대분석 단일 항목 (ka10043). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | dt | str | 일자 (YYYYMMDD). | required | | close_pric | str | 종가 (원). | required | | sel_qty | str | 매도량 (주). | required | | buy_qty | str | 매수량 (주). | required | | netprps_qty | str | 순매수수량 (주). | required | | trde_wght | str | 거래비중 (%). | required | 일자 (YYYYMMDD). 종가 (원). 매도량 (주). 매수량 (주). 순매수수량 (주). 거래비중 (%). ### BrokerTradeUpper dataclass ¶ ``` BrokerTradeUpper(items: list[BrokerTradeUpperItem]) ``` 증권사별매매상위 응답 (ka10039). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ BrokerTradeUpperItem ] | 증권사별매매상위 종목 리스트. | required | 증권사별매매상위 종목 리스트. ### BrokerTradeUpperItem dataclass ¶ ``` BrokerTradeUpperItem(rank: str, stk_cd: str, stk_nm: str, prid_stkpc_flu: str, flu_rt: str, prid_trde_qty: str, netprps: str, buy_trde_qty: str, sel_trde_qty: str, netprps_amt: str, buy_amt: str, sell_amt: str) ``` 증권사별매매상위 단일 항목 (ka10039). ### CancelOrderResponse dataclass ¶ ``` CancelOrderResponse(ord_no: str, base_orig_ord_no: str, cncl_qty: str) ``` 주식 취소주문 응답 (kt10003, kt10009). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | ord_no | str | 주문번호 (새로 발급된 취소 주문번호). | required | | base_orig_ord_no | str | 모주문번호 (최초 원주문번호). | required | | cncl_qty | str | 취소수량 (단위: 주). | required | 주문번호 (새로 발급된 취소 주문번호). 모주문번호 (최초 원주문번호). 취소수량 (단위: 주). ### ConditionItem dataclass ¶ ``` ConditionItem(seq: str, name: str) ``` 조건검색식 단일 항목. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | seq | str | 조건검색식 일련번호. | required | | name | str | 조건검색식 이름. | required | 조건검색식 일련번호. 조건검색식 이름. ### ConditionList dataclass ¶ ``` ConditionList(items: list[ConditionItem]) ``` 조건검색 목록조회 응답 (ka10171). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ConditionItem ] | 조건검색식 목록. | required | 조건검색식 목록. ### ConditionRealtimeItem dataclass ¶ ``` ConditionRealtimeItem(type: str, name: str, item: str, values: ConditionRealtimeValues) ``` 조건검색 실시간 단일 이벤트. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | type | str | 실시간 항목 TR명 (예: "0B" ). | required | | name | str | 실시간 항목명. | required | | item | str | 종목코드. | required | | values | ConditionRealtimeValues | 실시간 수신 값. | required | 실시간 항목 TR명 (예: "0B" ). 실시간 항목명. 종목코드. 실시간 수신 값. ### ConditionRealtimeValues dataclass ¶ ``` ConditionRealtimeValues(serial: str, stock_code: str, insert_delete: str, exec_time: str, sell_buy: str) ``` 조건검색 실시간 단일 이벤트 값. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | serial | str | 일련번호 (841). | required | | stock_code | str | 종목코드 (9001). | required | | insert_delete | str | 삽입삭제 구분 — "I" (삽입) / "D" (삭제) (843). | required | | exec_time | str | 체결시간 (20). | required | | sell_buy | str | 매도수 구분 (907). | required | 일련번호 (841). 종목코드 (9001). 삽입삭제 구분 — "I" (삽입) / "D" (삭제) (843). 체결시간 (20). 매도수 구분 (907). ### ConditionSearchItem dataclass ¶ ``` ConditionSearchItem(stock_code: str, stock_name: str, current_price: str, change_sign: str, change: str, change_rate: str, volume: str, open_price: str, high_price: str, low_price: str) ``` 조건검색 결과 단일 종목 항목. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 종목코드 (예: "A005930" ). | required | | stock_name | str | 종목명. | required | | current_price | str | 현재가. | required | | change_sign | str | 전일대비기호. | required | | change | str | 전일대비. | required | | change_rate | str | 등락율. | required | | volume | str | 누적거래량. | required | | open_price | str | 시가. | required | | high_price | str | 고가. | required | | low_price | str | 저가. | required | 종목코드 (예: "A005930" ). 종목명. 현재가. 전일대비기호. 전일대비. 등락율. 누적거래량. 시가. 고가. 저가. ### ConditionSearchResult dataclass ¶ ``` ConditionSearchResult(seq: str, cont_yn: str, next_key: str, items: list[ConditionSearchItem]) ``` 조건검색 요청 일반 응답 (ka10172). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | seq | str | 조건검색식 일련번호. | required | | cont_yn | str | 연속조회 여부 ( "Y" / "N" ). | required | | next_key | str | 연속조회키. | required | | items | list [ ConditionSearchItem ] | 검색 결과 종목 리스트. | required | 조건검색식 일련번호. 연속조회 여부 ( "Y" / "N" ). 연속조회키. 검색 결과 종목 리스트. ### ConditionStopResult dataclass ¶ ``` ConditionStopResult(seq: str) ``` 조건검색 실시간 해제 응답 (ka10174). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | seq | str | 해제된 조건검색식 일련번호. | required | 해제된 조건검색식 일련번호. ### CreditLoanAvailability dataclass ¶ ``` CreditLoanAvailability(crd_alow_yn: str) ``` 신용융자 가능문의 응답 (kt20017). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | crd_alow_yn | str | 신용가능여부 안내 문자열 (예: "< A군 신용융자 가능 >" ). | required | 신용가능여부 안내 문자열 (예: "< A군 신용융자 가능 >" ). ### CreditLoanStockItem dataclass ¶ ``` CreditLoanStockItem(stk_cd: str, stk_nm: str, crd_assr_rt: str, repl_pric: str, pred_close_pric: str, crd_limit_over_yn: str, crd_limit_over_txt: str) ``` 신용융자 가능종목 단일 항목. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | crd_assr_rt | str | 신용보증금율. | required | | repl_pric | str | 대용가. | required | | pred_close_pric | str | 전일종가. | required | | crd_limit_over_yn | str | 신용한도초과여부. | required | | crd_limit_over_txt | str | 신용한도초과 텍스트 ( "N" : 공란, "Y" : 회사한도 초과). | required | 종목코드. 종목명. 신용보증금율. 대용가. 전일종가. 신용한도초과여부. 신용한도초과 텍스트 ( "N" : 공란, "Y" : 회사한도 초과). ### CreditLoanStocks dataclass ¶ ``` CreditLoanStocks(crd_loan_able: str, items: list[CreditLoanStockItem]) ``` 신용융자 가능종목요청 응답 (kt20016). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | crd_loan_able | str | 신용융자가능여부 안내 문자열. | required | | items | list [ CreditLoanStockItem ] | 신용융자 가능종목 리스트. | required | 신용융자가능여부 안내 문자열. 신용융자 가능종목 리스트. ### CreditOrderableQuantity dataclass ¶ ``` CreditOrderableQuantity(stk_assr_rt: str, stk_assr_rt_nm: str, assr_30ord_alow_amt: str, assr_30ord_alowq: str, assr_40ord_alow_amt: str, assr_40ord_alowq: str, assr_50ord_alow_amt: str, assr_50ord_alowq: str, assr_60ord_alow_amt: str, assr_60ord_alowq: str, entr: str, repl_amt: str, ord_alowa: str, out_alowa: str, min_amt: str) ``` 신용보증금율별주문가능수량 응답 (kt00012). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_assr_rt | str | 종목보증금율. | required | | entr | str | 예수금 (단위: 원). | required | | ord_alowa | str | 주문가능현금 (단위: 원). | required | 종목보증금율. 예수금 (단위: 원). 주문가능현금 (단위: 원). ### CreditRatioUpper dataclass ¶ ``` CreditRatioUpper(items: list[CreditRatioUpperItem]) ``` 신용비율상위 응답 (ka10033). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ CreditRatioUpperItem ] | 신용비율상위 종목 리스트. | required | 신용비율상위 종목 리스트. ### CreditRatioUpperItem dataclass ¶ ``` CreditRatioUpperItem(stk_infr: str, stk_cd: str, stk_nm: str, cur_prc: str, pred_pre_sig: str, pred_pre: str, flu_rt: str, crd_rt: str, sel_req: str, buy_req: str, now_trde_qty: str) ``` 신용비율상위 단일 항목 (ka10033). ### CreditTradingItem dataclass ¶ ``` CreditTradingItem(dt: str, cur_prc: str, trde_qty: str, new: str, rpya: str, remn: str, remn_rt: str) ``` 신용매매동향 단일 항목 (ka10013). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | dt | str | 일자 (YYYYMMDD). | required | | cur_prc | str | 현재가 (원). | required | | trde_qty | str | 거래량 (주). | required | | new | str | 신규. | required | | rpya | str | 상환. | required | | remn | str | 잔고. | required | | remn_rt | str | 잔고율 (%). | required | 일자 (YYYYMMDD). 현재가 (원). 거래량 (주). 신규. 상환. 잔고. 잔고율 (%). ### CreditTradingTrend dataclass ¶ ``` CreditTradingTrend(items: list[CreditTradingItem]) ``` 신용매매동향 응답 (ka10013). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ CreditTradingItem ] | 일별 신용매매동향 리스트. | required | 일별 신용매매동향 리스트. ### DailyAccountReturn dataclass ¶ ``` DailyAccountReturn(mang_empno: str, mngr_nm: str, dept_nm: str, entr_fr: str, entr_to: str, scrt_evlt_amt_fr: str, scrt_evlt_amt_to: str, tot_amt_fr: str, tot_amt_to: str, evltv_prft: str, prft_rt: str, tern_rt: str, termin_tot_trns: str, termin_tot_pymn: str) ``` 일별계좌수익률상세현황 응답 (kt00016). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | evltv_prft | str | 평가손익 (단위: 원). | required | | prft_rt | str | 수익률 (단위: %). | required | | tot_amt_fr | str | 순자산액계_초 (단위: 원). | required | | tot_amt_to | str | 순자산액계_말 (단위: 원). | required | 평가손익 (단위: 원). 수익률 (단위: %). 순자산액계_초 (단위: 원). 순자산액계_말 (단위: 원). ### DailyAccountStatus dataclass ¶ ``` DailyAccountStatus(d2_entra: str, gnrl_stk_evlt_amt_d2: str, crd_loan_d2: str, ina_amt: str, outa: str, sell_amt: str, buy_amt: str, cmsn: str, tax: str, dvida_amt: str) ``` 계좌별당일현황 응답 (kt00017). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | d2_entra | str | D+2추정예수금 (단위: 원). | required | | sell_amt | str | 매도금액 (단위: 원). | required | | buy_amt | str | 매수금액 (단위: 원). | required | | cmsn | str | 수수료 (단위: 원). | required | | tax | str | 세금 (단위: 원). | required | D+2추정예수금 (단위: 원). 매도금액 (단위: 원). 매수금액 (단위: 원). 수수료 (단위: 원). 세금 (단위: 원). ### DailyBalanceReturn dataclass ¶ ``` DailyBalanceReturn(dt: str, tot_buy_amt: str, tot_evlt_amt: str, tot_evltv_prft: str, tot_prft_rt: str, dbst_bal: str, day_stk_asst: str, items: list[DailyBalanceReturnItem] = list()) ``` 일별잔고수익률 응답 (ka01690). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | dt | str | 일자. | required | | tot_buy_amt | str | 총 매입가 (단위: 원). | required | | tot_evlt_amt | str | 총 평가금액 (단위: 원). | required | | tot_prft_rt | str | 수익률 (단위: %). | required | | day_bal_rt | | 종목별 잔고수익률 목록. | required | 일자. 총 매입가 (단위: 원). 총 평가금액 (단위: 원). 수익률 (단위: %). 종목별 잔고수익률 목록. ### DailyBalanceReturnItem dataclass ¶ ``` DailyBalanceReturnItem(cur_prc: str, stk_cd: str, stk_nm: str, rmnd_qty: str, buy_uv: str, buy_wght: str, evltv_prft: str, prft_rt: str, evlt_amt: str, evlt_wght: str) ``` 일별잔고수익률 종목 항목 (ka01690 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | rmnd_qty | str | 보유수량 (단위: 주). | required | | buy_uv | str | 매입단가 (단위: 원). | required | | evlt_amt | str | 평가금액 (단위: 원). | required | | evltv_prft | str | 평가손익 (단위: 원). | required | | prft_rt | str | 수익률 (단위: %). | required | 종목코드. 종목명. 보유수량 (단위: 주). 매입단가 (단위: 원). 평가금액 (단위: 원). 평가손익 (단위: 원). 수익률 (단위: %). ### DailyEstimatedAssetItem dataclass ¶ ``` DailyEstimatedAssetItem(dt: str, entr: str, grnt_use_amt: str, crd_loan: str, ls_grnt: str, repl_amt: str, prsm_dpst_aset_amt: str, prsm_dpst_aset_amt_bncr_skip: str) ``` 일별추정예탁자산 항목 (kt00002 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | dt | str | 일자 ( YYYYMMDD 형식). | required | | entr | str | 예수금 (단위: 원). | required | | prsm_dpst_aset_amt | str | 추정예탁자산 (단위: 원). | required | 일자 ( YYYYMMDD 형식). 예수금 (단위: 원). 추정예탁자산 (단위: 원). ### DailyInstitutionStockItem dataclass ¶ ``` DailyInstitutionStockItem(stk_cd: str, stk_nm: str, netprps_qty: str, netprps_amt: str) ``` 일별기관매매종목 단일 항목 (ka10044). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | netprps_qty | str | 순매수수량 (주). | required | | netprps_amt | str | 순매수금액 (백만원). | required | 종목코드. 종목명. 순매수수량 (주). 순매수금액 (백만원). ### DailyInstitutionStocks dataclass ¶ ``` DailyInstitutionStocks(items: list[DailyInstitutionStockItem]) ``` 일별기관매매종목 응답 (ka10044). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ DailyInstitutionStockItem ] | 기관매매종목 리스트. | required | 기관매매종목 리스트. ### DailyMainBroker dataclass ¶ ``` DailyMainBroker(sel_trde_ori_1: str, sel_trde_ori_qty_1: str, sel_trde_ori_irds_1: str, buy_trde_ori_1: str, buy_trde_ori_qty_1: str, buy_trde_ori_irds_1: str, sel_trde_ori_2: str, sel_trde_ori_qty_2: str, sel_trde_ori_irds_2: str, buy_trde_ori_2: str, buy_trde_ori_qty_2: str, buy_trde_ori_irds_2: str, sel_trde_ori_3: str, sel_trde_ori_qty_3: str, sel_trde_ori_irds_3: str, buy_trde_ori_3: str, buy_trde_ori_qty_3: str, buy_trde_ori_irds_3: str, sel_trde_ori_4: str, sel_trde_ori_qty_4: str, sel_trde_ori_irds_4: str, buy_trde_ori_4: str, buy_trde_ori_qty_4: str, buy_trde_ori_irds_4: str, sel_trde_ori_5: str, sel_trde_ori_qty_5: str, sel_trde_ori_irds_5: str, buy_trde_ori_5: str, buy_trde_ori_qty_5: str, buy_trde_ori_irds_5: str, frgn_sel_prsm_sum: str, frgn_sel_prsm_sum_chang: str, frgn_buy_prsm_sum: str, frgn_buy_prsm_sum_chang: str, items: list[DailyMainBrokerEntry]) ``` 당일주요거래원 응답 (ka10040). 매도/매수 거래원 상위 5개를 번호별 필드로 제공하고, 당일주요거래원 이탈 리스트를 별도로 포함합니다. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | sel_trde_ori_1 ~ 5 | | 매도거래원명 1~5위. | required | | sel_trde_ori_qty_1 ~ 5 | | 매도거래원수량 1~5위. | required | | buy_trde_ori_1 ~ 5 | | 매수거래원명 1~5위. | required | | buy_trde_ori_qty_1 ~ 5 | | 매수거래원수량 1~5위. | required | | frgn_sel_prsm_sum | str | 외국계매도추정합. | required | | frgn_buy_prsm_sum | str | 외국계매수추정합. | required | | items | list [ DailyMainBrokerEntry ] | 당일주요거래원 이탈 리스트. | required | 매도거래원명 1~5위. 매도거래원수량 1~5위. 매수거래원명 1~5위. 매수거래원수량 1~5위. 외국계매도추정합. 외국계매수추정합. 당일주요거래원 이탈 리스트. ### DailyMainBrokerEntry dataclass ¶ ``` DailyMainBrokerEntry(sel_scesn_tm: str, sell_qty: str, sel_upper_scesn_ori: str, buy_scesn_tm: str, buy_qty: str, buy_upper_scesn_ori: str, qry_dt: str, qry_tm: str) ``` 당일주요거래원 매도/매수 이탈 단일 항목 (ka10040). ### DailyPriceItem dataclass ¶ ``` DailyPriceItem(date: str, open_pric: str, high_pric: str, low_pric: str, close_pric: str, flu_rt: str, trde_qty: str, for_netprps: str, orgn_netprps: str, ind_netprps: str, for_poss: str, for_wght: str, crd_remn_rt: str) ``` 일별주가 단일 항목 (ka10086). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | date | str | 날짜 (YYYYMMDD). | required | | open_pric | str | 시가 (원). | required | | high_pric | str | 고가 (원). | required | | low_pric | str | 저가 (원). | required | | close_pric | str | 종가 (원). | required | | flu_rt | str | 등락률 (%). | required | | trde_qty | str | 거래량 (주). | required | | for_netprps | str | 외인순매수 (주). | required | | orgn_netprps | str | 기관순매수 (주). | required | | ind_netprps | str | 개인순매수 (주). | required | | for_poss | str | 외인보유 (%). | required | | for_wght | str | 외인비중 (%). | required | | crd_remn_rt | str | 신용잔고율 (%). | required | 날짜 (YYYYMMDD). 시가 (원). 고가 (원). 저가 (원). 종가 (원). 등락률 (%). 거래량 (주). 외인순매수 (주). 기관순매수 (주). 개인순매수 (주). 외인보유 (%). 외인비중 (%). 신용잔고율 (%). ### DailyPrices dataclass ¶ ``` DailyPrices(items: list[DailyPriceItem]) ``` 일별주가 응답 (ka10086). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ DailyPriceItem ] | 일별 OHLCV 리스트. | required | 일별 OHLCV 리스트. ### DailyRealizedProfit dataclass ¶ ``` DailyRealizedProfit(tot_buy_amt: str, tot_sell_amt: str, rlzt_pl: str, trde_cmsn: str, trde_tax: str, items: list[DailyRealizedProfitItem] = list()) ``` 일자별실현손익 응답 (ka10074). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | tot_buy_amt | str | 총매수금액 (단위: 원). | required | | tot_sell_amt | str | 총매도금액 (단위: 원). | required | | rlzt_pl | str | 실현손익 (단위: 원). | required | | items | list [ DailyRealizedProfitItem ] | 일자별 실현손익 목록. | list () | 총매수금액 (단위: 원). 총매도금액 (단위: 원). 실현손익 (단위: 원). 일자별 실현손익 목록. ### DailyRealizedProfitDetail dataclass ¶ ``` DailyRealizedProfitDetail(tdy_rlzt_pl: str, items: list[DailyRealizedProfitDetailItem] = list()) ``` 당일실현손익상세 응답 (ka10077). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | tdy_rlzt_pl | str | 당일실현손익 (단위: 원). | required | | items | list [ DailyRealizedProfitDetailItem ] | 당일실현손익 상세 목록. | list () | 당일실현손익 (단위: 원). 당일실현손익 상세 목록. ### DailyRealizedProfitDetailItem dataclass ¶ ``` DailyRealizedProfitDetailItem(stk_nm: str, cntr_qty: str, buy_uv: str, cntr_pric: str, tdy_sel_pl: str, pl_rt: str, tdy_trde_cmsn: str, tdy_trde_tax: str, stk_cd: str) ``` 당일실현손익상세 항목 (ka10077 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | cntr_qty | str | 체결량 (단위: 주). | required | | tdy_sel_pl | str | 당일매도손익 (단위: 원). | required | | pl_rt | str | 손익율 (단위: %). | required | 종목코드. 종목명. 체결량 (단위: 주). 당일매도손익 (단위: 원). 손익율 (단위: %). ### DailyRealizedProfitItem dataclass ¶ ``` DailyRealizedProfitItem(dt: str, buy_amt: str, sell_amt: str, tdy_sel_pl: str, tdy_trde_cmsn: str, tdy_trde_tax: str) ``` 일자별실현손익 항목 (ka10074 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | dt | str | 일자. | required | | buy_amt | str | 매수금액 (단위: 원). | required | | sell_amt | str | 매도금액 (단위: 원). | required | | tdy_sel_pl | str | 당일매도손익 (단위: 원). | required | 일자. 매수금액 (단위: 원). 매도금액 (단위: 원). 당일매도손익 (단위: 원). ### DailyTopExit dataclass ¶ ``` DailyTopExit(items: list[DailyTopExitItem]) ``` 당일상위이탈원 응답 (ka10053). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ DailyTopExitItem ] | 당일상위이탈원 리스트. | required | 당일상위이탈원 리스트. ### DailyTopExitItem dataclass ¶ ``` DailyTopExitItem(sel_scesn_tm: str, sell_qty: str, sel_upper_scesn_ori: str, buy_scesn_tm: str, buy_qty: str, buy_upper_scesn_ori: str, qry_dt: str, qry_tm: str) ``` 당일상위이탈원 단일 항목 (ka10053). ### DailyTradeJournal dataclass ¶ ``` DailyTradeJournal(tot_sell_amt: str, tot_buy_amt: str, tot_cmsn_tax: str, tot_exct_amt: str, tot_pl_amt: str, tot_prft_rt: str, items: list[DailyTradeJournalItem] = list()) ``` 당일매매일지 응답 (ka10170). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | tot_sell_amt | str | 총매도금액 (단위: 원). | required | | tot_buy_amt | str | 총매수금액 (단위: 원). | required | | tot_pl_amt | str | 총손익금액 (단위: 원). | required | | tot_prft_rt | str | 총수익률 (단위: %). | required | | items | list [ DailyTradeJournalItem ] | 당일매매일지 목록. | list () | 총매도금액 (단위: 원). 총매수금액 (단위: 원). 총손익금액 (단위: 원). 총수익률 (단위: %). 당일매매일지 목록. ### DailyTradeJournalItem dataclass ¶ ``` DailyTradeJournalItem(stk_nm: str, buy_avg_pric: str, buy_qty: str, sel_avg_pric: str, sell_qty: str, cmsn_alm_tax: str, pl_amt: str, sell_amt: str, buy_amt: str, prft_rt: str, stk_cd: str) ``` 당일매매일지 항목 (ka10170 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | buy_qty | str | 매수수량 (단위: 주). | required | | sell_qty | str | 매도수량 (단위: 주). | required | | pl_amt | str | 손익금액 (단위: 원). | required | | prft_rt | str | 수익률 (단위: %). | required | 종목코드. 종목명. 매수수량 (단위: 주). 매도수량 (단위: 주). 손익금액 (단위: 원). 수익률 (단위: %). ### DailyTradeQtyUpper dataclass ¶ ``` DailyTradeQtyUpper(items: list[DailyTradeQtyUpperItem]) ``` 당일거래량상위 응답 (ka10030). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ DailyTradeQtyUpperItem ] | 당일거래량상위 종목 리스트. | required | 당일거래량상위 종목 리스트. ### DailyTradeQtyUpperItem dataclass ¶ ``` DailyTradeQtyUpperItem(stk_cd: str, stk_nm: str, cur_prc: str, pred_pre_sig: str, pred_pre: str, flu_rt: str, trde_qty: str, pred_rt: str, trde_tern_rt: str, trde_amt: str, opmr_trde_qty: str, opmr_pred_rt: str, opmr_trde_rt: str, opmr_trde_amt: str, af_mkrt_trde_qty: str, af_mkrt_pred_rt: str, af_mkrt_trde_rt: str, af_mkrt_trde_amt: str, bf_mkrt_trde_qty: str, bf_mkrt_pred_rt: str, bf_mkrt_trde_rt: str, bf_mkrt_trde_amt: str) ``` 당일거래량상위 단일 항목 (ka10030). ### DailyTradingDetail dataclass ¶ ``` DailyTradingDetail(items: list[DailyTradingDetailItem]) ``` 일별거래상세 응답 (ka10015). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ DailyTradingDetailItem ] | 일별 거래상세 리스트. | required | 일별 거래상세 리스트. ### DailyTradingDetailItem dataclass ¶ ``` DailyTradingDetailItem(dt: str, close_pric: str, flu_rt: str, trde_qty: str, trde_prica: str, cntr_str: str, for_netprps: str, orgn_netprps: str, ind_netprps: str) ``` 일별거래상세 단일 항목 (ka10015). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | dt | str | 일자 (YYYYMMDD). | required | | close_pric | str | 종가 (원). | required | | flu_rt | str | 등락률 (%). | required | | trde_qty | str | 거래량 (주). | required | | trde_prica | str | 거래대금 (백만원). | required | | cntr_str | str | 체결강도. | required | | for_netprps | str | 외인순매수 (주). | required | | orgn_netprps | str | 기관순매수 (주). | required | | ind_netprps | str | 개인순매수 (주). | required | 일자 (YYYYMMDD). 종가 (원). 등락률 (%). 거래량 (주). 거래대금 (백만원). 체결강도. 외인순매수 (주). 기관순매수 (주). 개인순매수 (주). ### DepositDetail dataclass ¶ ``` DepositDetail(entr: str, profa_ch: str, pymn_alow_amt: str, ord_alow_amt: str, d1_entra: str, d1_pymn_alow_amt: str, d2_entra: str, d2_pymn_alow_amt: str, repl_amt: str, ch_uncla: str, nrpy_loan: str, crd_grnt_rt: str, fx_deposits: list[FxDepositItem] = list()) ``` 예수금상세현황 응답 (kt00001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | entr | str | 예수금 (단위: 원). | required | | pymn_alow_amt | str | 출금가능금액 (단위: 원). | required | | ord_alow_amt | str | 주문가능금액 (단위: 원). | required | | d1_entra | str | D+1 추정예수금 (단위: 원). | required | | d2_entra | str | D+2 추정예수금 (단위: 원). | required | | fx_deposits | list [ FxDepositItem ] | 외화예수금 목록. | list () | 예수금 (단위: 원). 출금가능금액 (단위: 원). 주문가능금액 (단위: 원). D+1 추정예수금 (단위: 원). D+2 추정예수금 (단위: 원). 외화예수금 목록. ### ElwAccessRate dataclass ¶ ``` ElwAccessRate(items: list[ElwAccessRateItem]) ``` ELW근접율요청 응답 (ka30011). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ElwAccessRateItem ] | ELW근접율 리스트. | required | ELW근접율 리스트. ### ElwAccessRateItem dataclass ¶ ``` ElwAccessRateItem(stk_cd: str, stk_nm: str, cur_prc: str, pre_sig: str, pred_pre: str, flu_rt: str, acc_trde_qty: str, alacc_rt: str) ``` ELW근접율 단일 항목. ### ElwBalRank dataclass ¶ ``` ElwBalRank(items: list[ElwBalRankItem]) ``` ELW잔량순위요청 응답 (ka30010). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ElwBalRankItem ] | ELW잔량순위 리스트. | required | ELW잔량순위 리스트. ### ElwBalRankItem dataclass ¶ ``` ElwBalRankItem(stk_cd: str, rank: str, stk_nm: str, cur_prc: str, pre_sig: str, pred_pre: str, flu_rt: str, trde_qty: str, sel_req: str, buy_req: str, netprps_req: str, trde_prica: str) ``` ELW잔량순위 단일 항목. ### ElwBrokerNetTrade dataclass ¶ ``` ElwBrokerNetTrade(items: list[ElwBrokerNetTradeItem]) ``` 거래원별ELW순매매상위요청 응답 (ka30002). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ElwBrokerNetTradeItem ] | 거래원별ELW순매매상위 리스트. | required | 거래원별ELW순매매상위 리스트. ### ElwBrokerNetTradeItem dataclass ¶ ``` ElwBrokerNetTradeItem(stk_cd: str, stk_nm: str, stkpc_flu: str, flu_rt: str, trde_qty: str, netprps: str, buy_trde_qty: str, sel_trde_qty: str) ``` 거래원별ELW순매매상위 단일 항목. ### ElwDailySens dataclass ¶ ``` ElwDailySens(items: list[ElwDailySensItem]) ``` ELW일별민감도지표요청 응답 (ka10048). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ElwDailySensItem ] | ELW일별민감도지표 리스트. | required | ELW일별민감도지표 리스트. ### ElwDailySensItem dataclass ¶ ``` ElwDailySensItem(dt: str, iv: str, delta: str, gam: str, theta: str, vega: str, law: str, lp: str) ``` ELW일별민감도지표 단일 항목. ### ElwDetail dataclass ¶ ``` ElwDetail(aset_cd: str, cur_prc: str, pred_pre_sig: str, pred_pre: str, flu_rt: str, lpmmcm_nm: str, lpmmcm_nm_1: str, lpmmcm_nm_2: str, elwrght_cntn: str, elwexpr_evlt_pric: str, elwtheory_pric: str, dispty_rt: str, elwinnr_vltl: str, exp_rght_pric: str, elwpl_qutr_rt: str, elwexec_pric: str, elwcnvt_rt: str, elwcmpn_rt: str, elwpric_rising_part_rt: str, elwrght_type: str, elwsrvive_dys: str, stkcnt: str, elwlpord_pos: str, lpposs_rt: str, lprmnd_qty: str, elwspread: str, elwprty: str, elwgear: str, elwflo_dt: str, elwfin_trde_dt: str, expr_dt: str, exec_dt: str, lpsuply_end_dt: str, elwpay_dt: str, elwinvt_ix_comput: str, elwpay_agnt: str, elwappr_way: str, elwrght_exec_way: str, elwpblicte_orgn: str, dcsn_pay_amt: str, kobarr: str, iv: str, clsprd_end_elwocr: str, bsis_aset_1: str, bsis_aset_comp_rt_1: str, bsis_aset_2: str, bsis_aset_comp_rt_2: str, bsis_aset_3: str, bsis_aset_comp_rt_3: str, bsis_aset_4: str, bsis_aset_comp_rt_4: str, bsis_aset_5: str, bsis_aset_comp_rt_5: str, fr_dt: str, to_dt: str, fr_tm: str, evlt_end_tm: str, evlt_pric: str, evlt_fnsh_yn: str, all_hgst_pric: str, all_lwst_pric: str, imaf_hgst_pric: str, imaf_lwst_pric: str, sndhalf_mrkt_hgst_pric: str, sndhalf_mrkt_lwst_pric: str) ``` ELW종목상세정보요청 응답 (ka30012). ### ElwFlucRank dataclass ¶ ``` ElwFlucRank(items: list[ElwFlucRankItem]) ``` ELW등락율순위요청 응답 (ka30009). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ElwFlucRankItem ] | ELW등락율순위 리스트. | required | ELW등락율순위 리스트. ### ElwFlucRankItem dataclass ¶ ``` ElwFlucRankItem(rank: str, stk_cd: str, stk_nm: str, cur_prc: str, pre_sig: str, pred_pre: str, flu_rt: str, sel_req: str, buy_req: str, trde_qty: str, trde_prica: str) ``` ELW등락율순위 단일 항목. ### ElwGap dataclass ¶ ``` ElwGap(items: list[ElwGapItem]) ``` ELW괴리율요청 응답 (ka30004). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ElwGapItem ] | ELW괴리율 리스트. | required | ELW괴리율 리스트. ### ElwGapItem dataclass ¶ ``` ElwGapItem(stk_cd: str, isscomp_nm: str, sqnc: str, base_aset_nm: str, rght_tp: str, dispty_rt: str, basis: str, srvive_dys: str, theory_pric: str, cur_prc: str, pre_tp: str, pred_pre: str, flu_rt: str, trde_qty: str, stk_nm: str) ``` ELW괴리율 단일 항목. ### ElwLpDaily dataclass ¶ ``` ElwLpDaily(items: list[ElwLpDailyItem]) ``` ELWLP보유일별추이요청 응답 (ka30003). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ElwLpDailyItem ] | ELWLP보유일별추이 리스트. | required | ELWLP보유일별추이 리스트. ### ElwLpDailyItem dataclass ¶ ``` ElwLpDailyItem(dt: str, cur_prc: str, pre_tp: str, pred_pre: str, flu_rt: str, trde_qty: str, trde_prica: str, chg_qty: str, lprmnd_qty: str, wght: str) ``` ELWLP보유일별추이 단일 항목. ### ElwPriceSurge dataclass ¶ ``` ElwPriceSurge(base_pric_tm: str, items: list[ElwPriceSurgeItem]) ``` ELW가격급등락요청 응답 (ka30001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | base_pric_tm | str | 기준가시간. | required | | items | list [ ElwPriceSurgeItem ] | ELW가격급등락 리스트. | required | 기준가시간. ELW가격급등락 리스트. ### ElwPriceSurgeItem dataclass ¶ ``` ElwPriceSurgeItem(stk_cd: str, rank: str, stk_nm: str, pre_sig: str, pred_pre: str, trde_end_elwbase_pric: str, cur_prc: str, base_pre: str, trde_qty: str, jmp_rt: str) ``` ELW가격급등락 단일 항목. ### ElwSearch dataclass ¶ ``` ElwSearch(items: list[ElwSearchItem]) ``` ELW조건검색요청 응답 (ka30005). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ElwSearchItem ] | ELW조건검색 리스트. | required | ELW조건검색 리스트. ### ElwSearchItem dataclass ¶ ``` ElwSearchItem(stk_cd: str, isscomp_nm: str, sqnc: str, base_aset_nm: str, rght_tp: str, expr_dt: str, cur_prc: str, pre_tp: str, pred_pre: str, flu_rt: str, trde_qty: str, trde_qty_pre: str, trde_prica: str, pred_trde_qty: str, sel_bid: str, buy_bid: str, prty: str, gear_rt: str, pl_qutr_rt: str, cfp: str, theory_pric: str, innr_vltl: str, delta: str, lvrg: str, exec_pric: str, cnvt_rt: str, lpposs_rt: str, pl_qutr_pt: str, fin_trde_dt: str, flo_dt: str, lpinitlast_suply_dt: str, stk_nm: str, srvive_dys: str, dispty_rt: str, lpmmcm_nm: str, lpmmcm_nm_1: str, lpmmcm_nm_2: str, xraymont_cntr_qty_arng_trde_tp: str, xraymont_cntr_qty_profa_100tp: str) ``` ELW조건검색 단일 항목. ### ElwSens dataclass ¶ ``` ElwSens(items: list[ElwSensItem]) ``` ELW민감도지표요청 응답 (ka10050). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ElwSensItem ] | ELW민감도지표 리스트. | required | ELW민감도지표 리스트. ### ElwSensItem dataclass ¶ ``` ElwSensItem(cntr_tm: str, cur_prc: str, elwtheory_pric: str, iv: str, delta: str, gam: str, theta: str, vega: str, law: str, lp: str) ``` ELW민감도지표 단일 항목. ### EstimatedAsset dataclass ¶ ``` EstimatedAsset(prsm_dpst_aset_amt: str) ``` 추정자산조회 응답 (kt00003). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | prsm_dpst_aset_amt | str | 추정예탁자산 (단위: 원). | required | 추정예탁자산 (단위: 원). ### EtfAllQuote dataclass ¶ ``` EtfAllQuote(items: list[EtfAllQuoteItem]) ``` ETF전체시세요청 응답 (ka40004). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ EtfAllQuoteItem ] | ETF전체시세 리스트. | required | ETF전체시세 리스트. ### EtfAllQuoteItem dataclass ¶ ``` EtfAllQuoteItem(stk_cd: str, stk_cls: str, stk_nm: str, close_pric: str, pre_sig: str, pred_pre: str, pre_rt: str, trde_qty: str, nav: str, trace_eor_rt: str, txbs: str, dvid_bf_base: str, pred_dvida: str, trace_idex_nm: str, drng: str, trace_idex_cd: str, trace_idex: str, trace_flu_rt: str) ``` ETF전체시세 단일 항목. ### EtfDailyFill dataclass ¶ ``` EtfDailyFill(cntr_tm: str, cur_prc: str, pre_sig: str, pred_pre: str, trde_qty: str, items: list[EtfDailyFillItem]) ``` ETF일자별체결요청 응답 (ka40008). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | cntr_tm | str | 체결시간. | required | | cur_prc | str | 현재가. | required | | pre_sig | str | 대비기호. | required | | pred_pre | str | 전일대비. | required | | trde_qty | str | 거래량. | required | | items | list [ EtfDailyFillItem ] | ETF일자별체결 리스트. | required | 체결시간. 현재가. 대비기호. 전일대비. 거래량. ETF일자별체결 리스트. ### EtfDailyFillItem dataclass ¶ ``` EtfDailyFillItem(dt: str, cur_prc_n: str, pre_sig_n: str, pred_pre_n: str, acc_trde_qty: str, for_netprps_qty: str, orgn_netprps_qty: str) ``` ETF일자별체결 단일 항목 (ka40008). ### EtfDailyTrend dataclass ¶ ``` EtfDailyTrend(items: list[EtfDailyTrendItem]) ``` ETF일별추이요청 응답 (ka40003). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ EtfDailyTrendItem ] | ETF일별추이 리스트. | required | ETF일별추이 리스트. ### EtfDailyTrendItem dataclass ¶ ``` EtfDailyTrendItem(cntr_dt: str, cur_prc: str, pre_sig: str, pred_pre: str, pre_rt: str, trde_qty: str, nav: str, acc_trde_prica: str, navidex_dispty_rt: str, navetfdispty_rt: str, trace_eor_rt: str, trace_cur_prc: str, trace_pred_pre: str, trace_pre_sig: str) ``` ETF일별추이 단일 항목. ### EtfInfo dataclass ¶ ``` EtfInfo(stk_nm: str, etfobjt_idex_nm: str, wonju_pric: str, etftxon_type: str, etntxon_type: str) ``` ETF종목정보요청 응답 (ka40002). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_nm | str | 종목명. | required | | etfobjt_idex_nm | str | ETF대상지수명. | required | | wonju_pric | str | 원주가격. | required | | etftxon_type | str | ETF과세유형. | required | | etntxon_type | str | ETN과세유형. | required | 종목명. ETF대상지수명. 원주가격. ETF과세유형. ETN과세유형. ### EtfNav dataclass ¶ ``` EtfNav(items: list[EtfNavItem]) ``` ETF시간대별체결요청 응답 (ka40009). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ EtfNavItem ] | ETFNAV 리스트. | required | ETFNAV 리스트. ### EtfNavItem dataclass ¶ ``` EtfNavItem(nav: str, navpred_pre: str, navflu_rt: str, trace_eor_rt: str, dispty_rt: str, stkcnt: str, base_pric: str, for_rmnd_qty: str, repl_pric: str, conv_pric: str, drstk: str, wonju_pric: str) ``` ETFNAV 단일 항목 (ka40009). ### EtfReturn dataclass ¶ ``` EtfReturn(items: list[EtfReturnItem]) ``` ETF수익율요청 응답 (ka40001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ EtfReturnItem ] | ETF수익율 리스트. | required | ETF수익율 리스트. ### EtfReturnItem dataclass ¶ ``` EtfReturnItem(etfprft_rt: str, cntr_prft_rt: str, for_netprps_qty: str, orgn_netprps_qty: str) ``` ETF수익율 단일 항목. ### EtfTimeFill dataclass ¶ ``` EtfTimeFill(stk_cls: str, stk_nm: str, etfobjt_idex_nm: str, etfobjt_idex_cd: str, objt_idex_pre_rt: str, wonju_pric: str, items: list[EtfTimeFillItem]) ``` ETF시간대별체결요청 응답 (ka40007). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cls | str | 종목분류. | required | | stk_nm | str | 종목명. | required | | etfobjt_idex_nm | str | ETF대상지수명. | required | | etfobjt_idex_cd | str | ETF대상지수코드. | required | | objt_idex_pre_rt | str | 대상지수대비율. | required | | wonju_pric | str | 원주가격. | required | | items | list [ EtfTimeFillItem ] | ETF시간대별체결 리스트. | required | 종목분류. 종목명. ETF대상지수명. ETF대상지수코드. 대상지수대비율. 원주가격. ETF시간대별체결 리스트. ### EtfTimeFillItem dataclass ¶ ``` EtfTimeFillItem(cntr_tm: str, cur_prc: str, pre_sig: str, pred_pre: str, trde_qty: str, stex_tp: str) ``` ETF시간대별체결 단일 항목 (ka40007). ### EtfTimeTrend dataclass ¶ ``` EtfTimeTrend(stk_nm: str, etfobjt_idex_nm: str, wonju_pric: str, etftxon_type: str, etntxon_type: str, items: list[EtfTimeTrendItem]) ``` ETF시간대별추이요청 응답 (ka40006). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_nm | str | 종목명. | required | | etfobjt_idex_nm | str | ETF대상지수명. | required | | wonju_pric | str | 원주가격. | required | | etftxon_type | str | ETF과세유형. | required | | etntxon_type | str | ETN과세유형. | required | | items | list [ EtfTimeTrendItem ] | ETF시간대별추이 리스트. | required | 종목명. ETF대상지수명. 원주가격. ETF과세유형. ETN과세유형. ETF시간대별추이 리스트. ### EtfTimeTrend2 dataclass ¶ ``` EtfTimeTrend2(items: list[EtfTimeTrend2Item]) ``` ETF시간대별추이요청 응답 (ka40010). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ EtfTimeTrend2Item ] | ETF시간대별추이 리스트. | required | ETF시간대별추이 리스트. ### EtfTimeTrend2Item dataclass ¶ ``` EtfTimeTrend2Item(cur_prc: str, pre_sig: str, pred_pre: str, trde_qty: str, for_netprps: str) ``` ETF시간대별추이 단일 항목 (ka40010). ### EtfTimeTrendItem dataclass ¶ ``` EtfTimeTrendItem(tm: str, close_pric: str, pre_sig: str, pred_pre: str, flu_rt: str, trde_qty: str, nav: str, trde_prica: str, navidex: str, navetf: str, trace: str, trace_idex: str, trace_idex_pred_pre: str, trace_idex_pred_pre_sig: str) ``` ETF시간대별추이 단일 항목 (ka40006). ### ExecutionBalance dataclass ¶ ``` ExecutionBalance(entr: str, entr_d1: str, entr_d2: str, pymn_alow_amt: str, ord_alowa: str, evlt_amt_tot: str, tot_pl_tot: str, tot_pl_rt: str, holdings: list[ExecutionBalanceItem] = list()) ``` 체결잔고 응답 (kt00005). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | entr | str | 예수금 (단위: 원). | required | | evlt_amt_tot | str | 평가금액합계 (단위: 원). | required | | tot_pl_tot | str | 총손익합계 (단위: 원). | required | | tot_pl_rt | str | 총손익률 (단위: %). | required | | holdings | list [ ExecutionBalanceItem ] | 종목별 체결잔고 목록. | list () | 예수금 (단위: 원). 평가금액합계 (단위: 원). 총손익합계 (단위: 원). 총손익률 (단위: %). 종목별 체결잔고 목록. ### ExecutionBalanceItem dataclass ¶ ``` ExecutionBalanceItem(crd_tp: str, loan_dt: str, expr_dt: str, stk_cd: str, stk_nm: str, setl_remn: str, cur_qty: str, cur_prc: str, buy_uv: str, pur_amt: str, evlt_amt: str, evltv_prft: str, pl_rt: str) ``` 종목별체결잔고 항목 (kt00005 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목번호. | required | | stk_nm | str | 종목명. | required | | cur_qty | str | 현재잔고 (단위: 주). | required | | cur_prc | str | 현재가 (단위: 원). | required | | buy_uv | str | 매입단가 (단위: 원). | required | | evlt_amt | str | 평가금액 (단위: 원). | required | | evltv_prft | str | 평가손익 (단위: 원). | required | | pl_rt | str | 손익률 (단위: %). | required | 종목번호. 종목명. 현재잔고 (단위: 주). 현재가 (단위: 원). 매입단가 (단위: 원). 평가금액 (단위: 원). 평가손익 (단위: 원). 손익률 (단위: %). ### ExecutionInfo dataclass ¶ ``` ExecutionInfo(items: list[ExecutionInfoItem]) ``` 체결정보 응답 (ka10003). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ExecutionInfoItem ] | 체결 리스트. | required | 체결 리스트. ### ExecutionInfoItem dataclass ¶ ``` ExecutionInfoItem(tm: str, cur_prc: str, cntr_trde_qty: str, acc_trde_qty: str, cntr_str: str, stex_tp: str) ``` 체결정보 단일 항목 (ka10003). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | tm | str | 시간 (HHMMSS). | required | | cur_prc | str | 현재가 (원). | required | | cntr_trde_qty | str | 체결거래량 (주). | required | | acc_trde_qty | str | 누적거래량 (주). | required | | cntr_str | str | 체결강도. | required | | stex_tp | str | 거래소구분. | required | 시간 (HHMMSS). 현재가 (원). 체결거래량 (주). 누적거래량 (주). 체결강도. 거래소구분. ### ExecutionStrength dataclass ¶ ``` ExecutionStrength(items: list[ExecutionStrengthItem]) ``` 체결강도추이 응답 (ka10046, ka10047). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ExecutionStrengthItem ] | 체결강도 시계열 리스트. | required | 체결강도 시계열 리스트. ### ExecutionStrengthItem dataclass ¶ ``` ExecutionStrengthItem(time_or_dt: str, cur_prc: str, flu_rt: str, trde_qty: str, cntr_str: str, cntr_str_5: str, cntr_str_20: str, cntr_str_60: str) ``` 체결강도추이 단일 항목 (ka10046, ka10047). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | time_or_dt | str | 시간(HHMMSS) 또는 일자(YYYYMMDD). | required | | cur_prc | str | 현재가 (원). | required | | flu_rt | str | 등락률 (%). | required | | trde_qty | str | 거래량 (주). | required | | cntr_str | str | 체결강도. | required | | cntr_str_5 | str | 체결강도 5분/5일. | required | | cntr_str_20 | str | 체결강도 20분/20일. | required | | cntr_str_60 | str | 체결강도 60분/60일. | required | 시간(HHMMSS) 또는 일자(YYYYMMDD). 현재가 (원). 등락률 (%). 거래량 (주). 체결강도. 체결강도 5분/5일. 체결강도 20분/20일. 체결강도 60분/60일. ### ExpectedTradeUpper dataclass ¶ ``` ExpectedTradeUpper(items: list[ExpectedTradeUpperItem]) ``` 예상체결등락률상위 응답 (ka10029). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ExpectedTradeUpperItem ] | 예상체결등락률상위 종목 리스트. | required | 예상체결등락률상위 종목 리스트. ### ExpectedTradeUpperItem dataclass ¶ ``` ExpectedTradeUpperItem(stk_cd: str, stk_nm: str, exp_cntr_pric: str, base_pric: str, pred_pre_sig: str, pred_pre: str, flu_rt: str, exp_cntr_qty: str, sel_req: str, sel_bid: str, buy_bid: str, buy_req: str) ``` 예상체결등락률상위 단일 항목 (ka10029). ### FilledOrderItem dataclass ¶ ``` FilledOrderItem(ord_no: str, stk_nm: str, io_tp_nm: str, ord_pric: str, ord_qty: str, cntr_pric: str, cntr_qty: str, oso_qty: str, tdy_trde_cmsn: str, tdy_trde_tax: str, ord_stt: str, trde_tp: str, orig_ord_no: str, ord_tm: str, stk_cd: str, stex_tp: str, stex_tp_txt: str, sor_yn: str) ``` 체결 주문 항목 (ka10076 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | ord_no | str | 주문번호. | required | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | cntr_pric | str | 체결가 (단위: 원). | required | | cntr_qty | str | 체결량 (단위: 주). | required | | oso_qty | str | 미체결수량 (단위: 주). | required | | ord_stt | str | 주문상태. | required | 주문번호. 종목코드. 종목명. 체결가 (단위: 원). 체결량 (단위: 주). 미체결수량 (단위: 주). 주문상태. ### ForeignBrokerTradeUpper dataclass ¶ ``` ForeignBrokerTradeUpper(items: list[ForeignBrokerTradeUpperItem]) ``` 외국계창구매매상위 응답 (ka10037). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ForeignBrokerTradeUpperItem ] | 외국계창구매매상위 종목 리스트. | required | 외국계창구매매상위 종목 리스트. ### ForeignBrokerTradeUpperItem dataclass ¶ ``` ForeignBrokerTradeUpperItem(rank: str, stk_cd: str, stk_nm: str, cur_prc: str, pred_pre_sig: str, pred_pre: str, flu_rt: str, sel_trde_qty: str, buy_trde_qty: str, netprps_trde_qty: str, netprps_prica: str, trde_qty: str, trde_prica: str) ``` 외국계창구매매상위 단일 항목 (ka10037). ### ForeignConsecTradeUpper dataclass ¶ ``` ForeignConsecTradeUpper(items: list[ForeignConsecTradeUpperItem]) ``` 외인연속순매매상위 응답 (ka10035). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ForeignConsecTradeUpperItem ] | 외인연속순매매상위 종목 리스트. | required | 외인연속순매매상위 종목 리스트. ### ForeignConsecTradeUpperItem dataclass ¶ ``` ForeignConsecTradeUpperItem(stk_cd: str, stk_nm: str, cur_prc: str, pred_pre_sig: str, pred_pre: str, dm1: str, dm2: str, dm3: str, tot: str, limit_exh_rt: str, pred_pre_1: str, pred_pre_2: str, pred_pre_3: str) ``` 외인연속순매매상위 단일 항목 (ka10035). ### ForeignInstitutionTradeUpper dataclass ¶ ``` ForeignInstitutionTradeUpper(items: list[ForeignInstitutionTradeUpperItem]) ``` 외국인기관매매상위 응답 (ka90009). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ForeignInstitutionTradeUpperItem ] | 외국인기관매매상위 리스트. | required | 외국인기관매매상위 리스트. ### ForeignInstitutionTradeUpperItem dataclass ¶ ``` ForeignInstitutionTradeUpperItem(for_netslmt_stk_cd: str, for_netslmt_stk_nm: str, for_netslmt_amt: str, for_netslmt_qty: str, for_netprps_stk_cd: str, for_netprps_stk_nm: str, for_netprps_amt: str, for_netprps_qty: str, orgn_netslmt_stk_cd: str, orgn_netslmt_stk_nm: str, orgn_netslmt_amt: str, orgn_netslmt_qty: str, orgn_netprps_stk_cd: str, orgn_netprps_stk_nm: str, orgn_netprps_amt: str, orgn_netprps_qty: str) ``` 외국인기관매매상위 단일 항목 (ka90009). ### ForeignLimitExhaustUpper dataclass ¶ ``` ForeignLimitExhaustUpper(items: list[ForeignLimitExhaustUpperItem]) ``` 외인한도소진율증가상위 응답 (ka10036). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ForeignLimitExhaustUpperItem ] | 외인한도소진율증가상위 종목 리스트. | required | 외인한도소진율증가상위 종목 리스트. ### ForeignLimitExhaustUpperItem dataclass ¶ ``` ForeignLimitExhaustUpperItem(rank: str, stk_cd: str, stk_nm: str, cur_prc: str, pred_pre_sig: str, pred_pre: str, trde_qty: str, poss_stkcnt: str, gain_pos_stkcnt: str, base_limit_exh_rt: str, limit_exh_rt: str, exh_rt_incrs: str) ``` 외인한도소진율증가상위 단일 항목 (ka10036). ### ForeignPeriodTradeUpper dataclass ¶ ``` ForeignPeriodTradeUpper(items: list[ForeignPeriodTradeUpperItem]) ``` 외인기간별매매상위 응답 (ka10034). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ForeignPeriodTradeUpperItem ] | 외인기간별매매상위 종목 리스트. | required | 외인기간별매매상위 종목 리스트. ### ForeignPeriodTradeUpperItem dataclass ¶ ``` ForeignPeriodTradeUpperItem(rank: str, stk_cd: str, stk_nm: str, cur_prc: str, pred_pre_sig: str, pred_pre: str, sel_bid: str, buy_bid: str, trde_qty: str, netprps_qty: str, gain_pos_stkcnt: str) ``` 외인기간별매매상위 단일 항목 (ka10034). ### ForeignTrade dataclass ¶ ``` ForeignTrade(items: list[ForeignTradeItem]) ``` 주식외국인종목별매매동향 응답 (ka10008). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ForeignTradeItem ] | 외국인 매매동향 리스트. | required | 외국인 매매동향 리스트. ### ForeignTradeItem dataclass ¶ ``` ForeignTradeItem(dt: str, close_pric: str, pred_pre: str, trde_qty: str, chg_qty: str, poss_stkcnt: str, wght: str, gain_pos_stkcnt: str, frgnr_limit: str, frgnr_limit_irds: str, limit_exh_rt: str) ``` 주식외국인 종목별 매매동향 단일 항목. ### FxDepositItem dataclass ¶ ``` FxDepositItem(crnc_cd: str, fx_entr: str, fc_krw_repl_evlta: str, fc_trst_profa: str, pymn_alow_amt: str, pymn_alow_amt_entr: str, ord_alow_amt_entr: str, fc_uncla: str, fc_ch_uncla: str, dly_amt: str, d1_fx_entr: str, d2_fx_entr: str, d3_fx_entr: str, d4_fx_entr: str) ``` 외화예수금 항목 (kt00001 stk_entr_prst 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | crnc_cd | str | 통화코드 (예: "USD" ). | required | | fx_entr | str | 외화예수금. | required | | pymn_alow_amt | str | 출금가능금액. | required | | ord_alow_amt_entr | str | 주문가능금액(예수금). | required | 통화코드 (예: "USD" ). 외화예수금. 출금가능금액. 주문가능금액(예수금). ### GoldBalance dataclass ¶ ``` GoldBalance(tot_entr: str, net_entr: str, tot_est_amt: str, net_amt: str, tot_book_amt2: str, tot_dep_amt: str, paym_alowa: str, pl_amt: str, items: list[GoldBalanceItem]) ``` 금현물 잔고확인 응답 (kt50020). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | tot_entr | str | 예수금. | required | | net_entr | str | 추정예수금. | required | | tot_est_amt | str | 잔고평가액. | required | | net_amt | str | 예탁자산평가액. | required | | tot_book_amt2 | str | 총매입금액. | required | | tot_dep_amt | str | 추정예탁자산. | required | | paym_alowa | str | 출금가능금액. | required | | pl_amt | str | 실현손익. | required | | items | list [ GoldBalanceItem ] | 금현물계좌평가현황 리스트. | required | 예수금. 추정예수금. 잔고평가액. 예탁자산평가액. 총매입금액. 추정예탁자산. 출금가능금액. 실현손익. 금현물계좌평가현황 리스트. ### GoldBalanceItem dataclass ¶ ``` GoldBalanceItem(stk_cd: str, stk_nm: str, real_qty: str, avg_prc: str, cur_prc: str, est_amt: str, est_lspft: str, est_ratio: str, cmsn: str, vlad_tax: str, book_amt2: str, pl_prch_prc: str, qty: str, buy_qty: str, sell_qty: str, able_qty: str) ``` 금현물계좌평가현황 단일 항목. ### GoldBid dataclass ¶ ``` GoldBid(items: list[GoldBidItem]) ``` 금현물 호가 응답 (ka50101). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ GoldBidItem ] | 금현물 호가 리스트. | required | 금현물 호가 리스트. ### GoldBidItem dataclass ¶ ``` GoldBidItem(cntr_pric: str, pred_pre: str, flu_rt: str, trde_qty: str, acc_trde_prica: str, cntr_trde_qty: str, tm: str, pre_sig: str, pri_sel_bid_unit: str, pri_buy_bid_unit: str, trde_pre: str, trde_tern_rt: str, cntr_str: str, lpmmcm_nm_1: str, stex_tp: str) ``` 금현물 호가 단일 항목. ### GoldCancelOrderResponse dataclass ¶ ``` GoldCancelOrderResponse(ord_no: str, base_orig_ord_no: str, cncl_qty: str) ``` 금현물 취소주문 응답 (kt50003). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | ord_no | str | 주문번호. | required | | base_orig_ord_no | str | 모주문번호. | required | | cncl_qty | str | 취소수량. | required | 주문번호. 모주문번호. 취소수량. ### GoldContractTrend dataclass ¶ ``` GoldContractTrend(items: list[GoldContractTrendItem]) ``` 금현물체결추이요청 응답 (ka50010). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ GoldContractTrendItem ] | 금현물체결추이 리스트. | required | 금현물체결추이 리스트. ### GoldContractTrendItem dataclass ¶ ``` GoldContractTrendItem(cntr_pric: str, pred_pre: str, flu_rt: str, trde_qty: str, acc_trde_prica: str, cntr_trde_qty: str, tm: str, pre_sig: str, pri_sel_bid_unit: str, pri_buy_bid_unit: str, trde_pre: str, trde_tern_rt: str, cntr_str: str) ``` 금현물체결추이 단일 항목. ### GoldDailyChart dataclass ¶ ``` GoldDailyChart(items: list[GoldDailyChartItem]) ``` 금현물일봉차트조회요청 응답 (ka50081). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ GoldDailyChartItem ] | 금현물일봉차트 리스트. | required | 금현물일봉차트 리스트. ### GoldDailyChartItem dataclass ¶ ``` GoldDailyChartItem(cur_prc: str, acc_trde_qty: str, acc_trde_prica: str, open_pric: str, high_pric: str, low_pric: str, dt: str, pred_pre_sig: str) ``` 금현물일봉차트 단일 항목. ### GoldDailyMinuteChart dataclass ¶ ``` GoldDailyMinuteChart(items: list[GoldDailyMinuteChartItem]) ``` 금현물당일분봉차트조회요청 응답 (ka50092). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ GoldDailyMinuteChartItem ] | 금현물당일분봉차트 리스트. | required | 금현물당일분봉차트 리스트. ### GoldDailyMinuteChartItem dataclass ¶ ``` GoldDailyMinuteChartItem(cntr_pric: str, pred_pre: str, acc_trde_qty: str, acc_trde_prica: str, trde_qty: str, open_pric: str, high_pric: str, low_pric: str, cntr_tm: str, dt: str, pred_pre_sig: str) ``` 금현물당일분봉차트 단일 항목. ### GoldDailyTickChart dataclass ¶ ``` GoldDailyTickChart(items: list[GoldDailyTickChartItem]) ``` 금현물당일틱차트조회요청 응답 (ka50091). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ GoldDailyTickChartItem ] | 금현물당일틱차트 리스트. | required | 금현물당일틱차트 리스트. ### GoldDailyTickChartItem dataclass ¶ ``` GoldDailyTickChartItem(cntr_pric: str, pred_pre: str, trde_qty: str, open_pric: str, high_pric: str, low_pric: str, cntr_tm: str, dt: str, pred_pre_sig: str) ``` 금현물당일틱차트 단일 항목. ### GoldDailyTrend dataclass ¶ ``` GoldDailyTrend(items: list[GoldDailyTrendItem]) ``` 금현물일별추이요청 응답 (ka50012). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ GoldDailyTrendItem ] | 금현물일별추이 리스트. | required | 금현물일별추이 리스트. ### GoldDailyTrendItem dataclass ¶ ``` GoldDailyTrendItem(cur_prc: str, pred_pre: str, flu_rt: str, trde_qty: str, acc_trde_prica: str, open_pric: str, high_pric: str, low_pric: str, dt: str, pre_sig: str, orgn_netprps: str, for_netprps: str, ind_netprps: str) ``` 금현물일별추이 단일 항목. ### GoldDeposit dataclass ¶ ``` GoldDeposit(entra: str, profa_ch: str, chck_ina_amt: str, etc_loan: str, etc_loan_dlfe: str, etc_loan_tot: str, prsm_entra: str, buy_exct_amt: str, sell_exct_amt: str, sell_buy_exct_amt: str, dly_amt: str, prsm_pymn_alow_amt: str, pymn_alow_amt: str, ord_alow_amt: str) ``` 금현물 예수금 응답 (kt50021). ### GoldExpectedContract dataclass ¶ ``` GoldExpectedContract(items: list[GoldExpectedContractItem]) ``` 금현물예상체결요청 응답 (ka50087). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ GoldExpectedContractItem ] | 금현물예상체결 리스트. | required | 금현물예상체결 리스트. ### GoldExpectedContractItem dataclass ¶ ``` GoldExpectedContractItem(exp_cntr_pric: str, exp_pred_pre: str, exp_flu_rt: str, exp_acc_trde_qty: str, exp_cntr_trde_qty: str, exp_tm: str, exp_pre_sig: str, stex_tp: str) ``` 금현물예상체결 단일 항목. ### GoldInvestorStatus dataclass ¶ ``` GoldInvestorStatus(items: list[GoldInvestorStatusItem]) ``` 금현물투자자현황 응답 (ka52301). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ GoldInvestorStatusItem ] | 투자자현황 리스트. | required | 투자자현황 리스트. ### GoldInvestorStatusItem dataclass ¶ ``` GoldInvestorStatusItem(stk_nm: str, stk_cd: str, all_dfrt_trst_sell_qty: str, sell_qty_irds: str, all_dfrt_trst_sell_amt: str, sell_amt_irds: str, all_dfrt_trst_buy_qty: str, buy_qty_irds: str, all_dfrt_trst_buy_amt: str, buy_amt_irds: str, all_dfrt_trst_netprps_qty: str, netprps_qty_irds: str, all_dfrt_trst_netprps_amt: str, netprps_amt_irds: str, sell_uv: str, buy_uv: str, acc_netprps_amt: str, acc_netprps_qty: str) ``` 금현물투자자현황 단일 항목. ### GoldMarketInfo dataclass ¶ ``` GoldMarketInfo(pred_pre_sig: str, pred_pre: str, flu_rt: str, trde_qty: str, open_pric: str, high_pric: str, low_pric: str, pred_rt: str, upl_pric: str, lst_pric: str, pred_close_pric: str) ``` 금현물 시세정보 응답 (ka50100). ### GoldMinuteChart dataclass ¶ ``` GoldMinuteChart(items: list[GoldMinuteChartItem]) ``` 금현물분봉차트조회요청 응답 (ka50080). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ GoldMinuteChartItem ] | 금현물분봉차트 리스트. | required | 금현물분봉차트 리스트. ### GoldMinuteChartItem dataclass ¶ ``` GoldMinuteChartItem(cur_prc: str, pred_pre: str, acc_trde_qty: str, trde_qty: str, open_pric: str, high_pric: str, low_pric: str, cntr_tm: str, dt: str, pred_pre_sig: str) ``` 금현물분봉차트 단일 항목. ### GoldModifyOrderResponse dataclass ¶ ``` GoldModifyOrderResponse(ord_no: str, base_orig_ord_no: str, mdfy_qty: str) ``` 금현물 정정주문 응답 (kt50002). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | ord_no | str | 주문번호. | required | | base_orig_ord_no | str | 모주문번호. | required | | mdfy_qty | str | 정정수량. | required | 주문번호. 모주문번호. 정정수량. ### GoldMonthlyChart dataclass ¶ ``` GoldMonthlyChart(items: list[GoldMonthlyChartItem]) ``` 금현물월봉차트조회요청 응답 (ka50083). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ GoldMonthlyChartItem ] | 금현물월봉차트 리스트. | required | 금현물월봉차트 리스트. ### GoldMonthlyChartItem dataclass ¶ ``` GoldMonthlyChartItem(cur_prc: str, acc_trde_qty: str, acc_trde_prica: str, open_pric: str, high_pric: str, low_pric: str, dt: str) ``` 금현물월봉차트 단일 항목. ### GoldOrderDetail dataclass ¶ ``` GoldOrderDetail(items: list[GoldOrderDetailItem]) ``` 금현물 주문체결조회 응답 (kt50031). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ GoldOrderDetailItem ] | 계좌별주문체결내역상세 리스트. | required | 계좌별주문체결내역상세 리스트. ### GoldOrderDetailItem dataclass ¶ ``` GoldOrderDetailItem(ord_no: str, stk_cd: str, trde_tp: str, crd_tp: str, ord_qty: str, ord_uv: str, cnfm_qty: str, acpt_tp: str, rsrv_tp: str, ord_tm: str, ori_ord: str, stk_nm: str, io_tp_nm: str, loan_dt: str, cntr_qty: str, cntr_uv: str, ord_remnq: str, comm_ord_tp: str, mdfy_cncl: str, cnfm_tm: str, dmst_stex_tp: str, cond_uv: str) ``` 금현물 주문체결조회 단일 항목. ### GoldOrderResponse dataclass ¶ ``` GoldOrderResponse(ord_no: str) ``` 금현물 매수/매도주문 응답 (kt50000, kt50001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | ord_no | str | 주문번호. | required | 주문번호. ### GoldOrderStatus dataclass ¶ ``` GoldOrderStatus(items: list[GoldOrderStatusItem]) ``` 금현물 주문체결전체조회 응답 (kt50030). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ GoldOrderStatusItem ] | 계좌별주문체결현황 리스트. | required | 계좌별주문체결현황 리스트. ### GoldOrderStatusItem dataclass ¶ ``` GoldOrderStatusItem(stk_bond_tp: str, ord_no: str, stk_cd: str, trde_tp: str, io_tp_nm: str, ord_qty: str, ord_uv: str, cnfm_qty: str, data_send_end_tp: str, mrkt_deal_tp: str, rsrv_tp: str, orig_ord_no: str, stk_nm: str, dcd_tp_nm: str, crd_deal_tp: str, cntr_qty: str, cntr_uv: str, ord_remnq: str, comm_ord_tp: str, mdfy_cncl_tp: str, dmst_stex_tp: str, cond_uv: str) ``` 금현물 주문체결전체조회 단일 항목. ### GoldTickChart dataclass ¶ ``` GoldTickChart(items: list[GoldTickChartItem]) ``` 금현물틱차트조회요청 응답 (ka50079). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ GoldTickChartItem ] | 금현물틱차트 리스트. | required | 금현물틱차트 리스트. ### GoldTickChartItem dataclass ¶ ``` GoldTickChartItem(cur_prc: str, pred_pre: str, trde_qty: str, open_pric: str, high_pric: str, low_pric: str, cntr_tm: str, dt: str, pred_pre_sig: str) ``` 금현물틱차트 단일 항목. ### GoldTradeHistory dataclass ¶ ``` GoldTradeHistory(acnt_print: str, items: list[GoldTradeHistoryItem]) ``` 금현물 거래내역조회 응답 (kt50032). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | acnt_print | str | 계좌번호 출력용. | required | | items | list [ GoldTradeHistoryItem ] | 금현물거래내역 리스트. | required | 계좌번호 출력용. 금현물거래내역 리스트. ### GoldTradeHistoryItem dataclass ¶ ``` GoldTradeHistoryItem(deal_dt: str, deal_no: str, rmrk_nm: str, deal_qty: str, gold_spot_vat: str, exct_amt: str, dly_sum: str, entra_remn: str, mdia_nm: str, orig_deal_no: str, stk_nm: str, uv_exrt: str, cmsn: str, uncl_ocr: str, rpym_sum: str, spot_remn: str, proc_time: str, rcpy_no: str, stk_cd: str, deal_amt: str, tax_tot_amt: str, cntr_dt: str, proc_brch_nm: str, prcsr: str) ``` 금현물 거래내역조회 단일 항목. ### GoldUnfilled dataclass ¶ ``` GoldUnfilled(items: list[GoldUnfilledItem]) ``` 금현물 미체결조회 응답 (kt50075). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ GoldUnfilledItem ] | 계좌별주문미체결현황 리스트. | required | 계좌별주문미체결현황 리스트. ### GoldUnfilledItem dataclass ¶ ``` GoldUnfilledItem(stk_bond_tp: str, ord_no: str, stk_cd: str, trde_tp: str, io_tp_nm: str, ord_qty: str, ord_uv: str, cnfm_qty: str, data_send_end_tp: str, mrkt_deal_tp: str, rsrv_tp: str, orig_ord_no: str, stk_nm: str, dcd_tp_nm: str, crd_deal_tp: str, cntr_qty: str, cntr_uv: str, ord_remnq: str, comm_ord_tp: str, mdfy_cncl_tp: str, dmst_stex_tp: str, cond_uv: str) ``` 금현물 미체결조회 단일 항목. ### GoldWeeklyChart dataclass ¶ ``` GoldWeeklyChart(items: list[GoldWeeklyChartItem]) ``` 금현물주봉차트조회요청 응답 (ka50082). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ GoldWeeklyChartItem ] | 금현물주봉차트 리스트. | required | 금현물주봉차트 리스트. ### GoldWeeklyChartItem dataclass ¶ ``` GoldWeeklyChartItem(cur_prc: str, acc_trde_qty: str, acc_trde_prica: str, open_pric: str, high_pric: str, low_pric: str, dt: str) ``` 금현물주봉차트 단일 항목. ### HighLowPER dataclass ¶ ``` HighLowPER(items: list[HighLowPERItem]) ``` 고저PER 응답 (ka10026). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ HighLowPERItem ] | 고저PER 종목 리스트. | required | 고저PER 종목 리스트. ### HighLowPERItem dataclass ¶ ``` HighLowPERItem(stk_cd: str, stk_nm: str, per: str, cur_prc: str, flu_rt: str, now_trde_qty: str) ``` 고저PER 단일 항목 (ka10026). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | per | str | PER 값. | required | | cur_prc | str | 현재가 (원). | required | | flu_rt | str | 등락률 (%). | required | | now_trde_qty | str | 현재거래량 (주). | required | 종목코드. 종목명. PER 값. 현재가 (원). 등락률 (%). 현재거래량 (주). ### HighLowStockItem dataclass ¶ ``` HighLowStockItem(stk_cd: str, stk_nm: str, cur_prc: str, flu_rt: str, trde_qty: str, high_pric: str, low_pric: str) ``` 신고저가 단일 항목 (ka10016). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | cur_prc | str | 현재가 (원). | required | | flu_rt | str | 등락률 (%). | required | | trde_qty | str | 거래량 (주). | required | | high_pric | str | 고가 (원). | required | | low_pric | str | 저가 (원). | required | 종목코드. 종목명. 현재가 (원). 등락률 (%). 거래량 (주). 고가 (원). 저가 (원). ### HighLowStocks dataclass ¶ ``` HighLowStocks(items: list[HighLowStockItem]) ``` 신고저가 응답 (ka10016). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ HighLowStockItem ] | 신고저가 종목 리스트. | required | 신고저가 종목 리스트. ### HoldingItem dataclass ¶ ``` HoldingItem(stk_cd: str, stk_nm: str, evltv_prft: str, prft_rt: str, pur_pric: str, pred_close_pric: str, rmnd_qty: str, trde_able_qty: str, cur_prc: str, pred_buyq: str, pred_sellq: str, tdy_buyq: str, tdy_sellq: str, pur_amt: str, pur_cmsn: str, evlt_amt: str, sell_cmsn: str, tax: str, sum_cmsn: str, poss_rt: str, crd_tp: str, crd_tp_nm: str, crd_loan_dt: str) ``` 계좌평가잔고 종목 항목 (kt00018 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목번호. | required | | stk_nm | str | 종목명. | required | | rmnd_qty | str | 보유수량 (단위: 주). | required | | trde_able_qty | str | 매매가능수량 (단위: 주). | required | | cur_prc | str | 현재가 (단위: 원). | required | | pur_pric | str | 매입가 (단위: 원). | required | | pur_amt | str | 매입금액 (단위: 원). | required | | evlt_amt | str | 평가금액 (단위: 원). | required | | evltv_prft | str | 평가손익 (단위: 원). | required | | prft_rt | str | 수익률(%) (단위: %). | required | | poss_rt | str | 보유비중(%) (단위: %). | required | 종목번호. 종목명. 보유수량 (단위: 주). 매매가능수량 (단위: 주). 현재가 (단위: 원). 매입가 (단위: 원). 매입금액 (단위: 원). 평가금액 (단위: 원). 평가손익 (단위: 원). 수익률(%) (단위: %). 보유비중(%) (단위: %). ### InstFrgnConsecutiveItem dataclass ¶ ``` InstFrgnConsecutiveItem(rank: str, stk_cd: str, stk_nm: str, prid_stkpc_flu_rt: str, orgn_nettrde_amt: str, orgn_nettrde_qty: str, orgn_cont_netprps_dys: str, orgn_cont_netprps_qty: str, orgn_cont_netprps_amt: str, frgnr_nettrde_qty: str, frgnr_nettrde_amt: str, frgnr_cont_netprps_dys: str, frgnr_cont_netprps_qty: str, frgnr_cont_netprps_amt: str, nettrde_qty: str, nettrde_amt: str, tot_cont_netprps_dys: str, tot_cont_nettrde_qty: str, tot_cont_netprps_amt: str) ``` 기관외국인연속매매현황 단일 항목. ### InstFrgnConsecutiveTrade dataclass ¶ ``` InstFrgnConsecutiveTrade(items: list[InstFrgnConsecutiveItem]) ``` 기관외국인연속매매현황요청 응답 (ka10131). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ InstFrgnConsecutiveItem ] | 기관외국인연속매매현황 리스트. | required | 기관외국인연속매매현황 리스트. ### InstitutionTrade dataclass ¶ ``` InstitutionTrade(date: str, close_pric: str, pre: str, orgn_dt_acc: str, orgn_daly_nettrde: str, frgnr_daly_nettrde: str, frgnr_qota_rt: str) ``` 주식기관요청 응답 (ka10009). ### IntraInvestorChart dataclass ¶ ``` IntraInvestorChart(items: list[IntraInvestorChartItem]) ``` 장중투자자별매매차트 응답 (ka10064). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ IntraInvestorChartItem ] | 장중투자자 매매 차트 리스트. | required | 장중투자자 매매 차트 리스트. ### IntraInvestorChartItem dataclass ¶ ``` IntraInvestorChartItem(tm: str, frgnr_invsr: str, orgn: str, invtrt: str, insrnc: str, bank: str, penfnd_etc: str, etc_corp: str, natn: str) ``` 장중투자자별매매차트 단일 항목 (ka10064). ### IntradayInvestorItem dataclass ¶ ``` IntradayInvestorItem(stk_cd: str, stk_nm: str, cur_prc: str, flu_rt: str, acc_trde_qty: str, netprps_qty: str, buy_qty: str, sell_qty: str) ``` 장중투자자별매매 단일 항목 (ka10063). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | cur_prc | str | 현재가 (원). | required | | flu_rt | str | 등락률 (%). | required | | acc_trde_qty | str | 누적거래량 (주). | required | | netprps_qty | str | 순매수수량 (주). | required | | buy_qty | str | 매수수량 (주). | required | | sell_qty | str | 매도수량 (주). | required | 종목코드. 종목명. 현재가 (원). 등락률 (%). 누적거래량 (주). 순매수수량 (주). 매수수량 (주). 매도수량 (주). ### IntradayInvestorTrading dataclass ¶ ``` IntradayInvestorTrading(items: list[IntradayInvestorItem]) ``` 장중투자자별매매 응답 (ka10063). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ IntradayInvestorItem ] | 종목별 투자자 매매 리스트. | required | 종목별 투자자 매매 리스트. ### InvestorChart dataclass ¶ ``` InvestorChart(items: list[InvestorChartItem]) ``` 종목별투자자기관별차트 응답 (ka10060). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ InvestorChartItem ] | 투자자기관별 차트 리스트. | required | 투자자기관별 차트 리스트. ### InvestorChartItem dataclass ¶ ``` InvestorChartItem(dt: str, cur_prc: str, pred_pre: str, acc_trde_prica: str, ind_invsr: str, frgnr_invsr: str, orgn: str, fnnc_invt: str, insrnc: str, invtrt: str, etc_fnnc: str, bank: str, penfnd_etc: str, samo_fund: str, natn: str, etc_corp: str, natfor: str) ``` 종목별투자자기관별차트 단일 항목 (ka10060). ### InvestorDailyStockItem dataclass ¶ ``` InvestorDailyStockItem(stk_cd: str, stk_nm: str, netslmt_qty: str, netslmt_amt: str, cur_prc: str, pre_rt: str) ``` 투자자별일별매매종목 단일 항목 (ka10058). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | netslmt_qty | str | 순매도수량 (주). | required | | netslmt_amt | str | 순매도금액 (백만원). | required | | cur_prc | str | 현재가 (원). | required | | pre_rt | str | 대비율 (%). | required | 종목코드. 종목명. 순매도수량 (주). 순매도금액 (백만원). 현재가 (원). 대비율 (%). ### InvestorDailyStocks dataclass ¶ ``` InvestorDailyStocks(items: list[InvestorDailyStockItem]) ``` 투자자별일별매매종목 응답 (ka10058). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ InvestorDailyStockItem ] | 종목별 리스트. | required | 종목별 리스트. ### InvestorTradeUpper dataclass ¶ ``` InvestorTradeUpper(items: list[InvestorTradeUpperItem]) ``` 장중투자자별매매상위 응답 (ka10065). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ InvestorTradeUpperItem ] | 장중투자자별매매상위 종목 리스트. | required | 장중투자자별매매상위 종목 리스트. ### InvestorTradeUpperItem dataclass ¶ ``` InvestorTradeUpperItem(stk_cd: str, stk_nm: str, sel_qty: str, buy_qty: str, netslmt: str) ``` 장중투자자별매매상위 단일 항목 (ka10065). ### LimitStockItem dataclass ¶ ``` LimitStockItem(stk_cd: str, stk_nm: str, cur_prc: str, flu_rt: str, trde_qty: str, sel_bid: str, buy_bid: str, cnt: str) ``` 상하한가 단일 항목 (ka10017). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | cur_prc | str | 현재가 (원). | required | | flu_rt | str | 등락률 (%). | required | | trde_qty | str | 거래량 (주). | required | | sel_bid | str | 매도호가 (원). | required | | buy_bid | str | 매수호가 (원). | required | | cnt | str | 연속횟수. | required | 종목코드. 종목명. 현재가 (원). 등락률 (%). 거래량 (주). 매도호가 (원). 매수호가 (원). 연속횟수. ### LimitStocks dataclass ¶ ``` LimitStocks(items: list[LimitStockItem]) ``` 상하한가 응답 (ka10017). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ LimitStockItem ] | 상하한가 종목 리스트. | required | 상하한가 종목 리스트. ### MarginDetail dataclass ¶ ``` MarginDetail(tdy_reu_alowa: str, tdy_reu_alowa_fin: str, pred_reu_alowa: str, pred_reu_alowa_fin: str, use_pos_ch: str, use_pos_ch_fin: str, use_pos_repl: str, use_pos_repl_fin: str, uncla: str, ord_alow_20: str, ord_alow_30: str, ord_alow_40: str, ord_alow_50: str, ord_alow_60: str, ord_alow_100: str, d2vexct_entr: str, d2ch_ord_alow_amt: str) ``` 증거금세부내역 응답 (kt00013). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | use_pos_ch | str | 사용가능현금 (단위: 원). | required | | use_pos_repl | str | 사용가능대용 (단위: 원). | required | | uncla | str | 미수금 (단위: 원). | required | 사용가능현금 (단위: 원). 사용가능대용 (단위: 원). 미수금 (단위: 원). ### MarketSummary dataclass ¶ ``` MarketSummary(stk_nm: str, stk_cd: str, date: str, tm: str, cur_prc: str, flu_rt: str, open_pric: str, high_pric: str, low_pric: str, trde_qty: str, trde_prica: str, pred_close_pric: str, upl_pric: str, lst_pric: str, exp_cntr_pric: str, exp_cntr_qty: str, tot_buy_req: str, tot_sel_req: str) ``` 시세표성정보 응답 (ka10007). 종목의 현재가·호가·예상체결 등 종합 시세. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_nm | str | 종목명. | required | | stk_cd | str | 종목코드. | required | | date | str | 날짜 (YYYYMMDD). | required | | tm | str | 시간 (HHMMSS). | required | | cur_prc | str | 현재가 (원). | required | | flu_rt | str | 등락률 (%). | required | | open_pric | str | 시가 (원). | required | | high_pric | str | 고가 (원). | required | | low_pric | str | 저가 (원). | required | | trde_qty | str | 거래량 (주). | required | | trde_prica | str | 거래대금 (백만원). | required | | pred_close_pric | str | 전일종가 (원). | required | | upl_pric | str | 상한가 (원). | required | | lst_pric | str | 하한가 (원). | required | | exp_cntr_pric | str | 예상체결가 (원). | required | | exp_cntr_qty | str | 예상체결량 (주). | required | | tot_buy_req | str | 총매수잔량. | required | | tot_sel_req | str | 총매도잔량. | required | 종목명. 종목코드. 날짜 (YYYYMMDD). 시간 (HHMMSS). 현재가 (원). 등락률 (%). 시가 (원). 고가 (원). 저가 (원). 거래량 (주). 거래대금 (백만원). 전일종가 (원). 상한가 (원). 하한가 (원). 예상체결가 (원). 예상체결량 (주). 총매수잔량. 총매도잔량. ### ModifyOrderResponse dataclass ¶ ``` ModifyOrderResponse(ord_no: str, base_orig_ord_no: str, mdfy_qty: str, dmst_stex_tp: str) ``` 주식 정정주문 응답 (kt10002, kt10008). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | ord_no | str | 주문번호 (새로 발급된 정정 주문번호). | required | | base_orig_ord_no | str | 모주문번호 (최초 원주문번호). | required | | mdfy_qty | str | 정정수량 (단위: 주). | required | | dmst_stex_tp | str | 국내거래소구분. | required | 주문번호 (새로 발급된 정정 주문번호). 모주문번호 (최초 원주문번호). 정정수량 (단위: 주). 국내거래소구분. ### NearHighLow dataclass ¶ ``` NearHighLow(items: list[NearHighLowItem]) ``` 고저가근접 응답 (ka10018). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ NearHighLowItem ] | 고저가근접 종목 리스트. | required | 고저가근접 종목 리스트. ### NearHighLowItem dataclass ¶ ``` NearHighLowItem(stk_cd: str, stk_nm: str, cur_prc: str, flu_rt: str, trde_qty: str, tdy_high_pric: str, tdy_low_pric: str) ``` 고저가근접 단일 항목 (ka10018). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | cur_prc | str | 현재가 (원). | required | | flu_rt | str | 등락률 (%). | required | | trde_qty | str | 거래량 (주). | required | | tdy_high_pric | str | 당일고가 (원). | required | | tdy_low_pric | str | 당일저가 (원). | required | 종목코드. 종목명. 현재가 (원). 등락률 (%). 거래량 (주). 당일고가 (원). 당일저가 (원). ### NetBuyBrokerRank dataclass ¶ ``` NetBuyBrokerRank(items: list[NetBuyBrokerRankItem]) ``` 순매수거래원순위 응답 (ka10042). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ NetBuyBrokerRankItem ] | 순매수거래원순위 리스트. | required | 순매수거래원순위 리스트. ### NetBuyBrokerRankItem dataclass ¶ ``` NetBuyBrokerRankItem(rank: str, mmcm_cd: str, mmcm_nm: str) ``` 순매수거래원순위 단일 항목 (ka10042). ### NewStockRightsItem dataclass ¶ ``` NewStockRightsItem(stk_cd: str, stk_nm: str, cur_prc: str, pred_pre: str, flu_rt: str, acc_trde_qty: str, open_pric: str, high_pric: str, low_pric: str) ``` 신주인수권 시세 단일 항목 (ka10011). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | cur_prc | str | 현재가 (원). | required | | pred_pre | str | 전일대비 (원). | required | | flu_rt | str | 등락률 (%). | required | | acc_trde_qty | str | 누적거래량 (주). | required | | open_pric | str | 시가 (원). | required | | high_pric | str | 고가 (원). | required | | low_pric | str | 저가 (원). | required | 종목코드. 종목명. 현재가 (원). 전일대비 (원). 등락률 (%). 누적거래량 (주). 시가 (원). 고가 (원). 저가 (원). ### NewStockRightsPrices dataclass ¶ ``` NewStockRightsPrices(items: list[NewStockRightsItem]) ``` 신주인수권전체시세 응답 (ka10011). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ NewStockRightsItem ] | 신주인수권 시세 리스트. | required | 신주인수권 시세 리스트. ### NextDaySettlement dataclass ¶ ``` NextDaySettlement(trde_dt: str, setl_dt: str, sell_amt_sum: str, buy_amt_sum: str, items: list[NextDaySettlementItem] = list()) ``` 계좌별익일결제예정내역 응답 (kt00008). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | trde_dt | str | 매매일자. | required | | setl_dt | str | 결제일자. | required | | sell_amt_sum | str | 매도정산합 (단위: 원). | required | | buy_amt_sum | str | 매수정산합 (단위: 원). | required | | items | list [ NextDaySettlementItem ] | 결제예정내역 목록. | list () | 매매일자. 결제일자. 매도정산합 (단위: 원). 매수정산합 (단위: 원). 결제예정내역 목록. ### NextDaySettlementItem dataclass ¶ ``` NextDaySettlementItem(seq: str, stk_cd: str, loan_dt: str, qty: str, engg_amt: str, cmsn: str, incm_tax: str, rstx: str, stk_nm: str, sell_tp: str, unp: str, exct_amt: str, trde_tax: str, resi_tax: str, crd_tp: str) ``` 계좌별익일결제예정내역 항목 (kt00008 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목번호. | required | | stk_nm | str | 종목명. | required | | qty | str | 수량 (단위: 주). | required | | engg_amt | str | 약정금액 (단위: 원). | required | | exct_amt | str | 정산금액 (단위: 원). | required | | sell_tp | str | 매도수구분. | required | 종목번호. 종목명. 수량 (단위: 주). 약정금액 (단위: 원). 정산금액 (단위: 원). 매도수구분. ### OpenPriceChange dataclass ¶ ``` OpenPriceChange(items: list[OpenPriceChangeItem]) ``` 시가대비등락률 응답 (ka10028). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ OpenPriceChangeItem ] | 시가대비등락률 종목 리스트. | required | 시가대비등락률 종목 리스트. ### OpenPriceChangeItem dataclass ¶ ``` OpenPriceChangeItem(stk_cd: str, stk_nm: str, cur_prc: str, flu_rt: str, open_pric: str, open_pric_pre: str, now_trde_qty: str) ``` 시가대비등락률 단일 항목 (ka10028). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | cur_prc | str | 현재가 (원). | required | | flu_rt | str | 등락률 (%). | required | | open_pric | str | 시가 (원). | required | | open_pric_pre | str | 시가대비 (%). | required | | now_trde_qty | str | 현재거래량 (주). | required | 종목코드. 종목명. 현재가 (원). 등락률 (%). 시가 (원). 시가대비 (%). 현재거래량 (주). ### OrderExecutionStatus dataclass ¶ ``` OrderExecutionStatus(sell_grntl_engg_amt: str, buy_engg_amt: str, engg_amt: str, items: list[OrderExecutionStatusItem] = list()) ``` 계좌별주문체결현황 응답 (kt00009). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | sell_grntl_engg_amt | str | 매도약정금액 (단위: 원). | required | | buy_engg_amt | str | 매수약정금액 (단위: 원). | required | | engg_amt | str | 약정금액 (단위: 원). | required | | items | list [ OrderExecutionStatusItem ] | 주문체결현황 목록. | list () | 매도약정금액 (단위: 원). 매수약정금액 (단위: 원). 약정금액 (단위: 원). 주문체결현황 목록. ### OrderExecutionStatusItem dataclass ¶ ``` OrderExecutionStatusItem(stk_bond_tp: str, ord_no: str, stk_cd: str, trde_tp: str, io_tp_nm: str, ord_qty: str, ord_uv: str, cnfm_qty: str, rsrv_oppo: str, cntr_no: str, acpt_tp: str, orig_ord_no: str, stk_nm: str, setl_tp: str, crd_deal_tp: str, cntr_qty: str, cntr_uv: str, comm_ord_tp: str, mdfy_cncl_tp: str, cntr_tm: str, dmst_stex_tp: str, cond_uv: str) ``` 계좌별주문체결현황 항목 (kt00009 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | ord_no | str | 주문번호. | required | | stk_cd | str | 종목번호. | required | | stk_nm | str | 종목명. | required | | trde_tp | str | 매매구분. | required | | ord_qty | str | 주문수량 (단위: 주). | required | | cntr_qty | str | 체결수량 (단위: 주). | required | | cntr_uv | str | 체결단가 (단위: 원). | required | 주문번호. 종목번호. 종목명. 매매구분. 주문수량 (단위: 주). 체결수량 (단위: 주). 체결단가 (단위: 원). ### OrderHistoryDetailItem dataclass ¶ ``` OrderHistoryDetailItem(ord_no: str, stk_cd: str, trde_tp: str, crd_tp: str, ord_qty: str, ord_uv: str, cnfm_qty: str, acpt_tp: str, rsrv_tp: str, ord_tm: str, ori_ord: str, stk_nm: str, io_tp_nm: str, loan_dt: str, cntr_qty: str, cntr_uv: str, ord_remnq: str, comm_ord_tp: str, mdfy_cncl: str, cnfm_tm: str, dmst_stex_tp: str, cond_uv: str) ``` 계좌별주문체결내역상세 항목 (kt00007 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | ord_no | str | 주문번호. | required | | stk_cd | str | 종목번호. | required | | stk_nm | str | 종목명. | required | | trde_tp | str | 매매구분. | required | | ord_qty | str | 주문수량 (단위: 주). | required | | cntr_qty | str | 체결수량 (단위: 주). | required | | cntr_uv | str | 체결단가 (단위: 원). | required | | ord_tm | str | 주문시간. | required | 주문번호. 종목번호. 종목명. 매매구분. 주문수량 (단위: 주). 체결수량 (단위: 주). 체결단가 (단위: 원). 주문시간. ### OrderResponse dataclass ¶ ``` OrderResponse(ord_no: str, dmst_stex_tp: str) ``` 주식 매수/매도 주문 응답 (kt10000, kt10001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | ord_no | str | 주문번호. | required | | dmst_stex_tp | str | 국내거래소구분. | required | 주문번호. 국내거래소구분. ### OrderableAmount dataclass ¶ ``` OrderableAmount(profa_20ord_alow_amt: str, profa_20ord_alowq: str, profa_30ord_alow_amt: str, profa_30ord_alowq: str, profa_40ord_alow_amt: str, profa_40ord_alowq: str, profa_50ord_alow_amt: str, profa_50ord_alowq: str, profa_60ord_alow_amt: str, profa_60ord_alowq: str, profa_100ord_alow_amt: str, profa_100ord_alowq: str, entr: str, repl_amt: str, ord_alowa: str, wthd_alowa: str, nxdy_wthd_alowa: str, d2entra: str) ``` 주문인출가능금액 응답 (kt00010). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | entr | str | 예수금 (단위: 원). | required | | ord_alowa | str | 주문가능현금 (단위: 원). | required | | wthd_alowa | str | 인출가능금액 (단위: 원). | required | | profa_20ord_alow_amt | str | 증거금20% 주문가능금액 (단위: 원). | required | | profa_20ord_alowq | str | 증거금20% 주문가능수량 (단위: 주). | required | 예수금 (단위: 원). 주문가능현금 (단위: 원). 인출가능금액 (단위: 원). 증거금20% 주문가능금액 (단위: 원). 증거금20% 주문가능수량 (단위: 주). ### OrderableQuantity dataclass ¶ ``` OrderableQuantity(stk_profa_rt: str, profa_rt: str, aplc_rt: str, profa_20ord_alow_amt: str, profa_20ord_alowq: str, profa_30ord_alow_amt: str, profa_30ord_alowq: str, profa_40ord_alow_amt: str, profa_40ord_alowq: str, profa_50ord_alow_amt: str, profa_50ord_alowq: str, profa_60ord_alow_amt: str, profa_60ord_alowq: str, profa_100ord_alow_amt: str, profa_100ord_alowq: str, entr: str, repl_amt: str, ord_alowa: str) ``` 증거금율별주문가능수량 응답 (kt00011). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_profa_rt | str | 종목증거금율. | required | | profa_rt | str | 계좌증거금율. | required | | entr | str | 예수금 (단위: 원). | required | | ord_alowa | str | 주문가능현금 (단위: 원). | required | 종목증거금율. 계좌증거금율. 예수금 (단위: 원). 주문가능현금 (단위: 원). ### Orderbook dataclass ¶ ``` Orderbook(base_time: str, sell_levels: list[OrderbookLevel], buy_levels: list[OrderbookLevel], tot_sell_qty: str, tot_buy_qty: str, tot_sell_qty_change: str, tot_buy_qty_change: str, ovt_sell_qty: str, ovt_buy_qty: str, ovt_sell_qty_change: str, ovt_buy_qty_change: str) ``` 주식호가 응답 (ka10004). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | base_time | str | 호가잔량기준시간 (HHMMSS). | required | | sell_levels | list [ OrderbookLevel ] | 매도호가 1~10차선 리스트 (인덱스 0=최우선). | required | | buy_levels | list [ OrderbookLevel ] | 매수호가 1~10차선 리스트 (인덱스 0=최우선). | required | | tot_sell_qty | str | 총매도잔량. | required | | tot_buy_qty | str | 총매수잔량. | required | | tot_sell_qty_change | str | 총매도잔량직전대비. | required | | tot_buy_qty_change | str | 총매수잔량직전대비. | required | | ovt_sell_qty | str | 시간외매도잔량. | required | | ovt_buy_qty | str | 시간외매수잔량. | required | | ovt_sell_qty_change | str | 시간외매도잔량대비. | required | | ovt_buy_qty_change | str | 시간외매수잔량대비. | required | 호가잔량기준시간 (HHMMSS). 매도호가 1~10차선 리스트 (인덱스 0=최우선). 매수호가 1~10차선 리스트 (인덱스 0=최우선). 총매도잔량. 총매수잔량. 총매도잔량직전대비. 총매수잔량직전대비. 시간외매도잔량. 시간외매수잔량. 시간외매도잔량대비. 시간외매수잔량대비. ### OrderbookLevel dataclass ¶ ``` OrderbookLevel(price: str, qty: str, qty_change: str) ``` 호가 단일 레벨 (매도/매수 각 호가·잔량·직전대비). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | price | str | 호가 (단위: 원). | required | | qty | str | 잔량 (단위: 주). | required | | qty_change | str | 잔량직전대비. | required | 호가 (단위: 원). 잔량 (단위: 주). 잔량직전대비. ### PrevTradeQtyUpper dataclass ¶ ``` PrevTradeQtyUpper(items: list[PrevTradeQtyUpperItem]) ``` 전일거래량상위 응답 (ka10031). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ PrevTradeQtyUpperItem ] | 전일거래량상위 종목 리스트. | required | 전일거래량상위 종목 리스트. ### PrevTradeQtyUpperItem dataclass ¶ ``` PrevTradeQtyUpperItem(stk_cd: str, stk_nm: str, cur_prc: str, pred_pre_sig: str, pred_pre: str, trde_qty: str) ``` 전일거래량상위 단일 항목 (ka10031). ### PriceChangeUpper dataclass ¶ ``` PriceChangeUpper(items: list[PriceChangeUpperItem]) ``` 전일대비등락률상위 응답 (ka10027). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ PriceChangeUpperItem ] | 등락률상위 종목 리스트. | required | 등락률상위 종목 리스트. ### PriceChangeUpperItem dataclass ¶ ``` PriceChangeUpperItem(stk_cls: str, stk_cd: str, stk_nm: str, cur_prc: str, pred_pre_sig: str, pred_pre: str, flu_rt: str, sel_req: str, buy_req: str, now_trde_qty: str, cntr_str: str, cnt: str) ``` 전일대비등락률상위 단일 항목 (ka10027). ### PriceSurgeItem dataclass ¶ ``` PriceSurgeItem(stk_cd: str, stk_nm: str, cur_prc: str, flu_rt: str, base_pric: str, jmp_rt: str, trde_qty: str) ``` 가격급등락 단일 항목 (ka10019). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | cur_prc | str | 현재가 (원). | required | | flu_rt | str | 등락률 (%). | required | | base_pric | str | 기준가 (원). | required | | jmp_rt | str | 급등률 (%). | required | | trde_qty | str | 거래량 (주). | required | 종목코드. 종목명. 현재가 (원). 등락률 (%). 기준가 (원). 급등률 (%). 거래량 (주). ### PriceSurgeStocks dataclass ¶ ``` PriceSurgeStocks(items: list[PriceSurgeItem]) ``` 가격급등락 응답 (ka10019). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ PriceSurgeItem ] | 급등락 종목 리스트. | required | 급등락 종목 리스트. ### ProgramAccTrend dataclass ¶ ``` ProgramAccTrend(items: list[ProgramAccTrendItem]) ``` 프로그램매매누적추이요청 응답 (ka90007). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ProgramAccTrendItem ] | 프로그램매매누적추이 리스트. | required | 프로그램매매누적추이 리스트. ### ProgramAccTrendItem dataclass ¶ ``` ProgramAccTrendItem(dt: str, kospi200: str, basis: str, dfrt_trde_tdy: str, dfrt_trde_acc: str, ndiffpro_trde_tdy: str, ndiffpro_trde_acc: str, all_tdy: str, all_acc: str) ``` 프로그램매매누적추이 단일 항목. ### ProgramArbitrageBal dataclass ¶ ``` ProgramArbitrageBal(items: list[ProgramArbitrageBalItem]) ``` 프로그램매매차익잔고추이요청 응답 (ka90006). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ProgramArbitrageBalItem ] | 프로그램매매차익잔고추이 리스트. | required | 프로그램매매차익잔고추이 리스트. ### ProgramArbitrageBalItem dataclass ¶ ``` ProgramArbitrageBalItem(dt: str, buy_dfrt_trde_qty: str, buy_dfrt_trde_amt: str, buy_dfrt_trde_irds_amt: str, sel_dfrt_trde_qty: str, sel_dfrt_trde_amt: str, sel_dfrt_trde_irds_amt: str) ``` 프로그램매매차익잔고추이 단일 항목. ### ProgramTop50 dataclass ¶ ``` ProgramTop50(items: list[ProgramTop50Item]) ``` 프로그램순매수상위50요청 응답 (ka90003). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ProgramTop50Item ] | 프로그램순매수상위50 리스트. | required | 프로그램순매수상위50 리스트. ### ProgramTop50Item dataclass ¶ ``` ProgramTop50Item(rank: str, stk_cd: str, stk_nm: str, cur_prc: str, flu_sig: str, pred_pre: str, flu_rt: str, acc_trde_qty: str, prm_sell_amt: str, prm_buy_amt: str, prm_netprps_amt: str) ``` 프로그램순매수상위50 단일 항목. ### ProgramTrend dataclass ¶ ``` ProgramTrend(items: list[ProgramTrendItem]) ``` 프로그램매매추이요청 응답 (ka90005, ka90010). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ProgramTrendItem ] | 프로그램매매추이 리스트. | required | 프로그램매매추이 리스트. ### ProgramTrendItem dataclass ¶ ``` ProgramTrendItem(cntr_tm: str, dfrt_trde_sel: str, dfrt_trde_buy: str, dfrt_trde_netprps: str, ndiffpro_trde_sel: str, ndiffpro_trde_buy: str, ndiffpro_trde_netprps: str, dfrt_trde_sell_qty: str, dfrt_trde_buy_qty: str, dfrt_trde_netprps_qty: str, ndiffpro_trde_sell_qty: str, ndiffpro_trde_buy_qty: str, ndiffpro_trde_netprps_qty: str, all_sel: str, all_buy: str, all_netprps: str, kospi200: str, basis: str) ``` 프로그램매매추이 단일 항목. ### QtyRatioSurge dataclass ¶ ``` QtyRatioSurge(items: list[QtyRatioSurgeItem]) ``` 잔량율급증 응답 (ka10022). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ QtyRatioSurgeItem ] | 잔량율급증 종목 리스트. | required | 잔량율급증 종목 리스트. ### QtyRatioSurgeItem dataclass ¶ ``` QtyRatioSurgeItem(stk_cd: str, stk_nm: str, cur_prc: str, pred_pre_sig: str, pred_pre: str, base_rt: str, now_rt: str, sdnin_rt: str, tot_sel_req: str, tot_buy_req: str) ``` 잔량율급증 단일 항목 (ka10022). ### RealizedProfitByDateItem dataclass ¶ ``` RealizedProfitByDateItem(stk_nm: str, cntr_qty: str, buy_uv: str, cntr_pric: str, tdy_sel_pl: str, pl_rt: str, stk_cd: str, tdy_trde_cmsn: str, tdy_trde_tax: str, wthd_alowa: str, loan_dt: str, crd_tp: str) ``` 일자별종목별실현손익 항목 (ka10072 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | cntr_qty | str | 체결량 (단위: 주). | required | | buy_uv | str | 매입단가 (단위: 원). | required | | cntr_pric | str | 체결가 (단위: 원). | required | | tdy_sel_pl | str | 당일매도손익 (단위: 원). | required | | pl_rt | str | 손익율 (단위: %). | required | 종목코드. 종목명. 체결량 (단위: 주). 매입단가 (단위: 원). 체결가 (단위: 원). 당일매도손익 (단위: 원). 손익율 (단위: %). ### RealizedProfitByPeriodItem dataclass ¶ ``` RealizedProfitByPeriodItem(dt: str, tdy_htssel_cmsn: str, stk_nm: str, cntr_qty: str, buy_uv: str, cntr_pric: str, tdy_sel_pl: str, pl_rt: str, stk_cd: str, tdy_trde_cmsn: str, tdy_trde_tax: str, wthd_alowa: str, loan_dt: str, crd_tp: str) ``` 일자별종목별실현손익 항목 (ka10073 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | dt | str | 일자. | required | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | tdy_sel_pl | str | 당일매도손익 (단위: 원). | required | | pl_rt | str | 손익율 (단위: %). | required | 일자. 종목코드. 종목명. 당일매도손익 (단위: 원). 손익율 (단위: %). ### RealtimeEvent dataclass ¶ ``` RealtimeEvent(type: str, name: str, item: str, values: dict[str, str]) ``` 실시간 WebSocket 수신 이벤트. 서버에서 trnm="REAL" 메시지가 수신될 때 data 배열의 각 항목을 이 dataclass로 파싱한다. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | type | str | 실시간 항목 TR명. (예: "0B" , "00" ) | required | | name | str | 실시간 항목명. (예: "주식체결" , "주문체결" ) | required | | item | str | 종목코드 또는 item 식별자. 계좌 기반 타입( "00" , "04" )은 빈 문자열. | required | | values | dict [ str , str ] | 필드번호 → 값 딕셔너리. (예: {"10": "+60700", "20": "165208"} ) | required | 실시간 항목 TR명. (예: "0B" , "00" ) 실시간 항목명. (예: "주식체결" , "주문체결" ) 종목코드 또는 item 식별자. 계좌 기반 타입( "00" , "04" )은 빈 문자열. 필드번호 → 값 딕셔너리. (예: {"10": "+60700", "20": "165208"} ) event.values.get("10", "") # 현재가 '+60700' event.values.get("20", "") # 체결시간 '165208' ### RevokeTokenRequest dataclass ¶ ``` RevokeTokenRequest(appkey: str, secretkey: str, token: str) ``` 접근토큰 폐기 요청 (au10002). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | appkey | str | 키움증권 앱 키. | required | | secretkey | str | 키움증권 시크릿 키. | required | | token | str | 폐기할 접근토큰. | required | 키움증권 앱 키. 키움증권 시크릿 키. 폐기할 접근토큰. ### SameNetTradeRank dataclass ¶ ``` SameNetTradeRank(items: list[SameNetTradeRankItem]) ``` 동일순매매순위 응답 (ka10062). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ SameNetTradeRankItem ] | 동일순매매순위 종목 리스트. | required | 동일순매매순위 종목 리스트. ### SameNetTradeRankItem dataclass ¶ ``` SameNetTradeRankItem(stk_cd: str, rank: str, stk_nm: str, cur_prc: str, pre_sig: str, pred_pre: str, flu_rt: str, acc_trde_qty: str, orgn_nettrde_qty: str, orgn_nettrde_amt: str, orgn_nettrde_avg_pric: str, for_nettrde_qty: str, for_nettrde_amt: str, for_nettrde_avg_pric: str, nettrde_qty: str, nettrde_amt: str) ``` 동일순매매순위 단일 항목 (ka10062). ### SectorCandleItem dataclass ¶ ``` SectorCandleItem(cur_prc: str, trde_qty: str, cntr_tm: str, open_pric: str, high_pric: str, low_pric: str, pred_pre: str, pred_pre_sig: str) ``` 업종 캔들 단일 항목 (틱·분봉 공통). ### SectorDailyPrice dataclass ¶ ``` SectorDailyPrice(cur_prc: str, pred_pre_sig: str, pred_pre: str, flu_rt: str, trde_qty: str, trde_prica: str, trde_frmatn_stk_num: str, trde_frmatn_rt: str, open_pric: str, high_pric: str, low_pric: str, upl: str, rising: str, stdns: str, fall: str, lst: str, wk52_hgst_pric: str, wk52_hgst_pric_dt: str, wk52_hgst_pric_pre_rt: str, wk52_lwst_pric: str, wk52_lwst_pric_dt: str, wk52_lwst_pric_pre_rt: str, items: list[SectorDailyPriceItem]) ``` 업종현재가일별요청 응답 (ka20009). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | cur_prc | str | 현재가. | required | | items | list [ SectorDailyPriceItem ] | 일별 현재가 리스트. | required | 현재가. 일별 현재가 리스트. ### SectorDailyPriceItem dataclass ¶ ``` SectorDailyPriceItem(dt_n: str, cur_prc_n: str, pred_pre_sig_n: str, pred_pre_n: str, flu_rt_n: str, acc_trde_qty_n: str) ``` 업종현재가 일별 단일 항목. ### SectorDayChart dataclass ¶ ``` SectorDayChart(inds_cd: str, items: list[SectorDayChartItem]) ``` 업종일봉조회 응답 (ka20006). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | inds_cd | str | 업종코드. | required | | items | list [ SectorDayChartItem ] | 일봉 리스트. | required | 업종코드. 일봉 리스트. ### SectorDayChartItem dataclass ¶ ``` SectorDayChartItem(cur_prc: str, trde_qty: str, dt: str, open_pric: str, high_pric: str, low_pric: str, trde_prica: str) ``` 업종 일/주/월/년봉 단일 항목 (ka20006/07/08/19 공통). ### SectorInvestorNetBuy dataclass ¶ ``` SectorInvestorNetBuy(items: list[SectorInvestorNetBuyItem]) ``` 업종별투자자순매수요청 응답 (ka10051). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ SectorInvestorNetBuyItem ] | 업종별순매수 리스트. | required | 업종별순매수 리스트. ### SectorInvestorNetBuyItem dataclass ¶ ``` SectorInvestorNetBuyItem(inds_cd: str, inds_nm: str, cur_prc: str, pre_smbol: str, pred_pre: str, flu_rt: str, trde_qty: str, sc_netprps: str, insrnc_netprps: str, invtrt_netprps: str, bank_netprps: str, jnsinkm_netprps: str, endw_netprps: str, etc_corp_netprps: str, ind_netprps: str, frgnr_netprps: str, native_trmt_frgnr_netprps: str, natn_netprps: str, samo_fund_netprps: str, orgn_netprps: str) ``` 업종별투자자순매수 단일 항목. ### SectorItem dataclass ¶ ``` SectorItem(market_code: str, code: str, name: str, group: str) ``` 업종코드 단일 항목 (ka10101). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market_code | str | 시장구분코드. | required | | code | str | 업종코드. | required | | name | str | 업종명. | required | | group | str | 그룹. | required | 시장구분코드. 업종코드. 업종명. 그룹. ### SectorList dataclass ¶ ``` SectorList(items: list[SectorItem]) ``` 업종코드 리스트 응답 (ka10101). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ SectorItem ] | 업종코드 리스트. | required | 업종코드 리스트. ### SectorMinChart dataclass ¶ ``` SectorMinChart(inds_cd: str, items: list[SectorMinChartItem]) ``` 업종분봉조회 응답 (ka20005). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | inds_cd | str | 업종코드. | required | | items | list [ SectorMinChartItem ] | 분봉 캔들 리스트. | required | 업종코드. 분봉 캔들 리스트. ### SectorMinChartItem dataclass ¶ ``` SectorMinChartItem(cur_prc: str, trde_qty: str, cntr_tm: str, open_pric: str, high_pric: str, low_pric: str, acc_trde_qty: str, pred_pre: str, pred_pre_sig: str) ``` 업종분봉차트 단일 항목 (ka20005). ### SectorMonthChart dataclass ¶ ``` SectorMonthChart(inds_cd: str, items: list[SectorDayChartItem]) ``` 업종월봉조회 응답 (ka20008). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | inds_cd | str | 업종코드. | required | | items | list [ SectorDayChartItem ] | 월봉 리스트. | required | 업종코드. 월봉 리스트. ### SectorPrice dataclass ¶ ``` SectorPrice(cur_prc: str, pred_pre_sig: str, pred_pre: str, flu_rt: str, trde_qty: str, trde_prica: str, trde_frmatn_stk_num: str, trde_frmatn_rt: str, open_pric: str, high_pric: str, low_pric: str, upl: str, rising: str, stdns: str, fall: str, lst: str, wk52_hgst_pric: str, wk52_hgst_pric_dt: str, wk52_hgst_pric_pre_rt: str, wk52_lwst_pric: str, wk52_lwst_pric_dt: str, wk52_lwst_pric_pre_rt: str, items: list[SectorPriceTmItem]) ``` 업종현재가요청 응답 (ka20001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | cur_prc | str | 현재가. | required | | items | list [ SectorPriceTmItem ] | 시간별 현재가 리스트. | required | 현재가. 시간별 현재가 리스트. ### SectorPriceTmItem dataclass ¶ ``` SectorPriceTmItem(tm_n: str, cur_prc_n: str, pred_pre_sig_n: str, pred_pre_n: str, flu_rt_n: str, trde_qty_n: str, acc_trde_qty_n: str) ``` 업종현재가 시간별 단일 항목. ### SectorProgram dataclass ¶ ``` SectorProgram(dfrt_trst_sell_qty: str, dfrt_trst_sell_amt: str, dfrt_trst_buy_qty: str, dfrt_trst_buy_amt: str, dfrt_trst_netprps_qty: str, dfrt_trst_netprps_amt: str, ndiffpro_trst_sell_qty: str, ndiffpro_trst_sell_amt: str, ndiffpro_trst_buy_qty: str, ndiffpro_trst_buy_amt: str, ndiffpro_trst_netprps_qty: str, ndiffpro_trst_netprps_amt: str, all_dfrt_trst_sell_qty: str, all_dfrt_trst_sell_amt: str, all_dfrt_trst_buy_qty: str, all_dfrt_trst_buy_amt: str, all_dfrt_trst_netprps_qty: str, all_dfrt_trst_netprps_amt: str) ``` 업종프로그램요청 응답 (ka10010). ### SectorStockPriceItem dataclass ¶ ``` SectorStockPriceItem(stk_cd: str, stk_nm: str, cur_prc: str, pred_pre_sig: str, pred_pre: str, flu_rt: str, now_trde_qty: str, sel_bid: str, buy_bid: str, open_pric: str, high_pric: str, low_pric: str) ``` 업종별주가 단일 항목. ### SectorStockPrices dataclass ¶ ``` SectorStockPrices(items: list[SectorStockPriceItem]) ``` 업종별주가요청 응답 (ka20002). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ SectorStockPriceItem ] | 업종별주가 리스트. | required | 업종별주가 리스트. ### SectorTickChart dataclass ¶ ``` SectorTickChart(inds_cd: str, items: list[SectorCandleItem]) ``` 업종틱차트조회 응답 (ka20004). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | inds_cd | str | 업종코드. | required | | items | list [ SectorCandleItem ] | 틱 캔들 리스트. | required | 업종코드. 틱 캔들 리스트. ### SectorWeekChart dataclass ¶ ``` SectorWeekChart(inds_cd: str, items: list[SectorDayChartItem]) ``` 업종주봉조회 응답 (ka20007). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | inds_cd | str | 업종코드. | required | | items | list [ SectorDayChartItem ] | 주봉 리스트. | required | 업종코드. 주봉 리스트. ### SectorYearChart dataclass ¶ ``` SectorYearChart(inds_cd: str, items: list[SectorDayChartItem]) ``` 업종년봉조회 응답 (ka20019). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | inds_cd | str | 업종코드. | required | | items | list [ SectorDayChartItem ] | 년봉 리스트. | required | 업종코드. 년봉 리스트. ### ShortSellItem dataclass ¶ ``` ShortSellItem(dt: str, close_pric: str, pred_pre_sig: str, pred_pre: str, flu_rt: str, trde_qty: str, shrts_qty: str, ovr_shrts_qty: str, trde_wght: str, shrts_trde_prica: str, shrts_avg_pric: str) ``` 공매도추이 단일 항목. ### ShortSellTrend dataclass ¶ ``` ShortSellTrend(items: list[ShortSellItem]) ``` 공매도추이요청 응답 (ka10014). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ShortSellItem ] | 공매도추이 리스트. | required | 공매도추이 리스트. ### SplitOrderDetailItem dataclass ¶ ``` SplitOrderDetailItem(stk_cd: str, stk_nm: str, ord_no: str, ord_qty: str, ord_pric: str, osop_qty: str, io_tp_nm: str, trde_tp: str, sell_tp: str, cntr_qty: str, ord_stt: str, cur_prc: str, stex_tp: str, stex_tp_txt: str) ``` 미체결 분할주문 상세 항목 (ka10088 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | ord_no | str | 주문번호. | required | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | ord_qty | str | 주문수량 (단위: 주). | required | | osop_qty | str | 미체결수량 (단위: 주). | required | | ord_stt | str | 주문상태. | required | 주문번호. 종목코드. 종목명. 주문수량 (단위: 주). 미체결수량 (단위: 주). 주문상태. ### StockBrokerRank dataclass ¶ ``` StockBrokerRank(rank_1: str, rank_2: str, rank_3: str, prid_trde_qty: str, items: list[StockBrokerRankItem]) ``` 종목별증권사순위 응답 (ka10038). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | rank_1 | str | 순위1 (순매수/순매도 1위 수량). | required | | rank_2 | str | 순위2. | required | | rank_3 | str | 순위3. | required | | prid_trde_qty | str | 기간중거래량. | required | | items | list [ StockBrokerRankItem ] | 증권사순위 리스트. | required | 순위1 (순매수/순매도 1위 수량). 순위2. 순위3. 기간중거래량. 증권사순위 리스트. ### StockBrokerRankItem dataclass ¶ ``` StockBrokerRankItem(rank: str, mmcm_nm: str, buy_qty: str, sell_qty: str, acc_netprps_qty: str) ``` 종목별증권사순위 단일 항목 (ka10038). ### StockBrokers dataclass ¶ ``` StockBrokers(stk_cd: str, stk_nm: str, cur_prc: str, sell_brokers: list[BrokerEntry], buy_brokers: list[BrokerEntry]) ``` 주식거래원 응답 (ka10002). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | cur_prc | str | 현재가 (원). | required | | sell_brokers | list [ BrokerEntry ] | 매도거래원 1~5위 리스트. | required | | buy_brokers | list [ BrokerEntry ] | 매수거래원 1~5위 리스트. | required | 종목코드. 종목명. 현재가 (원). 매도거래원 1~5위 리스트. 매수거래원 1~5위 리스트. ### StockCandleItem dataclass ¶ ``` StockCandleItem(cur_prc: str, trde_qty: str, cntr_tm: str, open_pric: str, high_pric: str, low_pric: str, pred_pre: str, pred_pre_sig: str) ``` 주식 캔들 단일 항목 (틱·분봉 공통). ### StockDailyProgram dataclass ¶ ``` StockDailyProgram(items: list[StockDailyProgramItem]) ``` 종목일별프로그램매매추이요청 응답 (ka90013). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ StockDailyProgramItem ] | 종목일별프로그램매매추이 리스트. | required | 종목일별프로그램매매추이 리스트. ### StockDailyProgramItem dataclass ¶ ``` StockDailyProgramItem(dt: str, cur_prc: str, pre_sig: str, pred_pre: str, flu_rt: str, trde_qty: str, prm_sell_amt: str, prm_buy_amt: str, prm_netprps_amt: str, prm_netprps_amt_irds: str, prm_sell_qty: str, prm_buy_qty: str, prm_netprps_qty: str, prm_netprps_qty_irds: str, base_pric_tm: str, dbrt_trde_rpy_sum: str, remn_rcvord_sum: str, stex_tp: str) ``` 종목일별프로그램매매추이 단일 항목. ### StockDayChart dataclass ¶ ``` StockDayChart(stk_cd: str, items: list[StockDayChartItem]) ``` 주식일봉차트조회 응답 (ka10081). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | items | list [ StockDayChartItem ] | 일봉 캔들 리스트. | required | 종목코드. 일봉 캔들 리스트. ### StockDayChartItem dataclass ¶ ``` StockDayChartItem(cur_prc: str, trde_qty: str, trde_prica: str, dt: str, open_pric: str, high_pric: str, low_pric: str, pred_pre: str, pred_pre_sig: str, trde_tern_rt: str) ``` 주식일봉차트 단일 항목 (ka10081). ### StockDetail dataclass ¶ ``` StockDetail(code: str, name: str, list_count: str, reg_day: str, last_price: str, state: str, market_code: str, market_name: str, up_name: str, up_size_name: str, nxt_enable: str) ``` 종목정보 조회 응답 (ka10100). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | code | str | 종목코드 (단축코드). | required | | name | str | 종목명. | required | | list_count | str | 상장주식수. | required | | reg_day | str | 상장일 (YYYYMMDD). | required | | last_price | str | 전일종가 (원). | required | | state | str | 종목상태. | required | | market_code | str | 시장구분코드. | required | | market_name | str | 시장명. | required | | up_name | str | 업종명. | required | | up_size_name | str | 회사크기분류. | required | | nxt_enable | str | NXT가능여부 (Y/N). | required | 종목코드 (단축코드). 종목명. 상장주식수. 상장일 (YYYYMMDD). 전일종가 (원). 종목상태. 시장구분코드. 시장명. 업종명. 회사크기분류. NXT가능여부 (Y/N). ### StockInfo dataclass ¶ ``` StockInfo(stk_cd: str, stk_nm: str, cur_prc: str, flu_rt: str, trde_qty: str, open_pric: str, high_pric: str, low_pric: str, upl_pric: str, lst_pric: str, mac: str, per: str, pbr: str, eps: str, roe: str, flo_stk: str, cap: str, oyr_hgst: str, oyr_lwst: str) ``` 주식기본정보 응답 (ka10001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | cur_prc | str | 현재가 (원). | required | | flu_rt | str | 등락률 (%). | required | | trde_qty | str | 거래량 (주). | required | | open_pric | str | 시가 (원). | required | | high_pric | str | 고가 (원). | required | | low_pric | str | 저가 (원). | required | | upl_pric | str | 상한가 (원). | required | | lst_pric | str | 하한가 (원). | required | | mac | str | 시가총액 (억원). | required | | per | str | PER. | required | | pbr | str | PBR. | required | | eps | str | EPS (원). | required | | roe | str | ROE (%). | required | | flo_stk | str | 상장주식수 (천주). | required | | cap | str | 자본금 (억원). | required | | oyr_hgst | str | 연중최고 (원). | required | | oyr_lwst | str | 연중최저 (원). | required | 종목코드. 종목명. 현재가 (원). 등락률 (%). 거래량 (주). 시가 (원). 고가 (원). 저가 (원). 상한가 (원). 하한가 (원). 시가총액 (억원). PER. PBR. EPS (원). ROE (%). 상장주식수 (천주). 자본금 (억원). 연중최고 (원). 연중최저 (원). ### StockInstitutionTrend dataclass ¶ ``` StockInstitutionTrend(orgn_prsm_avg_pric: str, for_prsm_avg_pric: str, items: list[StockInstitutionTrendItem]) ``` 종목별기관매매추이 응답 (ka10045). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | orgn_prsm_avg_pric | str | 기관추정평균가 (원). | required | | for_prsm_avg_pric | str | 외인추정평균가 (원). | required | | items | list [ StockInstitutionTrendItem ] | 일별 추이 리스트. | required | 기관추정평균가 (원). 외인추정평균가 (원). 일별 추이 리스트. ### StockInstitutionTrendItem dataclass ¶ ``` StockInstitutionTrendItem(dt: str, close_pric: str, flu_rt: str, trde_qty: str, orgn_dt_acc: str, orgn_daly_nettrde_qty: str, for_dt_acc: str, for_daly_nettrde_qty: str, limit_exh_rt: str) ``` 종목별기관매매추이 단일 항목 (ka10045). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | dt | str | 일자 (YYYYMMDD). | required | | close_pric | str | 종가 (원). | required | | flu_rt | str | 등락률 (%). | required | | trde_qty | str | 거래량 (주). | required | | orgn_dt_acc | str | 기관기간누적. | required | | orgn_daly_nettrde_qty | str | 기관일별순매매수량. | required | | for_dt_acc | str | 외인기간누적. | required | | for_daly_nettrde_qty | str | 외인일별순매매수량. | required | | limit_exh_rt | str | 한도소진율 (%). | required | 일자 (YYYYMMDD). 종가 (원). 등락률 (%). 거래량 (주). 기관기간누적. 기관일별순매매수량. 외인기간누적. 외인일별순매매수량. 한도소진율 (%). ### StockInvestorByDay dataclass ¶ ``` StockInvestorByDay(items: list[StockInvestorItem]) ``` 종목별투자자기관별 응답 (ka10059). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ StockInvestorItem ] | 일별 투자자 리스트. | required | 일별 투자자 리스트. ### StockInvestorItem dataclass ¶ ``` StockInvestorItem(dt: str, cur_prc: str, flu_rt: str, acc_trde_qty: str, ind_invsr: str, frgnr_invsr: str, orgn: str, fnnc_invt: str, bank: str, penfnd_etc: str) ``` 종목별투자자기관별 단일 항목 (ka10059). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | dt | str | 일자 (YYYYMMDD). | required | | cur_prc | str | 현재가 (원). | required | | flu_rt | str | 등락률 (%). | required | | acc_trde_qty | str | 누적거래량 (주). | required | | ind_invsr | str | 개인투자자. | required | | frgnr_invsr | str | 외국인투자자. | required | | orgn | str | 기관계. | required | | fnnc_invt | str | 금융투자. | required | | bank | str | 은행. | required | | penfnd_etc | str | 연기금등. | required | 일자 (YYYYMMDD). 현재가 (원). 등락률 (%). 누적거래량 (주). 개인투자자. 외국인투자자. 기관계. 금융투자. 은행. 연기금등. ### StockInvestorTotal dataclass ¶ ``` StockInvestorTotal(ind_invsr: str, frgnr_invsr: str, orgn: str, fnnc_invt: str, bank: str, penfnd_etc: str, samo_fund: str, natn: str, etc_corp: str) ``` 종목별투자자기관별합계 응답 (ka10061). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | ind_invsr | str | 개인투자자. | required | | frgnr_invsr | str | 외국인투자자. | required | | orgn | str | 기관계. | required | | fnnc_invt | str | 금융투자. | required | | bank | str | 은행. | required | | penfnd_etc | str | 연기금등. | required | | samo_fund | str | 사모펀드. | required | | natn | str | 국가. | required | | etc_corp | str | 기타법인. | required | 개인투자자. 외국인투자자. 기관계. 금융투자. 은행. 연기금등. 사모펀드. 국가. 기타법인. ### StockList dataclass ¶ ``` StockList(items: list[StockListItem]) ``` 종목정보 리스트 응답 (ka10099). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ StockListItem ] | 종목 리스트. | required | 종목 리스트. ### StockListItem dataclass ¶ ``` StockListItem(code: str, name: str, list_count: str, reg_day: str, last_price: str, state: str, market_name: str, up_name: str, nxt_enable: str) ``` 종목정보 리스트 단일 항목 (ka10099). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | code | str | 종목코드 (단축코드). | required | | name | str | 종목명. | required | | list_count | str | 상장주식수. | required | | reg_day | str | 상장일 (YYYYMMDD). | required | | last_price | str | 전일종가 (원). | required | | state | str | 종목상태. | required | | market_name | str | 시장명. | required | | up_name | str | 업종명. | required | | nxt_enable | str | NXT가능여부 (Y/N). | required | 종목코드 (단축코드). 종목명. 상장주식수. 상장일 (YYYYMMDD). 전일종가 (원). 종목상태. 시장명. 업종명. NXT가능여부 (Y/N). ### StockLoanByStock dataclass ¶ ``` StockLoanByStock(items: list[StockLoanByStockItem]) ``` 대차거래추이요청(종목별) 응답 (ka20068). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ StockLoanByStockItem ] | 대차거래추이(종목별) 리스트. | required | 대차거래추이(종목별) 리스트. ### StockLoanByStockItem dataclass ¶ ``` StockLoanByStockItem(dt: str, dbrt_trde_cntrcnt: str, dbrt_trde_rpy: str, dbrt_trde_irds: str, rmnd: str, remn_amt: str) ``` 대차거래추이(종목별) 단일 항목. ### StockLoanHistory dataclass ¶ ``` StockLoanHistory(items: list[StockLoanHistoryItem]) ``` 대차거래내역요청 응답 (ka90012). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ StockLoanHistoryItem ] | 대차거래내역 리스트. | required | 대차거래내역 리스트. ### StockLoanHistoryItem dataclass ¶ ``` StockLoanHistoryItem(stk_nm: str, stk_cd: str, dbrt_trde_cntrcnt: str, dbrt_trde_rpy: str, rmnd: str, remn_amt: str) ``` 대차거래내역 단일 항목. ### StockLoanItem dataclass ¶ ``` StockLoanItem(dt: str, dbrt_trde_cntrcnt: str, dbrt_trde_rpy: str, dbrt_trde_irds: str, rmnd: str, remn_amt: str) ``` 대차거래추이 단일 항목. ### StockLoanTop10 dataclass ¶ ``` StockLoanTop10(dbrt_trde_cntrcnt_sum: str, dbrt_trde_rpy_sum: str, rmnd_sum: str, remn_amt_sum: str, dbrt_trde_cntrcnt_rt: str, dbrt_trde_rpy_rt: str, rmnd_rt: str, remn_amt_rt: str, items: list[StockLoanTop10Item]) ``` 대차거래상위10종목요청 응답 (ka10069). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | dbrt_trde_cntrcnt_sum | str | 대차거래체결주수합. | required | | items | list [ StockLoanTop10Item ] | 대차거래상위10종목 리스트. | required | 대차거래체결주수합. 대차거래상위10종목 리스트. ### StockLoanTop10Item dataclass ¶ ``` StockLoanTop10Item(stk_nm: str, stk_cd: str, dbrt_trde_cntrcnt: str, dbrt_trde_rpy: str, rmnd: str, remn_amt: str) ``` 대차거래상위10종목 단일 항목. ### StockLoanTrend dataclass ¶ ``` StockLoanTrend(items: list[StockLoanItem]) ``` 대차거래추이요청 응답 (ka10068). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ StockLoanItem ] | 대차거래추이 리스트. | required | 대차거래추이 리스트. ### StockMinChart dataclass ¶ ``` StockMinChart(stk_cd: str, items: list[StockMinChartItem]) ``` 주식분봉차트조회 응답 (ka10080). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | items | list [ StockMinChartItem ] | 분봉 캔들 리스트. | required | 종목코드. 분봉 캔들 리스트. ### StockMinChartItem dataclass ¶ ``` StockMinChartItem(cur_prc: str, trde_qty: str, cntr_tm: str, open_pric: str, high_pric: str, low_pric: str, pred_pre: str, pred_pre_sig: str, acc_trde_qty: str) ``` 주식분봉차트 단일 항목 (ka10080). ### StockMinutes dataclass ¶ ``` StockMinutes(date: str, open_pric: str, high_pric: str, low_pric: str, close_pric: str, pre: str, flu_rt: str, trde_qty: str, trde_prica: str, cntr_str: str) ``` 주식시분 응답 (ka10006). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | date | str | 날짜 (YYYYMMDD). | required | | open_pric | str | 시가 (원). | required | | high_pric | str | 고가 (원). | required | | low_pric | str | 저가 (원). | required | | close_pric | str | 종가/현재가 (원). | required | | pre | str | 대비 (원). | required | | flu_rt | str | 등락률 (%). | required | | trde_qty | str | 거래량 (주). | required | | trde_prica | str | 거래대금 (백만원). | required | | cntr_str | str | 체결강도. | required | 날짜 (YYYYMMDD). 시가 (원). 고가 (원). 저가 (원). 종가/현재가 (원). 대비 (원). 등락률 (%). 거래량 (주). 거래대금 (백만원). 체결강도. ### StockMonthChart dataclass ¶ ``` StockMonthChart(stk_cd: str, items: list[StockMonthChartItem]) ``` 주식월봉차트조회 응답 (ka10083). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | items | list [ StockMonthChartItem ] | 월봉 캔들 리스트. | required | 종목코드. 월봉 캔들 리스트. ### StockMonthChartItem dataclass ¶ ``` StockMonthChartItem(cur_prc: str, trde_qty: str, trde_prica: str, dt: str, open_pric: str, high_pric: str, low_pric: str, pred_pre: str, pred_pre_sig: str, trde_tern_rt: str) ``` 주식월봉차트 단일 항목 (ka10083). ### StockPeriodItem dataclass ¶ ``` StockPeriodItem(date: str, open_pric: str, high_pric: str, low_pric: str, close_pric: str, pre: str, flu_rt: str, trde_qty: str, trde_prica: str, for_poss: str, for_wght: str, for_netprps: str, orgn_netprps: str, ind_netprps: str, crd_remn_rt: str, frgn: str, prm: str) ``` 주식일주월시분 단일 항목 (ka10005). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | date | str | 날짜 (YYYYMMDD). | required | | open_pric | str | 시가 (원). | required | | high_pric | str | 고가 (원). | required | | low_pric | str | 저가 (원). | required | | close_pric | str | 종가 (원). | required | | pre | str | 대비 (원). | required | | flu_rt | str | 등락률 (%). | required | | trde_qty | str | 거래량 (주). | required | | trde_prica | str | 거래대금 (백만원). | required | | for_poss | str | 외인보유 (%). | required | | for_wght | str | 외인비중 (%). | required | | for_netprps | str | 외인순매수 (주). | required | | orgn_netprps | str | 기관순매수 (주). | required | | ind_netprps | str | 개인순매수 (주). | required | | crd_remn_rt | str | 신용잔고율 (%). | required | | frgn | str | 외국계. | required | | prm | str | 프로그램. | required | 날짜 (YYYYMMDD). 시가 (원). 고가 (원). 저가 (원). 종가 (원). 대비 (원). 등락률 (%). 거래량 (주). 거래대금 (백만원). 외인보유 (%). 외인비중 (%). 외인순매수 (주). 기관순매수 (주). 개인순매수 (주). 신용잔고율 (%). 외국계. 프로그램. ### StockPeriods dataclass ¶ ``` StockPeriods(items: list[StockPeriodItem]) ``` 주식일주월시분 응답 (ka10005). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ StockPeriodItem ] | 기간별 OHLCV 리스트. | required | 기간별 OHLCV 리스트. ### StockProgramStatus dataclass ¶ ``` StockProgramStatus(tot_1: str, tot_2: str, tot_3: str, tot_4: str, tot_5: str, tot_6: str, items: list[StockProgramStatusItem]) ``` 종목별프로그램매매현황요청 응답 (ka90004). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | tot_1 | str | 매수체결수량합계. | required | | tot_2 | str | 매수체결금액합계. | required | | tot_3 | str | 매도체결수량합계. | required | | tot_4 | str | 매도체결금액합계. | required | | tot_5 | str | 순매수대금합계. | required | | tot_6 | str | 합계6. | required | | items | list [ StockProgramStatusItem ] | 종목별프로그램매매현황 리스트. | required | 매수체결수량합계. 매수체결금액합계. 매도체결수량합계. 매도체결금액합계. 순매수대금합계. 합계6. 종목별프로그램매매현황 리스트. ### StockProgramStatusItem dataclass ¶ ``` StockProgramStatusItem(stk_cd: str, stk_nm: str, cur_prc: str, flu_sig: str, pred_pre: str, buy_cntr_qty: str, buy_cntr_amt: str, sel_cntr_qty: str, sel_cntr_amt: str, netprps_prica: str, all_trde_rt: str) ``` 종목별프로그램매매현황 단일 항목. ### StockTickChart dataclass ¶ ``` StockTickChart(stk_cd: str, last_tic_cnt: str, items: list[StockCandleItem]) ``` 주식틱차트조회 응답 (ka10079). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | last_tic_cnt | str | 마지막틱갯수. | required | | items | list [ StockCandleItem ] | 틱 캔들 리스트. | required | 종목코드. 마지막틱갯수. 틱 캔들 리스트. ### StockTimeProgram dataclass ¶ ``` StockTimeProgram(items: list[StockTimeProgramItem]) ``` 종목시간별프로그램매매추이요청 응답 (ka90008). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ StockTimeProgramItem ] | 종목시간별프로그램매매추이 리스트. | required | 종목시간별프로그램매매추이 리스트. ### StockTimeProgramItem dataclass ¶ ``` StockTimeProgramItem(tm: str, cur_prc: str, pre_sig: str, pred_pre: str, flu_rt: str, trde_qty: str, prm_sell_amt: str, prm_buy_amt: str, prm_netprps_amt: str, prm_netprps_amt_irds: str, prm_sell_qty: str, prm_buy_qty: str, prm_netprps_qty: str, prm_netprps_qty_irds: str, base_pric_tm: str, dbrt_trde_rpy_sum: str, remn_rcvord_sum: str, stex_tp: str) ``` 종목시간별프로그램매매추이 단일 항목. ### StockWeekChart dataclass ¶ ``` StockWeekChart(stk_cd: str, items: list[StockWeekChartItem]) ``` 주식주봉차트조회 응답 (ka10082). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | items | list [ StockWeekChartItem ] | 주봉 캔들 리스트. | required | 종목코드. 주봉 캔들 리스트. ### StockWeekChartItem dataclass ¶ ``` StockWeekChartItem(cur_prc: str, trde_qty: str, trde_prica: str, dt: str, open_pric: str, high_pric: str, low_pric: str, pred_pre: str, pred_pre_sig: str, trde_tern_rt: str) ``` 주식주봉차트 단일 항목 (ka10082). ### StockYearChart dataclass ¶ ``` StockYearChart(stk_cd: str, items: list[StockYearChartItem]) ``` 주식년봉차트조회 응답 (ka10094). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | items | list [ StockYearChartItem ] | 년봉 캔들 리스트. | required | 종목코드. 년봉 캔들 리스트. ### StockYearChartItem dataclass ¶ ``` StockYearChartItem(cur_prc: str, trde_qty: str, trde_prica: str, dt: str, open_pric: str, high_pric: str, low_pric: str) ``` 주식년봉차트 단일 항목 (ka10094). ### SupplyConcentration dataclass ¶ ``` SupplyConcentration(items: list[SupplyConcentrationItem]) ``` 매물대집중 응답 (ka10025). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ SupplyConcentrationItem ] | 매물대집중 종목 리스트. | required | 매물대집중 종목 리스트. ### SupplyConcentrationItem dataclass ¶ ``` SupplyConcentrationItem(stk_cd: str, stk_nm: str, cur_prc: str, flu_rt: str, pric_strt: str, pric_end: str, prps_qty: str, prps_rt: str) ``` 매물대집중 단일 항목 (ka10025). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | cur_prc | str | 현재가 (원). | required | | flu_rt | str | 등락률 (%). | required | | pric_strt | str | 가격대시작 (원). | required | | pric_end | str | 가격대끝 (원). | required | | prps_qty | str | 매물량 (주). | required | | prps_rt | str | 매물비 (%). | required | 종목코드. 종목명. 현재가 (원). 등락률 (%). 가격대시작 (원). 가격대끝 (원). 매물량 (주). 매물비 (%). ### ThemeGroup dataclass ¶ ``` ThemeGroup(items: list[ThemeGroupItem]) ``` 테마그룹별요청 응답 (ka90001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ ThemeGroupItem ] | 테마그룹별 리스트. | required | 테마그룹별 리스트. ### ThemeGroupItem dataclass ¶ ``` ThemeGroupItem(thema_grp_cd: str, thema_nm: str, stk_num: str, flu_sig: str, flu_rt: str, rising_stk_num: str, fall_stk_num: str, dt_prft_rt: str, main_stk: str) ``` 테마그룹별 단일 항목. ### ThemeStockItem dataclass ¶ ``` ThemeStockItem(stk_cd: str, stk_nm: str, cur_prc: str, flu_sig: str, pred_pre: str, flu_rt: str, acc_trde_qty: str, sel_bid: str, sel_req: str, buy_bid: str, buy_req: str, dt_prft_rt_n: str) ``` 테마구성종목 단일 항목. ### ThemeStocks dataclass ¶ ``` ThemeStocks(flu_rt: str, dt_prft_rt: str, items: list[ThemeStockItem]) ``` 테마구성종목요청 응답 (ka90002). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | flu_rt | str | 등락률. | required | | dt_prft_rt | str | 기간수익률. | required | | items | list [ ThemeStockItem ] | 테마구성종목 리스트. | required | 등락률. 기간수익률. 테마구성종목 리스트. ### TodayPrevExecution dataclass ¶ ``` TodayPrevExecution(items: list[TodayPrevExecutionItem]) ``` 당일전일체결 응답 (ka10084). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ TodayPrevExecutionItem ] | 체결 리스트. | required | 체결 리스트. ### TodayPrevExecutionItem dataclass ¶ ``` TodayPrevExecutionItem(tm: str, cur_prc: str, cntr_trde_qty: str, acc_trde_qty: str, cntr_str: str, stex_tp: str) ``` 당일전일체결 단일 항목 (ka10084). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | tm | str | 시간 (HHMMSS). | required | | cur_prc | str | 현재가 (원). | required | | cntr_trde_qty | str | 체결거래량 (주). | required | | acc_trde_qty | str | 누적거래량 (주). | required | | cntr_str | str | 체결강도. | required | | stex_tp | str | 거래소구분. | required | 시간 (HHMMSS). 현재가 (원). 체결거래량 (주). 누적거래량 (주). 체결강도. 거래소구분. ### TodayPrevExecutionQty dataclass ¶ ``` TodayPrevExecutionQty(items: list[TodayPrevExecutionQtyItem]) ``` 당일전일체결량 응답 (ka10055). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ TodayPrevExecutionQtyItem ] | 체결량 리스트. | required | 체결량 리스트. ### TodayPrevExecutionQtyItem dataclass ¶ ``` TodayPrevExecutionQtyItem(cntr_tm: str, cntr_pric: str, flu_rt: str, cntr_qty: str, acc_trde_qty: str, acc_trde_prica: str) ``` 당일전일체결량 단일 항목 (ka10055). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | cntr_tm | str | 체결시간 (HHMMSS). | required | | cntr_pric | str | 체결가 (원). | required | | flu_rt | str | 등락률 (%). | required | | cntr_qty | str | 체결량 (주). | required | | acc_trde_qty | str | 누적거래량 (주). | required | | acc_trde_prica | str | 누적거래대금 (백만원). | required | 체결시간 (HHMMSS). 체결가 (원). 등락률 (%). 체결량 (주). 누적거래량 (주). 누적거래대금 (백만원). ### TokenRequest dataclass ¶ ``` TokenRequest(appkey: str, secretkey: str, grant_type: str = 'client_credentials') ``` 접근토큰 발급 요청 (au10001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | appkey | str | 키움증권 앱 키. | required | | secretkey | str | 키움증권 시크릿 키. | required | | grant_type | str | OAuth2 grant type. 항상 "client_credentials" 고정. | 'client_credentials' | 키움증권 앱 키. 키움증권 시크릿 키. OAuth2 grant type. 항상 "client_credentials" 고정. ### TokenResponse dataclass ¶ ``` TokenResponse(token: str, token_type: str, expires_dt: str) ``` 접근토큰 발급 응답 (au10001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | token | str | 접근토큰. Authorization: Bearer 헤더에 사용. | required | | token_type | str | 토큰 타입 (예: "Bearer" ). | required | | expires_dt | str | 만료일시. "YYYYMMDDHHMMSS" 형식. | required | 접근토큰. Authorization: Bearer 헤더에 사용. 토큰 타입 (예: "Bearer" ). 만료일시. "YYYYMMDDHHMMSS" 형식. ### TradeAmtUpper dataclass ¶ ``` TradeAmtUpper(items: list[TradeAmtUpperItem]) ``` 거래대금상위 응답 (ka10032). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ TradeAmtUpperItem ] | 거래대금상위 종목 리스트. | required | 거래대금상위 종목 리스트. ### TradeAmtUpperItem dataclass ¶ ``` TradeAmtUpperItem(stk_cd: str, now_rank: str, pred_rank: str, stk_nm: str, cur_prc: str, pred_pre_sig: str, pred_pre: str, flu_rt: str, sel_bid: str, buy_bid: str, now_trde_qty: str, pred_trde_qty: str, trde_prica: str) ``` 거래대금상위 단일 항목 (ka10032). ### TradeQtySurge dataclass ¶ ``` TradeQtySurge(items: list[TradeQtySurgeItem]) ``` 거래량급증 응답 (ka10023). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ TradeQtySurgeItem ] | 거래량급증 종목 리스트. | required | 거래량급증 종목 리스트. ### TradeQtySurgeItem dataclass ¶ ``` TradeQtySurgeItem(stk_cd: str, stk_nm: str, cur_prc: str, pred_pre_sig: str, pred_pre: str, flu_rt: str, prev_trde_qty: str, now_trde_qty: str, sdnin_qty: str, sdnin_rt: str) ``` 거래량급증 단일 항목 (ka10023). ### TransactionHistoryItem dataclass ¶ ``` TransactionHistoryItem(trde_dt: str, trde_no: str, rmrk_nm: str, crd_deal_tp_nm: str, exct_amt: str, entra_remn: str, crnc_cd: str, trde_kind_nm: str, stk_nm: str, trde_amt: str, io_tp_nm: str, stk_cd: str, trde_qty_jwa_cnt: str, cmsn: str, proc_tm: str) ``` 위탁종합거래내역 항목 (kt00015 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | trde_dt | str | 거래일자. | required | | rmrk_nm | str | 적요명. | required | | trde_amt | str | 거래금액 (단위: 원). | required | | exct_amt | str | 정산금액 (단위: 원). | required | | entra_remn | str | 예수금잔고 (단위: 원). | required | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | 거래일자. 적요명. 거래금액 (단위: 원). 정산금액 (단위: 원). 예수금잔고 (단위: 원). 종목코드. 종목명. ### UnfilledOrderItem dataclass ¶ ``` UnfilledOrderItem(acnt_no: str, ord_no: str, stk_cd: str, ord_stt: str, stk_nm: str, ord_qty: str, ord_pric: str, oso_qty: str, orig_ord_no: str, io_tp_nm: str, trde_tp: str, tm: str, cntr_pric: str, cntr_qty: str, cur_prc: str, stex_tp: str, stex_tp_txt: str, sor_yn: str) ``` 미체결 주문 항목 (ka10075 배열 원소). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | ord_no | str | 주문번호. | required | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | ord_qty | str | 주문수량 (단위: 주). | required | | ord_pric | str | 주문가격 (단위: 원). | required | | oso_qty | str | 미체결수량 (단위: 주). | required | | io_tp_nm | str | 주문구분. | required | | trde_tp | str | 매매구분. | required | | ord_stt | str | 주문상태. | required | 주문번호. 종목코드. 종목명. 주문수량 (단위: 주). 주문가격 (단위: 원). 미체결수량 (단위: 주). 주문구분. 매매구분. 주문상태. ### VIStockItem dataclass ¶ ``` VIStockItem(stk_cd: str, stk_nm: str, acc_trde_qty: str, motn_pric: str, viaplc_tp: str, vimotn_cnt: str, stex_tp: str) ``` 변동성완화장치 발동종목 단일 항목 (ka10054). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | acc_trde_qty | str | 누적거래량 (주). | required | | motn_pric | str | 발동가격 (원). | required | | viaplc_tp | str | VI적용구분 (동적/정적/동적+정적). | required | | vimotn_cnt | str | VI발동횟수. | required | | stex_tp | str | 거래소구분. | required | 종목코드. 종목명. 누적거래량 (주). 발동가격 (원). VI적용구분 (동적/정적/동적+정적). VI발동횟수. 거래소구분. ### VIStocks dataclass ¶ ``` VIStocks(items: list[VIStockItem]) ``` 변동성완화장치 발동종목 응답 (ka10054). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ VIStockItem ] | VI 발동종목 리스트. | required | VI 발동종목 리스트. ### VolumeUpdatedItem dataclass ¶ ``` VolumeUpdatedItem(stk_cd: str, stk_nm: str, cur_prc: str, flu_rt: str, prev_trde_qty: str, now_trde_qty: str) ``` 거래량갱신 단일 항목 (ka10024). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | cur_prc | str | 현재가 (원). | required | | flu_rt | str | 등락률 (%). | required | | prev_trde_qty | str | 이전거래량 (주). | required | | now_trde_qty | str | 현재거래량 (주). | required | 종목코드. 종목명. 현재가 (원). 등락률 (%). 이전거래량 (주). 현재거래량 (주). ### VolumeUpdatedStocks dataclass ¶ ``` VolumeUpdatedStocks(items: list[VolumeUpdatedItem]) ``` 거래량갱신 응답 (ka10024). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ VolumeUpdatedItem ] | 거래량갱신 종목 리스트. | required | 거래량갱신 종목 리스트. ### WatchlistInfo dataclass ¶ ``` WatchlistInfo(items: list[WatchlistStockItem]) ``` 관심종목정보 응답 (ka10095). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | items | list [ WatchlistStockItem ] | 관심종목 리스트. | required | 관심종목 리스트. ### WatchlistStockItem dataclass ¶ ``` WatchlistStockItem(stk_cd: str, stk_nm: str, cur_prc: str, flu_rt: str, trde_qty: str, trde_prica: str, open_pric: str, high_pric: str, low_pric: str, upl_pric: str, lst_pric: str) ``` 관심종목정보 단일 항목 (ka10095). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드. | required | | stk_nm | str | 종목명. | required | | cur_prc | str | 현재가 (원). | required | | flu_rt | str | 등락률 (%). | required | | trde_qty | str | 거래량 (주). | required | | trde_prica | str | 거래대금 (백만원). | required | | open_pric | str | 시가 (원). | required | | high_pric | str | 고가 (원). | required | | low_pric | str | 저가 (원). | required | | upl_pric | str | 상한가 (원). | required | | lst_pric | str | 하한가 (원). | required | 종목코드. 종목명. 현재가 (원). 등락률 (%). 거래량 (주). 거래대금 (백만원). 시가 (원). 고가 (원). 저가 (원). 상한가 (원). 하한가 (원). --- # 예외 (exceptions) # 예외 (exceptions) ¶ kiwoompy 커스텀 예외 계층을 정의하는 모듈입니다. ``` KiwoomError └── KiwoomApiError └── KiwoomAuthError ``` ## kiwoompy.exceptions ¶ kiwoompy 커스텀 예외 계층. ### KiwoomApiError ¶ ``` KiwoomApiError(message: str, status_code: int | None = None) ``` Bases: KiwoomError HTTP 통신 오류 또는 응답 파싱 실패. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | message | str | 한글 오류 메시지. | required | | status_code | int | None | HTTP 상태 코드. 네트워크 오류 등으로 없을 경우 None . | None | 한글 오류 메시지. HTTP 상태 코드. 네트워크 오류 등으로 없을 경우 None . ``` def __init__(self, message: str, status_code: int | None = None) -> None: self.status_code = status_code super().__init__(message) ``` ### KiwoomAuthError ¶ ``` KiwoomAuthError(message: str, status_code: int | None = None) ``` Bases: KiwoomApiError 인증 실패 — 잘못된 앱 키·시크릿 키, 토큰 미발급 등 인증 관련 오류. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | message | str | 한글 오류 메시지. | required | | status_code | int | None | HTTP 상태 코드 (주로 400·401·403). | None | 한글 오류 메시지. HTTP 상태 코드 (주로 400·401·403). ``` def __init__(self, message: str, status_code: int | None = None) -> None: self.status_code = status_code super().__init__(message) ``` ### KiwoomError ¶ Bases: Exception kiwoompy 최상위 예외. 모든 커스텀 예외의 기반 클래스. --- # 유틸리티 (utils) # 유틸리티 (utils) ¶ 입력값 정규화 등 공통 유틸리티 함수를 제공하는 모듈입니다. ## kiwoompy.utils ¶ kiwoompy 공통 유틸리티 — 입력값 정규화, 로깅 등. ### DEFAULT_PRODUCT_CODE module-attribute ¶ ``` DEFAULT_PRODUCT_CODE = '01' ``` 계좌번호 상품코드 기본값. 미입력 시 자동으로 붙여준다. ### normalize_account_no ¶ ``` normalize_account_no(account_no: str, product_code: str = DEFAULT_PRODUCT_CODE) -> str ``` 계좌번호를 "12345678-01" 형식으로 정규화한다. 계좌번호 상품코드( -01 부분)가 없는 경우 product_code 를 붙여주고 경고 로그를 남긴다. 사용자의 실수를 라이브러리가 보완하기 위한 처리다. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | account_no | str | 사용자가 입력한 계좌번호. "12345678-01" (완전한 형식) 또는 "12345678" (상품코드 생략) 허용. | required | | product_code | str | 상품코드가 없을 때 사용할 기본값. 기본값은 "01" . | DEFAULT_PRODUCT_CODE | 사용자가 입력한 계좌번호. "12345678-01" (완전한 형식) 또는 "12345678" (상품코드 생략) 허용. 상품코드가 없을 때 사용할 기본값. 기본값은 "01" . Returns: | Type | Description | | --- | --- | | str | "12345678-01" 형식의 계좌번호. | "12345678-01" 형식의 계좌번호. Raises: | Type | Description | | --- | --- | | ValueError | 계좌번호 형식이 "12345678" / "12345678-01" 둘 다 아닌 경우. | 계좌번호 형식이 "12345678" / "12345678-01" 둘 다 아닌 경우. Examples: ``` >>> normalize_account_no("12345678") '12345678-01' >>> normalize_account_no("12345678-01") '12345678-01' >>> normalize_account_no("12345678", product_code="02") '12345678-02' ``` ``` def normalize_account_no(account_no: str, product_code: str = DEFAULT_PRODUCT_CODE) -> str: """계좌번호를 ``"12345678-01"`` 형식으로 정규화한다. 계좌번호 상품코드(``-01`` 부분)가 없는 경우 ``product_code``를 붙여주고 경고 로그를 남긴다. 사용자의 실수를 라이브러리가 보완하기 위한 처리다. Args: account_no: 사용자가 입력한 계좌번호. ``"12345678-01"`` (완전한 형식) 또는 ``"12345678"`` (상품코드 생략) 허용. product_code: 상품코드가 없을 때 사용할 기본값. 기본값은 ``"01"``. Returns: ``"12345678-01"`` 형식의 계좌번호. Raises: ValueError: 계좌번호 형식이 ``"12345678"`` / ``"12345678-01"`` 둘 다 아닌 경우. Examples: >>> normalize_account_no("12345678") '12345678-01' >>> normalize_account_no("12345678-01") '12345678-01' >>> normalize_account_no("12345678", product_code="02") '12345678-02' """ if _ACCOUNT_NO_FULL.match(account_no): return account_no if _ACCOUNT_NO_SHORT.match(account_no): normalized = f"{account_no}-{product_code}" logger.warning( "계좌번호 상품코드가 없습니다. 기본값 '%s'를 사용합니다: %s → %s", product_code, account_no, normalized, ) return normalized raise ValueError( f"올바르지 않은 계좌번호 형식입니다: {account_no!r}\n" f" 올바른 형식: '12345678' 또는 '12345678-01'" ) ``` --- # 조회 (query) # 조회 (query) ¶ 시세, 잔고, 계좌, 종목 정보 등 각종 조회 기능을 담당하는 모듈입니다. ## 파라미터 타입 안내 ¶ 모든 고정 선택지 파라미터는 의미 있는 문자열 키를 사용합니다. API 내부 코드(숫자)로의 변환은 라이브러리가 자동으로 처리합니다. ### 계좌·잔고 조회 파라미터 ¶ | 타입 | 값 | 의미 | | --- | --- | --- | | AllStockType | "all" / "single" | 전체종목구분 | | ExchangeType | "all" / "krx" / "nxt" | 거래소구분 | | SellType | "all" / "sell" / "buy" | 매도수구분 | | TradeSide | "sell" / "buy" | 매매구분 (전체 없음) | | UnfilledTradeType | "all" / "sell" / "buy" | 미체결 매매구분 | | DepositQueryType | "normal" / "estimated" | 예수금 조회구분 | | DelistedQueryType | "all" / "exclude_delisted" | 상장폐지 조회구분 | | BalanceQueryType | "combined" / "individual" | 계좌평가잔고 조회구분 | | FilledQueryType | "all" / "by_stock" | 체결 조회구분 | | OrderHistoryQueryType | "asc" / "desc" / "unfilled" / "filled_only" | 주문체결내역 조회구분 | | StockBondType | "all" / "stock" / "bond" | 주식채권구분 | | MarketType | "all" / "kospi" / "kosdaq" / "otcbb" / "ecn" | 시장구분 | | ExecutionQueryType | "all" / "filled" | 주문체결현황 조회구분 | | GoodsType | "all" / "domestic_stock" / "fund" / "overseas_stock" / "financial" | 상품구분 | | SingleStockType | "today_buy_sell" / "today_sell_all" | 단주구분 | | CashCreditType | "all" / "cash" / "credit" | 현금신용구분 | | GoldOrderQueryType | "asc" / "desc" | 금현물 주문 조회구분 | | GoldTransactionType | "all" / "deposit_withdraw" / "withdraw" / "trade" / "buy" / "sell" / "deposit" / "payment" | 금현물 거래내역 구분 | | TransactionType | "all" / "deposit_withdraw" / "withdraw" / "trade" / "buy" / "sell" / "deposit" / "payment" | 위탁종합거래내역 구분 | | FlagType | "off" / "on" | 이진 플래그 (포함/미포함 등) | ### 시세·종목정보 조회 파라미터 ¶ | 타입 | 값 | 의미 | | --- | --- | --- | | MrkcondExchangeType | "krx" / "nxt" / "all" | 거래소구분 (시세·종목정보용) | | MrktType3 | "all" / "kospi" / "kosdaq" | 시장구분 (3코드) | | MrktType3Ext | "all" / "kospi" / "kosdaq" / "kospi200" | 시장구분 (가격급등락용) | | StkMarketType | "kospi" / "kosdaq" / "etf" / "elw" / "konex" / "gold" 등 | 종목 리스트 시장구분 | | SectorMarketType | "kospi" / "kosdaq" / "kospi200" / "kospi100" / "krx100" | 업종코드 시장구분 | | DisplayType | "qty" / "amount" | 일별주가 표시구분 | | NewStockRightsType | "all" / "rights_cert" / "rights_deed" | 신주인수권구분 | | InstitutionTradeType | "sell" / "buy" | 기관 매매구분 (순매도/순매수) | | EstimatedPriceType | "buy" / "sell" | 추정단가구분 | | CreditQueryType | "loan" / "short" | 신용매매동향 조회구분 | | HighLowSelectType | "high" / "low" | 신고저 / 고저 구분 | | PERType | "low_pbr" / "high_pbr" / "low_per" / "high_per" / "low_roe" / "high_roe" | PER 구분 | | TodayPrevType | "today" / "prev" | 당일전일구분 | | TickMinType | "tick" / "minute" | 틱/분 구분 | | AfterTradeType | "net_buy" / "buy" / "sell" | 장마감후 매매구분 | | AfterAmtQtyType | "amount" / "qty" | 장마감후 금액수량구분 | | InvestorType | "foreign" / "institution" / "trust" / "insurance" / "bank" / "pension" / "gov" / "other_corp" | 투자자별 (장중) | | InvestorType2 | "individual" / "foreign" / "financial_inv" / "trust" / "private_fund" / … | 투자자구분 (투자자별일별매매종목) | | AmtQtyType | "amount" / "qty" | 금액수량구분 (종목별투자자) | | InvestorTradeType | "net_buy" / "buy" / "sell" | 매매구분 (종목별투자자) | | UnitType | "thousand" / "single" | 단위구분 (천주/단주) | ### 순위정보 파라미터 ¶ | 타입 | 값 | 의미 | | --- | --- | --- | | RkinfoMarketType | "all" / "kospi" / "kosdaq" | 순위정보 시장구분 | | RkinfoStexType | "krx" / "nxt" / "all" | 순위정보 거래소구분 | | RkinfoBidSortType | "net_buy_qty" / "net_sell_qty" / "buy_ratio" / "sell_ratio" | 호가잔량상위 정렬구분 | | RkinfoBidTradeType | "buy" / "sell" | 호가잔량급증 매매구분 | | RkinfoSurgeSort2Type | "surge_qty" / "surge_ratio" | 급증 정렬구분 | | RkinfoPriceChangeSortType | "rise_ratio" / "rise_gap" / "fall_ratio" / "fall_gap" / "flat" | 등락률상위 정렬구분 | | RkinfoBaseDateType | "today" / "prev" | 기준일구분 | | RkinfoSortCndType | "qty" / "amount" | 동일순매매 정렬조건 | | RkinfoOrgType | "foreign" / "foreign_corp" / "financial_inv" / "trust" / "other_finance" / "bank" / "insurance" / "pension" / "gov" / "other_corp" / "institution" | 장중투자자 기관구분 | | NetTradeType | "net_buy" / "net_sell" | 순매매구분 | | ForeignPeriodTradeType | "net_sell" / "net_buy" / "both" | 외국인 기간별 매매구분 | | ForeignConsecTradeType | "net_sell" / "net_buy" | 외국인 연속 순매매구분 | | ForeignBrokerTradeType | "net_buy" / "net_sell" / "buy" / "sell" | 외국계 창구 매매구분 | | SortAmtQtyType | "amount" / "qty" | 금액·수량 정렬구분 | | BrokerMarketType | "all" / "kospi" / "kosdaq" / "single" | 거래원 순간거래량 시장구분 | | TimeRangeType | "start" / "period" | 시간구분 (시작일/기간) | | TradeUnitType | "single" / "thousand" | 거래 단위구분 | | MarketOpenType | "all" / "intraday" / "pre" / "post" | 장운영구분 | | AfterHoursSortType | "up_rate" / "up_gap" / "down_rate" / "down_gap" / "flat" | 시간외단일가 등락율 정렬기준 | | ForeignInstitutionQueryDateType | "exclude_today" / "include_today" | 외국인·기관 조회일자구분 | ### 차트 파라미터 ¶ | 타입 | 값 | 의미 | | --- | --- | --- | | ChartTickScope | "1" / "3" / "5" / "10" / "30" | 틱 범위 (틱차트·업종틱) | | ChartMinScope | "1" / "3" / "5" / "10" / "15" / "30" / "45" / "60" | 분봉 범위 (주식·업종) | | ChartAdjustedPrice | "adjusted" / "raw" | 수정주가 반영 여부 | | ChartAmtQtyType | "amount" / "qty" | 금액수량구분 (투자자 차트) | | ChartTradeType | "net_buy" / "buy" / "sell" | 매매구분 (투자자 차트) | | ChartUnitType | "thousand" / "single" | 단위구분 (종목별투자자기관별차트) | | ChartSectorMarket | "kospi" / "kosdaq" / "kospi200" | 업종차트 시장구분 | ## API 레퍼런스 ¶ ## kiwoompy.query ¶ 조회 모듈 — 계좌·잔고·손익·주문체결·시세·종목정보·순위정보·차트·업종·기관/외국인·공매도·대차거래·ETF·ELW·테마·프로그램매매 조회. ### AfterHoursSortType ¶ ``` AfterHoursSortType = Literal['up_rate', 'up_gap', 'down_rate', 'down_gap', 'flat'] ``` 시간외 단일가 등락율 순위 정렬기준. - "up_rate" : 상승률 — API "1" - "up_gap" : 상승폭 — API "2" - "down_rate" : 하락률 — API "3" - "down_gap" : 하락폭 — API "4" - "flat" : 보합 — API "5" ### AllStockType ¶ ``` AllStockType = Literal['all', 'single'] ``` 전체종목구분. - "all" : 전체 — API "0" - "single" : 종목 — API "1" ### BalanceQueryType ¶ ``` BalanceQueryType = Literal['combined', 'individual'] ``` 계좌평가잔고 조회구분. - "combined" : 합산 — API "1" - "individual" : 개별 — API "2" ### BrokerMarketType ¶ ``` BrokerMarketType = Literal['all', 'kospi', 'kosdaq', 'single'] ``` 거래원 순간거래량 시장구분. - "all" : 전체 — API "0" - "kospi" : 코스피 — API "1" - "kosdaq" : 코스닥 — API "2" - "single" : 종목 — API "3" ### CashCreditType ¶ ``` CashCreditType = Literal['all', 'cash', 'credit'] ``` 당일매매일지 현금신용구분. - "all" : 전체 — API "0" - "cash" : 현금매매만 — API "1" - "credit" : 신용매매만 — API "2" ### DelistedQueryType ¶ ``` DelistedQueryType = Literal['all', 'exclude_delisted'] ``` 상장폐지 조회구분. - "all" : 전체 — API "0" - "exclude_delisted" : 상장폐지종목제외 — API "1" ### DepositQueryType ¶ ``` DepositQueryType = Literal['normal', 'estimated'] ``` 예수금 조회구분. - "normal" : 일반조회 — API "2" - "estimated" : 추정조회 — API "3" ### DomesticExchange ¶ ``` DomesticExchange = Literal['KRX', 'NXT', '%', 'SOR'] ``` 국내거래소구분. - "KRX" : 한국거래소 - "NXT" : 넥스트트레이드 - "%" : 전체 - "SOR" : 최선주문집행 ### ExchangeType ¶ ``` ExchangeType = Literal['all', 'krx', 'nxt'] ``` 거래소구분. - "all" : 통합 — API "0" - "krx" : 한국거래소 — API "1" - "nxt" : 넥스트트레이드 — API "2" ### ExecutionQueryType ¶ ``` ExecutionQueryType = Literal['all', 'filled'] ``` 주문체결현황 조회구분. - "all" : 전체 — API "0" - "filled" : 체결 — API "1" ### FilledQueryType ¶ ``` FilledQueryType = Literal['all', 'by_stock'] ``` 체결조회 조회구분. - "all" : 전체 — API "0" - "by_stock" : 종목 — API "1" ### FlagType ¶ ``` FlagType = Literal['off', 'on'] ``` 이진 플래그 구분 (체크/미체크, 포함/미포함 등). - "off" : 미체크/미포함 — API "0" - "on" : 체크/포함 — API "1" ### ForeignBrokerTradeType ¶ ``` ForeignBrokerTradeType = Literal['net_buy', 'net_sell', 'buy', 'sell'] ``` 외국계 창구 매매구분. - "net_buy" : 순매수 — API "1" - "net_sell" : 순매도 — API "2" - "buy" : 매수 — API "3" - "sell" : 매도 — API "4" ### ForeignConsecTradeType ¶ ``` ForeignConsecTradeType = Literal['net_sell', 'net_buy'] ``` 외국인 연속 순매매구분. - "net_sell" : 연속순매도 — API "1" - "net_buy" : 연속순매수 — API "2" ### ForeignInstitutionQueryDateType ¶ ``` ForeignInstitutionQueryDateType = Literal['exclude_today', 'include_today'] ``` 외국인·기관 매매 상위 조회일자구분. - "exclude_today" : 조회일자 미포함 — API "0" - "include_today" : 조회일자 포함 — API "1" ### ForeignPeriodTradeType ¶ ``` ForeignPeriodTradeType = Literal['net_sell', 'net_buy', 'both'] ``` 외국인 기간별 매매구분. - "net_sell" : 순매도 — API "1" - "net_buy" : 순매수 — API "2" - "both" : 순매매 — API "3" ### GoldOrderQueryType ¶ ``` GoldOrderQueryType = Literal['asc', 'desc'] ``` 금현물 주문 조회구분. - "asc" : 주문순 — API "1" - "desc" : 역순 — API "2" ### GoldTransactionType ¶ ``` GoldTransactionType = Literal['all', 'deposit_withdraw', 'withdraw', 'trade', 'buy', 'sell', 'deposit', 'payment'] ``` 금현물 거래내역 구분. - "all" : 전체 — API "0" - "deposit_withdraw" : 입출금 — API "1" - "withdraw" : 출고 — API "2" - "trade" : 매매 — API "3" - "buy" : 매수 — API "4" - "sell" : 매도 — API "5" - "deposit" : 입금 — API "6" - "payment" : 출금 — API "7" ### GoodsType ¶ ``` GoodsType = Literal['all', 'domestic_stock', 'fund', 'overseas_stock', 'financial'] ``` 위탁종합거래내역 상품구분. - "all" : 전체 — API "0" - "domestic_stock" : 국내주식 — API "1" - "fund" : 수익증권 — API "2" - "overseas_stock" : 해외주식 — API "3" - "financial" : 금융상품 — API "4" ### MarketOpenType ¶ ``` MarketOpenType = Literal['all', 'intraday', 'pre', 'post'] ``` 장운영구분. - "all" : 전체 — API "0" - "intraday" : 장중 — API "1" - "pre" : 장전시간외 — API "2" - "post" : 장후시간외 — API "3" ### MarketType ¶ ``` MarketType = Literal['all', 'kospi', 'kosdaq', 'otcbb', 'ecn'] ``` 시장구분. - "all" : 전체 — API "0" - "kospi" : 코스피 — API "1" - "kosdaq" : 코스닥 — API "2" - "otcbb" : OTCBB — API "3" - "ecn" : ECN — API "4" ### NetTradeType ¶ ``` NetTradeType = Literal['net_buy', 'net_sell'] ``` 순매매구분. - "net_buy" : 순매수 — API "1" - "net_sell" : 순매도 — API "2" ### OrderHistoryQueryType ¶ ``` OrderHistoryQueryType = Literal['asc', 'desc', 'unfilled', 'filled_only'] ``` 주문체결내역상세 조회구분. - "asc" : 주문순 — API "1" - "desc" : 역순 — API "2" - "unfilled" : 미체결 — API "3" - "filled_only" : 체결내역만 — API "4" ### SellType ¶ ``` SellType = Literal['all', 'sell', 'buy'] ``` 매도수구분. - "all" : 전체 — API "0" - "sell" : 매도 — API "1" - "buy" : 매수 — API "2" ### SingleStockType ¶ ``` SingleStockType = Literal['today_buy_sell', 'today_sell_all'] ``` 당일매매일지 단주구분. - "today_buy_sell" : 당일매수에 대한 당일매도 — API "1" - "today_sell_all" : 당일매도 전체 — API "2" ### SortAmtQtyType ¶ ``` SortAmtQtyType = Literal['amount', 'qty'] ``` 금액·수량 정렬구분. - "amount" : 금액 — API "1" - "qty" : 수량 — API "2" ### StockBondType ¶ ``` StockBondType = Literal['all', 'stock', 'bond'] ``` 주식채권구분. - "all" : 전체 — API "0" - "stock" : 주식 — API "1" - "bond" : 채권 — API "2" ### TimeRangeType ¶ ``` TimeRangeType = Literal['start', 'period'] ``` 시간구분 (시작일/기간). - "start" : 시작일 — API "0" - "period" : 기간 — API "1" ### TradeSide ¶ ``` TradeSide = Literal['sell', 'buy'] ``` 매매구분 (전체 없음). - "sell" : 매도 — API "1" - "buy" : 매수 — API "2" ### TradeUnitType ¶ ``` TradeUnitType = Literal['single', 'thousand'] ``` 거래 단위구분. - "single" : 단주 — API "1" - "thousand" : 천주 — API "1000" ### TransactionType ¶ ``` TransactionType = Literal['all', 'deposit_withdraw', 'withdraw', 'trade', 'buy', 'sell', 'deposit', 'payment'] ``` 위탁종합거래내역 구분. - "all" : 전체 — API "0" - "deposit_withdraw" : 입출금 — API "1" - "withdraw" : 출고 — API "2" - "trade" : 매매 — API "3" - "buy" : 매수 — API "4" - "sell" : 매도 — API "5" - "deposit" : 입금 — API "6" - "payment" : 출금 — API "7" ### UnfilledTradeType ¶ ``` UnfilledTradeType = Literal['all', 'sell', 'buy'] ``` 미체결 매매구분. - "all" : 전체 — API "0" - "sell" : 매도 — API "1" - "buy" : 매수 — API "2" ### KiwoomQuery ¶ ``` KiwoomQuery(api: KiwoomApi) ``` 키움 REST API 조회 클라이언트. 계좌·잔고·손익·주문체결 등 조회성 TR을 담당한다. 모든 메서드는 KiwoomApi 를 통해 HTTP 요청을 전송하며, 응답을 dataclass로 파싱하여 반환한다. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | api | KiwoomApi | 인증 토큰이 설정된 KiwoomApi 인스턴스. | required | 인증 토큰이 설정된 KiwoomApi 인스턴스. ``` def __init__(self, api: KiwoomApi) -> None: self._api = api ``` #### credit_loan_availability ¶ ``` credit_loan_availability(stk_cd: str) -> CreditLoanAvailability ``` 종목의 신용융자 가능 여부를 조회한다 (kt20017). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stk_cd | str | 종목코드 (예: "039490" ). | required | 종목코드 (예: "039490" ). Returns: | Type | Description | | --- | --- | | CreditLoanAvailability | class: ~kiwoompy.models.CreditLoanAvailability 인스턴스. | class: ~kiwoompy.models.CreditLoanAvailability 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def credit_loan_availability(self, stk_cd: str) -> CreditLoanAvailability: """종목의 신용융자 가능 여부를 조회한다 (kt20017). Args: stk_cd: 종목코드 (예: ``"039490"``). Returns: :class:`~kiwoompy.models.CreditLoanAvailability` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._STKINFO_PATH, {"stk_cd": stk_cd}, headers=self._headers("kt20017"), )) return CreditLoanAvailability(crd_alow_yn=raw.get("crd_alow_yn", "")) ``` #### credit_loan_stocks ¶ ``` credit_loan_stocks(mrkt_deal_tp: CreditMarketType, *, crd_stk_grde_tp: CreditStockGradeType = '%', stk_cd: str = '') -> CreditLoanStocks ``` 신용융자 가능종목을 조회한다 (kt20016). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | mrkt_deal_tp | CreditMarketType | 시장거래구분. "%" (전체), "1" (코스피), "0" (코스닥). | required | | crd_stk_grde_tp | CreditStockGradeType | 신용종목등급구분 (기본값 "%" — 전체). "A" ~ "E" 로 등급 필터 가능. | '%' | | stk_cd | str | 종목코드. 빈 문자열이면 전체 조회. | '' | 시장거래구분. "%" (전체), "1" (코스피), "0" (코스닥). 신용종목등급구분 (기본값 "%" — 전체). "A" ~ "E" 로 등급 필터 가능. 종목코드. 빈 문자열이면 전체 조회. Returns: | Type | Description | | --- | --- | | CreditLoanStocks | class: ~kiwoompy.models.CreditLoanStocks 인스턴스. | class: ~kiwoompy.models.CreditLoanStocks 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def credit_loan_stocks( self, mrkt_deal_tp: CreditMarketType, *, crd_stk_grde_tp: CreditStockGradeType = "%", stk_cd: str = "", ) -> CreditLoanStocks: """신용융자 가능종목을 조회한다 (kt20016). Args: mrkt_deal_tp: 시장거래구분. ``"%"`` (전체), ``"1"`` (코스피), ``"0"`` (코스닥). crd_stk_grde_tp: 신용종목등급구분 (기본값 ``"%"`` — 전체). ``"A"`` ~ ``"E"`` 로 등급 필터 가능. stk_cd: 종목코드. 빈 문자열이면 전체 조회. Returns: :class:`~kiwoompy.models.CreditLoanStocks` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ body: dict = {"mrkt_deal_tp": mrkt_deal_tp, "crd_stk_grde_tp": crd_stk_grde_tp} if stk_cd: body["stk_cd"] = stk_cd raw = _check(self._api.post( self._STKINFO_PATH, body, headers=self._headers("kt20016"), )) items = [ CreditLoanStockItem( stk_cd=it.get("stk_cd", ""), stk_nm=it.get("stk_nm", ""), crd_assr_rt=it.get("crd_assr_rt", ""), repl_pric=it.get("repl_pric", ""), pred_close_pric=it.get("pred_close_pric", ""), crd_limit_over_yn=it.get("crd_limit_over_yn", ""), crd_limit_over_txt=it.get("crd_limit_over_txt", ""), ) for it in raw.get("crd_loan_pos_stk", []) ] return CreditLoanStocks( crd_loan_able=raw.get("crd_loan_able", ""), items=items, ) ``` #### get_account_balance ¶ ``` get_account_balance(query_type: BalanceQueryType = 'combined', exchange: Literal['KRX', 'NXT'] = 'KRX') -> AccountBalance ``` 계좌평가잔고내역을 조회한다 (kt00018). 보유 종목별 매입금액·평가금액·평가손익·수익률을 포함한 계좌 전체 잔고 현황을 반환한다. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | query_type | BalanceQueryType | 조회구분. "combined" : 합산, "individual" : 개별. | 'combined' | | exchange | Literal ['KRX', 'NXT'] | 국내거래소구분. "KRX" 또는 "NXT" . | 'KRX' | 조회구분. "combined" : 합산, "individual" : 개별. 국내거래소구분. "KRX" 또는 "NXT" . Returns: | Type | Description | | --- | --- | | AccountBalance | 계좌평가잔고내역 AccountBalance (종목별 목록 포함). | 계좌평가잔고내역 AccountBalance (종목별 목록 포함). Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_account_balance( self, query_type: BalanceQueryType = "combined", exchange: Literal["KRX", "NXT"] = "KRX", ) -> AccountBalance: """계좌평가잔고내역을 조회한다 (kt00018). 보유 종목별 매입금액·평가금액·평가손익·수익률을 포함한 계좌 전체 잔고 현황을 반환한다. Args: query_type: 조회구분. ``"combined"``: 합산, ``"individual"``: 개별. exchange: 국내거래소구분. ``"KRX"`` 또는 ``"NXT"``. Returns: 계좌평가잔고내역 ``AccountBalance`` (종목별 목록 포함). Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {"qry_tp": _BALANCE_QUERY_CODE[query_type], "dmst_stex_tp": exchange}, headers=self._headers("kt00018"), )) holdings = [ HoldingItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), evltv_prft=item.get("evltv_prft", ""), prft_rt=item.get("prft_rt", ""), pur_pric=item.get("pur_pric", ""), pred_close_pric=item.get("pred_close_pric", ""), rmnd_qty=item.get("rmnd_qty", ""), trde_able_qty=item.get("trde_able_qty", ""), cur_prc=item.get("cur_prc", ""), pred_buyq=item.get("pred_buyq", ""), pred_sellq=item.get("pred_sellq", ""), tdy_buyq=item.get("tdy_buyq", ""), tdy_sellq=item.get("tdy_sellq", ""), pur_amt=item.get("pur_amt", ""), pur_cmsn=item.get("pur_cmsn", ""), evlt_amt=item.get("evlt_amt", ""), sell_cmsn=item.get("sell_cmsn", ""), tax=item.get("tax", ""), sum_cmsn=item.get("sum_cmsn", ""), poss_rt=item.get("poss_rt", ""), crd_tp=item.get("crd_tp", ""), crd_tp_nm=item.get("crd_tp_nm", ""), crd_loan_dt=item.get("crd_loan_dt", ""), ) for item in raw.get("acnt_evlt_remn_indv_tot", []) ] return AccountBalance( tot_pur_amt=raw.get("tot_pur_amt", ""), tot_evlt_amt=raw.get("tot_evlt_amt", ""), tot_evlt_pl=raw.get("tot_evlt_pl", ""), tot_prft_rt=raw.get("tot_prft_rt", ""), prsm_dpst_aset_amt=raw.get("prsm_dpst_aset_amt", ""), tot_loan_amt=raw.get("tot_loan_amt", ""), tot_crd_loan_amt=raw.get("tot_crd_loan_amt", ""), tot_crd_ls_amt=raw.get("tot_crd_ls_amt", ""), holdings=holdings, ) ``` #### get_account_evaluation ¶ ``` get_account_evaluation(query_type: DelistedQueryType = 'all', exchange: Literal['KRX', 'NXT'] = 'KRX') -> AccountEvaluation ``` 계좌평가현황을 조회한다 (kt00004). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | query_type | DelistedQueryType | 상장폐지조회구분. "all" : 전체, "exclude_delisted" : 상장폐지종목제외. | 'all' | | exchange | Literal ['KRX', 'NXT'] | 국내거래소구분. "KRX" 또는 "NXT" . | 'KRX' | 상장폐지조회구분. "all" : 전체, "exclude_delisted" : 상장폐지종목제외. 국내거래소구분. "KRX" 또는 "NXT" . Returns: | Type | Description | | --- | --- | | AccountEvaluation | 계좌평가현황 AccountEvaluation (종목별 목록 포함). | 계좌평가현황 AccountEvaluation (종목별 목록 포함). Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_account_evaluation( self, query_type: DelistedQueryType = "all", exchange: Literal["KRX", "NXT"] = "KRX", ) -> AccountEvaluation: """계좌평가현황을 조회한다 (kt00004). Args: query_type: 상장폐지조회구분. ``"all"``: 전체, ``"exclude_delisted"``: 상장폐지종목제외. exchange: 국내거래소구분. ``"KRX"`` 또는 ``"NXT"``. Returns: 계좌평가현황 ``AccountEvaluation`` (종목별 목록 포함). Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {"qry_tp": _DELISTED_QUERY_CODE[query_type], "dmst_stex_tp": exchange}, headers=self._headers("kt00004"), )) holdings = [ AccountEvaluationItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), rmnd_qty=item.get("rmnd_qty", ""), avg_prc=item.get("avg_prc", ""), cur_prc=item.get("cur_prc", ""), evlt_amt=item.get("evlt_amt", ""), pl_amt=item.get("pl_amt", ""), pl_rt=item.get("pl_rt", ""), loan_dt=item.get("loan_dt", ""), pur_amt=item.get("pur_amt", ""), setl_remn=item.get("setl_remn", ""), pred_buyq=item.get("pred_buyq", ""), pred_sellq=item.get("pred_sellq", ""), tdy_buyq=item.get("tdy_buyq", ""), tdy_sellq=item.get("tdy_sellq", ""), ) for item in raw.get("stk_acnt_evlt_prst", []) ] return AccountEvaluation( acnt_nm=raw.get("acnt_nm", ""), brch_nm=raw.get("brch_nm", ""), entr=raw.get("entr", ""), d2_entra=raw.get("d2_entra", ""), tot_est_amt=raw.get("tot_est_amt", ""), aset_evlt_amt=raw.get("aset_evlt_amt", ""), tot_pur_amt=raw.get("tot_pur_amt", ""), prsm_dpst_aset_amt=raw.get("prsm_dpst_aset_amt", ""), tdy_lspft=raw.get("tdy_lspft", ""), tdy_lspft_rt=raw.get("tdy_lspft_rt", ""), lspft_ratio=raw.get("lspft_ratio", ""), lspft_rt=raw.get("lspft_rt", ""), holdings=holdings, ) ``` #### get_account_numbers ¶ ``` get_account_numbers() -> AccountNumbers ``` 현재 토큰에 연결된 계좌번호 목록을 조회한다 (ka00001). Returns: | Type | Description | | --- | --- | | AccountNumbers | 계좌번호 목록 AccountNumbers . | 계좌번호 목록 AccountNumbers . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_account_numbers(self) -> AccountNumbers: """현재 토큰에 연결된 계좌번호 목록을 조회한다 (ka00001). Returns: 계좌번호 목록 ``AccountNumbers``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {}, headers=self._headers("ka00001"), )) acct_raw = raw.get("acctNo", "") if isinstance(acct_raw, list): numbers = [str(a) for a in acct_raw] elif acct_raw: numbers = [str(acct_raw)] else: numbers = [] return AccountNumbers(account_numbers=numbers) ``` #### get_account_return ¶ ``` get_account_return(exchange: ExchangeType = 'all') -> list[AccountReturnItem] ``` 계좌수익률을 조회한다 (ka10085). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | exchange | ExchangeType | 거래소구분. "all" : 통합, "krx" : KRX, "nxt" : NXT. | 'all' | 거래소구분. "all" : 통합, "krx" : KRX, "nxt" : NXT. Returns: | Type | Description | | --- | --- | | list [ AccountReturnItem ] | 계좌수익률 목록. | 계좌수익률 목록. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_account_return( self, exchange: ExchangeType = "all", ) -> list[AccountReturnItem]: """계좌수익률을 조회한다 (ka10085). Args: exchange: 거래소구분. ``"all"``: 통합, ``"krx"``: KRX, ``"nxt"``: NXT. Returns: 계좌수익률 목록. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {"stex_tp": _EXCHANGE_CODE[exchange]}, headers=self._headers("ka10085"), )) return [ AccountReturnItem( dt=item.get("dt", ""), stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), pur_pric=item.get("pur_pric", ""), pur_amt=item.get("pur_amt", ""), rmnd_qty=item.get("rmnd_qty", ""), tdy_sel_pl=item.get("tdy_sel_pl", ""), tdy_trde_cmsn=item.get("tdy_trde_cmsn", ""), tdy_trde_tax=item.get("tdy_trde_tax", ""), crd_tp=item.get("crd_tp", ""), loan_dt=item.get("loan_dt", ""), setl_remn=item.get("setl_remn", ""), clrn_alow_qty=item.get("clrn_alow_qty", ""), crd_amt=item.get("crd_amt", ""), crd_int=item.get("crd_int", ""), expr_dt=item.get("expr_dt", ""), ) for item in raw.get("acnt_prft_rt", []) ] ``` #### get_after_hours_rank ¶ ``` get_after_hours_rank(market: 'RkinfoMarketType', sort_base: AfterHoursSortType, stock_cond: str, trade_qty_cond: str, credit_cond: str, trade_amt: str) -> AfterHoursRank ``` 시간외 단일가 등락율 순위를 조회한다 (ka10098). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'RkinfoMarketType' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | sort_base | AfterHoursSortType | 정렬기준. "up_rate" : 상승률, "up_gap" : 상승폭, "down_rate" : 하락률, "down_gap" : 하락폭, "flat" : 보합. | required | | stock_cond | str | 종목조건 ( "0" ~ "17" ). | required | | trade_qty_cond | str | 거래량조건 ( "0" , "10" , "50" 등). | required | | credit_cond | str | 신용조건 ( "0" , "9" 등). | required | | trade_amt | str | 거래대금 ( "0" , "5" , "10" 등). | required | 시장구분. "all" , "kospi" , "kosdaq" . 정렬기준. "up_rate" : 상승률, "up_gap" : 상승폭, "down_rate" : 하락률, "down_gap" : 하락폭, "flat" : 보합. 종목조건 ( "0" ~ "17" ). 거래량조건 ( "0" , "10" , "50" 등). 신용조건 ( "0" , "9" 등). 거래대금 ( "0" , "5" , "10" 등). Returns: | Type | Description | | --- | --- | | AfterHoursRank | 시간외단일가등락율순위 AfterHoursRank . | 시간외단일가등락율순위 AfterHoursRank . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_after_hours_rank( self, market: "RkinfoMarketType", sort_base: AfterHoursSortType, stock_cond: str, trade_qty_cond: str, credit_cond: str, trade_amt: str, ) -> AfterHoursRank: """시간외 단일가 등락율 순위를 조회한다 (ka10098). Args: market: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. sort_base: 정렬기준. ``"up_rate"``: 상승률, ``"up_gap"``: 상승폭, ``"down_rate"``: 하락률, ``"down_gap"``: 하락폭, ``"flat"``: 보합. stock_cond: 종목조건 (``"0"``~``"17"``). trade_qty_cond: 거래량조건 (``"0"``, ``"10"``, ``"50"`` 등). credit_cond: 신용조건 (``"0"``, ``"9"`` 등). trade_amt: 거래대금 (``"0"``, ``"5"``, ``"10"`` 등). Returns: 시간외단일가등락율순위 ``AfterHoursRank``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "mrkt_tp": _RKINFO_MARKET_CODE[market], "sort_base": _AFTER_HOURS_SORT_CODE[sort_base], "stk_cnd": stock_cond, "trde_qty_cnd": trade_qty_cond, "crd_cnd": credit_cond, "trde_prica": trade_amt, }, headers=self._headers("ka10098"), )) items = [ AfterHoursRankItem( rank=item.get("rank", ""), stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), pred_pre_sig=item.get("pred_pre_sig", ""), pred_pre=item.get("pred_pre", ""), flu_rt=item.get("flu_rt", ""), sel_tot_req=item.get("sel_tot_req", ""), buy_tot_req=item.get("buy_tot_req", ""), acc_trde_qty=item.get("acc_trde_qty", ""), acc_trde_prica=item.get("acc_trde_prica", ""), tdy_close_pric=item.get("tdy_close_pric", ""), tdy_close_pric_flu_rt=item.get("tdy_close_pric_flu_rt", ""), ) for item in raw.get("ovt_sigpric_flu_rt_rank", []) ] return AfterHoursRank(items=items) ``` #### get_afterclose_investor_trading ¶ ``` get_afterclose_investor_trading(market_type: 'MrktType3', trade_type: 'AfterTradeType', amount_qty_type: 'AfterAmtQtyType' = 'amount', exchange: 'MrkcondExchangeType' = 'all') -> AfterCloseInvestorTrading ``` 장마감 후 투자자별 매매 상위 종목을 조회한다 (ka10066). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market_type | 'MrktType3' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | trade_type | 'AfterTradeType' | 매매구분. "net_buy" : 순매수, "buy" : 매수, "sell" : 매도. | required | | amount_qty_type | 'AfterAmtQtyType' | 금액수량구분. "amount" : 금액, "qty" : 수량. | 'amount' | | exchange | 'MrkcondExchangeType' | 거래소구분. "krx" , "nxt" , "all" . | 'all' | 시장구분. "all" , "kospi" , "kosdaq" . 매매구분. "net_buy" : 순매수, "buy" : 매수, "sell" : 매도. 금액수량구분. "amount" : 금액, "qty" : 수량. 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | AfterCloseInvestorTrading | 장마감후투자자별매매 리스트 AfterCloseInvestorTrading . | 장마감후투자자별매매 리스트 AfterCloseInvestorTrading . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_afterclose_investor_trading( self, market_type: "MrktType3", trade_type: "AfterTradeType", amount_qty_type: "AfterAmtQtyType" = "amount", exchange: "MrkcondExchangeType" = "all", ) -> AfterCloseInvestorTrading: """장마감 후 투자자별 매매 상위 종목을 조회한다 (ka10066). Args: market_type: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. trade_type: 매매구분. ``"net_buy"``: 순매수, ``"buy"``: 매수, ``"sell"``: 매도. amount_qty_type: 금액수량구분. ``"amount"``: 금액, ``"qty"``: 수량. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 장마감후투자자별매매 리스트 ``AfterCloseInvestorTrading``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._MRKCOND_PATH, { "mrkt_tp": _MRKT_TYPE3_CODE[market_type], "amt_qty_tp": _AFTER_AMT_QTY_CODE[amount_qty_type], "trde_tp": _AFTER_TRADE_TYPE_CODE[trade_type], "stex_tp": _MRKCOND_EXCHANGE_CODE[exchange], }, headers=self._headers("ka10066"), )) items = [ AfterCloseInvestorItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), flu_rt=item.get("flu_rt", ""), trde_qty=item.get("trde_qty", ""), ind_invsr=item.get("ind_invsr", ""), frgnr_invsr=item.get("frgnr_invsr", ""), orgn=item.get("orgn", ""), ) for item in raw.get("opaf_invsr_trde", []) ] return AfterCloseInvestorTrading(items=items) ``` #### get_afterhours_orderbook ¶ ``` get_afterhours_orderbook(stock_code: str) -> AfterhoursOrderbook ``` 시간외단일가 호가 및 현재가를 조회한다 (ka10087). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 종목코드 (6자리). | required | 종목코드 (6자리). Returns: | Type | Description | | --- | --- | | AfterhoursOrderbook | 시간외단일가 호가 AfterhoursOrderbook . | 시간외단일가 호가 AfterhoursOrderbook . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_afterhours_orderbook(self, stock_code: str) -> AfterhoursOrderbook: """시간외단일가 호가 및 현재가를 조회한다 (ka10087). Args: stock_code: 종목코드 (6자리). Returns: 시간외단일가 호가 ``AfterhoursOrderbook``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._MRKCOND_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10087"), )) return AfterhoursOrderbook( base_time=raw.get("bid_req_base_tm", ""), ovt_cur_prc=raw.get("ovt_sigpric_cur_prc", ""), ovt_flu_rt=raw.get("ovt_sigpric_flu_rt", ""), ovt_acc_trde_qty=raw.get("ovt_sigpric_acc_trde_qty", ""), ovt_sell_tot=raw.get("ovt_sigpric_sel_bid_tot_req", ""), ovt_buy_tot=raw.get("ovt_sigpric_buy_bid_tot_req", ""), sel_bid_tot=raw.get("sel_bid_tot_req", ""), buy_bid_tot=raw.get("buy_bid_tot_req", ""), ) ``` #### get_all_sector_index ¶ ``` get_all_sector_index(sector_code: str) -> AllSectorIndex ``` 전 업종 지수를 조회한다 (ka20003). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | sector_code | str | 업종코드 ( "001" : 코스피 종합, "101" : 코스닥 종합). | required | 업종코드 ( "001" : 코스피 종합, "101" : 코스닥 종합). Returns: | Type | Description | | --- | --- | | AllSectorIndex | class: ~kiwoompy.models.AllSectorIndex 인스턴스. | class: ~kiwoompy.models.AllSectorIndex 인스턴스. ``` def get_all_sector_index(self, sector_code: str) -> AllSectorIndex: """전 업종 지수를 조회한다 (ka20003). Args: sector_code: 업종코드 (``"001"``: 코스피 종합, ``"101"``: 코스닥 종합). Returns: :class:`~kiwoompy.models.AllSectorIndex` 인스턴스. """ raw = _check(self._api.post( self._SECT_PATH, {"inds_cd": sector_code}, headers=self._headers("ka20003"), )) items = [ AllSectorIndexItem( stk_cd=it.get("stk_cd", ""), stk_nm=it.get("stk_nm", ""), cur_prc=it.get("cur_prc", ""), pre_sig=it.get("pre_sig", ""), pred_pre=it.get("pred_pre", ""), flu_rt=it.get("flu_rt", ""), trde_qty=it.get("trde_qty", ""), wght=it.get("wght", ""), trde_prica=it.get("trde_prica", ""), upl=it.get("upl", ""), rising=it.get("rising", ""), stdns=it.get("stdns", ""), fall=it.get("fall", ""), lst=it.get("lst", ""), flo_stk_num=it.get("flo_stk_num", ""), ) for it in raw.get("all_inds_idex", []) ] return AllSectorIndex(items=items) ``` #### get_bid_qty_surge ¶ ``` get_bid_qty_surge(market: 'RkinfoMarketType', trade_type: 'RkinfoBidTradeType', sort_type: 'RkinfoSurgeSort2Type', time_min: str, trade_qty_type: str, stock_cond: str, exchange: 'RkinfoStexType') -> BidQtySurge ``` 호가잔량 급증 종목을 조회한다 (ka10021). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'RkinfoMarketType' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | trade_type | 'RkinfoBidTradeType' | 매매구분. "buy" : 매수잔량, "sell" : 매도잔량. | required | | sort_type | 'RkinfoSurgeSort2Type' | 정렬구분. "surge_qty" : 급증량, "surge_ratio" : 급증률. | required | | time_min | str | 시간구분 (분 입력, 예: "30" ). | required | | trade_qty_type | str | 거래량구분. "1" : 천주이상, "5" : 5천주이상, "10" : 만주이상, "50" : 5만주이상. | required | | stock_cond | str | 종목조건 ( "0" ~ "9" ). | required | | exchange | 'RkinfoStexType' | 거래소구분. "krx" , "nxt" , "all" . | required | 시장구분. "all" , "kospi" , "kosdaq" . 매매구분. "buy" : 매수잔량, "sell" : 매도잔량. 정렬구분. "surge_qty" : 급증량, "surge_ratio" : 급증률. 시간구분 (분 입력, 예: "30" ). 거래량구분. "1" : 천주이상, "5" : 5천주이상, "10" : 만주이상, "50" : 5만주이상. 종목조건 ( "0" ~ "9" ). 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | BidQtySurge | 호가잔량급증 BidQtySurge . | 호가잔량급증 BidQtySurge . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_bid_qty_surge( self, market: "RkinfoMarketType", trade_type: "RkinfoBidTradeType", sort_type: "RkinfoSurgeSort2Type", time_min: str, trade_qty_type: str, stock_cond: str, exchange: "RkinfoStexType", ) -> BidQtySurge: """호가잔량 급증 종목을 조회한다 (ka10021). Args: market: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. trade_type: 매매구분. ``"buy"``: 매수잔량, ``"sell"``: 매도잔량. sort_type: 정렬구분. ``"surge_qty"``: 급증량, ``"surge_ratio"``: 급증률. time_min: 시간구분 (분 입력, 예: ``"30"``). trade_qty_type: 거래량구분. ``"1"``: 천주이상, ``"5"``: 5천주이상, ``"10"``: 만주이상, ``"50"``: 5만주이상. stock_cond: 종목조건 (``"0"``~``"9"``). exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 호가잔량급증 ``BidQtySurge``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "mrkt_tp": _RKINFO_MARKET_CODE[market], "trde_tp": _RKINFO_BID_TRADE_CODE[trade_type], "sort_tp": _RKINFO_SURGE_SORT2_CODE[sort_type], "tm_tp": time_min, "trde_qty_tp": trade_qty_type, "stk_cnd": stock_cond, "stex_tp": _RKINFO_STEX_CODE[exchange], }, headers=self._headers("ka10021"), )) items = [ BidQtySurgeItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), pred_pre_sig=item.get("pred_pre_sig", ""), pred_pre=item.get("pred_pre", ""), base_rt=item.get("int", ""), now=item.get("now", ""), sdnin_qty=item.get("sdnin_qty", ""), sdnin_rt=item.get("sdnin_rt", ""), tot_buy_qty=item.get("tot_buy_qty", ""), ) for item in raw.get("bid_req_sdnin", []) ] return BidQtySurge(items=items) ``` #### get_bid_qty_upper ¶ ``` get_bid_qty_upper(market: 'RkinfoMarketType', sort_type: 'RkinfoBidSortType', trade_qty_type: str, stock_cond: str, credit_cond: str, exchange: 'RkinfoStexType') -> BidQtyUpper ``` 호가잔량 상위 종목을 조회한다 (ka10020). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'RkinfoMarketType' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | sort_type | 'RkinfoBidSortType' | 정렬구분. "net_buy_qty" : 순매수잔량순, "net_sell_qty" : 순매도잔량순, "buy_ratio" : 매수비율순, "sell_ratio" : 매도비율순. | required | | trade_qty_type | str | 거래량구분. "0000" : 0주이상, "0010" : 만주이상, "0050" : 5만주이상, "00100" : 10만주이상. | required | | stock_cond | str | 종목조건. "0" : 전체, "1" : 관리종목제외, "5" ~ "9" : 증거금 조건. | required | | credit_cond | str | 신용조건. "0" : 전체, "9" : 신용융자전체, 기타 군별 코드. | required | | exchange | 'RkinfoStexType' | 거래소구분. "krx" , "nxt" , "all" . | required | 시장구분. "all" , "kospi" , "kosdaq" . 정렬구분. "net_buy_qty" : 순매수잔량순, "net_sell_qty" : 순매도잔량순, "buy_ratio" : 매수비율순, "sell_ratio" : 매도비율순. 거래량구분. "0000" : 0주이상, "0010" : 만주이상, "0050" : 5만주이상, "00100" : 10만주이상. 종목조건. "0" : 전체, "1" : 관리종목제외, "5" ~ "9" : 증거금 조건. 신용조건. "0" : 전체, "9" : 신용융자전체, 기타 군별 코드. 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | BidQtyUpper | 호가잔량상위 BidQtyUpper . | 호가잔량상위 BidQtyUpper . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_bid_qty_upper( self, market: "RkinfoMarketType", sort_type: "RkinfoBidSortType", trade_qty_type: str, stock_cond: str, credit_cond: str, exchange: "RkinfoStexType", ) -> BidQtyUpper: """호가잔량 상위 종목을 조회한다 (ka10020). Args: market: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. sort_type: 정렬구분. ``"net_buy_qty"``: 순매수잔량순, ``"net_sell_qty"``: 순매도잔량순, ``"buy_ratio"``: 매수비율순, ``"sell_ratio"``: 매도비율순. trade_qty_type: 거래량구분. ``"0000"``: 0주이상, ``"0010"``: 만주이상, ``"0050"``: 5만주이상, ``"00100"``: 10만주이상. stock_cond: 종목조건. ``"0"``: 전체, ``"1"``: 관리종목제외, ``"5"``~``"9"``: 증거금 조건. credit_cond: 신용조건. ``"0"``: 전체, ``"9"``: 신용융자전체, 기타 군별 코드. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 호가잔량상위 ``BidQtyUpper``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "mrkt_tp": _RKINFO_MARKET_CODE[market], "sort_tp": _RKINFO_BID_SORT_CODE[sort_type], "trde_qty_tp": trade_qty_type, "stk_cnd": stock_cond, "crd_cnd": credit_cond, "stex_tp": _RKINFO_STEX_CODE[exchange], }, headers=self._headers("ka10020"), )) items = [ BidQtyUpperItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), pred_pre_sig=item.get("pred_pre_sig", ""), pred_pre=item.get("pred_pre", ""), trde_qty=item.get("trde_qty", ""), tot_sel_req=item.get("tot_sel_req", ""), tot_buy_req=item.get("tot_buy_req", ""), netprps_req=item.get("netprps_req", ""), buy_rt=item.get("buy_rt", ""), ) for item in raw.get("bid_req_upper", []) ] return BidQtyUpper(items=items) ``` #### get_broker_instant_volume ¶ ``` get_broker_instant_volume(broker_code: str, market_type: BrokerMarketType = 'all', stock_code: str = '', volume_type: str = '0', price_type: str = '0', exchange: 'MrkcondExchangeType' = 'all') -> BrokerInstantVolume ``` 특정 거래원의 순간거래량을 조회한다 (ka10052). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | broker_code | str | 회원사코드 (3자리). get_broker_list() 로 조회 가능. | required | | market_type | BrokerMarketType | 시장구분. "all" : 전체, "kospi" : 코스피, "kosdaq" : 코스닥, "single" : 종목. | 'all' | | stock_code | str | 종목코드. market_type="single" 일 때 사용. | '' | | volume_type | str | 수량구분. "0" : 전체, "1" : 1000주 이상 등. | '0' | | price_type | str | 가격구분. "0" : 전체, "1" : 1천원 미만 등. | '0' | | exchange | 'MrkcondExchangeType' | 거래소구분. "krx" , "nxt" , "all" . | 'all' | 회원사코드 (3자리). get_broker_list() 로 조회 가능. 시장구분. "all" : 전체, "kospi" : 코스피, "kosdaq" : 코스닥, "single" : 종목. 종목코드. market_type="single" 일 때 사용. 수량구분. "0" : 전체, "1" : 1000주 이상 등. 가격구분. "0" : 전체, "1" : 1천원 미만 등. 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | BrokerInstantVolume | 거래원순간거래량 리스트 BrokerInstantVolume . | 거래원순간거래량 리스트 BrokerInstantVolume . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_broker_instant_volume( self, broker_code: str, market_type: BrokerMarketType = "all", stock_code: str = "", volume_type: str = "0", price_type: str = "0", exchange: "MrkcondExchangeType" = "all", ) -> BrokerInstantVolume: """특정 거래원의 순간거래량을 조회한다 (ka10052). Args: broker_code: 회원사코드 (3자리). ``get_broker_list()``로 조회 가능. market_type: 시장구분. ``"all"``: 전체, ``"kospi"``: 코스피, ``"kosdaq"``: 코스닥, ``"single"``: 종목. stock_code: 종목코드. ``market_type="single"``일 때 사용. volume_type: 수량구분. ``"0"``: 전체, ``"1"``: 1000주 이상 등. price_type: 가격구분. ``"0"``: 전체, ``"1"``: 1천원 미만 등. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 거래원순간거래량 리스트 ``BrokerInstantVolume``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, { "mmcm_cd": broker_code, "stk_cd": stock_code, "mrkt_tp": _BROKER_MARKET_CODE[market_type], "qty_tp": volume_type, "pric_tp": price_type, "stex_tp": _MRKCOND_EXCHANGE_CODE[exchange], }, headers=self._headers("ka10052"), )) items = [ BrokerInstantVolumeItem( tm=item.get("tm", ""), stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), trde_ori_nm=item.get("trde_ori_nm", ""), tp=item.get("tp", ""), mont_trde_qty=item.get("mont_trde_qty", ""), acc_netprps=item.get("acc_netprps", ""), cur_prc=item.get("cur_prc", ""), flu_rt=item.get("flu_rt", ""), ) for item in raw.get("trde_ori_mont_trde_qty", []) ] return BrokerInstantVolume(items=items) ``` #### get_broker_list ¶ ``` get_broker_list() -> BrokerList ``` 키움 API 회원사 리스트를 조회한다 (ka10102). Returns: | Type | Description | | --- | --- | | BrokerList | 회원사 리스트 BrokerList . | 회원사 리스트 BrokerList . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_broker_list(self) -> BrokerList: """키움 API 회원사 리스트를 조회한다 (ka10102). Returns: 회원사 리스트 ``BrokerList``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, {}, headers=self._headers("ka10102"), )) items = [ BrokerItem( code=item.get("code", ""), name=item.get("name", ""), gb=item.get("gb", ""), ) for item in raw.get("list", []) ] return BrokerList(items=items) ``` #### get_broker_stock_trend ¶ ``` get_broker_stock_trend(broker_code: str, stock_code: str, start_date: str, end_date: str) -> BrokerStockTrend ``` 특정 증권사의 종목별 매매동향을 조회한다 (ka10078). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | broker_code | str | 회원사코드 (3자리). get_broker_list() 로 조회 가능. | required | | stock_code | str | 거래소별 종목코드. | required | | start_date | str | 시작일자 ( YYYYMMDD 형식). | required | | end_date | str | 종료일자 ( YYYYMMDD 형식). | required | 회원사코드 (3자리). get_broker_list() 로 조회 가능. 거래소별 종목코드. 시작일자 ( YYYYMMDD 형식). 종료일자 ( YYYYMMDD 형식). Returns: | Type | Description | | --- | --- | | BrokerStockTrend | 증권사별종목매매동향 리스트 BrokerStockTrend . | 증권사별종목매매동향 리스트 BrokerStockTrend . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_broker_stock_trend( self, broker_code: str, stock_code: str, start_date: str, end_date: str, ) -> BrokerStockTrend: """특정 증권사의 종목별 매매동향을 조회한다 (ka10078). Args: broker_code: 회원사코드 (3자리). ``get_broker_list()``로 조회 가능. stock_code: 거래소별 종목코드. start_date: 시작일자 (``YYYYMMDD`` 형식). end_date: 종료일자 (``YYYYMMDD`` 형식). Returns: 증권사별종목매매동향 리스트 ``BrokerStockTrend``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._MRKCOND_PATH, { "mmcm_cd": broker_code, "stk_cd": stock_code, "strt_dt": start_date, "end_dt": end_date, }, headers=self._headers("ka10078"), )) items = [ BrokerStockTrendItem( dt=item.get("dt", ""), cur_prc=item.get("cur_prc", ""), flu_rt=item.get("flu_rt", ""), acc_trde_qty=item.get("acc_trde_qty", ""), netprps_qty=item.get("netprps_qty", ""), buy_qty=item.get("buy_qty", ""), sell_qty=item.get("sell_qty", ""), ) for item in raw.get("sec_stk_trde_trend", []) ] return BrokerStockTrend(items=items) ``` #### get_broker_supply_analysis ¶ ``` get_broker_supply_analysis(stock_code: str, broker_code: str, start_date: str, end_date: str, period: str = '5', sort_base: str = '1', query_date_type: str = '0', time_point_type: str = '0', exchange: 'MrkcondExchangeType' = 'all') -> BrokerSupplyAnalysis ``` 특정 거래원의 종목 매물대 분석 데이터를 조회한다 (ka10043). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | | broker_code | str | 회원사코드 (3자리). get_broker_list() 로 조회 가능. | required | | start_date | str | 시작일자 ( YYYYMMDD 형식). | required | | end_date | str | 종료일자 ( YYYYMMDD 형식). | required | | period | str | 기간. "5" : 5일, "10" : 10일, "20" : 20일, "40" : 40일, "60" : 60일, "120" : 120일. | '5' | | sort_base | str | 정렬기준. "1" : 종가순, "2" : 날짜순. | '1' | | query_date_type | str | 조회기간구분. "0" : 기간으로 조회, "1" : 시작·종료일로 조회. | '0' | | time_point_type | str | 시점구분. "0" : 당일, "1" : 전일. | '0' | | exchange | 'MrkcondExchangeType' | 거래소구분. "krx" , "nxt" , "all" . | 'all' | 거래소별 종목코드. 회원사코드 (3자리). get_broker_list() 로 조회 가능. 시작일자 ( YYYYMMDD 형식). 종료일자 ( YYYYMMDD 형식). 기간. "5" : 5일, "10" : 10일, "20" : 20일, "40" : 40일, "60" : 60일, "120" : 120일. 정렬기준. "1" : 종가순, "2" : 날짜순. 조회기간구분. "0" : 기간으로 조회, "1" : 시작·종료일로 조회. 시점구분. "0" : 당일, "1" : 전일. 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | BrokerSupplyAnalysis | 거래원매물대분석 리스트 BrokerSupplyAnalysis . | 거래원매물대분석 리스트 BrokerSupplyAnalysis . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_broker_supply_analysis( self, stock_code: str, broker_code: str, start_date: str, end_date: str, period: str = "5", sort_base: str = "1", query_date_type: str = "0", time_point_type: str = "0", exchange: "MrkcondExchangeType" = "all", ) -> BrokerSupplyAnalysis: """특정 거래원의 종목 매물대 분석 데이터를 조회한다 (ka10043). Args: stock_code: 거래소별 종목코드. broker_code: 회원사코드 (3자리). ``get_broker_list()``로 조회 가능. start_date: 시작일자 (``YYYYMMDD`` 형식). end_date: 종료일자 (``YYYYMMDD`` 형식). period: 기간. ``"5"``: 5일, ``"10"``: 10일, ``"20"``: 20일, ``"40"``: 40일, ``"60"``: 60일, ``"120"``: 120일. sort_base: 정렬기준. ``"1"``: 종가순, ``"2"``: 날짜순. query_date_type: 조회기간구분. ``"0"``: 기간으로 조회, ``"1"``: 시작·종료일로 조회. time_point_type: 시점구분. ``"0"``: 당일, ``"1"``: 전일. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 거래원매물대분석 리스트 ``BrokerSupplyAnalysis``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, { "stk_cd": stock_code, "strt_dt": start_date, "end_dt": end_date, "qry_dt_tp": query_date_type, "pot_tp": time_point_type, "dt": period, "sort_base": sort_base, "mmcm_cd": broker_code, "stex_tp": _MRKCOND_EXCHANGE_CODE[exchange], }, headers=self._headers("ka10043"), )) items = [ BrokerSupplyItem( dt=item.get("dt", ""), close_pric=item.get("close_pric", ""), sel_qty=item.get("sel_qty", ""), buy_qty=item.get("buy_qty", ""), netprps_qty=item.get("netprps_qty", ""), trde_wght=item.get("trde_wght", ""), ) for item in raw.get("trde_ori_prps_anly", []) ] return BrokerSupplyAnalysis(items=items) ``` #### get_broker_trade_upper ¶ ``` get_broker_trade_upper(broker_code: str, trade_qty_type: str, trade_type: NetTradeType, period: str, exchange: 'RkinfoStexType') -> BrokerTradeUpper ``` 증권사별 매매 상위 종목을 조회한다 (ka10039). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | broker_code | str | 회원사코드 (ka10102로 조회, 예: "001" ). | required | | trade_qty_type | str | 거래량구분 ( "0" , "5" , "10" 등). | required | | trade_type | NetTradeType | 매매구분. "net_buy" : 순매수, "net_sell" : 순매도. | required | | period | str | 기간. "1" : 전일, "5" : 5일, "10" : 10일, "60" : 60일. | required | | exchange | 'RkinfoStexType' | 거래소구분. "krx" , "nxt" , "all" . | required | 회원사코드 (ka10102로 조회, 예: "001" ). 거래량구분 ( "0" , "5" , "10" 등). 매매구분. "net_buy" : 순매수, "net_sell" : 순매도. 기간. "1" : 전일, "5" : 5일, "10" : 10일, "60" : 60일. 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | BrokerTradeUpper | 증권사별매매상위 BrokerTradeUpper . | 증권사별매매상위 BrokerTradeUpper . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_broker_trade_upper( self, broker_code: str, trade_qty_type: str, trade_type: NetTradeType, period: str, exchange: "RkinfoStexType", ) -> BrokerTradeUpper: """증권사별 매매 상위 종목을 조회한다 (ka10039). Args: broker_code: 회원사코드 (ka10102로 조회, 예: ``"001"``). trade_qty_type: 거래량구분 (``"0"``, ``"5"``, ``"10"`` 등). trade_type: 매매구분. ``"net_buy"``: 순매수, ``"net_sell"``: 순매도. period: 기간. ``"1"``: 전일, ``"5"``: 5일, ``"10"``: 10일, ``"60"``: 60일. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 증권사별매매상위 ``BrokerTradeUpper``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "mmcm_cd": broker_code, "trde_qty_tp": trade_qty_type, "trde_tp": _NET_TRADE_CODE[trade_type], "dt": period, "stex_tp": _RKINFO_STEX_CODE[exchange], }, headers=self._headers("ka10039"), )) items = [ BrokerTradeUpperItem( rank=item.get("rank", ""), stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), prid_stkpc_flu=item.get("prid_stkpc_flu", ""), flu_rt=item.get("flu_rt", ""), prid_trde_qty=item.get("prid_trde_qty", ""), netprps=item.get("netprps", ""), buy_trde_qty=item.get("buy_trde_qty", ""), sel_trde_qty=item.get("sel_trde_qty", ""), netprps_amt=item.get("netprps_amt", ""), buy_amt=item.get("buy_amt", ""), sell_amt=item.get("sell_amt", ""), ) for item in raw.get("sec_trde_upper", []) ] return BrokerTradeUpper(items=items) ``` #### get_credit_orderable_quantity ¶ ``` get_credit_orderable_quantity(stock_code: str, price: str = '') -> CreditOrderableQuantity ``` 신용보증금율별주문가능수량을 조회한다 (kt00012). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 종목번호. | required | | price | str | 매수가격. 공백 허용. | '' | 종목번호. 매수가격. 공백 허용. Returns: | Type | Description | | --- | --- | | CreditOrderableQuantity | 신용보증금율별주문가능수량 CreditOrderableQuantity . | 신용보증금율별주문가능수량 CreditOrderableQuantity . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_credit_orderable_quantity( self, stock_code: str, price: str = "", ) -> CreditOrderableQuantity: """신용보증금율별주문가능수량을 조회한다 (kt00012). Args: stock_code: 종목번호. price: 매수가격. 공백 허용. Returns: 신용보증금율별주문가능수량 ``CreditOrderableQuantity``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {"stk_cd": stock_code, "uv": price}, headers=self._headers("kt00012"), )) return CreditOrderableQuantity( stk_assr_rt=raw.get("stk_assr_rt", ""), stk_assr_rt_nm=raw.get("stk_assr_rt_nm", ""), assr_30ord_alow_amt=raw.get("assr_30ord_alow_amt", ""), assr_30ord_alowq=raw.get("assr_30ord_alowq", ""), assr_40ord_alow_amt=raw.get("assr_40ord_alow_amt", ""), assr_40ord_alowq=raw.get("assr_40ord_alowq", ""), assr_50ord_alow_amt=raw.get("assr_50ord_alow_amt", ""), assr_50ord_alowq=raw.get("assr_50ord_alowq", ""), assr_60ord_alow_amt=raw.get("assr_60ord_alow_amt", ""), assr_60ord_alowq=raw.get("assr_60ord_alowq", ""), entr=raw.get("entr", ""), repl_amt=raw.get("repl_amt", ""), ord_alowa=raw.get("ord_alowa", ""), out_alowa=raw.get("out_alowa", ""), min_amt=raw.get("min_amt", ""), ) ``` #### get_credit_ratio_upper ¶ ``` get_credit_ratio_upper(market: 'RkinfoMarketType', trade_qty_type: str, stock_cond: str, updown_incls: FlagType, credit_cond: str, exchange: 'RkinfoStexType') -> CreditRatioUpper ``` 신용비율 상위 종목을 조회한다 (ka10033). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'RkinfoMarketType' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | trade_qty_type | str | 거래량구분 ( "0" , "10" 등). | required | | stock_cond | str | 종목조건 ( "0" ~ "9" ). | required | | updown_incls | FlagType | 상하한포함. "off" : 미포함, "on" : 포함. | required | | credit_cond | str | 신용조건 ( "0" , "9" 등). | required | | exchange | 'RkinfoStexType' | 거래소구분. "krx" , "nxt" , "all" . | required | 시장구분. "all" , "kospi" , "kosdaq" . 거래량구분 ( "0" , "10" 등). 종목조건 ( "0" ~ "9" ). 상하한포함. "off" : 미포함, "on" : 포함. 신용조건 ( "0" , "9" 등). 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | CreditRatioUpper | 신용비율상위 CreditRatioUpper . | 신용비율상위 CreditRatioUpper . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_credit_ratio_upper( self, market: "RkinfoMarketType", trade_qty_type: str, stock_cond: str, updown_incls: FlagType, credit_cond: str, exchange: "RkinfoStexType", ) -> CreditRatioUpper: """신용비율 상위 종목을 조회한다 (ka10033). Args: market: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. trade_qty_type: 거래량구분 (``"0"``, ``"10"`` 등). stock_cond: 종목조건 (``"0"``~``"9"``). updown_incls: 상하한포함. ``"off"``: 미포함, ``"on"``: 포함. credit_cond: 신용조건 (``"0"``, ``"9"`` 등). exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 신용비율상위 ``CreditRatioUpper``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "mrkt_tp": _RKINFO_MARKET_CODE[market], "trde_qty_tp": trade_qty_type, "stk_cnd": stock_cond, "updown_incls": _FLAG_CODE[updown_incls], "crd_cnd": credit_cond, "stex_tp": _RKINFO_STEX_CODE[exchange], }, headers=self._headers("ka10033"), )) items = [ CreditRatioUpperItem( stk_infr=item.get("stk_infr", ""), stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), pred_pre_sig=item.get("pred_pre_sig", ""), pred_pre=item.get("pred_pre", ""), flu_rt=item.get("flu_rt", ""), crd_rt=item.get("crd_rt", ""), sel_req=item.get("sel_req", ""), buy_req=item.get("buy_req", ""), now_trde_qty=item.get("now_trde_qty", ""), ) for item in raw.get("crd_rt_upper", []) ] return CreditRatioUpper(items=items) ``` #### get_credit_trading_trend ¶ ``` get_credit_trading_trend(stock_code: str, date: str, query_type: 'CreditQueryType' = 'loan') -> CreditTradingTrend ``` 신용 매매동향(융자·대주 잔고 추이)을 조회한다 (ka10013). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | | date | str | 조회일자 ( YYYYMMDD 형식). | required | | query_type | 'CreditQueryType' | 조회구분. "loan" : 융자, "short" : 대주. | 'loan' | 거래소별 종목코드. 조회일자 ( YYYYMMDD 형식). 조회구분. "loan" : 융자, "short" : 대주. Returns: | Type | Description | | --- | --- | | CreditTradingTrend | 신용매매동향 리스트 CreditTradingTrend . | 신용매매동향 리스트 CreditTradingTrend . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_credit_trading_trend( self, stock_code: str, date: str, query_type: "CreditQueryType" = "loan", ) -> CreditTradingTrend: """신용 매매동향(융자·대주 잔고 추이)을 조회한다 (ka10013). Args: stock_code: 거래소별 종목코드. date: 조회일자 (``YYYYMMDD`` 형식). query_type: 조회구분. ``"loan"``: 융자, ``"short"``: 대주. Returns: 신용매매동향 리스트 ``CreditTradingTrend``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, { "stk_cd": stock_code, "dt": date, "qry_tp": _CREDIT_QUERY_CODE[query_type], }, headers=self._headers("ka10013"), )) items = [ CreditTradingItem( dt=item.get("dt", ""), cur_prc=item.get("cur_prc", ""), trde_qty=item.get("trde_qty", ""), new=item.get("new", ""), rpya=item.get("rpya", ""), remn=item.get("remn", ""), remn_rt=item.get("remn_rt", ""), ) for item in raw.get("crd_trde_trend", []) ] return CreditTradingTrend(items=items) ``` #### get_daily_account_return ¶ ``` get_daily_account_return(from_dt: str, to_dt: str) -> DailyAccountReturn ``` 일별계좌수익률상세현황을 조회한다 (kt00016). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | from_dt | str | 평가시작일 ( YYYYMMDD 형식). | required | | to_dt | str | 평가종료일 ( YYYYMMDD 형식). | required | 평가시작일 ( YYYYMMDD 형식). 평가종료일 ( YYYYMMDD 형식). Returns: | Type | Description | | --- | --- | | DailyAccountReturn | 일별계좌수익률상세현황 DailyAccountReturn . | 일별계좌수익률상세현황 DailyAccountReturn . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_daily_account_return( self, from_dt: str, to_dt: str, ) -> DailyAccountReturn: """일별계좌수익률상세현황을 조회한다 (kt00016). Args: from_dt: 평가시작일 (``YYYYMMDD`` 형식). to_dt: 평가종료일 (``YYYYMMDD`` 형식). Returns: 일별계좌수익률상세현황 ``DailyAccountReturn``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {"fr_dt": from_dt, "to_dt": to_dt}, headers=self._headers("kt00016"), )) return DailyAccountReturn( mang_empno=raw.get("mang_empno", ""), mngr_nm=raw.get("mngr_nm", ""), dept_nm=raw.get("dept_nm", ""), entr_fr=raw.get("entr_fr", ""), entr_to=raw.get("entr_to", ""), scrt_evlt_amt_fr=raw.get("scrt_evlt_amt_fr", ""), scrt_evlt_amt_to=raw.get("scrt_evlt_amt_to", ""), tot_amt_fr=raw.get("tot_amt_fr", ""), tot_amt_to=raw.get("tot_amt_to", ""), evltv_prft=raw.get("evltv_prft", ""), prft_rt=raw.get("prft_rt", ""), tern_rt=raw.get("tern_rt", ""), termin_tot_trns=raw.get("termin_tot_trns", ""), termin_tot_pymn=raw.get("termin_tot_pymn", ""), ) ``` #### get_daily_balance_return ¶ ``` get_daily_balance_return(query_date: str) -> DailyBalanceReturn ``` 일별잔고수익률을 조회한다 (ka01690). 모의투자를 지원하지 않는 TR이다. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | query_date | str | 조회일자 ( YYYYMMDD 형식). | required | 조회일자 ( YYYYMMDD 형식). Returns: | Type | Description | | --- | --- | | DailyBalanceReturn | 일별잔고수익률 DailyBalanceReturn . | 일별잔고수익률 DailyBalanceReturn . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_daily_balance_return(self, query_date: str) -> DailyBalanceReturn: """일별잔고수익률을 조회한다 (ka01690). 모의투자를 지원하지 않는 TR이다. Args: query_date: 조회일자 (``YYYYMMDD`` 형식). Returns: 일별잔고수익률 ``DailyBalanceReturn``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {"qry_dt": query_date}, headers=self._headers("ka01690"), )) items = [ DailyBalanceReturnItem( cur_prc=item.get("cur_prc", ""), stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), rmnd_qty=item.get("rmnd_qty", ""), buy_uv=item.get("buy_uv", ""), buy_wght=item.get("buy_wght", ""), evltv_prft=item.get("evltv_prft", ""), prft_rt=item.get("prft_rt", ""), evlt_amt=item.get("evlt_amt", ""), evlt_wght=item.get("evlt_wght", ""), ) for item in raw.get("day_bal_rt", []) ] return DailyBalanceReturn( dt=raw.get("dt", ""), tot_buy_amt=raw.get("tot_buy_amt", ""), tot_evlt_amt=raw.get("tot_evlt_amt", ""), tot_evltv_prft=raw.get("tot_evltv_prft", ""), tot_prft_rt=raw.get("tot_prft_rt", ""), dbst_bal=raw.get("dbst_bal", ""), day_stk_asst=raw.get("day_stk_asst", ""), items=items, ) ``` #### get_daily_estimated_asset ¶ ``` get_daily_estimated_asset(start_dt: str, end_dt: str) -> list[DailyEstimatedAssetItem] ``` 일별추정예탁자산현황을 조회한다 (kt00002). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | start_dt | str | 시작조회기간 ( YYYYMMDD 형식). | required | | end_dt | str | 종료조회기간 ( YYYYMMDD 형식). | required | 시작조회기간 ( YYYYMMDD 형식). 종료조회기간 ( YYYYMMDD 형식). Returns: | Type | Description | | --- | --- | | list [ DailyEstimatedAssetItem ] | 일별추정예탁자산 목록. | 일별추정예탁자산 목록. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_daily_estimated_asset( self, start_dt: str, end_dt: str, ) -> list[DailyEstimatedAssetItem]: """일별추정예탁자산현황을 조회한다 (kt00002). Args: start_dt: 시작조회기간 (``YYYYMMDD`` 형식). end_dt: 종료조회기간 (``YYYYMMDD`` 형식). Returns: 일별추정예탁자산 목록. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {"start_dt": start_dt, "end_dt": end_dt}, headers=self._headers("kt00002"), )) return [ DailyEstimatedAssetItem( dt=item.get("dt", ""), entr=item.get("entr", ""), grnt_use_amt=item.get("grnt_use_amt", ""), crd_loan=item.get("crd_loan", ""), ls_grnt=item.get("ls_grnt", ""), repl_amt=item.get("repl_amt", ""), prsm_dpst_aset_amt=item.get("prsm_dpst_aset_amt", ""), prsm_dpst_aset_amt_bncr_skip=item.get("prsm_dpst_aset_amt_bncr_skip", ""), ) for item in raw.get("daly_prsm_dpst_aset_amt_prst", []) ] ``` #### get_daily_institution_stocks ¶ ``` get_daily_institution_stocks(start_date: str, end_date: str, trade_type: 'InstitutionTradeType', market_type: 'MrktType3', exchange: 'MrkcondExchangeType' = 'all') -> DailyInstitutionStocks ``` 기관 순매도·순매수 상위 종목을 조회한다 (ka10044). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | start_date | str | 시작일자 ( YYYYMMDD 형식). | required | | end_date | str | 종료일자 ( YYYYMMDD 형식). | required | | trade_type | 'InstitutionTradeType' | 매매구분. "sell" : 순매도, "buy" : 순매수. | required | | market_type | 'MrktType3' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | exchange | 'MrkcondExchangeType' | 거래소구분. "krx" , "nxt" , "all" . | 'all' | 시작일자 ( YYYYMMDD 형식). 종료일자 ( YYYYMMDD 형식). 매매구분. "sell" : 순매도, "buy" : 순매수. 시장구분. "all" , "kospi" , "kosdaq" . 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | DailyInstitutionStocks | 일별기관매매종목 리스트 DailyInstitutionStocks . | 일별기관매매종목 리스트 DailyInstitutionStocks . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_daily_institution_stocks( self, start_date: str, end_date: str, trade_type: "InstitutionTradeType", market_type: "MrktType3", exchange: "MrkcondExchangeType" = "all", ) -> DailyInstitutionStocks: """기관 순매도·순매수 상위 종목을 조회한다 (ka10044). Args: start_date: 시작일자 (``YYYYMMDD`` 형식). end_date: 종료일자 (``YYYYMMDD`` 형식). trade_type: 매매구분. ``"sell"``: 순매도, ``"buy"``: 순매수. market_type: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 일별기관매매종목 리스트 ``DailyInstitutionStocks``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._MRKCOND_PATH, { "strt_dt": start_date, "end_dt": end_date, "trde_tp": _INSTITUTION_TRADE_CODE[trade_type], "mrkt_tp": _MRKT_TYPE3_CODE[market_type], "stex_tp": _MRKCOND_EXCHANGE_CODE[exchange], }, headers=self._headers("ka10044"), )) items = [ DailyInstitutionStockItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), netprps_qty=item.get("netprps_qty", ""), netprps_amt=item.get("netprps_amt", ""), ) for item in raw.get("daly_orgn_trde_stk", []) ] return DailyInstitutionStocks(items=items) ``` #### get_daily_main_broker ¶ ``` get_daily_main_broker(stock_code: str) -> DailyMainBroker ``` 종목의 당일 주요 거래원(매도/매수 상위 5개)을 조회한다 (ka10040). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 종목코드 (예: "005930" ). | required | 종목코드 (예: "005930" ). Returns: | Type | Description | | --- | --- | | DailyMainBroker | 당일주요거래원 DailyMainBroker . | 당일주요거래원 DailyMainBroker . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_daily_main_broker(self, stock_code: str) -> DailyMainBroker: """종목의 당일 주요 거래원(매도/매수 상위 5개)을 조회한다 (ka10040). Args: stock_code: 종목코드 (예: ``"005930"``). Returns: 당일주요거래원 ``DailyMainBroker``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10040"), )) exit_items = [ DailyMainBrokerEntry( sel_scesn_tm=item.get("sel_scesn_tm", ""), sell_qty=item.get("sell_qty", ""), sel_upper_scesn_ori=item.get("sel_upper_scesn_ori", ""), buy_scesn_tm=item.get("buy_scesn_tm", ""), buy_qty=item.get("buy_qty", ""), buy_upper_scesn_ori=item.get("buy_upper_scesn_ori", ""), qry_dt=item.get("qry_dt", ""), qry_tm=item.get("qry_tm", ""), ) for item in raw.get("tdy_main_trde_ori", []) ] return DailyMainBroker( sel_trde_ori_1=raw.get("sel_trde_ori_1", ""), sel_trde_ori_qty_1=raw.get("sel_trde_ori_qty_1", ""), sel_trde_ori_irds_1=raw.get("sel_trde_ori_irds_1", ""), buy_trde_ori_1=raw.get("buy_trde_ori_1", ""), buy_trde_ori_qty_1=raw.get("buy_trde_ori_qty_1", ""), buy_trde_ori_irds_1=raw.get("buy_trde_ori_irds_1", ""), sel_trde_ori_2=raw.get("sel_trde_ori_2", ""), sel_trde_ori_qty_2=raw.get("sel_trde_ori_qty_2", ""), sel_trde_ori_irds_2=raw.get("sel_trde_ori_irds_2", ""), buy_trde_ori_2=raw.get("buy_trde_ori_2", ""), buy_trde_ori_qty_2=raw.get("buy_trde_ori_qty_2", ""), buy_trde_ori_irds_2=raw.get("buy_trde_ori_irds_2", ""), sel_trde_ori_3=raw.get("sel_trde_ori_3", ""), sel_trde_ori_qty_3=raw.get("sel_trde_ori_qty_3", ""), sel_trde_ori_irds_3=raw.get("sel_trde_ori_irds_3", ""), buy_trde_ori_3=raw.get("buy_trde_ori_3", ""), buy_trde_ori_qty_3=raw.get("buy_trde_ori_qty_3", ""), buy_trde_ori_irds_3=raw.get("buy_trde_ori_irds_3", ""), sel_trde_ori_4=raw.get("sel_trde_ori_4", ""), sel_trde_ori_qty_4=raw.get("sel_trde_ori_qty_4", ""), sel_trde_ori_irds_4=raw.get("sel_trde_ori_irds_4", ""), buy_trde_ori_4=raw.get("buy_trde_ori_4", ""), buy_trde_ori_qty_4=raw.get("buy_trde_ori_qty_4", ""), buy_trde_ori_irds_4=raw.get("buy_trde_ori_irds_4", ""), sel_trde_ori_5=raw.get("sel_trde_ori_5", ""), sel_trde_ori_qty_5=raw.get("sel_trde_ori_qty_5", ""), sel_trde_ori_irds_5=raw.get("sel_trde_ori_irds_5", ""), buy_trde_ori_5=raw.get("buy_trde_ori_5", ""), buy_trde_ori_qty_5=raw.get("buy_trde_ori_qty_5", ""), buy_trde_ori_irds_5=raw.get("buy_trde_ori_irds_5", ""), frgn_sel_prsm_sum=raw.get("frgn_sel_prsm_sum", ""), frgn_sel_prsm_sum_chang=raw.get("frgn_sel_prsm_sum_chang", ""), frgn_buy_prsm_sum=raw.get("frgn_buy_prsm_sum", ""), frgn_buy_prsm_sum_chang=raw.get("frgn_buy_prsm_sum_chang", ""), items=exit_items, ) ``` #### get_daily_prices ¶ ``` get_daily_prices(stock_code: str, query_date: str, display_type: 'DisplayType' = 'qty') -> DailyPrices ``` 일별 주가 및 투자자별 순매수 데이터를 조회한다 (ka10086). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | | query_date | str | 조회일자 ( YYYYMMDD 형식). | required | | display_type | 'DisplayType' | 표시구분. "qty" : 수량, "amount" : 금액(백만원). | 'qty' | 거래소별 종목코드. 조회일자 ( YYYYMMDD 형식). 표시구분. "qty" : 수량, "amount" : 금액(백만원). Returns: | Type | Description | | --- | --- | | DailyPrices | 일별주가 리스트 DailyPrices . | 일별주가 리스트 DailyPrices . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_daily_prices( self, stock_code: str, query_date: str, display_type: "DisplayType" = "qty", ) -> DailyPrices: """일별 주가 및 투자자별 순매수 데이터를 조회한다 (ka10086). Args: stock_code: 거래소별 종목코드. query_date: 조회일자 (``YYYYMMDD`` 형식). display_type: 표시구분. ``"qty"``: 수량, ``"amount"``: 금액(백만원). Returns: 일별주가 리스트 ``DailyPrices``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._MRKCOND_PATH, { "stk_cd": stock_code, "qry_dt": query_date, "indc_tp": _DISPLAY_TYPE_CODE[display_type], }, headers=self._headers("ka10086"), )) items = [ DailyPriceItem( date=item.get("date", ""), open_pric=item.get("open_pric", ""), high_pric=item.get("high_pric", ""), low_pric=item.get("low_pric", ""), close_pric=item.get("close_pric", ""), flu_rt=item.get("flu_rt", ""), trde_qty=item.get("trde_qty", ""), for_netprps=item.get("for_netprps", ""), orgn_netprps=item.get("orgn_netprps", ""), ind_netprps=item.get("ind_netprps", ""), for_poss=item.get("for_poss", ""), for_wght=item.get("for_wght", ""), crd_remn_rt=item.get("crd_remn_rt", ""), ) for item in raw.get("daly_stkpc", []) ] return DailyPrices(items=items) ``` #### get_daily_realized_profit ¶ ``` get_daily_realized_profit(start_dt: str, end_dt: str) -> DailyRealizedProfit ``` 일자별실현손익을 조회한다 (ka10074). 실현손익이 발생한 일자에 대해서만 데이터가 채워진다. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | start_dt | str | 시작일자 ( YYYYMMDD 형식). | required | | end_dt | str | 종료일자 ( YYYYMMDD 형식). | required | 시작일자 ( YYYYMMDD 형식). 종료일자 ( YYYYMMDD 형식). Returns: | Type | Description | | --- | --- | | DailyRealizedProfit | 일자별실현손익 DailyRealizedProfit . | 일자별실현손익 DailyRealizedProfit . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_daily_realized_profit( self, start_dt: str, end_dt: str, ) -> DailyRealizedProfit: """일자별실현손익을 조회한다 (ka10074). 실현손익이 발생한 일자에 대해서만 데이터가 채워진다. Args: start_dt: 시작일자 (``YYYYMMDD`` 형식). end_dt: 종료일자 (``YYYYMMDD`` 형식). Returns: 일자별실현손익 ``DailyRealizedProfit``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {"strt_dt": start_dt, "end_dt": end_dt}, headers=self._headers("ka10074"), )) items = [ DailyRealizedProfitItem( dt=item.get("dt", ""), buy_amt=item.get("buy_amt", ""), sell_amt=item.get("sell_amt", ""), tdy_sel_pl=item.get("tdy_sel_pl", ""), tdy_trde_cmsn=item.get("tdy_trde_cmsn", ""), tdy_trde_tax=item.get("tdy_trde_tax", ""), ) for item in raw.get("dt_rlzt_pl", []) ] return DailyRealizedProfit( tot_buy_amt=raw.get("tot_buy_amt", ""), tot_sell_amt=raw.get("tot_sell_amt", ""), rlzt_pl=raw.get("rlzt_pl", ""), trde_cmsn=raw.get("trde_cmsn", ""), trde_tax=raw.get("trde_tax", ""), items=items, ) ``` #### get_daily_realized_profit_detail ¶ ``` get_daily_realized_profit_detail(stock_code: str) -> DailyRealizedProfitDetail ``` 당일실현손익상세를 조회한다 (ka10077). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 종목코드. | required | 종목코드. Returns: | Type | Description | | --- | --- | | DailyRealizedProfitDetail | 당일실현손익상세 DailyRealizedProfitDetail . | 당일실현손익상세 DailyRealizedProfitDetail . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_daily_realized_profit_detail( self, stock_code: str, ) -> DailyRealizedProfitDetail: """당일실현손익상세를 조회한다 (ka10077). Args: stock_code: 종목코드. Returns: 당일실현손익상세 ``DailyRealizedProfitDetail``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10077"), )) items = [ DailyRealizedProfitDetailItem( stk_nm=item.get("stk_nm", ""), cntr_qty=item.get("cntr_qty", ""), buy_uv=item.get("buy_uv", ""), cntr_pric=item.get("cntr_pric", ""), tdy_sel_pl=item.get("tdy_sel_pl", ""), pl_rt=item.get("pl_rt", ""), tdy_trde_cmsn=item.get("tdy_trde_cmsn", ""), tdy_trde_tax=item.get("tdy_trde_tax", ""), stk_cd=item.get("stk_cd", ""), ) for item in raw.get("tdy_rlzt_pl_dtl", []) ] return DailyRealizedProfitDetail( tdy_rlzt_pl=raw.get("tdy_rlzt_pl", ""), items=items, ) ``` #### get_daily_status ¶ ``` get_daily_status() -> DailyAccountStatus ``` 계좌별당일현황을 조회한다 (kt00017). Returns: | Type | Description | | --- | --- | | DailyAccountStatus | 계좌별당일현황 DailyAccountStatus . | 계좌별당일현황 DailyAccountStatus . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_daily_status(self) -> DailyAccountStatus: """계좌별당일현황을 조회한다 (kt00017). Returns: 계좌별당일현황 ``DailyAccountStatus``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {}, headers=self._headers("kt00017"), )) return DailyAccountStatus( d2_entra=raw.get("d2_entra", ""), gnrl_stk_evlt_amt_d2=raw.get("gnrl_stk_evlt_amt_d2", ""), crd_loan_d2=raw.get("crd_loan_d2", ""), ina_amt=raw.get("ina_amt", ""), outa=raw.get("outa", ""), sell_amt=raw.get("sell_amt", ""), buy_amt=raw.get("buy_amt", ""), cmsn=raw.get("cmsn", ""), tax=raw.get("tax", ""), dvida_amt=raw.get("dvida_amt", ""), ) ``` #### get_daily_top_exit ¶ ``` get_daily_top_exit(stock_code: str) -> DailyTopExit ``` 종목의 당일 상위 이탈원 리스트를 조회한다 (ka10053). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 종목코드 (예: "005930" ). | required | 종목코드 (예: "005930" ). Returns: | Type | Description | | --- | --- | | DailyTopExit | 당일상위이탈원 DailyTopExit . | 당일상위이탈원 DailyTopExit . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_daily_top_exit(self, stock_code: str) -> DailyTopExit: """종목의 당일 상위 이탈원 리스트를 조회한다 (ka10053). Args: stock_code: 종목코드 (예: ``"005930"``). Returns: 당일상위이탈원 ``DailyTopExit``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10053"), )) items = [ DailyTopExitItem( sel_scesn_tm=item.get("sel_scesn_tm", ""), sell_qty=item.get("sell_qty", ""), sel_upper_scesn_ori=item.get("sel_upper_scesn_ori", ""), buy_scesn_tm=item.get("buy_scesn_tm", ""), buy_qty=item.get("buy_qty", ""), buy_upper_scesn_ori=item.get("buy_upper_scesn_ori", ""), qry_dt=item.get("qry_dt", ""), qry_tm=item.get("qry_tm", ""), ) for item in raw.get("tdy_upper_scesn_ori", []) ] return DailyTopExit(items=items) ``` #### get_daily_trade_journal ¶ ``` get_daily_trade_journal(single_stock_type: SingleStockType, cash_credit_type: CashCreditType, base_date: str = '') -> DailyTradeJournal ``` 당일매매일지를 조회한다 (ka10170). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | single_stock_type | SingleStockType | 단주구분. "today_buy_sell" : 당일매수에 대한 당일매도, "today_sell_all" : 당일매도 전체. | required | | cash_credit_type | CashCreditType | 현금신용구분. "all" : 전체, "cash" : 현금매매만, "credit" : 신용매매만. | required | | base_date | str | 기준일자 ( YYYYMMDD 형식). 공백이면 금일 데이터. 최근 2개월까지 제공. | '' | 단주구분. "today_buy_sell" : 당일매수에 대한 당일매도, "today_sell_all" : 당일매도 전체. 현금신용구분. "all" : 전체, "cash" : 현금매매만, "credit" : 신용매매만. 기준일자 ( YYYYMMDD 형식). 공백이면 금일 데이터. 최근 2개월까지 제공. Returns: | Type | Description | | --- | --- | | DailyTradeJournal | 당일매매일지 DailyTradeJournal . | 당일매매일지 DailyTradeJournal . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_daily_trade_journal( self, single_stock_type: SingleStockType, cash_credit_type: CashCreditType, base_date: str = "", ) -> DailyTradeJournal: """당일매매일지를 조회한다 (ka10170). Args: single_stock_type: 단주구분. ``"today_buy_sell"``: 당일매수에 대한 당일매도, ``"today_sell_all"``: 당일매도 전체. cash_credit_type: 현금신용구분. ``"all"``: 전체, ``"cash"``: 현금매매만, ``"credit"``: 신용매매만. base_date: 기준일자 (``YYYYMMDD`` 형식). 공백이면 금일 데이터. 최근 2개월까지 제공. Returns: 당일매매일지 ``DailyTradeJournal``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, { "base_dt": base_date, "ottks_tp": _SINGLE_STOCK_CODE[single_stock_type], "ch_crd_tp": _CASH_CREDIT_CODE[cash_credit_type], }, headers=self._headers("ka10170"), )) items = [ DailyTradeJournalItem( stk_nm=item.get("stk_nm", ""), buy_avg_pric=item.get("buy_avg_pric", ""), buy_qty=item.get("buy_qty", ""), sel_avg_pric=item.get("sel_avg_pric", ""), sell_qty=item.get("sell_qty", ""), cmsn_alm_tax=item.get("cmsn_alm_tax", ""), pl_amt=item.get("pl_amt", ""), sell_amt=item.get("sell_amt", ""), buy_amt=item.get("buy_amt", ""), prft_rt=item.get("prft_rt", ""), stk_cd=item.get("stk_cd", ""), ) for item in raw.get("tdy_trde_diary", []) ] return DailyTradeJournal( tot_sell_amt=raw.get("tot_sell_amt", ""), tot_buy_amt=raw.get("tot_buy_amt", ""), tot_cmsn_tax=raw.get("tot_cmsn_tax", ""), tot_exct_amt=raw.get("tot_exct_amt", ""), tot_pl_amt=raw.get("tot_pl_amt", ""), tot_prft_rt=raw.get("tot_prft_rt", ""), items=items, ) ``` #### get_daily_trade_qty_upper ¶ ``` get_daily_trade_qty_upper(market: 'RkinfoMarketType', sort_type: str, stock_cond: str, credit_type: str, trade_qty_type: str, price_type: str, trade_amt_type: str, market_open_type: MarketOpenType, exchange: 'RkinfoStexType') -> DailyTradeQtyUpper ``` 당일거래량 상위 종목을 조회한다 (ka10030). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'RkinfoMarketType' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | sort_type | str | 정렬구분. "1" : 거래량, "2" : 거래회전율, "3" : 거래대금. | required | | stock_cond | str | 관리종목포함 ( "0" ~ "16" ). | required | | credit_type | str | 신용구분 ( "0" , "9" 등). | required | | trade_qty_type | str | 거래량구분 ( "0" , "5" , "10" 등). | required | | price_type | str | 가격구분 ( "0" ~ "9" ). | required | | trade_amt_type | str | 거래대금구분 ( "0" , "1" 등). | required | | market_open_type | MarketOpenType | 장운영구분. "all" : 전체, "intraday" : 장중, "pre" : 장전시간외, "post" : 장후시간외. | required | | exchange | 'RkinfoStexType' | 거래소구분. "krx" , "nxt" , "all" . | required | 시장구분. "all" , "kospi" , "kosdaq" . 정렬구분. "1" : 거래량, "2" : 거래회전율, "3" : 거래대금. 관리종목포함 ( "0" ~ "16" ). 신용구분 ( "0" , "9" 등). 거래량구분 ( "0" , "5" , "10" 등). 가격구분 ( "0" ~ "9" ). 거래대금구분 ( "0" , "1" 등). 장운영구분. "all" : 전체, "intraday" : 장중, "pre" : 장전시간외, "post" : 장후시간외. 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | DailyTradeQtyUpper | 당일거래량상위 DailyTradeQtyUpper . | 당일거래량상위 DailyTradeQtyUpper . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_daily_trade_qty_upper( self, market: "RkinfoMarketType", sort_type: str, stock_cond: str, credit_type: str, trade_qty_type: str, price_type: str, trade_amt_type: str, market_open_type: MarketOpenType, exchange: "RkinfoStexType", ) -> DailyTradeQtyUpper: """당일거래량 상위 종목을 조회한다 (ka10030). Args: market: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. sort_type: 정렬구분. ``"1"``: 거래량, ``"2"``: 거래회전율, ``"3"``: 거래대금. stock_cond: 관리종목포함 (``"0"``~``"16"``). credit_type: 신용구분 (``"0"``, ``"9"`` 등). trade_qty_type: 거래량구분 (``"0"``, ``"5"``, ``"10"`` 등). price_type: 가격구분 (``"0"``~``"9"``). trade_amt_type: 거래대금구분 (``"0"``, ``"1"`` 등). market_open_type: 장운영구분. ``"all"``: 전체, ``"intraday"``: 장중, ``"pre"``: 장전시간외, ``"post"``: 장후시간외. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 당일거래량상위 ``DailyTradeQtyUpper``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "mrkt_tp": _RKINFO_MARKET_CODE[market], "sort_tp": sort_type, "mang_stk_incls": stock_cond, "crd_tp": credit_type, "trde_qty_tp": trade_qty_type, "pric_tp": price_type, "trde_prica_tp": trade_amt_type, "mrkt_open_tp": _MARKET_OPEN_CODE[market_open_type], "stex_tp": _RKINFO_STEX_CODE[exchange], }, headers=self._headers("ka10030"), )) items = [ DailyTradeQtyUpperItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), pred_pre_sig=item.get("pred_pre_sig", ""), pred_pre=item.get("pred_pre", ""), flu_rt=item.get("flu_rt", ""), trde_qty=item.get("trde_qty", ""), pred_rt=item.get("pred_rt", ""), trde_tern_rt=item.get("trde_tern_rt", ""), trde_amt=item.get("trde_amt", ""), opmr_trde_qty=item.get("opmr_trde_qty", ""), opmr_pred_rt=item.get("opmr_pred_rt", ""), opmr_trde_rt=item.get("opmr_trde_rt", ""), opmr_trde_amt=item.get("opmr_trde_amt", ""), af_mkrt_trde_qty=item.get("af_mkrt_trde_qty", ""), af_mkrt_pred_rt=item.get("af_mkrt_pred_rt", ""), af_mkrt_trde_rt=item.get("af_mkrt_trde_rt", ""), af_mkrt_trde_amt=item.get("af_mkrt_trde_amt", ""), bf_mkrt_trde_qty=item.get("bf_mkrt_trde_qty", ""), bf_mkrt_pred_rt=item.get("bf_mkrt_pred_rt", ""), bf_mkrt_trde_rt=item.get("bf_mkrt_trde_rt", ""), bf_mkrt_trde_amt=item.get("bf_mkrt_trde_amt", ""), ) for item in raw.get("tdy_trde_qty_upper", []) ] return DailyTradeQtyUpper(items=items) ``` #### get_daily_trading_detail ¶ ``` get_daily_trading_detail(stock_code: str, start_date: str) -> DailyTradingDetail ``` 일별 거래상세(거래량·거래대금·투자자별 순매수 등)를 조회한다 (ka10015). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | | start_date | str | 시작일자 ( YYYYMMDD 형식). | required | 거래소별 종목코드. 시작일자 ( YYYYMMDD 형식). Returns: | Type | Description | | --- | --- | | DailyTradingDetail | 일별거래상세 리스트 DailyTradingDetail . | 일별거래상세 리스트 DailyTradingDetail . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_daily_trading_detail( self, stock_code: str, start_date: str, ) -> DailyTradingDetail: """일별 거래상세(거래량·거래대금·투자자별 순매수 등)를 조회한다 (ka10015). Args: stock_code: 거래소별 종목코드. start_date: 시작일자 (``YYYYMMDD`` 형식). Returns: 일별거래상세 리스트 ``DailyTradingDetail``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, { "stk_cd": stock_code, "strt_dt": start_date, }, headers=self._headers("ka10015"), )) items = [ DailyTradingDetailItem( dt=item.get("dt", ""), close_pric=item.get("close_pric", ""), flu_rt=item.get("flu_rt", ""), trde_qty=item.get("trde_qty", ""), trde_prica=item.get("trde_prica", ""), cntr_str=item.get("cntr_str", ""), for_netprps=item.get("for_netprps", ""), orgn_netprps=item.get("orgn_netprps", ""), ind_netprps=item.get("ind_netprps", ""), ) for item in raw.get("daly_trde_dtl", []) ] return DailyTradingDetail(items=items) ``` #### get_deposit ¶ ``` get_deposit(query_type: DepositQueryType = 'normal') -> DepositDetail ``` 예수금상세현황을 조회한다 (kt00001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | query_type | DepositQueryType | 조회구분. "normal" : 일반조회, "estimated" : 추정조회. | 'normal' | 조회구분. "normal" : 일반조회, "estimated" : 추정조회. Returns: | Type | Description | | --- | --- | | DepositDetail | 예수금상세현황 DepositDetail . | 예수금상세현황 DepositDetail . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_deposit(self, query_type: DepositQueryType = "normal") -> DepositDetail: """예수금상세현황을 조회한다 (kt00001). Args: query_type: 조회구분. ``"normal"``: 일반조회, ``"estimated"``: 추정조회. Returns: 예수금상세현황 ``DepositDetail``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {"qry_tp": _DEPOSIT_QUERY_CODE[query_type]}, headers=self._headers("kt00001"), )) fx_list = [ FxDepositItem( crnc_cd=item.get("crnc_cd", ""), fx_entr=item.get("fx_entr", ""), fc_krw_repl_evlta=item.get("fc_krw_repl_evlta", ""), fc_trst_profa=item.get("fc_trst_profa", ""), pymn_alow_amt=item.get("pymn_alow_amt", ""), pymn_alow_amt_entr=item.get("pymn_alow_amt_entr", ""), ord_alow_amt_entr=item.get("ord_alow_amt_entr", ""), fc_uncla=item.get("fc_uncla", ""), fc_ch_uncla=item.get("fc_ch_uncla", ""), dly_amt=item.get("dly_amt", ""), d1_fx_entr=item.get("d1_fx_entr", ""), d2_fx_entr=item.get("d2_fx_entr", ""), d3_fx_entr=item.get("d3_fx_entr", ""), d4_fx_entr=item.get("d4_fx_entr", ""), ) for item in raw.get("stk_entr_prst", []) ] return DepositDetail( entr=raw.get("entr", ""), profa_ch=raw.get("profa_ch", ""), pymn_alow_amt=raw.get("pymn_alow_amt", ""), ord_alow_amt=raw.get("ord_alow_amt", ""), d1_entra=raw.get("d1_entra", ""), d1_pymn_alow_amt=raw.get("d1_pymn_alow_amt", ""), d2_entra=raw.get("d2_entra", ""), d2_pymn_alow_amt=raw.get("d2_pymn_alow_amt", ""), repl_amt=raw.get("repl_amt", ""), ch_uncla=raw.get("ch_uncla", ""), nrpy_loan=raw.get("nrpy_loan", ""), crd_grnt_rt=raw.get("crd_grnt_rt", ""), fx_deposits=fx_list, ) ``` #### get_elw_access_rate ¶ ``` get_elw_access_rate(stock_code: str) -> ElwAccessRate ``` ELW 근접율을 조회한다 (ka30011). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | ELW 종목코드 (예: "57JBHH" ). | required | ELW 종목코드 (예: "57JBHH" ). Returns: | Type | Description | | --- | --- | | ElwAccessRate | class: ~kiwoompy.models.ElwAccessRate 인스턴스. | class: ~kiwoompy.models.ElwAccessRate 인스턴스. ``` def get_elw_access_rate(self, stock_code: str) -> ElwAccessRate: """ELW 근접율을 조회한다 (ka30011). Args: stock_code: ELW 종목코드 (예: ``"57JBHH"``). Returns: :class:`~kiwoompy.models.ElwAccessRate` 인스턴스. """ raw = _check(self._api.post( self._ELW_PATH, {"stk_cd": stock_code}, headers=self._headers("ka30011"), )) items = [ ElwAccessRateItem( stk_cd=it.get("stk_cd", ""), stk_nm=it.get("stk_nm", ""), cur_prc=it.get("cur_prc", ""), pre_sig=it.get("pre_sig", ""), pred_pre=it.get("pred_pre", ""), flu_rt=it.get("flu_rt", ""), acc_trde_qty=it.get("acc_trde_qty", ""), alacc_rt=it.get("alacc_rt", ""), ) for it in raw.get("elwalacc_rt", []) ] return ElwAccessRate(items=items) ``` #### get_elw_bal_rank ¶ ``` get_elw_bal_rank(sort_type: NetTradeType, right_type: 'ElwRightType', exclude_ended: FlagType) -> ElwBalRank ``` ELW 잔량 순위를 조회한다 (ka30010). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | sort_type | NetTradeType | 정렬구분 ( "net_buy" 순매수잔량상위 / "net_sell" 순매도잔량상위). | required | | right_type | 'ElwRightType' | 권리구분 ( "all" / "call" / "put" 등). | required | | exclude_ended | FlagType | 거래종료제외 ( "on" 제외 / "off" 포함). | required | 정렬구분 ( "net_buy" 순매수잔량상위 / "net_sell" 순매도잔량상위). 권리구분 ( "all" / "call" / "put" 등). 거래종료제외 ( "on" 제외 / "off" 포함). Returns: | Type | Description | | --- | --- | | ElwBalRank | class: ~kiwoompy.models.ElwBalRank 인스턴스. | class: ~kiwoompy.models.ElwBalRank 인스턴스. ``` def get_elw_bal_rank( self, sort_type: NetTradeType, right_type: "ElwRightType", exclude_ended: FlagType, ) -> ElwBalRank: """ELW 잔량 순위를 조회한다 (ka30010). Args: sort_type: 정렬구분 (``"net_buy"``순매수잔량상위 / ``"net_sell"``순매도잔량상위). right_type: 권리구분 (``"all"`` / ``"call"`` / ``"put"`` 등). exclude_ended: 거래종료제외 (``"on"``제외 / ``"off"``포함). Returns: :class:`~kiwoompy.models.ElwBalRank` 인스턴스. """ raw = _check(self._api.post( self._ELW_PATH, { "sort_tp": _NET_TRADE_CODE[sort_type], "rght_tp": _ELW_RIGHT_CODE[right_type], "trde_end_skip": _FLAG_CODE[exclude_ended], }, headers=self._headers("ka30010"), )) items = [ ElwBalRankItem( stk_cd=it.get("stk_cd", ""), rank=it.get("rank", ""), stk_nm=it.get("stk_nm", ""), cur_prc=it.get("cur_prc", ""), pre_sig=it.get("pre_sig", ""), pred_pre=it.get("pred_pre", ""), flu_rt=it.get("flu_rt", ""), trde_qty=it.get("trde_qty", ""), sel_req=it.get("sel_req", ""), buy_req=it.get("buy_req", ""), netprps_req=it.get("netprps_req", ""), trde_prica=it.get("trde_prica", ""), ) for it in raw.get("elwreq_rank", []) ] return ElwBalRank(items=items) ``` #### get_elw_broker_net_trade ¶ ``` get_elw_broker_net_trade(issuer_code: str, volume_type: str, trade_type: NetTradeType, duration: str, exclude_ended: FlagType) -> ElwBrokerNetTrade ``` 거래원별 ELW 순매매 상위 종목을 조회한다 (ka30002). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | issuer_code | str | 발행사코드 3자리 (예: "003" 한국투자증권). | required | | volume_type | str | 거래량구분 ( "0" 전체 / "5" 5천주 / "10" 만주 등). | required | | trade_type | NetTradeType | 매매구분 ( "net_buy" 순매수 / "net_sell" 순매도). | required | | duration | str | 기간 ( "1" 전일 / "5" 5일 / "10" 10일 / "40" 40일 / "60" 60일). | required | | exclude_ended | FlagType | 거래종료ELW제외 ( "off" 포함 / "on" 제외). | required | 발행사코드 3자리 (예: "003" 한국투자증권). 거래량구분 ( "0" 전체 / "5" 5천주 / "10" 만주 등). 매매구분 ( "net_buy" 순매수 / "net_sell" 순매도). 기간 ( "1" 전일 / "5" 5일 / "10" 10일 / "40" 40일 / "60" 60일). 거래종료ELW제외 ( "off" 포함 / "on" 제외). Returns: | Type | Description | | --- | --- | | ElwBrokerNetTrade | class: ~kiwoompy.models.ElwBrokerNetTrade 인스턴스. | class: ~kiwoompy.models.ElwBrokerNetTrade 인스턴스. ``` def get_elw_broker_net_trade( self, issuer_code: str, volume_type: str, trade_type: NetTradeType, duration: str, exclude_ended: FlagType, ) -> ElwBrokerNetTrade: """거래원별 ELW 순매매 상위 종목을 조회한다 (ka30002). Args: issuer_code: 발행사코드 3자리 (예: ``"003"``한국투자증권). volume_type: 거래량구분 (``"0"``전체 / ``"5"``5천주 / ``"10"``만주 등). trade_type: 매매구분 (``"net_buy"``순매수 / ``"net_sell"``순매도). duration: 기간 (``"1"``전일 / ``"5"``5일 / ``"10"``10일 / ``"40"``40일 / ``"60"``60일). exclude_ended: 거래종료ELW제외 (``"off"``포함 / ``"on"``제외). Returns: :class:`~kiwoompy.models.ElwBrokerNetTrade` 인스턴스. """ raw = _check(self._api.post( self._ELW_PATH, { "isscomp_cd": issuer_code, "trde_qty_tp": volume_type, "trde_tp": _NET_TRADE_CODE[trade_type], "dt": duration, "trde_end_elwskip": _FLAG_CODE[exclude_ended], }, headers=self._headers("ka30002"), )) items = [ ElwBrokerNetTradeItem( stk_cd=it.get("stk_cd", ""), stk_nm=it.get("stk_nm", ""), stkpc_flu=it.get("stkpc_flu", ""), flu_rt=it.get("flu_rt", ""), trde_qty=it.get("trde_qty", ""), netprps=it.get("netprps", ""), buy_trde_qty=it.get("buy_trde_qty", ""), sel_trde_qty=it.get("sel_trde_qty", ""), ) for it in raw.get("trde_ori_elwnettrde_upper", []) ] return ElwBrokerNetTrade(items=items) ``` #### get_elw_daily_sens ¶ ``` get_elw_daily_sens(stock_code: str) -> ElwDailySens ``` ELW 일별 민감도 지표를 조회한다 (ka10048). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | ELW 종목코드 (예: "57JBHH" ). | required | ELW 종목코드 (예: "57JBHH" ). Returns: | Type | Description | | --- | --- | | ElwDailySens | class: ~kiwoompy.models.ElwDailySens 인스턴스. | class: ~kiwoompy.models.ElwDailySens 인스턴스. ``` def get_elw_daily_sens(self, stock_code: str) -> ElwDailySens: """ELW 일별 민감도 지표를 조회한다 (ka10048). Args: stock_code: ELW 종목코드 (예: ``"57JBHH"``). Returns: :class:`~kiwoompy.models.ElwDailySens` 인스턴스. """ raw = _check(self._api.post( self._ELW_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10048"), )) items = [ ElwDailySensItem( dt=it.get("dt", ""), iv=it.get("iv", ""), delta=it.get("delta", ""), gam=it.get("gam", ""), theta=it.get("theta", ""), vega=it.get("vega", ""), law=it.get("law", ""), lp=it.get("lp", ""), ) for it in raw.get("elwdaly_snst_ix", []) ] return ElwDailySens(items=items) ``` #### get_elw_detail ¶ ``` get_elw_detail(stock_code: str) -> ElwDetail ``` ELW 종목 상세 정보를 조회한다 (ka30012). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | ELW 종목코드 (예: "57JBHH" ). | required | ELW 종목코드 (예: "57JBHH" ). Returns: | Type | Description | | --- | --- | | ElwDetail | class: ~kiwoompy.models.ElwDetail 인스턴스. | class: ~kiwoompy.models.ElwDetail 인스턴스. ``` def get_elw_detail(self, stock_code: str) -> ElwDetail: """ELW 종목 상세 정보를 조회한다 (ka30012). Args: stock_code: ELW 종목코드 (예: ``"57JBHH"``). Returns: :class:`~kiwoompy.models.ElwDetail` 인스턴스. """ raw = _check(self._api.post( self._ELW_PATH, {"stk_cd": stock_code}, headers=self._headers("ka30012"), )) return ElwDetail( aset_cd=raw.get("aset_cd", ""), cur_prc=raw.get("cur_prc", ""), pred_pre_sig=raw.get("pred_pre_sig", ""), pred_pre=raw.get("pred_pre", ""), flu_rt=raw.get("flu_rt", ""), lpmmcm_nm=raw.get("lpmmcm_nm", ""), lpmmcm_nm_1=raw.get("lpmmcm_nm_1", ""), lpmmcm_nm_2=raw.get("lpmmcm_nm_2", ""), elwrght_cntn=raw.get("elwrght_cntn", ""), elwexpr_evlt_pric=raw.get("elwexpr_evlt_pric", ""), elwtheory_pric=raw.get("elwtheory_pric", ""), dispty_rt=raw.get("dispty_rt", ""), elwinnr_vltl=raw.get("elwinnr_vltl", ""), exp_rght_pric=raw.get("exp_rght_pric", ""), elwpl_qutr_rt=raw.get("elwpl_qutr_rt", ""), elwexec_pric=raw.get("elwexec_pric", ""), elwcnvt_rt=raw.get("elwcnvt_rt", ""), elwcmpn_rt=raw.get("elwcmpn_rt", ""), elwpric_rising_part_rt=raw.get("elwpric_rising_part_rt", ""), elwrght_type=raw.get("elwrght_type", ""), elwsrvive_dys=raw.get("elwsrvive_dys", ""), stkcnt=raw.get("stkcnt", ""), elwlpord_pos=raw.get("elwlpord_pos", ""), lpposs_rt=raw.get("lpposs_rt", ""), lprmnd_qty=raw.get("lprmnd_qty", ""), elwspread=raw.get("elwspread", ""), elwprty=raw.get("elwprty", ""), elwgear=raw.get("elwgear", ""), elwflo_dt=raw.get("elwflo_dt", ""), elwfin_trde_dt=raw.get("elwfin_trde_dt", ""), expr_dt=raw.get("expr_dt", ""), exec_dt=raw.get("exec_dt", ""), lpsuply_end_dt=raw.get("lpsuply_end_dt", ""), elwpay_dt=raw.get("elwpay_dt", ""), elwinvt_ix_comput=raw.get("elwinvt_ix_comput", ""), elwpay_agnt=raw.get("elwpay_agnt", ""), elwappr_way=raw.get("elwappr_way", ""), elwrght_exec_way=raw.get("elwrght_exec_way", ""), elwpblicte_orgn=raw.get("elwpblicte_orgn", ""), dcsn_pay_amt=raw.get("dcsn_pay_amt", ""), kobarr=raw.get("kobarr", ""), iv=raw.get("iv", ""), clsprd_end_elwocr=raw.get("clsprd_end_elwocr", ""), bsis_aset_1=raw.get("bsis_aset_1", ""), bsis_aset_comp_rt_1=raw.get("bsis_aset_comp_rt_1", ""), bsis_aset_2=raw.get("bsis_aset_2", ""), bsis_aset_comp_rt_2=raw.get("bsis_aset_comp_rt_2", ""), bsis_aset_3=raw.get("bsis_aset_3", ""), bsis_aset_comp_rt_3=raw.get("bsis_aset_comp_rt_3", ""), bsis_aset_4=raw.get("bsis_aset_4", ""), bsis_aset_comp_rt_4=raw.get("bsis_aset_comp_rt_4", ""), bsis_aset_5=raw.get("bsis_aset_5", ""), bsis_aset_comp_rt_5=raw.get("bsis_aset_comp_rt_5", ""), fr_dt=raw.get("fr_dt", ""), to_dt=raw.get("to_dt", ""), fr_tm=raw.get("fr_tm", ""), evlt_end_tm=raw.get("evlt_end_tm", ""), evlt_pric=raw.get("evlt_pric", ""), evlt_fnsh_yn=raw.get("evlt_fnsh_yn", ""), all_hgst_pric=raw.get("all_hgst_pric", ""), all_lwst_pric=raw.get("all_lwst_pric", ""), imaf_hgst_pric=raw.get("imaf_hgst_pric", ""), imaf_lwst_pric=raw.get("imaf_lwst_pric", ""), sndhalf_mrkt_hgst_pric=raw.get("sndhalf_mrkt_hgst_pric", ""), sndhalf_mrkt_lwst_pric=raw.get("sndhalf_mrkt_lwst_pric", ""), ) ``` #### get_elw_fluc_rank ¶ ``` get_elw_fluc_rank(sort_type: 'ElwSortType', right_type: 'ElwRightType', exclude_ended: str) -> ElwFlucRank ``` ELW 등락율 순위를 조회한다 (ka30009). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | sort_type | 'ElwSortType' | 정렬구분 ( "rise_rate" / "rise_gap" / "fall_rate" / "fall_gap" ). | required | | right_type | 'ElwRightType' | 권리구분 ( "all" / "call" / "put" 등). | required | | exclude_ended | str | 거래종료제외 ( "1" 제외 / "0" 포함). | required | 정렬구분 ( "rise_rate" / "rise_gap" / "fall_rate" / "fall_gap" ). 권리구분 ( "all" / "call" / "put" 등). 거래종료제외 ( "1" 제외 / "0" 포함). Returns: | Type | Description | | --- | --- | | ElwFlucRank | class: ~kiwoompy.models.ElwFlucRank 인스턴스. | class: ~kiwoompy.models.ElwFlucRank 인스턴스. ``` def get_elw_fluc_rank( self, sort_type: "ElwSortType", right_type: "ElwRightType", exclude_ended: str, ) -> ElwFlucRank: """ELW 등락율 순위를 조회한다 (ka30009). Args: sort_type: 정렬구분 (``"rise_rate"`` / ``"rise_gap"`` / ``"fall_rate"`` / ``"fall_gap"``). right_type: 권리구분 (``"all"`` / ``"call"`` / ``"put"`` 등). exclude_ended: 거래종료제외 (``"1"``제외 / ``"0"``포함). Returns: :class:`~kiwoompy.models.ElwFlucRank` 인스턴스. """ raw = _check(self._api.post( self._ELW_PATH, { "sort_tp": _ELW_SORT_CODE[sort_type], "rght_tp": _ELW_RIGHT_CODE[right_type], "trde_end_skip": exclude_ended, }, headers=self._headers("ka30009"), )) items = [ ElwFlucRankItem( rank=it.get("rank", ""), stk_cd=it.get("stk_cd", ""), stk_nm=it.get("stk_nm", ""), cur_prc=it.get("cur_prc", ""), pre_sig=it.get("pre_sig", ""), pred_pre=it.get("pred_pre", ""), flu_rt=it.get("flu_rt", ""), sel_req=it.get("sel_req", ""), buy_req=it.get("buy_req", ""), trde_qty=it.get("trde_qty", ""), trde_prica=it.get("trde_prica", ""), ) for it in raw.get("elwflu_rt_rank", []) ] return ElwFlucRank(items=items) ``` #### get_elw_gap ¶ ``` get_elw_gap(issuer_code: str, base_asset_code: str, right_type: 'ElwRightType', lp_code: str, exclude_ended: str) -> ElwGap ``` ELW 괴리율을 조회한다 (ka30004). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | issuer_code | str | 발행사코드 12자리 (전체: "000000000000" ). | required | | base_asset_code | str | 기초자산코드 12자리 (전체: "000000000000" ). | required | | right_type | 'ElwRightType' | 권리구분 ( "all" / "call" / "put" 등). | required | | lp_code | str | LP코드 12자리 (전체: "000000000000" ). | required | | exclude_ended | str | 거래종료ELW제외 ( "1" 제외 / "0" 포함). | required | 발행사코드 12자리 (전체: "000000000000" ). 기초자산코드 12자리 (전체: "000000000000" ). 권리구분 ( "all" / "call" / "put" 등). LP코드 12자리 (전체: "000000000000" ). 거래종료ELW제외 ( "1" 제외 / "0" 포함). Returns: | Type | Description | | --- | --- | | ElwGap | class: ~kiwoompy.models.ElwGap 인스턴스. | class: ~kiwoompy.models.ElwGap 인스턴스. ``` def get_elw_gap( self, issuer_code: str, base_asset_code: str, right_type: "ElwRightType", lp_code: str, exclude_ended: str, ) -> ElwGap: """ELW 괴리율을 조회한다 (ka30004). Args: issuer_code: 발행사코드 12자리 (전체: ``"000000000000"``). base_asset_code: 기초자산코드 12자리 (전체: ``"000000000000"``). right_type: 권리구분 (``"all"`` / ``"call"`` / ``"put"`` 등). lp_code: LP코드 12자리 (전체: ``"000000000000"``). exclude_ended: 거래종료ELW제외 (``"1"``제외 / ``"0"``포함). Returns: :class:`~kiwoompy.models.ElwGap` 인스턴스. """ raw = _check(self._api.post( self._ELW_PATH, { "isscomp_cd": issuer_code, "bsis_aset_cd": base_asset_code, "rght_tp": _ELW_RIGHT_CODE[right_type], "lpcd": lp_code, "trde_end_elwskip": exclude_ended, }, headers=self._headers("ka30004"), )) items = [ ElwGapItem( stk_cd=it.get("stk_cd", ""), isscomp_nm=it.get("isscomp_nm", ""), sqnc=it.get("sqnc", ""), base_aset_nm=it.get("base_aset_nm", ""), rght_tp=it.get("rght_tp", ""), dispty_rt=it.get("dispty_rt", ""), basis=it.get("basis", ""), srvive_dys=it.get("srvive_dys", ""), theory_pric=it.get("theory_pric", ""), cur_prc=it.get("cur_prc", ""), pre_tp=it.get("pre_tp", ""), pred_pre=it.get("pred_pre", ""), flu_rt=it.get("flu_rt", ""), trde_qty=it.get("trde_qty", ""), stk_nm=it.get("stk_nm", ""), ) for it in raw.get("elwdispty_rt", []) ] return ElwGap(items=items) ``` #### get_elw_lp_daily ¶ ``` get_elw_lp_daily(base_asset_code: str, base_date: str) -> ElwLpDaily ``` ELW LP 보유 일별 추이를 조회한다 (ka30003). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | base_asset_code | str | 기초자산코드 (예: "57KJ99" ). | required | | base_date | str | 기준일자 ( "YYYYMMDD" ). | required | 기초자산코드 (예: "57KJ99" ). 기준일자 ( "YYYYMMDD" ). Returns: | Type | Description | | --- | --- | | ElwLpDaily | class: ~kiwoompy.models.ElwLpDaily 인스턴스. | class: ~kiwoompy.models.ElwLpDaily 인스턴스. ``` def get_elw_lp_daily(self, base_asset_code: str, base_date: str) -> ElwLpDaily: """ELW LP 보유 일별 추이를 조회한다 (ka30003). Args: base_asset_code: 기초자산코드 (예: ``"57KJ99"``). base_date: 기준일자 (``"YYYYMMDD"``). Returns: :class:`~kiwoompy.models.ElwLpDaily` 인스턴스. """ raw = _check(self._api.post( self._ELW_PATH, { "bsis_aset_cd": base_asset_code, "base_dt": base_date, }, headers=self._headers("ka30003"), )) items = [ ElwLpDailyItem( dt=it.get("dt", ""), cur_prc=it.get("cur_prc", ""), pre_tp=it.get("pre_tp", ""), pred_pre=it.get("pred_pre", ""), flu_rt=it.get("flu_rt", ""), trde_qty=it.get("trde_qty", ""), trde_prica=it.get("trde_prica", ""), chg_qty=it.get("chg_qty", ""), lprmnd_qty=it.get("lprmnd_qty", ""), wght=it.get("wght", ""), ) for it in raw.get("elwlpposs_daly_trnsn", []) ] return ElwLpDaily(items=items) ``` #### get_elw_price_surge ¶ ``` get_elw_price_surge(fluc_type: 'ElwFlucType', time_type: str, time: str, volume_type: str, issuer_code: str, base_asset_code: str, right_type: 'ElwRightType', lp_code: str, exclude_ended: str) -> ElwPriceSurge ``` ELW 가격급등락 종목을 조회한다 (ka30001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | fluc_type | 'ElwFlucType' | 등락구분 ( "surge" / "plunge" ). | required | | time_type | str | 시간구분 ( "1" 분전 / "2" 일전). | required | | time | str | 시간 (분 또는 일, 예: "5" ). | required | | volume_type | str | 거래량구분 ( "0" 전체 / "10" 만주이상 등). | required | | issuer_code | str | 발행사코드 12자리 (전체: "000000000000" ). | required | | base_asset_code | str | 기초자산코드 12자리 (전체: "000000000000" ). | required | | right_type | 'ElwRightType' | 권리구분 ( "all" / "call" / "put" 등). | required | | lp_code | str | LP코드 12자리 (전체: "000000000000" ). | required | | exclude_ended | str | 거래종료ELW제외 ( "0" 포함 / "1" 제외). | required | 등락구분 ( "surge" / "plunge" ). 시간구분 ( "1" 분전 / "2" 일전). 시간 (분 또는 일, 예: "5" ). 거래량구분 ( "0" 전체 / "10" 만주이상 등). 발행사코드 12자리 (전체: "000000000000" ). 기초자산코드 12자리 (전체: "000000000000" ). 권리구분 ( "all" / "call" / "put" 등). LP코드 12자리 (전체: "000000000000" ). 거래종료ELW제외 ( "0" 포함 / "1" 제외). Returns: | Type | Description | | --- | --- | | ElwPriceSurge | class: ~kiwoompy.models.ElwPriceSurge 인스턴스. | class: ~kiwoompy.models.ElwPriceSurge 인스턴스. ``` def get_elw_price_surge( self, fluc_type: "ElwFlucType", time_type: str, time: str, volume_type: str, issuer_code: str, base_asset_code: str, right_type: "ElwRightType", lp_code: str, exclude_ended: str, ) -> ElwPriceSurge: """ELW 가격급등락 종목을 조회한다 (ka30001). Args: fluc_type: 등락구분 (``"surge"`` / ``"plunge"``). time_type: 시간구분 (``"1"``분전 / ``"2"``일전). time: 시간 (분 또는 일, 예: ``"5"``). volume_type: 거래량구분 (``"0"``전체 / ``"10"``만주이상 등). issuer_code: 발행사코드 12자리 (전체: ``"000000000000"``). base_asset_code: 기초자산코드 12자리 (전체: ``"000000000000"``). right_type: 권리구분 (``"all"`` / ``"call"`` / ``"put"`` 등). lp_code: LP코드 12자리 (전체: ``"000000000000"``). exclude_ended: 거래종료ELW제외 (``"0"``포함 / ``"1"``제외). Returns: :class:`~kiwoompy.models.ElwPriceSurge` 인스턴스. """ raw = _check(self._api.post( self._ELW_PATH, { "flu_tp": _ELW_FLUC_CODE[fluc_type], "tm_tp": time_type, "tm": time, "trde_qty_tp": volume_type, "isscomp_cd": issuer_code, "bsis_aset_cd": base_asset_code, "rght_tp": _ELW_RIGHT_CODE[right_type], "lpcd": lp_code, "trde_end_elwskip": exclude_ended, }, headers=self._headers("ka30001"), )) items = [ ElwPriceSurgeItem( stk_cd=it.get("stk_cd", ""), rank=it.get("rank", ""), stk_nm=it.get("stk_nm", ""), pre_sig=it.get("pre_sig", ""), pred_pre=it.get("pred_pre", ""), trde_end_elwbase_pric=it.get("trde_end_elwbase_pric", ""), cur_prc=it.get("cur_prc", ""), base_pre=it.get("base_pre", ""), trde_qty=it.get("trde_qty", ""), jmp_rt=it.get("jmp_rt", ""), ) for it in raw.get("elwpric_jmpflu", []) ] return ElwPriceSurge( base_pric_tm=raw.get("base_pric_tm", ""), items=items, ) ``` #### get_elw_search ¶ ``` get_elw_search(issuer_code: str, base_asset_code: str, right_type: 'ElwRightType', lp_code: str, sort_type: 'ElwSortType') -> ElwSearch ``` ELW 조건검색을 수행한다 (ka30005). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | issuer_code | str | 발행사코드 12자리 (전체: "000000000000" ). | required | | base_asset_code | str | 기초자산코드 12자리 (전체: "000000000000" ). | required | | right_type | 'ElwRightType' | 권리구분 ( "all" / "call" / "put" 등). | required | | lp_code | str | LP코드 12자리 (전체: "000000000000" ). | required | | sort_type | 'ElwSortType' | 정렬구분 ( "rise_rate" / "volume" 등). | required | 발행사코드 12자리 (전체: "000000000000" ). 기초자산코드 12자리 (전체: "000000000000" ). 권리구분 ( "all" / "call" / "put" 등). LP코드 12자리 (전체: "000000000000" ). 정렬구분 ( "rise_rate" / "volume" 등). Returns: | Type | Description | | --- | --- | | ElwSearch | class: ~kiwoompy.models.ElwSearch 인스턴스. | class: ~kiwoompy.models.ElwSearch 인스턴스. ``` def get_elw_search( self, issuer_code: str, base_asset_code: str, right_type: "ElwRightType", lp_code: str, sort_type: "ElwSortType", ) -> ElwSearch: """ELW 조건검색을 수행한다 (ka30005). Args: issuer_code: 발행사코드 12자리 (전체: ``"000000000000"``). base_asset_code: 기초자산코드 12자리 (전체: ``"000000000000"``). right_type: 권리구분 (``"all"`` / ``"call"`` / ``"put"`` 등). lp_code: LP코드 12자리 (전체: ``"000000000000"``). sort_type: 정렬구분 (``"rise_rate"`` / ``"volume"`` 등). Returns: :class:`~kiwoompy.models.ElwSearch` 인스턴스. """ raw = _check(self._api.post( self._ELW_PATH, { "isscomp_cd": issuer_code, "bsis_aset_cd": base_asset_code, "rght_tp": _ELW_RIGHT_CODE[right_type][0], # 단자리 "lpcd": lp_code, "sort_tp": _ELW_SORT_CODE[sort_type], }, headers=self._headers("ka30005"), )) items = [ ElwSearchItem( stk_cd=it.get("stk_cd", ""), isscomp_nm=it.get("isscomp_nm", ""), sqnc=it.get("sqnc", ""), base_aset_nm=it.get("base_aset_nm", ""), rght_tp=it.get("rght_tp", ""), expr_dt=it.get("expr_dt", ""), cur_prc=it.get("cur_prc", ""), pre_tp=it.get("pre_tp", ""), pred_pre=it.get("pred_pre", ""), flu_rt=it.get("flu_rt", ""), trde_qty=it.get("trde_qty", ""), trde_qty_pre=it.get("trde_qty_pre", ""), trde_prica=it.get("trde_prica", ""), pred_trde_qty=it.get("pred_trde_qty", ""), sel_bid=it.get("sel_bid", ""), buy_bid=it.get("buy_bid", ""), prty=it.get("prty", ""), gear_rt=it.get("gear_rt", ""), pl_qutr_rt=it.get("pl_qutr_rt", ""), cfp=it.get("cfp", ""), theory_pric=it.get("theory_pric", ""), innr_vltl=it.get("innr_vltl", ""), delta=it.get("delta", ""), lvrg=it.get("lvrg", ""), exec_pric=it.get("exec_pric", ""), cnvt_rt=it.get("cnvt_rt", ""), lpposs_rt=it.get("lpposs_rt", ""), pl_qutr_pt=it.get("pl_qutr_pt", ""), fin_trde_dt=it.get("fin_trde_dt", ""), flo_dt=it.get("flo_dt", ""), lpinitlast_suply_dt=it.get("lpinitlast_suply_dt", ""), stk_nm=it.get("stk_nm", ""), srvive_dys=it.get("srvive_dys", ""), dispty_rt=it.get("dispty_rt", ""), lpmmcm_nm=it.get("lpmmcm_nm", ""), lpmmcm_nm_1=it.get("lpmmcm_nm_1", ""), lpmmcm_nm_2=it.get("lpmmcm_nm_2", ""), xraymont_cntr_qty_arng_trde_tp=it.get("xraymont_cntr_qty_arng_trde_tp", ""), xraymont_cntr_qty_profa_100tp=it.get("xraymont_cntr_qty_profa_100tp", ""), ) for it in raw.get("elwcnd_qry", []) ] return ElwSearch(items=items) ``` #### get_elw_sens ¶ ``` get_elw_sens(stock_code: str) -> ElwSens ``` ELW 민감도 지표를 조회한다 (ka10050). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | ELW 종목코드 (예: "57JBHH" ). | required | ELW 종목코드 (예: "57JBHH" ). Returns: | Type | Description | | --- | --- | | ElwSens | class: ~kiwoompy.models.ElwSens 인스턴스. | class: ~kiwoompy.models.ElwSens 인스턴스. ``` def get_elw_sens(self, stock_code: str) -> ElwSens: """ELW 민감도 지표를 조회한다 (ka10050). Args: stock_code: ELW 종목코드 (예: ``"57JBHH"``). Returns: :class:`~kiwoompy.models.ElwSens` 인스턴스. """ raw = _check(self._api.post( self._ELW_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10050"), )) items = [ ElwSensItem( cntr_tm=it.get("cntr_tm", ""), cur_prc=it.get("cur_prc", ""), elwtheory_pric=it.get("elwtheory_pric", ""), iv=it.get("iv", ""), delta=it.get("delta", ""), gam=it.get("gam", ""), theta=it.get("theta", ""), vega=it.get("vega", ""), law=it.get("law", ""), lp=it.get("lp", ""), ) for it in raw.get("elwsnst_ix_array", []) ] return ElwSens(items=items) ``` #### get_estimated_asset ¶ ``` get_estimated_asset(query_type: DelistedQueryType = 'all') -> EstimatedAsset ``` 추정자산을 조회한다 (kt00003). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | query_type | DelistedQueryType | 상장폐지조회구분. "all" : 전체, "exclude_delisted" : 상장폐지종목제외. | 'all' | 상장폐지조회구분. "all" : 전체, "exclude_delisted" : 상장폐지종목제외. Returns: | Type | Description | | --- | --- | | EstimatedAsset | 추정자산 EstimatedAsset . | 추정자산 EstimatedAsset . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_estimated_asset( self, query_type: DelistedQueryType = "all", ) -> EstimatedAsset: """추정자산을 조회한다 (kt00003). Args: query_type: 상장폐지조회구분. ``"all"``: 전체, ``"exclude_delisted"``: 상장폐지종목제외. Returns: 추정자산 ``EstimatedAsset``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {"qry_tp": _DELISTED_QUERY_CODE[query_type]}, headers=self._headers("kt00003"), )) return EstimatedAsset(prsm_dpst_aset_amt=raw.get("prsm_dpst_aset_amt", "")) ``` #### get_etf_all_quote ¶ ``` get_etf_all_quote(tax_type: str, nav_compare: str, asset_manager: str, tax_yn: str, tracking_index: str, exchange: 'ExchangeType') -> EtfAllQuote ``` ETF 전체 시세를 조회한다 (ka40004). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | tax_type | str | 과세유형 ( "0" 전체 / "1" 비과세 / "2" 보유기간과세 / "3" 회사형 / "4" 외국 / "5" 비과세해외). | required | | nav_compare | str | NAV대비 ( "0" 전체 / "1" NAV>전일종가 / "2" NAV<전일종가). | required | | asset_manager | str | 운용사코드 ( "0000" 전체 / "3020" KODEX 등). | required | | tax_yn | str | 과세여부 ( "0" 전체 / "1" 과세 / "2" 비과세). | required | | tracking_index | str | 추적지수 ( "0" 전체). | required | | exchange | 'ExchangeType' | 거래소구분 ( "krx" / "nxt" / "all" ). | required | 과세유형 ( "0" 전체 / "1" 비과세 / "2" 보유기간과세 / "3" 회사형 / "4" 외국 / "5" 비과세해외). NAV대비 ( "0" 전체 / "1" NAV>전일종가 / "2" NAV<전일종가). 운용사코드 ( "0000" 전체 / "3020" KODEX 등). 과세여부 ( "0" 전체 / "1" 과세 / "2" 비과세). 추적지수 ( "0" 전체). 거래소구분 ( "krx" / "nxt" / "all" ). Returns: | Type | Description | | --- | --- | | EtfAllQuote | class: ~kiwoompy.models.EtfAllQuote 인스턴스. | class: ~kiwoompy.models.EtfAllQuote 인스턴스. ``` def get_etf_all_quote( self, tax_type: str, nav_compare: str, asset_manager: str, tax_yn: str, tracking_index: str, exchange: "ExchangeType", ) -> EtfAllQuote: """ETF 전체 시세를 조회한다 (ka40004). Args: tax_type: 과세유형 (``"0"``전체 / ``"1"``비과세 / ``"2"``보유기간과세 / ``"3"``회사형 / ``"4"``외국 / ``"5"``비과세해외). nav_compare: NAV대비 (``"0"``전체 / ``"1"``NAV>전일종가 / ``"2"``NAV<전일종가). asset_manager: 운용사코드 (``"0000"``전체 / ``"3020"``KODEX 등). tax_yn: 과세여부 (``"0"``전체 / ``"1"``과세 / ``"2"``비과세). tracking_index: 추적지수 (``"0"``전체). exchange: 거래소구분 (``"krx"`` / ``"nxt"`` / ``"all"``). Returns: :class:`~kiwoompy.models.EtfAllQuote` 인스턴스. """ raw = _check(self._api.post( self._ETF_PATH, { "txon_type": tax_type, "navpre": nav_compare, "mngmcomp": asset_manager, "txon_yn": tax_yn, "trace_idex": tracking_index, "stex_tp": _EXCHANGE_CODE[exchange], }, headers=self._headers("ka40004"), )) items = [ EtfAllQuoteItem( stk_cd=it.get("stk_cd", ""), stk_cls=it.get("stk_cls", ""), stk_nm=it.get("stk_nm", ""), close_pric=it.get("close_pric", ""), pre_sig=it.get("pre_sig", ""), pred_pre=it.get("pred_pre", ""), pre_rt=it.get("pre_rt", ""), trde_qty=it.get("trde_qty", ""), nav=it.get("nav", ""), trace_eor_rt=it.get("trace_eor_rt", ""), txbs=it.get("txbs", ""), dvid_bf_base=it.get("dvid_bf_base", ""), pred_dvida=it.get("pred_dvida", ""), trace_idex_nm=it.get("trace_idex_nm", ""), drng=it.get("drng", ""), trace_idex_cd=it.get("trace_idex_cd", ""), trace_idex=it.get("trace_idex", ""), trace_flu_rt=it.get("trace_flu_rt", ""), ) for it in raw.get("etfall_mrpr", []) ] return EtfAllQuote(items=items) ``` #### get_etf_daily_fill ¶ ``` get_etf_daily_fill(stock_code: str) -> EtfDailyFill ``` ETF 일자별 체결을 조회한다 (ka40008). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | ETF 종목코드 (예: "069500" ). | required | ETF 종목코드 (예: "069500" ). Returns: | Type | Description | | --- | --- | | EtfDailyFill | class: ~kiwoompy.models.EtfDailyFill 인스턴스. | class: ~kiwoompy.models.EtfDailyFill 인스턴스. ``` def get_etf_daily_fill(self, stock_code: str) -> EtfDailyFill: """ETF 일자별 체결을 조회한다 (ka40008). Args: stock_code: ETF 종목코드 (예: ``"069500"``). Returns: :class:`~kiwoompy.models.EtfDailyFill` 인스턴스. """ raw = _check(self._api.post( self._ETF_PATH, {"stk_cd": stock_code}, headers=self._headers("ka40008"), )) items = [ EtfDailyFillItem( dt=it.get("dt", ""), cur_prc_n=it.get("cur_prc_n", ""), pre_sig_n=it.get("pre_sig_n", ""), pred_pre_n=it.get("pred_pre_n", ""), acc_trde_qty=it.get("acc_trde_qty", ""), for_netprps_qty=it.get("for_netprps_qty", ""), orgn_netprps_qty=it.get("orgn_netprps_qty", ""), ) for it in raw.get("etfnetprps_qty_array", []) ] return EtfDailyFill( cntr_tm=raw.get("cntr_tm", ""), cur_prc=raw.get("cur_prc", ""), pre_sig=raw.get("pre_sig", ""), pred_pre=raw.get("pred_pre", ""), trde_qty=raw.get("trde_qty", ""), items=items, ) ``` #### get_etf_daily_trend ¶ ``` get_etf_daily_trend(stock_code: str) -> EtfDailyTrend ``` ETF 일별 추이를 조회한다 (ka40003). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | ETF 종목코드 (예: "069500" ). | required | ETF 종목코드 (예: "069500" ). Returns: | Type | Description | | --- | --- | | EtfDailyTrend | class: ~kiwoompy.models.EtfDailyTrend 인스턴스. | class: ~kiwoompy.models.EtfDailyTrend 인스턴스. ``` def get_etf_daily_trend(self, stock_code: str) -> EtfDailyTrend: """ETF 일별 추이를 조회한다 (ka40003). Args: stock_code: ETF 종목코드 (예: ``"069500"``). Returns: :class:`~kiwoompy.models.EtfDailyTrend` 인스턴스. """ raw = _check(self._api.post( self._ETF_PATH, {"stk_cd": stock_code}, headers=self._headers("ka40003"), )) items = [ EtfDailyTrendItem( cntr_dt=it.get("cntr_dt", ""), cur_prc=it.get("cur_prc", ""), pre_sig=it.get("pre_sig", ""), pred_pre=it.get("pred_pre", ""), pre_rt=it.get("pre_rt", ""), trde_qty=it.get("trde_qty", ""), nav=it.get("nav", ""), acc_trde_prica=it.get("acc_trde_prica", ""), navidex_dispty_rt=it.get("navidex_dispty_rt", ""), navetfdispty_rt=it.get("navetfdispty_rt", ""), trace_eor_rt=it.get("trace_eor_rt", ""), trace_cur_prc=it.get("trace_cur_prc", ""), trace_pred_pre=it.get("trace_pred_pre", ""), trace_pre_sig=it.get("trace_pre_sig", ""), ) for it in raw.get("etfdaly_trnsn", []) ] return EtfDailyTrend(items=items) ``` #### get_etf_info ¶ ``` get_etf_info(stock_code: str) -> EtfInfo ``` ETF 종목 기본정보를 조회한다 (ka40002). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | ETF 종목코드 (예: "069500" ). | required | ETF 종목코드 (예: "069500" ). Returns: | Type | Description | | --- | --- | | EtfInfo | class: ~kiwoompy.models.EtfInfo 인스턴스. | class: ~kiwoompy.models.EtfInfo 인스턴스. ``` def get_etf_info(self, stock_code: str) -> EtfInfo: """ETF 종목 기본정보를 조회한다 (ka40002). Args: stock_code: ETF 종목코드 (예: ``"069500"``). Returns: :class:`~kiwoompy.models.EtfInfo` 인스턴스. """ raw = _check(self._api.post( self._ETF_PATH, {"stk_cd": stock_code}, headers=self._headers("ka40002"), )) return EtfInfo( stk_nm=raw.get("stk_nm", ""), etfobjt_idex_nm=raw.get("etfobjt_idex_nm", ""), wonju_pric=raw.get("wonju_pric", ""), etftxon_type=raw.get("etftxon_type", ""), etntxon_type=raw.get("etntxon_type", ""), ) ``` #### get_etf_nav ¶ ``` get_etf_nav(stock_code: str) -> EtfNav ``` ETF NAV 데이터를 조회한다 (ka40009). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | ETF 종목코드 (예: "069500" ). | required | ETF 종목코드 (예: "069500" ). Returns: | Type | Description | | --- | --- | | EtfNav | class: ~kiwoompy.models.EtfNav 인스턴스. | class: ~kiwoompy.models.EtfNav 인스턴스. ``` def get_etf_nav(self, stock_code: str) -> EtfNav: """ETF NAV 데이터를 조회한다 (ka40009). Args: stock_code: ETF 종목코드 (예: ``"069500"``). Returns: :class:`~kiwoompy.models.EtfNav` 인스턴스. """ raw = _check(self._api.post( self._ETF_PATH, {"stk_cd": stock_code}, headers=self._headers("ka40009"), )) items = [ EtfNavItem( nav=it.get("nav", ""), navpred_pre=it.get("navpred_pre", ""), navflu_rt=it.get("navflu_rt", ""), trace_eor_rt=it.get("trace_eor_rt", ""), dispty_rt=it.get("dispty_rt", ""), stkcnt=it.get("stkcnt", ""), base_pric=it.get("base_pric", ""), for_rmnd_qty=it.get("for_rmnd_qty", ""), repl_pric=it.get("repl_pric", ""), conv_pric=it.get("conv_pric", ""), drstk=it.get("drstk", ""), wonju_pric=it.get("wonju_pric", ""), ) for it in raw.get("etfnavarray", []) ] return EtfNav(items=items) ``` #### get_etf_return ¶ ``` get_etf_return(stock_code: str, index_code: str, duration: 'EtfDuration') -> EtfReturn ``` ETF 수익율을 조회한다 (ka40001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | ETF 종목코드 (예: "069500" ). | required | | index_code | str | ETF 대상지수코드 (예: "207" ). | required | | duration | 'EtfDuration' | 기간 ( "1w" / "1m" / "6m" / "1y" ). | required | ETF 종목코드 (예: "069500" ). ETF 대상지수코드 (예: "207" ). 기간 ( "1w" / "1m" / "6m" / "1y" ). Returns: | Type | Description | | --- | --- | | EtfReturn | class: ~kiwoompy.models.EtfReturn 인스턴스. | class: ~kiwoompy.models.EtfReturn 인스턴스. ``` def get_etf_return( self, stock_code: str, index_code: str, duration: "EtfDuration", ) -> EtfReturn: """ETF 수익율을 조회한다 (ka40001). Args: stock_code: ETF 종목코드 (예: ``"069500"``). index_code: ETF 대상지수코드 (예: ``"207"``). duration: 기간 (``"1w"`` / ``"1m"`` / ``"6m"`` / ``"1y"``). Returns: :class:`~kiwoompy.models.EtfReturn` 인스턴스. """ from kiwoompy.models import EtfDuration # noqa: F401 raw = _check(self._api.post( self._ETF_PATH, { "stk_cd": stock_code, "etfobjt_idex_cd": index_code, "dt": _ETF_DURATION_CODE[duration], }, headers=self._headers("ka40001"), )) items = [ EtfReturnItem( etfprft_rt=it.get("etfprft_rt", ""), cntr_prft_rt=it.get("cntr_prft_rt", ""), for_netprps_qty=it.get("for_netprps_qty", ""), orgn_netprps_qty=it.get("orgn_netprps_qty", ""), ) for it in raw.get("etfprft_rt_lst", []) ] return EtfReturn(items=items) ``` #### get_etf_time_fill ¶ ``` get_etf_time_fill(stock_code: str) -> EtfTimeFill ``` ETF 시간대별 체결을 조회한다 (ka40007). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | ETF 종목코드 (예: "069500" ). | required | ETF 종목코드 (예: "069500" ). Returns: | Type | Description | | --- | --- | | EtfTimeFill | class: ~kiwoompy.models.EtfTimeFill 인스턴스. | class: ~kiwoompy.models.EtfTimeFill 인스턴스. ``` def get_etf_time_fill(self, stock_code: str) -> EtfTimeFill: """ETF 시간대별 체결을 조회한다 (ka40007). Args: stock_code: ETF 종목코드 (예: ``"069500"``). Returns: :class:`~kiwoompy.models.EtfTimeFill` 인스턴스. """ raw = _check(self._api.post( self._ETF_PATH, {"stk_cd": stock_code}, headers=self._headers("ka40007"), )) items = [ EtfTimeFillItem( cntr_tm=it.get("cntr_tm", ""), cur_prc=it.get("cur_prc", ""), pre_sig=it.get("pre_sig", ""), pred_pre=it.get("pred_pre", ""), trde_qty=it.get("trde_qty", ""), stex_tp=it.get("stex_tp", ""), ) for it in raw.get("etftisl_cntr_array", []) ] return EtfTimeFill( stk_cls=raw.get("stk_cls", ""), stk_nm=raw.get("stk_nm", ""), etfobjt_idex_nm=raw.get("etfobjt_idex_nm", ""), etfobjt_idex_cd=raw.get("etfobjt_idex_cd", ""), objt_idex_pre_rt=raw.get("objt_idex_pre_rt", ""), wonju_pric=raw.get("wonju_pric", ""), items=items, ) ``` #### get_etf_time_trend ¶ ``` get_etf_time_trend(stock_code: str) -> EtfTimeTrend ``` ETF 시간대별 추이를 조회한다 (ka40006). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | ETF 종목코드 (예: "069500" ). | required | ETF 종목코드 (예: "069500" ). Returns: | Type | Description | | --- | --- | | EtfTimeTrend | class: ~kiwoompy.models.EtfTimeTrend 인스턴스. | class: ~kiwoompy.models.EtfTimeTrend 인스턴스. ``` def get_etf_time_trend(self, stock_code: str) -> EtfTimeTrend: """ETF 시간대별 추이를 조회한다 (ka40006). Args: stock_code: ETF 종목코드 (예: ``"069500"``). Returns: :class:`~kiwoompy.models.EtfTimeTrend` 인스턴스. """ raw = _check(self._api.post( self._ETF_PATH, {"stk_cd": stock_code}, headers=self._headers("ka40006"), )) items = [ EtfTimeTrendItem( tm=it.get("tm", ""), close_pric=it.get("close_pric", ""), pre_sig=it.get("pre_sig", ""), pred_pre=it.get("pred_pre", ""), flu_rt=it.get("flu_rt", ""), trde_qty=it.get("trde_qty", ""), nav=it.get("nav", ""), trde_prica=it.get("trde_prica", ""), navidex=it.get("navidex", ""), navetf=it.get("navetf", ""), trace=it.get("trace", ""), trace_idex=it.get("trace_idex", ""), trace_idex_pred_pre=it.get("trace_idex_pred_pre", ""), trace_idex_pred_pre_sig=it.get("trace_idex_pred_pre_sig", ""), ) for it in raw.get("etftisl_trnsn", []) ] return EtfTimeTrend( stk_nm=raw.get("stk_nm", ""), etfobjt_idex_nm=raw.get("etfobjt_idex_nm", ""), wonju_pric=raw.get("wonju_pric", ""), etftxon_type=raw.get("etftxon_type", ""), etntxon_type=raw.get("etntxon_type", ""), items=items, ) ``` #### get_etf_time_trend2 ¶ ``` get_etf_time_trend2(stock_code: str) -> EtfTimeTrend2 ``` ETF 시간대별 추이(외인순매수 포함)를 조회한다 (ka40010). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | ETF 종목코드 (예: "069500" ). | required | ETF 종목코드 (예: "069500" ). Returns: | Type | Description | | --- | --- | | EtfTimeTrend2 | class: ~kiwoompy.models.EtfTimeTrend2 인스턴스. | class: ~kiwoompy.models.EtfTimeTrend2 인스턴스. ``` def get_etf_time_trend2(self, stock_code: str) -> EtfTimeTrend2: """ETF 시간대별 추이(외인순매수 포함)를 조회한다 (ka40010). Args: stock_code: ETF 종목코드 (예: ``"069500"``). Returns: :class:`~kiwoompy.models.EtfTimeTrend2` 인스턴스. """ raw = _check(self._api.post( self._ETF_PATH, {"stk_cd": stock_code}, headers=self._headers("ka40010"), )) items = [ EtfTimeTrend2Item( cur_prc=it.get("cur_prc", ""), pre_sig=it.get("pre_sig", ""), pred_pre=it.get("pred_pre", ""), trde_qty=it.get("trde_qty", ""), for_netprps=it.get("for_netprps", ""), ) for it in raw.get("etftisl_trnsn", []) ] return EtfTimeTrend2(items=items) ``` #### get_execution_balance ¶ ``` get_execution_balance(exchange: Literal['KRX', 'NXT'] = 'KRX') -> ExecutionBalance ``` 체결잔고를 조회한다 (kt00005). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | exchange | Literal ['KRX', 'NXT'] | 국내거래소구분. "KRX" 또는 "NXT" . | 'KRX' | 국내거래소구분. "KRX" 또는 "NXT" . Returns: | Type | Description | | --- | --- | | ExecutionBalance | 체결잔고 ExecutionBalance (종목별 목록 포함). | 체결잔고 ExecutionBalance (종목별 목록 포함). Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_execution_balance( self, exchange: Literal["KRX", "NXT"] = "KRX", ) -> ExecutionBalance: """체결잔고를 조회한다 (kt00005). Args: exchange: 국내거래소구분. ``"KRX"`` 또는 ``"NXT"``. Returns: 체결잔고 ``ExecutionBalance`` (종목별 목록 포함). Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {"dmst_stex_tp": exchange}, headers=self._headers("kt00005"), )) holdings = [ ExecutionBalanceItem( crd_tp=item.get("crd_tp", ""), loan_dt=item.get("loan_dt", ""), expr_dt=item.get("expr_dt", ""), stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), setl_remn=item.get("setl_remn", ""), cur_qty=item.get("cur_qty", ""), cur_prc=item.get("cur_prc", ""), buy_uv=item.get("buy_uv", ""), pur_amt=item.get("pur_amt", ""), evlt_amt=item.get("evlt_amt", ""), evltv_prft=item.get("evltv_prft", ""), pl_rt=item.get("pl_rt", ""), ) for item in raw.get("stk_cntr_remn", []) ] return ExecutionBalance( entr=raw.get("entr", ""), entr_d1=raw.get("entr_d1", ""), entr_d2=raw.get("entr_d2", ""), pymn_alow_amt=raw.get("pymn_alow_amt", ""), ord_alowa=raw.get("ord_alowa", ""), evlt_amt_tot=raw.get("evlt_amt_tot", ""), tot_pl_tot=raw.get("tot_pl_tot", ""), tot_pl_rt=raw.get("tot_pl_rt", ""), holdings=holdings, ) ``` #### get_execution_info ¶ ``` get_execution_info(stock_code: str) -> ExecutionInfo ``` 주식 체결 내역을 조회한다 (ka10003). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | 거래소별 종목코드. Returns: | Type | Description | | --- | --- | | ExecutionInfo | 체결정보 리스트 ExecutionInfo . | 체결정보 리스트 ExecutionInfo . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_execution_info(self, stock_code: str) -> ExecutionInfo: """주식 체결 내역을 조회한다 (ka10003). Args: stock_code: 거래소별 종목코드. Returns: 체결정보 리스트 ``ExecutionInfo``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10003"), )) items = [ ExecutionInfoItem( tm=item.get("tm", ""), cur_prc=item.get("cur_prc", ""), cntr_trde_qty=item.get("cntr_trde_qty", ""), acc_trde_qty=item.get("acc_trde_qty", ""), cntr_str=item.get("cntr_str", ""), stex_tp=item.get("stex_tp", ""), ) for item in raw.get("cntr_infr", []) ] return ExecutionInfo(items=items) ``` #### get_execution_strength_by_day ¶ ``` get_execution_strength_by_day(stock_code: str) -> ExecutionStrength ``` 체결강도 추이(일별)를 조회한다 (ka10047). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드 (6자리). | required | 거래소별 종목코드 (6자리). Returns: | Type | Description | | --- | --- | | ExecutionStrength | 체결강도 일별 시계열 ExecutionStrength . | 체결강도 일별 시계열 ExecutionStrength . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_execution_strength_by_day(self, stock_code: str) -> ExecutionStrength: """체결강도 추이(일별)를 조회한다 (ka10047). Args: stock_code: 거래소별 종목코드 (6자리). Returns: 체결강도 일별 시계열 ``ExecutionStrength``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._MRKCOND_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10047"), )) items = [ ExecutionStrengthItem( time_or_dt=item.get("dt", ""), cur_prc=item.get("cur_prc", ""), flu_rt=item.get("flu_rt", ""), trde_qty=item.get("trde_qty", ""), cntr_str=item.get("cntr_str", ""), cntr_str_5=item.get("cntr_str_5min", ""), cntr_str_20=item.get("cntr_str_20min", ""), cntr_str_60=item.get("cntr_str_60min", ""), ) for item in raw.get("cntr_str_daly", []) ] return ExecutionStrength(items=items) ``` #### get_execution_strength_by_time ¶ ``` get_execution_strength_by_time(stock_code: str) -> ExecutionStrength ``` 체결강도 추이(시간별)를 조회한다 (ka10046). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드 (6자리). | required | 거래소별 종목코드 (6자리). Returns: | Type | Description | | --- | --- | | ExecutionStrength | 체결강도 시계열 ExecutionStrength . | 체결강도 시계열 ExecutionStrength . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_execution_strength_by_time(self, stock_code: str) -> ExecutionStrength: """체결강도 추이(시간별)를 조회한다 (ka10046). Args: stock_code: 거래소별 종목코드 (6자리). Returns: 체결강도 시계열 ``ExecutionStrength``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._MRKCOND_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10046"), )) items = [ ExecutionStrengthItem( time_or_dt=item.get("cntr_tm", ""), cur_prc=item.get("cur_prc", ""), flu_rt=item.get("flu_rt", ""), trde_qty=item.get("trde_qty", ""), cntr_str=item.get("cntr_str", ""), cntr_str_5=item.get("cntr_str_5min", ""), cntr_str_20=item.get("cntr_str_20min", ""), cntr_str_60=item.get("cntr_str_60min", ""), ) for item in raw.get("cntr_str_tm", []) ] return ExecutionStrength(items=items) ``` #### get_expected_trade_upper ¶ ``` get_expected_trade_upper(market: 'RkinfoMarketType', sort_type: str, trade_qty_cond: str, stock_cond: str, credit_cond: str, price_cond: str, exchange: 'RkinfoStexType') -> ExpectedTradeUpper ``` 예상체결 등락률 상위 종목을 조회한다 (ka10029). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'RkinfoMarketType' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | sort_type | str | 정렬구분. "1" : 상승률, "2" : 상승폭, "3" : 보합, "4" : 하락률, "5" : 하락폭, "6" : 체결량, "7" : 상한, "8" : 하한. | required | | trade_qty_cond | str | 거래량조건 ( "0" , "1" , "3" , "5" , "10" , "50" , "100" ). | required | | stock_cond | str | 종목조건 ( "0" ~ "16" ). | required | | credit_cond | str | 신용조건 ( "0" , "9" 등). | required | | price_cond | str | 가격조건 ( "0" ~ "10" ). | required | | exchange | 'RkinfoStexType' | 거래소구분. "krx" , "nxt" , "all" . | required | 시장구분. "all" , "kospi" , "kosdaq" . 정렬구분. "1" : 상승률, "2" : 상승폭, "3" : 보합, "4" : 하락률, "5" : 하락폭, "6" : 체결량, "7" : 상한, "8" : 하한. 거래량조건 ( "0" , "1" , "3" , "5" , "10" , "50" , "100" ). 종목조건 ( "0" ~ "16" ). 신용조건 ( "0" , "9" 등). 가격조건 ( "0" ~ "10" ). 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | ExpectedTradeUpper | 예상체결등락률상위 ExpectedTradeUpper . | 예상체결등락률상위 ExpectedTradeUpper . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_expected_trade_upper( self, market: "RkinfoMarketType", sort_type: str, trade_qty_cond: str, stock_cond: str, credit_cond: str, price_cond: str, exchange: "RkinfoStexType", ) -> ExpectedTradeUpper: """예상체결 등락률 상위 종목을 조회한다 (ka10029). Args: market: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. sort_type: 정렬구분. ``"1"``: 상승률, ``"2"``: 상승폭, ``"3"``: 보합, ``"4"``: 하락률, ``"5"``: 하락폭, ``"6"``: 체결량, ``"7"``: 상한, ``"8"``: 하한. trade_qty_cond: 거래량조건 (``"0"``, ``"1"``, ``"3"``, ``"5"``, ``"10"``, ``"50"``, ``"100"``). stock_cond: 종목조건 (``"0"``~``"16"``). credit_cond: 신용조건 (``"0"``, ``"9"`` 등). price_cond: 가격조건 (``"0"``~``"10"``). exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 예상체결등락률상위 ``ExpectedTradeUpper``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "mrkt_tp": _RKINFO_MARKET_CODE[market], "sort_tp": sort_type, "trde_qty_cnd": trade_qty_cond, "stk_cnd": stock_cond, "crd_cnd": credit_cond, "pric_cnd": price_cond, "stex_tp": _RKINFO_STEX_CODE[exchange], }, headers=self._headers("ka10029"), )) items = [ ExpectedTradeUpperItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), exp_cntr_pric=item.get("exp_cntr_pric", ""), base_pric=item.get("base_pric", ""), pred_pre_sig=item.get("pred_pre_sig", ""), pred_pre=item.get("pred_pre", ""), flu_rt=item.get("flu_rt", ""), exp_cntr_qty=item.get("exp_cntr_qty", ""), sel_req=item.get("sel_req", ""), sel_bid=item.get("sel_bid", ""), buy_bid=item.get("buy_bid", ""), buy_req=item.get("buy_req", ""), ) for item in raw.get("exp_cntr_flu_rt_upper", []) ] return ExpectedTradeUpper(items=items) ``` #### get_filled_orders ¶ ``` get_filled_orders(query_type: FilledQueryType, sell_type: SellType, exchange: ExchangeType = 'all', stock_code: str = '', order_no: str = '') -> list[FilledOrderItem] ``` 체결 주문 목록을 조회한다 (ka10076). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | query_type | FilledQueryType | 조회구분. "all" : 전체, "by_stock" : 종목. | required | | sell_type | SellType | 매도수구분. "all" : 전체, "sell" : 매도, "buy" : 매수. | required | | exchange | ExchangeType | 거래소구분. "all" : 통합, "krx" : KRX, "nxt" : NXT. | 'all' | | stock_code | str | 종목코드. 공백 허용. | '' | | order_no | str | 주문번호. 입력한 주문번호보다 과거에 체결된 내역을 조회한다. | '' | 조회구분. "all" : 전체, "by_stock" : 종목. 매도수구분. "all" : 전체, "sell" : 매도, "buy" : 매수. 거래소구분. "all" : 통합, "krx" : KRX, "nxt" : NXT. 종목코드. 공백 허용. 주문번호. 입력한 주문번호보다 과거에 체결된 내역을 조회한다. Returns: | Type | Description | | --- | --- | | list [ FilledOrderItem ] | 체결 주문 목록. | 체결 주문 목록. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_filled_orders( self, query_type: FilledQueryType, sell_type: SellType, exchange: ExchangeType = "all", stock_code: str = "", order_no: str = "", ) -> list[FilledOrderItem]: """체결 주문 목록을 조회한다 (ka10076). Args: query_type: 조회구분. ``"all"``: 전체, ``"by_stock"``: 종목. sell_type: 매도수구분. ``"all"``: 전체, ``"sell"``: 매도, ``"buy"``: 매수. exchange: 거래소구분. ``"all"``: 통합, ``"krx"``: KRX, ``"nxt"``: NXT. stock_code: 종목코드. 공백 허용. order_no: 주문번호. 입력한 주문번호보다 과거에 체결된 내역을 조회한다. Returns: 체결 주문 목록. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, { "stk_cd": stock_code, "qry_tp": _FILLED_QUERY_CODE[query_type], "sell_tp": _SELL_TYPE_CODE[sell_type], "ord_no": order_no, "stex_tp": _EXCHANGE_CODE[exchange], }, headers=self._headers("ka10076"), )) return [ FilledOrderItem( ord_no=item.get("ord_no", ""), stk_nm=item.get("stk_nm", ""), io_tp_nm=item.get("io_tp_nm", ""), ord_pric=item.get("ord_pric", ""), ord_qty=item.get("ord_qty", ""), cntr_pric=item.get("cntr_pric", ""), cntr_qty=item.get("cntr_qty", ""), oso_qty=item.get("oso_qty", ""), tdy_trde_cmsn=item.get("tdy_trde_cmsn", ""), tdy_trde_tax=item.get("tdy_trde_tax", ""), ord_stt=item.get("ord_stt", ""), trde_tp=item.get("trde_tp", ""), orig_ord_no=item.get("orig_ord_no", ""), ord_tm=item.get("ord_tm", ""), stk_cd=item.get("stk_cd", ""), stex_tp=item.get("stex_tp", ""), stex_tp_txt=item.get("stex_tp_txt", ""), sor_yn=item.get("sor_yn", ""), ) for item in raw.get("cntr", []) ] ``` #### get_foreign_broker_trade_upper ¶ ``` get_foreign_broker_trade_upper(market: 'RkinfoMarketType', period: str, trade_type: ForeignBrokerTradeType, sort_type: SortAmtQtyType, exchange: 'RkinfoStexType') -> ForeignBrokerTradeUpper ``` 외국계 창구 매매 상위 종목을 조회한다 (ka10037). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'RkinfoMarketType' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | period | str | 기간. "0" : 당일, "1" : 전일, "5" : 5일, "10" : 10일, "20" : 20일, "60" : 60일. | required | | trade_type | ForeignBrokerTradeType | 매매구분. "net_buy" : 순매수, "net_sell" : 순매도, "buy" : 매수, "sell" : 매도. | required | | sort_type | SortAmtQtyType | 정렬구분. "amount" : 금액, "qty" : 수량. | required | | exchange | 'RkinfoStexType' | 거래소구분. "krx" , "nxt" , "all" . | required | 시장구분. "all" , "kospi" , "kosdaq" . 기간. "0" : 당일, "1" : 전일, "5" : 5일, "10" : 10일, "20" : 20일, "60" : 60일. 매매구분. "net_buy" : 순매수, "net_sell" : 순매도, "buy" : 매수, "sell" : 매도. 정렬구분. "amount" : 금액, "qty" : 수량. 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | ForeignBrokerTradeUpper | 외국계창구매매상위 ForeignBrokerTradeUpper . | 외국계창구매매상위 ForeignBrokerTradeUpper . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_foreign_broker_trade_upper( self, market: "RkinfoMarketType", period: str, trade_type: ForeignBrokerTradeType, sort_type: SortAmtQtyType, exchange: "RkinfoStexType", ) -> ForeignBrokerTradeUpper: """외국계 창구 매매 상위 종목을 조회한다 (ka10037). Args: market: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. period: 기간. ``"0"``: 당일, ``"1"``: 전일, ``"5"``: 5일, ``"10"``: 10일, ``"20"``: 20일, ``"60"``: 60일. trade_type: 매매구분. ``"net_buy"``: 순매수, ``"net_sell"``: 순매도, ``"buy"``: 매수, ``"sell"``: 매도. sort_type: 정렬구분. ``"amount"``: 금액, ``"qty"``: 수량. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 외국계창구매매상위 ``ForeignBrokerTradeUpper``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "mrkt_tp": _RKINFO_MARKET_CODE[market], "dt": period, "trde_tp": _FOREIGN_BROKER_TRADE_CODE[trade_type], "sort_tp": _SORT_AMT_QTY_CODE[sort_type], "stex_tp": _RKINFO_STEX_CODE[exchange], }, headers=self._headers("ka10037"), )) items = [ ForeignBrokerTradeUpperItem( rank=item.get("rank", ""), stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), pred_pre_sig=item.get("pred_pre_sig", ""), pred_pre=item.get("pred_pre", ""), flu_rt=item.get("flu_rt", ""), sel_trde_qty=item.get("sel_trde_qty", ""), buy_trde_qty=item.get("buy_trde_qty", ""), netprps_trde_qty=item.get("netprps_trde_qty", ""), netprps_prica=item.get("netprps_prica", ""), trde_qty=item.get("trde_qty", ""), trde_prica=item.get("trde_prica", ""), ) for item in raw.get("frgn_wicket_trde_upper", []) ] return ForeignBrokerTradeUpper(items=items) ``` #### get_foreign_consec_trade_upper ¶ ``` get_foreign_consec_trade_upper(market: 'RkinfoMarketType', trade_type: ForeignConsecTradeType, base_date: 'RkinfoBaseDateType', exchange: 'RkinfoStexType') -> ForeignConsecTradeUpper ``` 외국인 연속 순매매 상위 종목을 조회한다 (ka10035). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'RkinfoMarketType' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | trade_type | ForeignConsecTradeType | 매매구분. "net_sell" : 연속순매도, "net_buy" : 연속순매수. | required | | base_date | 'RkinfoBaseDateType' | 기준일구분. "today" : 당일기준, "prev" : 전일기준. | required | | exchange | 'RkinfoStexType' | 거래소구분. "krx" , "nxt" , "all" . | required | 시장구분. "all" , "kospi" , "kosdaq" . 매매구분. "net_sell" : 연속순매도, "net_buy" : 연속순매수. 기준일구분. "today" : 당일기준, "prev" : 전일기준. 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | ForeignConsecTradeUpper | 외인연속순매매상위 ForeignConsecTradeUpper . | 외인연속순매매상위 ForeignConsecTradeUpper . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_foreign_consec_trade_upper( self, market: "RkinfoMarketType", trade_type: ForeignConsecTradeType, base_date: "RkinfoBaseDateType", exchange: "RkinfoStexType", ) -> ForeignConsecTradeUpper: """외국인 연속 순매매 상위 종목을 조회한다 (ka10035). Args: market: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. trade_type: 매매구분. ``"net_sell"``: 연속순매도, ``"net_buy"``: 연속순매수. base_date: 기준일구분. ``"today"``: 당일기준, ``"prev"``: 전일기준. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 외인연속순매매상위 ``ForeignConsecTradeUpper``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "mrkt_tp": _RKINFO_MARKET_CODE[market], "trde_tp": _FOREIGN_CONSEC_TRADE_CODE[trade_type], "base_dt_tp": _RKINFO_BASE_DATE_CODE[base_date], "stex_tp": _RKINFO_STEX_CODE[exchange], }, headers=self._headers("ka10035"), )) items = [ ForeignConsecTradeUpperItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), pred_pre_sig=item.get("pred_pre_sig", ""), pred_pre=item.get("pred_pre", ""), dm1=item.get("dm1", ""), dm2=item.get("dm2", ""), dm3=item.get("dm3", ""), tot=item.get("tot", ""), limit_exh_rt=item.get("limit_exh_rt", ""), pred_pre_1=item.get("pred_pre_1", ""), pred_pre_2=item.get("pred_pre_2", ""), pred_pre_3=item.get("pred_pre_3", ""), ) for item in raw.get("for_cont_nettrde_upper", []) ] return ForeignConsecTradeUpper(items=items) ``` #### get_foreign_institution_trade_upper ¶ ``` get_foreign_institution_trade_upper(market: 'RkinfoMarketType', amt_qty_type: SortAmtQtyType, query_date_type: ForeignInstitutionQueryDateType, exchange: 'RkinfoStexType', date: str = '') -> ForeignInstitutionTradeUpper ``` 외국인·기관 매매 상위 종목을 조회한다 (ka90009). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'RkinfoMarketType' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | amt_qty_type | SortAmtQtyType | 금액수량구분. "amount" : 금액(천만), "qty" : 수량(천). | required | | query_date_type | ForeignInstitutionQueryDateType | 조회일자구분. "exclude_today" : 조회일자 미포함, "include_today" : 조회일자 포함. | required | | exchange | 'RkinfoStexType' | 거래소구분. "krx" , "nxt" , "all" . | required | | date | str | 날짜 YYYYMMDD (기본 "" ). | '' | 시장구분. "all" , "kospi" , "kosdaq" . 금액수량구분. "amount" : 금액(천만), "qty" : 수량(천). 조회일자구분. "exclude_today" : 조회일자 미포함, "include_today" : 조회일자 포함. 거래소구분. "krx" , "nxt" , "all" . 날짜 YYYYMMDD (기본 "" ). Returns: | Type | Description | | --- | --- | | ForeignInstitutionTradeUpper | 외국인기관매매상위 ForeignInstitutionTradeUpper . | 외국인기관매매상위 ForeignInstitutionTradeUpper . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_foreign_institution_trade_upper( self, market: "RkinfoMarketType", amt_qty_type: SortAmtQtyType, query_date_type: ForeignInstitutionQueryDateType, exchange: "RkinfoStexType", date: str = "", ) -> ForeignInstitutionTradeUpper: """외국인·기관 매매 상위 종목을 조회한다 (ka90009). Args: market: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. amt_qty_type: 금액수량구분. ``"amount"``: 금액(천만), ``"qty"``: 수량(천). query_date_type: 조회일자구분. ``"exclude_today"``: 조회일자 미포함, ``"include_today"``: 조회일자 포함. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. date: 날짜 ``YYYYMMDD`` (기본 ``""``). Returns: 외국인기관매매상위 ``ForeignInstitutionTradeUpper``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "mrkt_tp": _RKINFO_MARKET_CODE[market], "amt_qty_tp": _SORT_AMT_QTY_CODE[amt_qty_type], "qry_dt_tp": _FOREIGN_INSTITUTION_QUERY_DATE_CODE[query_date_type], "date": date, "stex_tp": _RKINFO_STEX_CODE[exchange], }, headers=self._headers("ka90009"), )) items = [ ForeignInstitutionTradeUpperItem( for_netslmt_stk_cd=item.get("for_netslmt_stk_cd", ""), for_netslmt_stk_nm=item.get("for_netslmt_stk_nm", ""), for_netslmt_amt=item.get("for_netslmt_amt", ""), for_netslmt_qty=item.get("for_netslmt_qty", ""), for_netprps_stk_cd=item.get("for_netprps_stk_cd", ""), for_netprps_stk_nm=item.get("for_netprps_stk_nm", ""), for_netprps_amt=item.get("for_netprps_amt", ""), for_netprps_qty=item.get("for_netprps_qty", ""), orgn_netslmt_stk_cd=item.get("orgn_netslmt_stk_cd", ""), orgn_netslmt_stk_nm=item.get("orgn_netslmt_stk_nm", ""), orgn_netslmt_amt=item.get("orgn_netslmt_amt", ""), orgn_netslmt_qty=item.get("orgn_netslmt_qty", ""), orgn_netprps_stk_cd=item.get("orgn_netprps_stk_cd", ""), orgn_netprps_stk_nm=item.get("orgn_netprps_stk_nm", ""), orgn_netprps_amt=item.get("orgn_netprps_amt", ""), orgn_netprps_qty=item.get("orgn_netprps_qty", ""), ) for item in raw.get("frgnr_orgn_trde_upper", []) ] return ForeignInstitutionTradeUpper(items=items) ``` #### get_foreign_limit_exhaust_upper ¶ ``` get_foreign_limit_exhaust_upper(market: 'RkinfoMarketType', period: str, exchange: 'RkinfoStexType') -> ForeignLimitExhaustUpper ``` 외국인 한도소진율 증가 상위 종목을 조회한다 (ka10036). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'RkinfoMarketType' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | period | str | 기간. "0" : 당일, "1" : 전일, "5" : 5일, "10" : 10일, "20" : 20일, "60" : 60일. | required | | exchange | 'RkinfoStexType' | 거래소구분. "krx" , "nxt" , "all" . | required | 시장구분. "all" , "kospi" , "kosdaq" . 기간. "0" : 당일, "1" : 전일, "5" : 5일, "10" : 10일, "20" : 20일, "60" : 60일. 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | ForeignLimitExhaustUpper | 외인한도소진율증가상위 ForeignLimitExhaustUpper . | 외인한도소진율증가상위 ForeignLimitExhaustUpper . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_foreign_limit_exhaust_upper( self, market: "RkinfoMarketType", period: str, exchange: "RkinfoStexType", ) -> ForeignLimitExhaustUpper: """외국인 한도소진율 증가 상위 종목을 조회한다 (ka10036). Args: market: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. period: 기간. ``"0"``: 당일, ``"1"``: 전일, ``"5"``: 5일, ``"10"``: 10일, ``"20"``: 20일, ``"60"``: 60일. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 외인한도소진율증가상위 ``ForeignLimitExhaustUpper``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "mrkt_tp": _RKINFO_MARKET_CODE[market], "dt": period, "stex_tp": _RKINFO_STEX_CODE[exchange], }, headers=self._headers("ka10036"), )) items = [ ForeignLimitExhaustUpperItem( rank=item.get("rank", ""), stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), pred_pre_sig=item.get("pred_pre_sig", ""), pred_pre=item.get("pred_pre", ""), trde_qty=item.get("trde_qty", ""), poss_stkcnt=item.get("poss_stkcnt", ""), gain_pos_stkcnt=item.get("gain_pos_stkcnt", ""), base_limit_exh_rt=item.get("base_limit_exh_rt", ""), limit_exh_rt=item.get("limit_exh_rt", ""), exh_rt_incrs=item.get("exh_rt_incrs", ""), ) for item in raw.get("for_limit_exh_rt_incrs_upper", []) ] return ForeignLimitExhaustUpper(items=items) ``` #### get_foreign_period_trade_upper ¶ ``` get_foreign_period_trade_upper(market: 'RkinfoMarketType', trade_type: ForeignPeriodTradeType, period: str, exchange: 'RkinfoStexType') -> ForeignPeriodTradeUpper ``` 외국인 기간별 매매 상위 종목을 조회한다 (ka10034). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'RkinfoMarketType' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | trade_type | ForeignPeriodTradeType | 매매구분. "net_sell" : 순매도, "net_buy" : 순매수, "both" : 순매매. | required | | period | str | 기간. "0" : 당일, "1" : 전일, "5" : 5일, "10" : 10일, "20" : 20일, "60" : 60일. | required | | exchange | 'RkinfoStexType' | 거래소구분. "krx" , "nxt" , "all" . | required | 시장구분. "all" , "kospi" , "kosdaq" . 매매구분. "net_sell" : 순매도, "net_buy" : 순매수, "both" : 순매매. 기간. "0" : 당일, "1" : 전일, "5" : 5일, "10" : 10일, "20" : 20일, "60" : 60일. 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | ForeignPeriodTradeUpper | 외인기간별매매상위 ForeignPeriodTradeUpper . | 외인기간별매매상위 ForeignPeriodTradeUpper . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_foreign_period_trade_upper( self, market: "RkinfoMarketType", trade_type: ForeignPeriodTradeType, period: str, exchange: "RkinfoStexType", ) -> ForeignPeriodTradeUpper: """외국인 기간별 매매 상위 종목을 조회한다 (ka10034). Args: market: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. trade_type: 매매구분. ``"net_sell"``: 순매도, ``"net_buy"``: 순매수, ``"both"``: 순매매. period: 기간. ``"0"``: 당일, ``"1"``: 전일, ``"5"``: 5일, ``"10"``: 10일, ``"20"``: 20일, ``"60"``: 60일. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 외인기간별매매상위 ``ForeignPeriodTradeUpper``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "mrkt_tp": _RKINFO_MARKET_CODE[market], "trde_tp": _FOREIGN_PERIOD_TRADE_CODE[trade_type], "dt": period, "stex_tp": _RKINFO_STEX_CODE[exchange], }, headers=self._headers("ka10034"), )) items = [ ForeignPeriodTradeUpperItem( rank=item.get("rank", ""), stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), pred_pre_sig=item.get("pred_pre_sig", ""), pred_pre=item.get("pred_pre", ""), sel_bid=item.get("sel_bid", ""), buy_bid=item.get("buy_bid", ""), trde_qty=item.get("trde_qty", ""), netprps_qty=item.get("netprps_qty", ""), gain_pos_stkcnt=item.get("gain_pos_stkcnt", ""), ) for item in raw.get("for_dt_trde_upper", []) ] return ForeignPeriodTradeUpper(items=items) ``` #### get_foreign_trade_trend ¶ ``` get_foreign_trade_trend(stock_code: str) -> ForeignTrade ``` 종목별 외국인 매매동향을 조회한다 (ka10008). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드 (예: "005930" , "039490_NX" ). | required | 거래소별 종목코드 (예: "005930" , "039490_NX" ). Returns: | Type | Description | | --- | --- | | ForeignTrade | class: ~kiwoompy.models.ForeignTrade 인스턴스. | class: ~kiwoompy.models.ForeignTrade 인스턴스. ``` def get_foreign_trade_trend(self, stock_code: str) -> ForeignTrade: """종목별 외국인 매매동향을 조회한다 (ka10008). Args: stock_code: 거래소별 종목코드 (예: ``"005930"``, ``"039490_NX"``). Returns: :class:`~kiwoompy.models.ForeignTrade` 인스턴스. """ raw = _check(self._api.post( self._FRGNISTT_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10008"), )) items = [ ForeignTradeItem( dt=it.get("dt", ""), close_pric=it.get("close_pric", ""), pred_pre=it.get("pred_pre", ""), trde_qty=it.get("trde_qty", ""), chg_qty=it.get("chg_qty", ""), poss_stkcnt=it.get("poss_stkcnt", ""), wght=it.get("wght", ""), gain_pos_stkcnt=it.get("gain_pos_stkcnt", ""), frgnr_limit=it.get("frgnr_limit", ""), frgnr_limit_irds=it.get("frgnr_limit_irds", ""), limit_exh_rt=it.get("limit_exh_rt", ""), ) for it in raw.get("stk_frgnr", []) ] return ForeignTrade(items=items) ``` #### get_high_low_per ¶ ``` get_high_low_per(per_type: 'PERType', exchange: 'MrkcondExchangeType' = 'all') -> HighLowPER ``` 고PER·저PER·PBR·ROE 상위 종목을 조회한다 (ka10026). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | per_type | 'PERType' | PER구분. "low_pbr" : 저PBR, "high_pbr" : 고PBR, "low_per" : 저PER, "high_per" : 고PER, "low_roe" : 저ROE, "high_roe" : 고ROE. | required | | exchange | 'MrkcondExchangeType' | 거래소구분. "krx" , "nxt" , "all" . | 'all' | PER구분. "low_pbr" : 저PBR, "high_pbr" : 고PBR, "low_per" : 저PER, "high_per" : 고PER, "low_roe" : 저ROE, "high_roe" : 고ROE. 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | HighLowPER | 고저PER 종목 리스트 HighLowPER . | 고저PER 종목 리스트 HighLowPER . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_high_low_per( self, per_type: "PERType", exchange: "MrkcondExchangeType" = "all", ) -> HighLowPER: """고PER·저PER·PBR·ROE 상위 종목을 조회한다 (ka10026). Args: per_type: PER구분. ``"low_pbr"``: 저PBR, ``"high_pbr"``: 고PBR, ``"low_per"``: 저PER, ``"high_per"``: 고PER, ``"low_roe"``: 저ROE, ``"high_roe"``: 고ROE. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 고저PER 종목 리스트 ``HighLowPER``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, { "pertp": _PER_TYPE_CODE[per_type], "stex_tp": _MRKCOND_EXCHANGE_CODE[exchange], }, headers=self._headers("ka10026"), )) items = [ HighLowPERItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), per=item.get("per", ""), cur_prc=item.get("cur_prc", ""), flu_rt=item.get("flu_rt", ""), now_trde_qty=item.get("now_trde_qty", ""), ) for item in raw.get("high_low_per", []) ] return HighLowPER(items=items) ``` #### get_high_low_stocks ¶ ``` get_high_low_stocks(high_low_type: 'HighLowSelectType', market_type: 'MrktType3' = 'all', exchange: 'MrkcondExchangeType' = 'all', period: str = '5', stock_condition: str = '0', volume_type: str = '00000', credit_condition: str = '0', include_limit: str = '0', high_low_close_type: str = '1') -> HighLowStocks ``` 신고가·신저가 종목을 조회한다 (ka10016). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | high_low_type | 'HighLowSelectType' | 신고저구분. "high" : 신고가, "low" : 신저가. | required | | market_type | 'MrktType3' | 시장구분. "all" , "kospi" , "kosdaq" . | 'all' | | exchange | 'MrkcondExchangeType' | 거래소구분. "krx" , "nxt" , "all" . | 'all' | | period | str | 기간 (일). 5·10·20·60·250 중 선택. | '5' | | stock_condition | str | 종목조건. "0" : 전체조회 등. | '0' | | volume_type | str | 거래량구분. "00000" : 전체조회 등. | '00000' | | credit_condition | str | 신용조건. "0" : 전체조회 등. | '0' | | include_limit | str | 상하한포함. "0" : 미포함, "1" : 포함. | '0' | | high_low_close_type | str | 고저종구분. "1" : 고저기준, "2" : 종가기준. | '1' | 신고저구분. "high" : 신고가, "low" : 신저가. 시장구분. "all" , "kospi" , "kosdaq" . 거래소구분. "krx" , "nxt" , "all" . 기간 (일). 5·10·20·60·250 중 선택. 종목조건. "0" : 전체조회 등. 거래량구분. "00000" : 전체조회 등. 신용조건. "0" : 전체조회 등. 상하한포함. "0" : 미포함, "1" : 포함. 고저종구분. "1" : 고저기준, "2" : 종가기준. Returns: | Type | Description | | --- | --- | | HighLowStocks | 신고저가 종목 리스트 HighLowStocks . | 신고저가 종목 리스트 HighLowStocks . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_high_low_stocks( self, high_low_type: "HighLowSelectType", market_type: "MrktType3" = "all", exchange: "MrkcondExchangeType" = "all", period: str = "5", stock_condition: str = "0", volume_type: str = "00000", credit_condition: str = "0", include_limit: str = "0", high_low_close_type: str = "1", ) -> HighLowStocks: """신고가·신저가 종목을 조회한다 (ka10016). Args: high_low_type: 신고저구분. ``"high"``: 신고가, ``"low"``: 신저가. market_type: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. period: 기간 (일). 5·10·20·60·250 중 선택. stock_condition: 종목조건. ``"0"``: 전체조회 등. volume_type: 거래량구분. ``"00000"``: 전체조회 등. credit_condition: 신용조건. ``"0"``: 전체조회 등. include_limit: 상하한포함. ``"0"``: 미포함, ``"1"``: 포함. high_low_close_type: 고저종구분. ``"1"``: 고저기준, ``"2"``: 종가기준. Returns: 신고저가 종목 리스트 ``HighLowStocks``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, { "mrkt_tp": _MRKT_TYPE3_CODE[market_type], "ntl_tp": _HIGH_LOW_SELECT_CODE[high_low_type], "high_low_close_tp": high_low_close_type, "stk_cnd": stock_condition, "trde_qty_tp": volume_type, "crd_cnd": credit_condition, "updown_incls": include_limit, "dt": period, "stex_tp": _MRKCOND_EXCHANGE_CODE[exchange], }, headers=self._headers("ka10016"), )) items = [ HighLowStockItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), flu_rt=item.get("flu_rt", ""), trde_qty=item.get("trde_qty", ""), high_pric=item.get("high_pric", ""), low_pric=item.get("low_pric", ""), ) for item in raw.get("ntl_pric", []) ] return HighLowStocks(items=items) ``` #### get_inst_frgn_consecutive_trade ¶ ``` get_inst_frgn_consecutive_trade(duration: 'FrgnDuration', market: str, stock_or_sector: 'FrgnStockSectType', amt_qty: 'SectAmtQtyType', exchange: 'SectExchangeType' = 'krx', start_date: str = '', end_date: str = '') -> InstFrgnConsecutiveTrade ``` 기관·외국인 연속 매매 현황을 조회한다 (ka10131). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | duration | 'FrgnDuration' | 기간 ( "1" / "3" / "5" / "10" / "20" / "120" / "custom" ). "custom" 선택 시 start_date / end_date 필수. | required | | market | str | 장구분 코드 ( "001" : 코스피, "101" : 코스닥). | required | | stock_or_sector | 'FrgnStockSectType' | 종목업종구분 ( "stock" / "sector" ). | required | | amt_qty | 'SectAmtQtyType' | 금액수량구분 ( "amount" / "qty" ). | required | | exchange | 'SectExchangeType' | 거래소구분 ( "krx" / "nxt" / "all" ). 기본 "krx" . | 'krx' | | start_date | str | 시작일자 ( "YYYYMMDD" ). duration="custom" 일 때 사용. | '' | | end_date | str | 종료일자 ( "YYYYMMDD" ). duration="custom" 일 때 사용. | '' | 기간 ( "1" / "3" / "5" / "10" / "20" / "120" / "custom" ). "custom" 선택 시 start_date / end_date 필수. 장구분 코드 ( "001" : 코스피, "101" : 코스닥). 종목업종구분 ( "stock" / "sector" ). 금액수량구분 ( "amount" / "qty" ). 거래소구분 ( "krx" / "nxt" / "all" ). 기본 "krx" . 시작일자 ( "YYYYMMDD" ). duration="custom" 일 때 사용. 종료일자 ( "YYYYMMDD" ). duration="custom" 일 때 사용. Returns: | Type | Description | | --- | --- | | InstFrgnConsecutiveTrade | class: ~kiwoompy.models.InstFrgnConsecutiveTrade 인스턴스. | class: ~kiwoompy.models.InstFrgnConsecutiveTrade 인스턴스. ``` def get_inst_frgn_consecutive_trade( self, duration: "FrgnDuration", market: str, stock_or_sector: "FrgnStockSectType", amt_qty: "SectAmtQtyType", exchange: "SectExchangeType" = "krx", start_date: str = "", end_date: str = "", ) -> InstFrgnConsecutiveTrade: """기관·외국인 연속 매매 현황을 조회한다 (ka10131). Args: duration: 기간 (``"1"`` / ``"3"`` / ``"5"`` / ``"10"`` / ``"20"`` / ``"120"`` / ``"custom"``). ``"custom"`` 선택 시 ``start_date`` / ``end_date`` 필수. market: 장구분 코드 (``"001"``: 코스피, ``"101"``: 코스닥). stock_or_sector: 종목업종구분 (``"stock"`` / ``"sector"``). amt_qty: 금액수량구분 (``"amount"`` / ``"qty"``). exchange: 거래소구분 (``"krx"`` / ``"nxt"`` / ``"all"``). 기본 ``"krx"``. start_date: 시작일자 (``"YYYYMMDD"``). ``duration="custom"`` 일 때 사용. end_date: 종료일자 (``"YYYYMMDD"``). ``duration="custom"`` 일 때 사용. Returns: :class:`~kiwoompy.models.InstFrgnConsecutiveTrade` 인스턴스. """ raw = _check(self._api.post( self._FRGNISTT_PATH, { "dt": _FRGN_DURATION_CODE[duration], "strt_dt": start_date, "end_dt": end_date, "mrkt_tp": market, "netslmt_tp": "2", "stk_inds_tp": _FRGN_STK_SECT_CODE[stock_or_sector], "amt_qty_tp": _SECT_AMT_QTY_CODE[amt_qty], "stex_tp": _SECT_EXCHANGE_CODE[exchange], }, headers=self._headers("ka10131"), )) items = [ InstFrgnConsecutiveItem( rank=it.get("rank", ""), stk_cd=it.get("stk_cd", ""), stk_nm=it.get("stk_nm", ""), prid_stkpc_flu_rt=it.get("prid_stkpc_flu_rt", ""), orgn_nettrde_amt=it.get("orgn_nettrde_amt", ""), orgn_nettrde_qty=it.get("orgn_nettrde_qty", ""), orgn_cont_netprps_dys=it.get("orgn_cont_netprps_dys", ""), orgn_cont_netprps_qty=it.get("orgn_cont_netprps_qty", ""), orgn_cont_netprps_amt=it.get("orgn_cont_netprps_amt", ""), frgnr_nettrde_qty=it.get("frgnr_nettrde_qty", ""), frgnr_nettrde_amt=it.get("frgnr_nettrde_amt", ""), frgnr_cont_netprps_dys=it.get("frgnr_cont_netprps_dys", ""), frgnr_cont_netprps_qty=it.get("frgnr_cont_netprps_qty", ""), frgnr_cont_netprps_amt=it.get("frgnr_cont_netprps_amt", ""), nettrde_qty=it.get("nettrde_qty", ""), nettrde_amt=it.get("nettrde_amt", ""), tot_cont_netprps_dys=it.get("tot_cont_netprps_dys", ""), tot_cont_nettrde_qty=it.get("tot_cont_nettrde_qty", ""), tot_cont_netprps_amt=it.get("tot_cont_netprps_amt", ""), ) for it in raw.get("orgn_frgnr_cont_trde_prst", []) ] return InstFrgnConsecutiveTrade(items=items) ``` #### get_institution_trade ¶ ``` get_institution_trade(stock_code: str) -> InstitutionTrade ``` 종목별 기관 매매 현황을 조회한다 (ka10009). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드 (예: "005930" , "039490_NX" ). | required | 거래소별 종목코드 (예: "005930" , "039490_NX" ). Returns: | Type | Description | | --- | --- | | InstitutionTrade | class: ~kiwoompy.models.InstitutionTrade 인스턴스. | class: ~kiwoompy.models.InstitutionTrade 인스턴스. ``` def get_institution_trade(self, stock_code: str) -> InstitutionTrade: """종목별 기관 매매 현황을 조회한다 (ka10009). Args: stock_code: 거래소별 종목코드 (예: ``"005930"``, ``"039490_NX"``). Returns: :class:`~kiwoompy.models.InstitutionTrade` 인스턴스. """ raw = _check(self._api.post( self._FRGNISTT_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10009"), )) return InstitutionTrade( date=raw.get("date", ""), close_pric=raw.get("close_pric", ""), pre=raw.get("pre", ""), orgn_dt_acc=raw.get("orgn_dt_acc", ""), orgn_daly_nettrde=raw.get("orgn_daly_nettrde", ""), frgnr_daly_nettrde=raw.get("frgnr_daly_nettrde", ""), frgnr_qota_rt=raw.get("frgnr_qota_rt", ""), ) ``` #### get_intra_investor_chart ¶ ``` get_intra_investor_chart(market: 'ChartSectorMarket', stock_code: str, amt_qty_type: 'ChartAmtQtyType', trade_type: 'ChartTradeType') -> IntraInvestorChart ``` 장중 투자자별 매매 차트 데이터를 조회한다 (ka10064). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'ChartSectorMarket' | 시장구분 ( "kospi" / "kosdaq" / "kospi200" ). | required | | stock_code | str | 거래소별 종목코드. | required | | amt_qty_type | 'ChartAmtQtyType' | 금액수량구분 ( "amount" 금액 / "qty" 수량). | required | | trade_type | 'ChartTradeType' | 매매구분 ( "net_buy" 순매수 / "buy" 매수 / "sell" 매도). | required | 시장구분 ( "kospi" / "kosdaq" / "kospi200" ). 거래소별 종목코드. 금액수량구분 ( "amount" 금액 / "qty" 수량). 매매구분 ( "net_buy" 순매수 / "buy" 매수 / "sell" 매도). Returns: | Type | Description | | --- | --- | | IntraInvestorChart | class: ~kiwoompy.models.IntraInvestorChart 인스턴스. | class: ~kiwoompy.models.IntraInvestorChart 인스턴스. ``` def get_intra_investor_chart( self, market: "ChartSectorMarket", stock_code: str, amt_qty_type: "ChartAmtQtyType", trade_type: "ChartTradeType", ) -> IntraInvestorChart: """장중 투자자별 매매 차트 데이터를 조회한다 (ka10064). Args: market: 시장구분 (``"kospi"`` / ``"kosdaq"`` / ``"kospi200"``). stock_code: 거래소별 종목코드. amt_qty_type: 금액수량구분 (``"amount"`` 금액 / ``"qty"`` 수량). trade_type: 매매구분 (``"net_buy"`` 순매수 / ``"buy"`` 매수 / ``"sell"`` 매도). Returns: :class:`~kiwoompy.models.IntraInvestorChart` 인스턴스. """ raw = _check(self._api.post( self._CHART_PATH, { "mrkt_tp": _CHART_SECTOR_MARKET_CODE[market], "amt_qty_tp": _CHART_AMT_QTY_CODE[amt_qty_type], "trde_tp": _CHART_TRADE_CODE[trade_type], "stk_cd": stock_code, }, headers=self._headers("ka10064"), )) items = [ IntraInvestorChartItem( tm=item.get("tm", ""), frgnr_invsr=item.get("frgnr_invsr", ""), orgn=item.get("orgn", ""), invtrt=item.get("invtrt", ""), insrnc=item.get("insrnc", ""), bank=item.get("bank", ""), penfnd_etc=item.get("penfnd_etc", ""), etc_corp=item.get("etc_corp", ""), natn=item.get("natn", ""), ) for item in raw.get("opmr_invsr_trde_chart", []) ] return IntraInvestorChart(items=items) ``` #### get_intraday_investor_trading ¶ ``` get_intraday_investor_trading(market_type: 'MrktType3', investor: 'InvestorType', exchange: 'MrkcondExchangeType' = 'all', foreign_all: FlagType = 'off', simultaneous_net_buy: FlagType = 'off') -> IntradayInvestorTrading ``` 장중 투자자별 매매 상위 종목을 조회한다 (ka10063). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market_type | 'MrktType3' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | investor | 'InvestorType' | 투자자별. "foreign" : 외국인, "institution" : 기관계, "trust" : 투신, "insurance" : 보험, "bank" : 은행, "pension" : 연기금, "gov" : 국가, "other_corp" : 기타법인. | required | | exchange | 'MrkcondExchangeType' | 거래소구분. "krx" , "nxt" , "all" . | 'all' | | foreign_all | FlagType | 외국계전체. "on" : 체크, "off" : 미체크. | 'off' | | simultaneous_net_buy | FlagType | 동시순매수구분. "on" : 체크, "off" : 미체크. | 'off' | 시장구분. "all" , "kospi" , "kosdaq" . 투자자별. "foreign" : 외국인, "institution" : 기관계, "trust" : 투신, "insurance" : 보험, "bank" : 은행, "pension" : 연기금, "gov" : 국가, "other_corp" : 기타법인. 거래소구분. "krx" , "nxt" , "all" . 외국계전체. "on" : 체크, "off" : 미체크. 동시순매수구분. "on" : 체크, "off" : 미체크. Returns: | Type | Description | | --- | --- | | IntradayInvestorTrading | 장중투자자별매매 리스트 IntradayInvestorTrading . | 장중투자자별매매 리스트 IntradayInvestorTrading . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_intraday_investor_trading( self, market_type: "MrktType3", investor: "InvestorType", exchange: "MrkcondExchangeType" = "all", foreign_all: FlagType = "off", simultaneous_net_buy: FlagType = "off", ) -> IntradayInvestorTrading: """장중 투자자별 매매 상위 종목을 조회한다 (ka10063). Args: market_type: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. investor: 투자자별. ``"foreign"``: 외국인, ``"institution"``: 기관계, ``"trust"``: 투신, ``"insurance"``: 보험, ``"bank"``: 은행, ``"pension"``: 연기금, ``"gov"``: 국가, ``"other_corp"``: 기타법인. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. foreign_all: 외국계전체. ``"on"``: 체크, ``"off"``: 미체크. simultaneous_net_buy: 동시순매수구분. ``"on"``: 체크, ``"off"``: 미체크. Returns: 장중투자자별매매 리스트 ``IntradayInvestorTrading``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._MRKCOND_PATH, { "mrkt_tp": _MRKT_TYPE3_CODE[market_type], "amt_qty_tp": "1", "invsr": _INVESTOR_CODE[investor], "frgn_all": _FLAG_CODE[foreign_all], "smtm_netprps_tp": _FLAG_CODE[simultaneous_net_buy], "stex_tp": _MRKCOND_EXCHANGE_CODE[exchange], }, headers=self._headers("ka10063"), )) items = [ IntradayInvestorItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), flu_rt=item.get("flu_rt", ""), acc_trde_qty=item.get("acc_trde_qty", ""), netprps_qty=item.get("netprps_qty", ""), buy_qty=item.get("buy_qty", ""), sell_qty=item.get("sell_qty", ""), ) for item in raw.get("opmr_invsr_trde", []) ] return IntradayInvestorTrading(items=items) ``` #### get_investor_chart ¶ ``` get_investor_chart(date: str, stock_code: str, amt_qty_type: 'ChartAmtQtyType', trade_type: 'ChartTradeType', unit_type: 'ChartUnitType') -> InvestorChart ``` 종목별 투자자기관별 차트 데이터를 조회한다 (ka10060). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | date | str | 조회일자 ( "YYYYMMDD" ). | required | | stock_code | str | 거래소별 종목코드. | required | | amt_qty_type | 'ChartAmtQtyType' | 금액수량구분 ( "amount" 금액 / "qty" 수량). | required | | trade_type | 'ChartTradeType' | 매매구분 ( "net_buy" 순매수 / "buy" 매수 / "sell" 매도). | required | | unit_type | 'ChartUnitType' | 단위구분 ( "thousand" 천주 / "single" 단주). | required | 조회일자 ( "YYYYMMDD" ). 거래소별 종목코드. 금액수량구분 ( "amount" 금액 / "qty" 수량). 매매구분 ( "net_buy" 순매수 / "buy" 매수 / "sell" 매도). 단위구분 ( "thousand" 천주 / "single" 단주). Returns: | Type | Description | | --- | --- | | InvestorChart | class: ~kiwoompy.models.InvestorChart 인스턴스. | class: ~kiwoompy.models.InvestorChart 인스턴스. ``` def get_investor_chart( self, date: str, stock_code: str, amt_qty_type: "ChartAmtQtyType", trade_type: "ChartTradeType", unit_type: "ChartUnitType", ) -> InvestorChart: """종목별 투자자기관별 차트 데이터를 조회한다 (ka10060). Args: date: 조회일자 (``"YYYYMMDD"``). stock_code: 거래소별 종목코드. amt_qty_type: 금액수량구분 (``"amount"`` 금액 / ``"qty"`` 수량). trade_type: 매매구분 (``"net_buy"`` 순매수 / ``"buy"`` 매수 / ``"sell"`` 매도). unit_type: 단위구분 (``"thousand"`` 천주 / ``"single"`` 단주). Returns: :class:`~kiwoompy.models.InvestorChart` 인스턴스. """ raw = _check(self._api.post( self._CHART_PATH, { "dt": date, "stk_cd": stock_code, "amt_qty_tp": _CHART_AMT_QTY_CODE[amt_qty_type], "trde_tp": _CHART_TRADE_CODE[trade_type], "unit_tp": _CHART_UNIT_CODE[unit_type], }, headers=self._headers("ka10060"), )) items = [ InvestorChartItem( dt=item.get("dt", ""), cur_prc=item.get("cur_prc", ""), pred_pre=item.get("pred_pre", ""), acc_trde_prica=item.get("acc_trde_prica", ""), ind_invsr=item.get("ind_invsr", ""), frgnr_invsr=item.get("frgnr_invsr", ""), orgn=item.get("orgn", ""), fnnc_invt=item.get("fnnc_invt", ""), insrnc=item.get("insrnc", ""), invtrt=item.get("invtrt", ""), etc_fnnc=item.get("etc_fnnc", ""), bank=item.get("bank", ""), penfnd_etc=item.get("penfnd_etc", ""), samo_fund=item.get("samo_fund", ""), natn=item.get("natn", ""), etc_corp=item.get("etc_corp", ""), natfor=item.get("natfor", ""), ) for item in raw.get("stk_invsr_orgn_chart", []) ] return InvestorChart(items=items) ``` #### get_investor_daily_stocks ¶ ``` get_investor_daily_stocks(start_date: str, end_date: str, trade_type: 'InstitutionTradeType', investor_type: 'InvestorType2', market_type: 'MrktType3' = 'all', exchange: 'MrkcondExchangeType' = 'all') -> InvestorDailyStocks ``` 투자자별 일별 매매 상위 종목을 조회한다 (ka10058). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | start_date | str | 시작일자 ( YYYYMMDD 형식). | required | | end_date | str | 종료일자 ( YYYYMMDD 형식). | required | | trade_type | 'InstitutionTradeType' | 매매구분. "sell" : 순매도, "buy" : 순매수. | required | | investor_type | 'InvestorType2' | 투자자구분. "individual" : 개인, "foreign" : 외국인, "financial_inv" : 금융투자, "trust" : 투신, "private_fund" : 사모펀드, "other_fin" : 기타금융, "bank" : 은행, "insurance" : 보험, "pension" : 연기금, "gov" : 국가, "other_corp" : 기타법인, "institution" : 기관계. | required | | market_type | 'MrktType3' | 시장구분. "all" , "kospi" , "kosdaq" . | 'all' | | exchange | 'MrkcondExchangeType' | 거래소구분. "krx" , "nxt" , "all" . | 'all' | 시작일자 ( YYYYMMDD 형식). 종료일자 ( YYYYMMDD 형식). 매매구분. "sell" : 순매도, "buy" : 순매수. 투자자구분. "individual" : 개인, "foreign" : 외국인, "financial_inv" : 금융투자, "trust" : 투신, "private_fund" : 사모펀드, "other_fin" : 기타금융, "bank" : 은행, "insurance" : 보험, "pension" : 연기금, "gov" : 국가, "other_corp" : 기타법인, "institution" : 기관계. 시장구분. "all" , "kospi" , "kosdaq" . 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | InvestorDailyStocks | 투자자별일별매매종목 리스트 InvestorDailyStocks . | 투자자별일별매매종목 리스트 InvestorDailyStocks . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_investor_daily_stocks( self, start_date: str, end_date: str, trade_type: "InstitutionTradeType", investor_type: "InvestorType2", market_type: "MrktType3" = "all", exchange: "MrkcondExchangeType" = "all", ) -> InvestorDailyStocks: """투자자별 일별 매매 상위 종목을 조회한다 (ka10058). Args: start_date: 시작일자 (``YYYYMMDD`` 형식). end_date: 종료일자 (``YYYYMMDD`` 형식). trade_type: 매매구분. ``"sell"``: 순매도, ``"buy"``: 순매수. investor_type: 투자자구분. ``"individual"``: 개인, ``"foreign"``: 외국인, ``"financial_inv"``: 금융투자, ``"trust"``: 투신, ``"private_fund"``: 사모펀드, ``"other_fin"``: 기타금융, ``"bank"``: 은행, ``"insurance"``: 보험, ``"pension"``: 연기금, ``"gov"``: 국가, ``"other_corp"``: 기타법인, ``"institution"``: 기관계. market_type: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 투자자별일별매매종목 리스트 ``InvestorDailyStocks``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, { "strt_dt": start_date, "end_dt": end_date, "trde_tp": _INSTITUTION_TRADE_CODE[trade_type], "mrkt_tp": _MRKT_TYPE3_CODE[market_type], "invsr_tp": _INVESTOR2_CODE[investor_type], "stex_tp": _MRKCOND_EXCHANGE_CODE[exchange], }, headers=self._headers("ka10058"), )) items = [ InvestorDailyStockItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), netslmt_qty=item.get("netslmt_qty", ""), netslmt_amt=item.get("netslmt_amt", ""), cur_prc=item.get("cur_prc", ""), pre_rt=item.get("pre_rt", ""), ) for item in raw.get("invsr_daly_trde_stk", []) ] return InvestorDailyStocks(items=items) ``` #### get_investor_trade_upper ¶ ``` get_investor_trade_upper(trade_type: NetTradeType, market: 'RkinfoMarketType', org_type: 'RkinfoOrgType') -> InvestorTradeUpper ``` 장중 투자자별 매매 상위 종목을 조회한다 (ka10065). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | trade_type | NetTradeType | 매매구분. "net_buy" : 순매수, "net_sell" : 순매도. | required | | market | 'RkinfoMarketType' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | org_type | 'RkinfoOrgType' | 기관구분. "foreign" : 외국인, "institution" : 기관계 등. | required | 매매구분. "net_buy" : 순매수, "net_sell" : 순매도. 시장구분. "all" , "kospi" , "kosdaq" . 기관구분. "foreign" : 외국인, "institution" : 기관계 등. Returns: | Type | Description | | --- | --- | | InvestorTradeUpper | 장중투자자별매매상위 InvestorTradeUpper . | 장중투자자별매매상위 InvestorTradeUpper . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_investor_trade_upper( self, trade_type: NetTradeType, market: "RkinfoMarketType", org_type: "RkinfoOrgType", ) -> InvestorTradeUpper: """장중 투자자별 매매 상위 종목을 조회한다 (ka10065). Args: trade_type: 매매구분. ``"net_buy"``: 순매수, ``"net_sell"``: 순매도. market: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. org_type: 기관구분. ``"foreign"``: 외국인, ``"institution"``: 기관계 등. Returns: 장중투자자별매매상위 ``InvestorTradeUpper``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "trde_tp": _NET_TRADE_CODE[trade_type], "mrkt_tp": _RKINFO_MARKET_CODE[market], "orgn_tp": _RKINFO_ORG_TYPE_CODE[org_type], }, headers=self._headers("ka10065"), )) items = [ InvestorTradeUpperItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), sel_qty=item.get("sel_qty", ""), buy_qty=item.get("buy_qty", ""), netslmt=item.get("netslmt", ""), ) for item in raw.get("opmr_invsr_trde_upper", []) ] return InvestorTradeUpper(items=items) ``` #### get_limit_stocks ¶ ``` get_limit_stocks(up_down_type: str, market_type: 'MrktType3' = 'all', exchange: 'MrkcondExchangeType' = 'all', sort_type: str = '1', stock_condition: str = '0', volume_type: str = '00000', credit_condition: str = '0', price_condition: str = '0') -> LimitStocks ``` 상한가·하한가 종목을 조회한다 (ka10017). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | up_down_type | str | 상하한구분. "1" : 상한, "2" : 상승, "3" : 보합, "4" : 하한, "5" : 하락, "6" : 전일상한, "7" : 전일하한. | required | | market_type | 'MrktType3' | 시장구분. "all" , "kospi" , "kosdaq" . | 'all' | | exchange | 'MrkcondExchangeType' | 거래소구분. "krx" , "nxt" , "all" . | 'all' | | sort_type | str | 정렬구분. "1" : 종목코드순, "2" : 연속횟수순, "3" : 등락률순. | '1' | | stock_condition | str | 종목조건. "0" : 전체조회 등. | '0' | | volume_type | str | 거래량구분. "00000" : 전체조회 등. | '00000' | | credit_condition | str | 신용조건. "0" : 전체조회 등. | '0' | | price_condition | str | 매매금구분. "0" : 전체조회 등. | '0' | 상하한구분. "1" : 상한, "2" : 상승, "3" : 보합, "4" : 하한, "5" : 하락, "6" : 전일상한, "7" : 전일하한. 시장구분. "all" , "kospi" , "kosdaq" . 거래소구분. "krx" , "nxt" , "all" . 정렬구분. "1" : 종목코드순, "2" : 연속횟수순, "3" : 등락률순. 종목조건. "0" : 전체조회 등. 거래량구분. "00000" : 전체조회 등. 신용조건. "0" : 전체조회 등. 매매금구분. "0" : 전체조회 등. Returns: | Type | Description | | --- | --- | | LimitStocks | 상하한가 종목 리스트 LimitStocks . | 상하한가 종목 리스트 LimitStocks . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_limit_stocks( self, up_down_type: str, market_type: "MrktType3" = "all", exchange: "MrkcondExchangeType" = "all", sort_type: str = "1", stock_condition: str = "0", volume_type: str = "00000", credit_condition: str = "0", price_condition: str = "0", ) -> LimitStocks: """상한가·하한가 종목을 조회한다 (ka10017). Args: up_down_type: 상하한구분. ``"1"``: 상한, ``"2"``: 상승, ``"3"``: 보합, ``"4"``: 하한, ``"5"``: 하락, ``"6"``: 전일상한, ``"7"``: 전일하한. market_type: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. sort_type: 정렬구분. ``"1"``: 종목코드순, ``"2"``: 연속횟수순, ``"3"``: 등락률순. stock_condition: 종목조건. ``"0"``: 전체조회 등. volume_type: 거래량구분. ``"00000"``: 전체조회 등. credit_condition: 신용조건. ``"0"``: 전체조회 등. price_condition: 매매금구분. ``"0"``: 전체조회 등. Returns: 상하한가 종목 리스트 ``LimitStocks``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, { "mrkt_tp": _MRKT_TYPE3_CODE[market_type], "updown_tp": up_down_type, "sort_tp": sort_type, "stk_cnd": stock_condition, "trde_qty_tp": volume_type, "crd_cnd": credit_condition, "trde_gold_tp": price_condition, "stex_tp": _MRKCOND_EXCHANGE_CODE[exchange], }, headers=self._headers("ka10017"), )) items = [ LimitStockItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), flu_rt=item.get("flu_rt", ""), trde_qty=item.get("trde_qty", ""), sel_bid=item.get("sel_bid", ""), buy_bid=item.get("buy_bid", ""), cnt=item.get("cnt", ""), ) for item in raw.get("updown_pric", []) ] return LimitStocks(items=items) ``` #### get_margin_detail ¶ ``` get_margin_detail() -> MarginDetail ``` 증거금세부내역을 조회한다 (kt00013). Returns: | Type | Description | | --- | --- | | MarginDetail | 증거금세부내역 MarginDetail . | 증거금세부내역 MarginDetail . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_margin_detail(self) -> MarginDetail: """증거금세부내역을 조회한다 (kt00013). Returns: 증거금세부내역 ``MarginDetail``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {}, headers=self._headers("kt00013"), )) return MarginDetail( tdy_reu_alowa=raw.get("tdy_reu_alowa", ""), tdy_reu_alowa_fin=raw.get("tdy_reu_alowa_fin", ""), pred_reu_alowa=raw.get("pred_reu_alowa", ""), pred_reu_alowa_fin=raw.get("pred_reu_alowa_fin", ""), use_pos_ch=raw.get("use_pos_ch", ""), use_pos_ch_fin=raw.get("use_pos_ch_fin", ""), use_pos_repl=raw.get("use_pos_repl", ""), use_pos_repl_fin=raw.get("use_pos_repl_fin", ""), uncla=raw.get("uncla", ""), ord_alow_20=raw.get("20ord_alow_amt", ""), ord_alow_30=raw.get("30ord_alow_amt", ""), ord_alow_40=raw.get("40ord_alow_amt", ""), ord_alow_50=raw.get("50ord_alow_amt", ""), ord_alow_60=raw.get("60ord_alow_amt", ""), ord_alow_100=raw.get("100ord_alow_amt", ""), d2vexct_entr=raw.get("d2vexct_entr", ""), d2ch_ord_alow_amt=raw.get("d2ch_ord_alow_amt", ""), ) ``` #### get_market_summary ¶ ``` get_market_summary(stock_code: str) -> MarketSummary ``` 종목의 종합 시세표(현재가·호가·예상체결 등)를 조회한다 (ka10007). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | 거래소별 종목코드. Returns: | Type | Description | | --- | --- | | MarketSummary | 시세표성정보 MarketSummary . | 시세표성정보 MarketSummary . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_market_summary(self, stock_code: str) -> MarketSummary: """종목의 종합 시세표(현재가·호가·예상체결 등)를 조회한다 (ka10007). Args: stock_code: 거래소별 종목코드. Returns: 시세표성정보 ``MarketSummary``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._MRKCOND_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10007"), )) return MarketSummary( stk_nm=raw.get("stk_nm", ""), stk_cd=raw.get("stk_cd", ""), date=raw.get("date", ""), tm=raw.get("tm", ""), cur_prc=raw.get("cur_prc", ""), flu_rt=raw.get("flu_rt", ""), open_pric=raw.get("open_pric", ""), high_pric=raw.get("high_pric", ""), low_pric=raw.get("low_pric", ""), trde_qty=raw.get("trde_qty", ""), trde_prica=raw.get("trde_prica", ""), pred_close_pric=raw.get("pred_close_pric", ""), upl_pric=raw.get("upl_pric", ""), lst_pric=raw.get("lst_pric", ""), exp_cntr_pric=raw.get("exp_cntr_pric", ""), exp_cntr_qty=raw.get("exp_cntr_qty", ""), tot_buy_req=raw.get("tot_buy_req", ""), tot_sel_req=raw.get("tot_sel_req", ""), ) ``` #### get_near_high_low ¶ ``` get_near_high_low(high_low_type: 'HighLowSelectType', approach_rate: str, market_type: 'MrktType3' = 'all', exchange: 'MrkcondExchangeType' = 'all', volume_type: str = '00000', stock_condition: str = '0', credit_condition: str = '0') -> NearHighLow ``` 고가·저가 근접 종목을 조회한다 (ka10018). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | high_low_type | 'HighLowSelectType' | 고저구분. "high" : 고가, "low" : 저가. | required | | approach_rate | str | 근접율. "05" : 0.5%, "10" : 1.0%, "15" : 1.5% 등. | required | | market_type | 'MrktType3' | 시장구분. "all" , "kospi" , "kosdaq" . | 'all' | | exchange | 'MrkcondExchangeType' | 거래소구분. "krx" , "nxt" , "all" . | 'all' | | volume_type | str | 거래량구분. "00000" : 전체조회 등. | '00000' | | stock_condition | str | 종목조건. "0" : 전체조회 등. | '0' | | credit_condition | str | 신용조건. "0" : 전체조회 등. | '0' | 고저구분. "high" : 고가, "low" : 저가. 근접율. "05" : 0.5%, "10" : 1.0%, "15" : 1.5% 등. 시장구분. "all" , "kospi" , "kosdaq" . 거래소구분. "krx" , "nxt" , "all" . 거래량구분. "00000" : 전체조회 등. 종목조건. "0" : 전체조회 등. 신용조건. "0" : 전체조회 등. Returns: | Type | Description | | --- | --- | | NearHighLow | 고저가근접 종목 리스트 NearHighLow . | 고저가근접 종목 리스트 NearHighLow . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_near_high_low( self, high_low_type: "HighLowSelectType", approach_rate: str, market_type: "MrktType3" = "all", exchange: "MrkcondExchangeType" = "all", volume_type: str = "00000", stock_condition: str = "0", credit_condition: str = "0", ) -> NearHighLow: """고가·저가 근접 종목을 조회한다 (ka10018). Args: high_low_type: 고저구분. ``"high"``: 고가, ``"low"``: 저가. approach_rate: 근접율. ``"05"``: 0.5%, ``"10"``: 1.0%, ``"15"``: 1.5% 등. market_type: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. volume_type: 거래량구분. ``"00000"``: 전체조회 등. stock_condition: 종목조건. ``"0"``: 전체조회 등. credit_condition: 신용조건. ``"0"``: 전체조회 등. Returns: 고저가근접 종목 리스트 ``NearHighLow``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, { "high_low_tp": _HIGH_LOW_SELECT_CODE[high_low_type], "alacc_rt": approach_rate, "mrkt_tp": _MRKT_TYPE3_CODE[market_type], "trde_qty_tp": volume_type, "stk_cnd": stock_condition, "crd_cnd": credit_condition, "stex_tp": _MRKCOND_EXCHANGE_CODE[exchange], }, headers=self._headers("ka10018"), )) items = [ NearHighLowItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), flu_rt=item.get("flu_rt", ""), trde_qty=item.get("trde_qty", ""), tdy_high_pric=item.get("tdy_high_pric", ""), tdy_low_pric=item.get("tdy_low_pric", ""), ) for item in raw.get("high_low_pric_alacc", []) ] return NearHighLow(items=items) ``` #### get_net_buy_broker_rank ¶ ``` get_net_buy_broker_rank(stock_code: str, query_date_type: str, sort_base: str, period: str = '', start_date: str = '', end_date: str = '') -> NetBuyBrokerRank ``` 종목의 순매수 거래원 순위를 조회한다 (ka10042). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 종목코드 (예: "005930" ). | required | | query_date_type | str | 조회기간구분. "0" : 기간으로 조회, "1" : 시작일자·종료일자로 조회. | required | | sort_base | str | 정렬기준. "1" : 종가순, "2" : 날짜순. | required | | period | str | 기간. "5" : 5일, "10" : 10일, "20" : 20일 등 (기본 "" ). | '' | | start_date | str | 시작일자 YYYYMMDD (기본 "" ). | '' | | end_date | str | 종료일자 YYYYMMDD (기본 "" ). | '' | 종목코드 (예: "005930" ). 조회기간구분. "0" : 기간으로 조회, "1" : 시작일자·종료일자로 조회. 정렬기준. "1" : 종가순, "2" : 날짜순. 기간. "5" : 5일, "10" : 10일, "20" : 20일 등 (기본 "" ). 시작일자 YYYYMMDD (기본 "" ). 종료일자 YYYYMMDD (기본 "" ). Returns: | Type | Description | | --- | --- | | NetBuyBrokerRank | 순매수거래원순위 NetBuyBrokerRank . | 순매수거래원순위 NetBuyBrokerRank . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_net_buy_broker_rank( self, stock_code: str, query_date_type: str, sort_base: str, period: str = "", start_date: str = "", end_date: str = "", ) -> NetBuyBrokerRank: """종목의 순매수 거래원 순위를 조회한다 (ka10042). Args: stock_code: 종목코드 (예: ``"005930"``). query_date_type: 조회기간구분. ``"0"``: 기간으로 조회, ``"1"``: 시작일자·종료일자로 조회. sort_base: 정렬기준. ``"1"``: 종가순, ``"2"``: 날짜순. period: 기간. ``"5"``: 5일, ``"10"``: 10일, ``"20"``: 20일 등 (기본 ``""``). start_date: 시작일자 ``YYYYMMDD`` (기본 ``""``). end_date: 종료일자 ``YYYYMMDD`` (기본 ``""``). Returns: 순매수거래원순위 ``NetBuyBrokerRank``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "stk_cd": stock_code, "strt_dt": start_date, "end_dt": end_date, "qry_dt_tp": query_date_type, "pot_tp": "0", "dt": period, "sort_base": sort_base, }, headers=self._headers("ka10042"), )) items = [ NetBuyBrokerRankItem( rank=item.get("rank", ""), mmcm_cd=item.get("mmcm_cd", ""), mmcm_nm=item.get("mmcm_nm", ""), ) for item in raw.get("netprps_trde_ori_rank", []) ] return NetBuyBrokerRank(items=items) ``` #### get_newstock_rights_prices ¶ ``` get_newstock_rights_prices(rights_type: 'NewStockRightsType' = 'all') -> NewStockRightsPrices ``` 신주인수권 전체 시세를 조회한다 (ka10011). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | rights_type | 'NewStockRightsType' | 신주인수권구분. "all" : 전체, "rights_cert" : 신주인수권증권, "rights_deed" : 신주인수권증서. | 'all' | 신주인수권구분. "all" : 전체, "rights_cert" : 신주인수권증권, "rights_deed" : 신주인수권증서. Returns: | Type | Description | | --- | --- | | NewStockRightsPrices | 신주인수권 시세 리스트 NewStockRightsPrices . | 신주인수권 시세 리스트 NewStockRightsPrices . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_newstock_rights_prices( self, rights_type: "NewStockRightsType" = "all", ) -> NewStockRightsPrices: """신주인수권 전체 시세를 조회한다 (ka10011). Args: rights_type: 신주인수권구분. ``"all"``: 전체, ``"rights_cert"``: 신주인수권증권, ``"rights_deed"``: 신주인수권증서. Returns: 신주인수권 시세 리스트 ``NewStockRightsPrices``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._MRKCOND_PATH, {"newstk_recvrht_tp": _NEW_STOCK_RIGHTS_CODE[rights_type]}, headers=self._headers("ka10011"), )) items = [ NewStockRightsItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), pred_pre=item.get("pred_pre", ""), flu_rt=item.get("flu_rt", ""), acc_trde_qty=item.get("acc_trde_qty", ""), open_pric=item.get("open_pric", ""), high_pric=item.get("high_pric", ""), low_pric=item.get("low_pric", ""), ) for item in raw.get("newstk_recvrht_mrpr", []) ] return NewStockRightsPrices(items=items) ``` #### get_next_day_settlement ¶ ``` get_next_day_settlement(from_settlement_no: str = '') -> NextDaySettlement ``` 계좌별익일결제예정내역을 조회한다 (kt00008). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | from_settlement_no | str | 시작결제번호. 공백이면 전체. | '' | 시작결제번호. 공백이면 전체. Returns: | Type | Description | | --- | --- | | NextDaySettlement | 익일결제예정내역 NextDaySettlement . | 익일결제예정내역 NextDaySettlement . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_next_day_settlement( self, from_settlement_no: str = "", ) -> NextDaySettlement: """계좌별익일결제예정내역을 조회한다 (kt00008). Args: from_settlement_no: 시작결제번호. 공백이면 전체. Returns: 익일결제예정내역 ``NextDaySettlement``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {"strt_dcd_seq": from_settlement_no}, headers=self._headers("kt00008"), )) items = [ NextDaySettlementItem( seq=item.get("seq", ""), stk_cd=item.get("stk_cd", ""), loan_dt=item.get("loan_dt", ""), qty=item.get("qty", ""), engg_amt=item.get("engg_amt", ""), cmsn=item.get("cmsn", ""), incm_tax=item.get("incm_tax", ""), rstx=item.get("rstx", ""), stk_nm=item.get("stk_nm", ""), sell_tp=item.get("sell_tp", ""), unp=item.get("unp", ""), exct_amt=item.get("exct_amt", ""), trde_tax=item.get("trde_tax", ""), resi_tax=item.get("resi_tax", ""), crd_tp=item.get("crd_tp", ""), ) for item in raw.get("acnt_nxdy_setl_frcs_prps_array", []) ] return NextDaySettlement( trde_dt=raw.get("trde_dt", ""), setl_dt=raw.get("setl_dt", ""), sell_amt_sum=raw.get("sell_amt_sum", ""), buy_amt_sum=raw.get("buy_amt_sum", ""), items=items, ) ``` #### get_open_price_change ¶ ``` get_open_price_change(sort_type: str = '1', change_condition: str = '1', market_type: 'MrktType3' = 'all', exchange: 'MrkcondExchangeType' = 'all', volume_condition: str = '0000', include_limit: str = '1', stock_condition: str = '0', credit_condition: str = '0', amount_condition: str = '0') -> OpenPriceChange ``` 시가 대비 등락률 상·하위 종목을 조회한다 (ka10028). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | sort_type | str | 정렬구분. "1" : 시가, "2" : 고가, "3" : 저가, "4" : 기준가. | '1' | | change_condition | str | 등락조건. "1" : 상위, "2" : 하위. | '1' | | market_type | 'MrktType3' | 시장구분. "all" , "kospi" , "kosdaq" . | 'all' | | exchange | 'MrkcondExchangeType' | 거래소구분. "krx" , "nxt" , "all" . | 'all' | | volume_condition | str | 거래량조건. "0000" : 전체조회 등. | '0000' | | include_limit | str | 상하한포함. "0" : 불포함, "1" : 포함. | '1' | | stock_condition | str | 종목조건. "0" : 전체조회 등. | '0' | | credit_condition | str | 신용조건. "0" : 전체조회 등. | '0' | | amount_condition | str | 거래대금조건. "0" : 전체조회 등. | '0' | 정렬구분. "1" : 시가, "2" : 고가, "3" : 저가, "4" : 기준가. 등락조건. "1" : 상위, "2" : 하위. 시장구분. "all" , "kospi" , "kosdaq" . 거래소구분. "krx" , "nxt" , "all" . 거래량조건. "0000" : 전체조회 등. 상하한포함. "0" : 불포함, "1" : 포함. 종목조건. "0" : 전체조회 등. 신용조건. "0" : 전체조회 등. 거래대금조건. "0" : 전체조회 등. Returns: | Type | Description | | --- | --- | | OpenPriceChange | 시가대비등락률 종목 리스트 OpenPriceChange . | 시가대비등락률 종목 리스트 OpenPriceChange . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_open_price_change( self, sort_type: str = "1", change_condition: str = "1", market_type: "MrktType3" = "all", exchange: "MrkcondExchangeType" = "all", volume_condition: str = "0000", include_limit: str = "1", stock_condition: str = "0", credit_condition: str = "0", amount_condition: str = "0", ) -> OpenPriceChange: """시가 대비 등락률 상·하위 종목을 조회한다 (ka10028). Args: sort_type: 정렬구분. ``"1"``: 시가, ``"2"``: 고가, ``"3"``: 저가, ``"4"``: 기준가. change_condition: 등락조건. ``"1"``: 상위, ``"2"``: 하위. market_type: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. volume_condition: 거래량조건. ``"0000"``: 전체조회 등. include_limit: 상하한포함. ``"0"``: 불포함, ``"1"``: 포함. stock_condition: 종목조건. ``"0"``: 전체조회 등. credit_condition: 신용조건. ``"0"``: 전체조회 등. amount_condition: 거래대금조건. ``"0"``: 전체조회 등. Returns: 시가대비등락률 종목 리스트 ``OpenPriceChange``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, { "sort_tp": sort_type, "trde_qty_cnd": volume_condition, "mrkt_tp": _MRKT_TYPE3_CODE[market_type], "updown_incls": include_limit, "stk_cnd": stock_condition, "crd_cnd": credit_condition, "trde_prica_cnd": amount_condition, "flu_cnd": change_condition, "stex_tp": _MRKCOND_EXCHANGE_CODE[exchange], }, headers=self._headers("ka10028"), )) items = [ OpenPriceChangeItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), flu_rt=item.get("flu_rt", ""), open_pric=item.get("open_pric", ""), open_pric_pre=item.get("open_pric_pre", ""), now_trde_qty=item.get("now_trde_qty", ""), ) for item in raw.get("open_pric_pre_flu_rt", []) ] return OpenPriceChange(items=items) ``` #### get_order_execution_status ¶ ``` get_order_execution_status(stock_bond_type: StockBondType, market_type: MarketType, sell_type: SellType, query_type: ExecutionQueryType, exchange: DomesticExchange = 'KRX', order_date: str = '', stock_code: str = '', from_order_no: str = '') -> OrderExecutionStatus ``` 계좌별주문체결현황을 조회한다 (kt00009). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_bond_type | StockBondType | 주식채권구분. "all" : 전체, "stock" : 주식, "bond" : 채권. | required | | market_type | MarketType | 시장구분. "all" : 전체, "kospi" : 코스피, "kosdaq" : 코스닥, "otcbb" : OTCBB, "ecn" : ECN. | required | | sell_type | SellType | 매도수구분. "all" : 전체, "sell" : 매도, "buy" : 매수. | required | | query_type | ExecutionQueryType | 조회구분. "all" : 전체, "filled" : 체결. | required | | exchange | DomesticExchange | 국내거래소구분. 기본값 "KRX" . | 'KRX' | | order_date | str | 주문일자 ( YYYYMMDD 형식). 공백이면 당일. | '' | | stock_code | str | 종목코드. 공백이면 전체. | '' | | from_order_no | str | 시작주문번호. 공백이면 전체. | '' | 주식채권구분. "all" : 전체, "stock" : 주식, "bond" : 채권. 시장구분. "all" : 전체, "kospi" : 코스피, "kosdaq" : 코스닥, "otcbb" : OTCBB, "ecn" : ECN. 매도수구분. "all" : 전체, "sell" : 매도, "buy" : 매수. 조회구분. "all" : 전체, "filled" : 체결. 국내거래소구분. 기본값 "KRX" . 주문일자 ( YYYYMMDD 형식). 공백이면 당일. 종목코드. 공백이면 전체. 시작주문번호. 공백이면 전체. Returns: | Type | Description | | --- | --- | | OrderExecutionStatus | 주문체결현황 OrderExecutionStatus . | 주문체결현황 OrderExecutionStatus . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_order_execution_status( self, stock_bond_type: StockBondType, market_type: MarketType, sell_type: SellType, query_type: ExecutionQueryType, exchange: DomesticExchange = "KRX", order_date: str = "", stock_code: str = "", from_order_no: str = "", ) -> OrderExecutionStatus: """계좌별주문체결현황을 조회한다 (kt00009). Args: stock_bond_type: 주식채권구분. ``"all"``: 전체, ``"stock"``: 주식, ``"bond"``: 채권. market_type: 시장구분. ``"all"``: 전체, ``"kospi"``: 코스피, ``"kosdaq"``: 코스닥, ``"otcbb"``: OTCBB, ``"ecn"``: ECN. sell_type: 매도수구분. ``"all"``: 전체, ``"sell"``: 매도, ``"buy"``: 매수. query_type: 조회구분. ``"all"``: 전체, ``"filled"``: 체결. exchange: 국내거래소구분. 기본값 ``"KRX"``. order_date: 주문일자 (``YYYYMMDD`` 형식). 공백이면 당일. stock_code: 종목코드. 공백이면 전체. from_order_no: 시작주문번호. 공백이면 전체. Returns: 주문체결현황 ``OrderExecutionStatus``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, { "ord_dt": order_date, "stk_bond_tp": _STOCK_BOND_CODE[stock_bond_type], "mrkt_tp": _MARKET_TYPE_CODE[market_type], "sell_tp": _SELL_TYPE_CODE[sell_type], "qry_tp": _EXECUTION_QUERY_CODE[query_type], "stk_cd": stock_code, "fr_ord_no": from_order_no, "dmst_stex_tp": exchange, }, headers=self._headers("kt00009"), )) items = [ OrderExecutionStatusItem( stk_bond_tp=item.get("stk_bond_tp", ""), ord_no=item.get("ord_no", ""), stk_cd=item.get("stk_cd", ""), trde_tp=item.get("trde_tp", ""), io_tp_nm=item.get("io_tp_nm", ""), ord_qty=item.get("ord_qty", ""), ord_uv=item.get("ord_uv", ""), cnfm_qty=item.get("cnfm_qty", ""), rsrv_oppo=item.get("rsrv_oppo", ""), cntr_no=item.get("cntr_no", ""), acpt_tp=item.get("acpt_tp", ""), orig_ord_no=item.get("orig_ord_no", ""), stk_nm=item.get("stk_nm", ""), setl_tp=item.get("setl_tp", ""), crd_deal_tp=item.get("crd_deal_tp", ""), cntr_qty=item.get("cntr_qty", ""), cntr_uv=item.get("cntr_uv", ""), comm_ord_tp=item.get("comm_ord_tp", ""), mdfy_cncl_tp=item.get("mdfy_cncl_tp", ""), cntr_tm=item.get("cntr_tm", ""), dmst_stex_tp=item.get("dmst_stex_tp", ""), cond_uv=item.get("cond_uv", ""), ) for item in raw.get("acnt_ord_cntr_prst_array", []) ] return OrderExecutionStatus( sell_grntl_engg_amt=raw.get("sell_grntl_engg_amt", ""), buy_engg_amt=raw.get("buy_engg_amt", ""), engg_amt=raw.get("engg_amt", ""), items=items, ) ``` #### get_order_history_detail ¶ ``` get_order_history_detail(query_type: OrderHistoryQueryType, stock_bond_type: StockBondType, sell_type: SellType, exchange: DomesticExchange = '%', order_date: str = '', stock_code: str = '', from_order_no: str = '') -> list[OrderHistoryDetailItem] ``` 계좌별주문체결내역상세를 조회한다 (kt00007). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | query_type | OrderHistoryQueryType | 조회구분. "asc" : 주문순, "desc" : 역순, "unfilled" : 미체결, "filled_only" : 체결내역만. | required | | stock_bond_type | StockBondType | 주식채권구분. "all" : 전체, "stock" : 주식, "bond" : 채권. | required | | sell_type | SellType | 매도수구분. "all" : 전체, "sell" : 매도, "buy" : 매수. | required | | exchange | DomesticExchange | 국내거래소구분. 기본값 "%" (전체). | '%' | | order_date | str | 주문일자 ( YYYYMMDD 형식). 공백이면 당일. | '' | | stock_code | str | 종목코드. 공백이면 전체 종목. | '' | | from_order_no | str | 시작주문번호. 공백이면 전체 주문. | '' | 조회구분. "asc" : 주문순, "desc" : 역순, "unfilled" : 미체결, "filled_only" : 체결내역만. 주식채권구분. "all" : 전체, "stock" : 주식, "bond" : 채권. 매도수구분. "all" : 전체, "sell" : 매도, "buy" : 매수. 국내거래소구분. 기본값 "%" (전체). 주문일자 ( YYYYMMDD 형식). 공백이면 당일. 종목코드. 공백이면 전체 종목. 시작주문번호. 공백이면 전체 주문. Returns: | Type | Description | | --- | --- | | list [ OrderHistoryDetailItem ] | 주문체결내역 상세 목록. | 주문체결내역 상세 목록. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_order_history_detail( self, query_type: OrderHistoryQueryType, stock_bond_type: StockBondType, sell_type: SellType, exchange: DomesticExchange = "%", order_date: str = "", stock_code: str = "", from_order_no: str = "", ) -> list[OrderHistoryDetailItem]: """계좌별주문체결내역상세를 조회한다 (kt00007). Args: query_type: 조회구분. ``"asc"``: 주문순, ``"desc"``: 역순, ``"unfilled"``: 미체결, ``"filled_only"``: 체결내역만. stock_bond_type: 주식채권구분. ``"all"``: 전체, ``"stock"``: 주식, ``"bond"``: 채권. sell_type: 매도수구분. ``"all"``: 전체, ``"sell"``: 매도, ``"buy"``: 매수. exchange: 국내거래소구분. 기본값 ``"%"`` (전체). order_date: 주문일자 (``YYYYMMDD`` 형식). 공백이면 당일. stock_code: 종목코드. 공백이면 전체 종목. from_order_no: 시작주문번호. 공백이면 전체 주문. Returns: 주문체결내역 상세 목록. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, { "ord_dt": order_date, "qry_tp": _ORDER_HISTORY_QUERY_CODE[query_type], "stk_bond_tp": _STOCK_BOND_CODE[stock_bond_type], "sell_tp": _SELL_TYPE_CODE[sell_type], "stk_cd": stock_code, "fr_ord_no": from_order_no, "dmst_stex_tp": exchange, }, headers=self._headers("kt00007"), )) return [ OrderHistoryDetailItem( ord_no=item.get("ord_no", ""), stk_cd=item.get("stk_cd", ""), trde_tp=item.get("trde_tp", ""), crd_tp=item.get("crd_tp", ""), ord_qty=item.get("ord_qty", ""), ord_uv=item.get("ord_uv", ""), cnfm_qty=item.get("cnfm_qty", ""), acpt_tp=item.get("acpt_tp", ""), rsrv_tp=item.get("rsrv_tp", ""), ord_tm=item.get("ord_tm", ""), ori_ord=item.get("ori_ord", ""), stk_nm=item.get("stk_nm", ""), io_tp_nm=item.get("io_tp_nm", ""), loan_dt=item.get("loan_dt", ""), cntr_qty=item.get("cntr_qty", ""), cntr_uv=item.get("cntr_uv", ""), ord_remnq=item.get("ord_remnq", ""), comm_ord_tp=item.get("comm_ord_tp", ""), mdfy_cncl=item.get("mdfy_cncl", ""), cnfm_tm=item.get("cnfm_tm", ""), dmst_stex_tp=item.get("dmst_stex_tp", ""), cond_uv=item.get("cond_uv", ""), ) for item in raw.get("acnt_ord_cntr_prps_dtl", []) ] ``` #### get_orderable_amount ¶ ``` get_orderable_amount(stock_code: str, trade_type: TradeSide, price: str, io_amount: str = '', trade_qty: str = '', expected_buy_price: str = '') -> OrderableAmount ``` 주문인출가능금액을 조회한다 (kt00010). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 종목번호. | required | | trade_type | TradeSide | 매매구분. "sell" : 매도, "buy" : 매수. | required | | price | str | 매수가격 (단위: 원). | required | | io_amount | str | 입출금액. 공백 허용. | '' | | trade_qty | str | 매매수량. 공백 허용. | '' | | expected_buy_price | str | 예상매수단가. 공백 허용. | '' | 종목번호. 매매구분. "sell" : 매도, "buy" : 매수. 매수가격 (단위: 원). 입출금액. 공백 허용. 매매수량. 공백 허용. 예상매수단가. 공백 허용. Returns: | Type | Description | | --- | --- | | OrderableAmount | 주문인출가능금액 OrderableAmount . | 주문인출가능금액 OrderableAmount . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_orderable_amount( self, stock_code: str, trade_type: TradeSide, price: str, io_amount: str = "", trade_qty: str = "", expected_buy_price: str = "", ) -> OrderableAmount: """주문인출가능금액을 조회한다 (kt00010). Args: stock_code: 종목번호. trade_type: 매매구분. ``"sell"``: 매도, ``"buy"``: 매수. price: 매수가격 (단위: 원). io_amount: 입출금액. 공백 허용. trade_qty: 매매수량. 공백 허용. expected_buy_price: 예상매수단가. 공백 허용. Returns: 주문인출가능금액 ``OrderableAmount``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, { "io_amt": io_amount, "stk_cd": stock_code, "trde_tp": _SELL_TYPE_CODE[trade_type], "trde_qty": trade_qty, "uv": price, "exp_buy_unp": expected_buy_price, }, headers=self._headers("kt00010"), )) return OrderableAmount( profa_20ord_alow_amt=raw.get("profa_20ord_alow_amt", ""), profa_20ord_alowq=raw.get("profa_20ord_alowq", ""), profa_30ord_alow_amt=raw.get("profa_30ord_alow_amt", ""), profa_30ord_alowq=raw.get("profa_30ord_alowq", ""), profa_40ord_alow_amt=raw.get("profa_40ord_alow_amt", ""), profa_40ord_alowq=raw.get("profa_40ord_alowq", ""), profa_50ord_alow_amt=raw.get("profa_50ord_alow_amt", ""), profa_50ord_alowq=raw.get("profa_50ord_alowq", ""), profa_60ord_alow_amt=raw.get("profa_60ord_alow_amt", ""), profa_60ord_alowq=raw.get("profa_60ord_alowq", ""), profa_100ord_alow_amt=raw.get("profa_100ord_alow_amt", ""), profa_100ord_alowq=raw.get("profa_100ord_alowq", ""), entr=raw.get("entr", ""), repl_amt=raw.get("repl_amt", ""), ord_alowa=raw.get("ord_alowa", ""), wthd_alowa=raw.get("wthd_alowa", ""), nxdy_wthd_alowa=raw.get("nxdy_wthd_alowa", ""), d2entra=raw.get("d2entra", ""), ) ``` #### get_orderable_quantity ¶ ``` get_orderable_quantity(stock_code: str, price: str = '') -> OrderableQuantity ``` 증거금율별주문가능수량을 조회한다 (kt00011). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 종목번호. | required | | price | str | 매수가격. 공백 허용. | '' | 종목번호. 매수가격. 공백 허용. Returns: | Type | Description | | --- | --- | | OrderableQuantity | 증거금율별주문가능수량 OrderableQuantity . | 증거금율별주문가능수량 OrderableQuantity . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_orderable_quantity( self, stock_code: str, price: str = "", ) -> OrderableQuantity: """증거금율별주문가능수량을 조회한다 (kt00011). Args: stock_code: 종목번호. price: 매수가격. 공백 허용. Returns: 증거금율별주문가능수량 ``OrderableQuantity``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {"stk_cd": stock_code, "uv": price}, headers=self._headers("kt00011"), )) return OrderableQuantity( stk_profa_rt=raw.get("stk_profa_rt", ""), profa_rt=raw.get("profa_rt", ""), aplc_rt=raw.get("aplc_rt", ""), profa_20ord_alow_amt=raw.get("profa_20ord_alow_amt", ""), profa_20ord_alowq=raw.get("profa_20ord_alowq", ""), profa_30ord_alow_amt=raw.get("profa_30ord_alow_amt", ""), profa_30ord_alowq=raw.get("profa_30ord_alowq", ""), profa_40ord_alow_amt=raw.get("profa_40ord_alow_amt", ""), profa_40ord_alowq=raw.get("profa_40ord_alowq", ""), profa_50ord_alow_amt=raw.get("profa_50ord_alow_amt", ""), profa_50ord_alowq=raw.get("profa_50ord_alowq", ""), profa_60ord_alow_amt=raw.get("profa_60ord_alow_amt", ""), profa_60ord_alowq=raw.get("profa_60ord_alowq", ""), profa_100ord_alow_amt=raw.get("profa_100ord_alow_amt", ""), profa_100ord_alowq=raw.get("profa_100ord_alowq", ""), entr=raw.get("entr", ""), repl_amt=raw.get("repl_amt", ""), ord_alowa=raw.get("ord_alowa", ""), ) ``` #### get_orderbook ¶ ``` get_orderbook(stock_code: str) -> Orderbook ``` 주식 10차 호가 및 잔량을 조회한다 (ka10004). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. KRX: "005930" , NXT: "005930_NX" , SOR: "005930_AL" . | required | 거래소별 종목코드. KRX: "005930" , NXT: "005930_NX" , SOR: "005930_AL" . Returns: | Type | Description | | --- | --- | | Orderbook | 호가 정보 Orderbook . | 호가 정보 Orderbook . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_orderbook(self, stock_code: str) -> Orderbook: """주식 10차 호가 및 잔량을 조회한다 (ka10004). Args: stock_code: 거래소별 종목코드. KRX: ``"005930"``, NXT: ``"005930_NX"``, SOR: ``"005930_AL"``. Returns: 호가 정보 ``Orderbook``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._MRKCOND_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10004"), )) def _sell_level(n: int) -> OrderbookLevel: if n == 1: return OrderbookLevel( price=raw.get("sel_fpr_bid", ""), qty=raw.get("sel_fpr_req", ""), qty_change=raw.get("sel_1th_pre_req_pre", ""), ) return OrderbookLevel( price=raw.get(f"sel_{n}th_pre_bid", ""), qty=raw.get(f"sel_{n}th_pre_req", ""), qty_change=raw.get(f"sel_{n}th_pre_req_pre", ""), ) def _buy_level(n: int) -> OrderbookLevel: if n == 1: return OrderbookLevel( price=raw.get("buy_fpr_bid", ""), qty=raw.get("buy_fpr_req", ""), qty_change=raw.get("buy_1th_pre_req_pre", ""), ) return OrderbookLevel( price=raw.get(f"buy_{n}th_pre_bid", ""), qty=raw.get(f"buy_{n}th_pre_req", ""), qty_change=raw.get(f"buy_{n}th_pre_req_pre", ""), ) return Orderbook( base_time=raw.get("bid_req_base_tm", ""), sell_levels=[_sell_level(i) for i in range(1, 11)], buy_levels=[_buy_level(i) for i in range(1, 11)], tot_sell_qty=raw.get("tot_sel_req", ""), tot_buy_qty=raw.get("tot_buy_req", ""), tot_sell_qty_change=raw.get("tot_sel_req_jub_pre", ""), tot_buy_qty_change=raw.get("tot_buy_req_jub_pre", ""), ovt_sell_qty=raw.get("ovt_sel_req", ""), ovt_buy_qty=raw.get("ovt_buy_req", ""), ovt_sell_qty_change=raw.get("ovt_sel_req_pre", ""), ovt_buy_qty_change=raw.get("ovt_buy_req_pre", ""), ) ``` #### get_prev_trade_qty_upper ¶ ``` get_prev_trade_qty_upper(market: 'RkinfoMarketType', query_type: str, rank_start: str, rank_end: str, exchange: 'RkinfoStexType') -> PrevTradeQtyUpper ``` 전일거래량 상위 종목을 조회한다 (ka10031). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'RkinfoMarketType' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | query_type | str | 조회구분. "1" : 전일거래량 상위100, "2" : 전일거래대금 상위100. | required | | rank_start | str | 순위시작 ( "0" ~ "100" 값 중 조회 시작 순위). | required | | rank_end | str | 순위끝 ( "0" ~ "100" 값 중 조회 끝 순위). | required | | exchange | 'RkinfoStexType' | 거래소구분. "krx" , "nxt" , "all" . | required | 시장구분. "all" , "kospi" , "kosdaq" . 조회구분. "1" : 전일거래량 상위100, "2" : 전일거래대금 상위100. 순위시작 ( "0" ~ "100" 값 중 조회 시작 순위). 순위끝 ( "0" ~ "100" 값 중 조회 끝 순위). 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | PrevTradeQtyUpper | 전일거래량상위 PrevTradeQtyUpper . | 전일거래량상위 PrevTradeQtyUpper . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_prev_trade_qty_upper( self, market: "RkinfoMarketType", query_type: str, rank_start: str, rank_end: str, exchange: "RkinfoStexType", ) -> PrevTradeQtyUpper: """전일거래량 상위 종목을 조회한다 (ka10031). Args: market: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. query_type: 조회구분. ``"1"``: 전일거래량 상위100, ``"2"``: 전일거래대금 상위100. rank_start: 순위시작 (``"0"``~``"100"`` 값 중 조회 시작 순위). rank_end: 순위끝 (``"0"``~``"100"`` 값 중 조회 끝 순위). exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 전일거래량상위 ``PrevTradeQtyUpper``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "mrkt_tp": _RKINFO_MARKET_CODE[market], "qry_tp": query_type, "rank_strt": rank_start, "rank_end": rank_end, "stex_tp": _RKINFO_STEX_CODE[exchange], }, headers=self._headers("ka10031"), )) items = [ PrevTradeQtyUpperItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), pred_pre_sig=item.get("pred_pre_sig", ""), pred_pre=item.get("pred_pre", ""), trde_qty=item.get("trde_qty", ""), ) for item in raw.get("pred_trde_qty_upper", []) ] return PrevTradeQtyUpper(items=items) ``` #### get_price_change_upper ¶ ``` get_price_change_upper(market: 'RkinfoMarketType', sort_type: 'RkinfoPriceChangeSortType', trade_qty_cond: str, stock_cond: str, credit_cond: str, updown_incls: str, price_cond: str, trade_amt_cond: str, exchange: 'RkinfoStexType') -> PriceChangeUpper ``` 전일대비 등락률 상위 종목을 조회한다 (ka10027). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'RkinfoMarketType' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | sort_type | 'RkinfoPriceChangeSortType' | 정렬구분. "rise_ratio" : 상승률, "rise_gap" : 상승폭, "fall_ratio" : 하락률, "fall_gap" : 하락폭, "flat" : 보합. | required | | trade_qty_cond | str | 거래량조건 ( "0000" , "0010" , …). | required | | stock_cond | str | 종목조건 ( "0" ~ "16" ). | required | | credit_cond | str | 신용조건 ( "0" , "9" 등). | required | | updown_incls | str | 상하한포함. "0" : 미포함, "1" : 포함. | required | | price_cond | str | 가격조건 ( "0" ~ "10" ). | required | | trade_amt_cond | str | 거래대금조건 ( "0" , "3" ~ "5000" ). | required | | exchange | 'RkinfoStexType' | 거래소구분. "krx" , "nxt" , "all" . | required | 시장구분. "all" , "kospi" , "kosdaq" . 정렬구분. "rise_ratio" : 상승률, "rise_gap" : 상승폭, "fall_ratio" : 하락률, "fall_gap" : 하락폭, "flat" : 보합. 거래량조건 ( "0000" , "0010" , …). 종목조건 ( "0" ~ "16" ). 신용조건 ( "0" , "9" 등). 상하한포함. "0" : 미포함, "1" : 포함. 가격조건 ( "0" ~ "10" ). 거래대금조건 ( "0" , "3" ~ "5000" ). 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | PriceChangeUpper | 전일대비등락률상위 PriceChangeUpper . | 전일대비등락률상위 PriceChangeUpper . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_price_change_upper( self, market: "RkinfoMarketType", sort_type: "RkinfoPriceChangeSortType", trade_qty_cond: str, stock_cond: str, credit_cond: str, updown_incls: str, price_cond: str, trade_amt_cond: str, exchange: "RkinfoStexType", ) -> PriceChangeUpper: """전일대비 등락률 상위 종목을 조회한다 (ka10027). Args: market: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. sort_type: 정렬구분. ``"rise_ratio"``: 상승률, ``"rise_gap"``: 상승폭, ``"fall_ratio"``: 하락률, ``"fall_gap"``: 하락폭, ``"flat"``: 보합. trade_qty_cond: 거래량조건 (``"0000"``, ``"0010"``, …). stock_cond: 종목조건 (``"0"``~``"16"``). credit_cond: 신용조건 (``"0"``, ``"9"`` 등). updown_incls: 상하한포함. ``"0"``: 미포함, ``"1"``: 포함. price_cond: 가격조건 (``"0"``~``"10"``). trade_amt_cond: 거래대금조건 (``"0"``, ``"3"``~``"5000"``). exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 전일대비등락률상위 ``PriceChangeUpper``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "mrkt_tp": _RKINFO_MARKET_CODE[market], "sort_tp": _RKINFO_PRICE_CHANGE_SORT_CODE[sort_type], "trde_qty_cnd": trade_qty_cond, "stk_cnd": stock_cond, "crd_cnd": credit_cond, "updown_incls": updown_incls, "pric_cnd": price_cond, "trde_prica_cnd": trade_amt_cond, "stex_tp": _RKINFO_STEX_CODE[exchange], }, headers=self._headers("ka10027"), )) items = [ PriceChangeUpperItem( stk_cls=item.get("stk_cls", ""), stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), pred_pre_sig=item.get("pred_pre_sig", ""), pred_pre=item.get("pred_pre", ""), flu_rt=item.get("flu_rt", ""), sel_req=item.get("sel_req", ""), buy_req=item.get("buy_req", ""), now_trde_qty=item.get("now_trde_qty", ""), cntr_str=item.get("cntr_str", ""), cnt=item.get("cnt", ""), ) for item in raw.get("pred_pre_flu_rt_upper", []) ] return PriceChangeUpper(items=items) ``` #### get_price_surge_stocks ¶ ``` get_price_surge_stocks(surge_type: str, time_type: str, time_value: str, market_type: 'MrktType3Ext' = 'all', exchange: 'MrkcondExchangeType' = 'all', volume_type: str = '00000', stock_condition: str = '0', credit_condition: str = '0', price_condition: str = '0', include_limit: str = '1') -> PriceSurgeStocks ``` 가격 급등·급락 종목을 조회한다 (ka10019). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | surge_type | str | 등락구분. "1" : 급등, "2" : 급락. | required | | time_type | str | 시간구분. "1" : 분전, "2" : 일전. | required | | time_value | str | 시간(분 또는 일). 예) "60" → 60분 전 대비. | required | | market_type | 'MrktType3Ext' | 시장구분. "all" , "kospi" , "kosdaq" , "kospi200" . | 'all' | | exchange | 'MrkcondExchangeType' | 거래소구분. "krx" , "nxt" , "all" . | 'all' | | volume_type | str | 거래량구분. "00000" : 전체조회 등. | '00000' | | stock_condition | str | 종목조건. "0" : 전체조회 등. | '0' | | credit_condition | str | 신용조건. "0" : 전체조회 등. | '0' | | price_condition | str | 가격조건. "0" : 전체조회 등. | '0' | | include_limit | str | 상하한포함. "0" : 미포함, "1" : 포함. | '1' | 등락구분. "1" : 급등, "2" : 급락. 시간구분. "1" : 분전, "2" : 일전. 시간(분 또는 일). 예) "60" → 60분 전 대비. 시장구분. "all" , "kospi" , "kosdaq" , "kospi200" . 거래소구분. "krx" , "nxt" , "all" . 거래량구분. "00000" : 전체조회 등. 종목조건. "0" : 전체조회 등. 신용조건. "0" : 전체조회 등. 가격조건. "0" : 전체조회 등. 상하한포함. "0" : 미포함, "1" : 포함. Returns: | Type | Description | | --- | --- | | PriceSurgeStocks | 가격급등락 종목 리스트 PriceSurgeStocks . | 가격급등락 종목 리스트 PriceSurgeStocks . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_price_surge_stocks( self, surge_type: str, time_type: str, time_value: str, market_type: "MrktType3Ext" = "all", exchange: "MrkcondExchangeType" = "all", volume_type: str = "00000", stock_condition: str = "0", credit_condition: str = "0", price_condition: str = "0", include_limit: str = "1", ) -> PriceSurgeStocks: """가격 급등·급락 종목을 조회한다 (ka10019). Args: surge_type: 등락구분. ``"1"``: 급등, ``"2"``: 급락. time_type: 시간구분. ``"1"``: 분전, ``"2"``: 일전. time_value: 시간(분 또는 일). 예) ``"60"`` → 60분 전 대비. market_type: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``, ``"kospi200"``. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. volume_type: 거래량구분. ``"00000"``: 전체조회 등. stock_condition: 종목조건. ``"0"``: 전체조회 등. credit_condition: 신용조건. ``"0"``: 전체조회 등. price_condition: 가격조건. ``"0"``: 전체조회 등. include_limit: 상하한포함. ``"0"``: 미포함, ``"1"``: 포함. Returns: 가격급등락 종목 리스트 ``PriceSurgeStocks``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, { "mrkt_tp": _MRKT_TYPE3_EXT_CODE[market_type], "flu_tp": surge_type, "tm_tp": time_type, "tm": time_value, "trde_qty_tp": volume_type, "stk_cnd": stock_condition, "crd_cnd": credit_condition, "pric_cnd": price_condition, "updown_incls": include_limit, "stex_tp": _MRKCOND_EXCHANGE_CODE[exchange], }, headers=self._headers("ka10019"), )) items = [ PriceSurgeItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), flu_rt=item.get("flu_rt", ""), base_pric=item.get("base_pric", ""), jmp_rt=item.get("jmp_rt", ""), trde_qty=item.get("trde_qty", ""), ) for item in raw.get("pric_jmpflu", []) ] return PriceSurgeStocks(items=items) ``` #### get_program_acc_trend ¶ ``` get_program_acc_trend(date: str, amt_qty_type: str, market_type: str, exchange: 'ExchangeType') -> ProgramAccTrend ``` 프로그램 매매 누적 추이를 조회한다 (ka90007). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | date | str | 날짜 ( "YYYYMMDD" ). | required | | amt_qty_type | str | 금액수량구분 ( "1" 금액 / "2" 수량). | required | | market_type | str | 시장구분 ( "0" 코스피 / "1" 코스닥). | required | | exchange | 'ExchangeType' | 거래소구분 ( "krx" / "nxt" / "all" ). | required | 날짜 ( "YYYYMMDD" ). 금액수량구분 ( "1" 금액 / "2" 수량). 시장구분 ( "0" 코스피 / "1" 코스닥). 거래소구분 ( "krx" / "nxt" / "all" ). Returns: | Type | Description | | --- | --- | | ProgramAccTrend | class: ~kiwoompy.models.ProgramAccTrend 인스턴스. | class: ~kiwoompy.models.ProgramAccTrend 인스턴스. ``` def get_program_acc_trend( self, date: str, amt_qty_type: str, market_type: str, exchange: "ExchangeType", ) -> ProgramAccTrend: """프로그램 매매 누적 추이를 조회한다 (ka90007). Args: date: 날짜 (``"YYYYMMDD"``). amt_qty_type: 금액수량구분 (``"1"``금액 / ``"2"``수량). market_type: 시장구분 (``"0"``코스피 / ``"1"``코스닥). exchange: 거래소구분 (``"krx"`` / ``"nxt"`` / ``"all"``). Returns: :class:`~kiwoompy.models.ProgramAccTrend` 인스턴스. """ raw = _check(self._api.post( self._MRKCOND_PATH, { "date": date, "amt_qty_tp": amt_qty_type, "mrkt_tp": market_type, "stex_tp": _EXCHANGE_CODE[exchange], }, headers=self._headers("ka90007"), )) items = [ ProgramAccTrendItem( dt=it.get("dt", ""), kospi200=it.get("kospi200", ""), basis=it.get("basis", ""), dfrt_trde_tdy=it.get("dfrt_trde_tdy", ""), dfrt_trde_acc=it.get("dfrt_trde_acc", ""), ndiffpro_trde_tdy=it.get("ndiffpro_trde_tdy", ""), ndiffpro_trde_acc=it.get("ndiffpro_trde_acc", ""), all_tdy=it.get("all_tdy", ""), all_acc=it.get("all_acc", ""), ) for it in raw.get("prm_trde_acc_trnsn", []) ] return ProgramAccTrend(items=items) ``` #### get_program_arbitrage_bal ¶ ``` get_program_arbitrage_bal(date: str, exchange: 'ExchangeType') -> ProgramArbitrageBal ``` 프로그램 매매 차익 잔고 추이를 조회한다 (ka90006). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | date | str | 날짜 ( "YYYYMMDD" ). | required | | exchange | 'ExchangeType' | 거래소구분 ( "krx" / "nxt" / "all" ). | required | 날짜 ( "YYYYMMDD" ). 거래소구분 ( "krx" / "nxt" / "all" ). Returns: | Type | Description | | --- | --- | | ProgramArbitrageBal | class: ~kiwoompy.models.ProgramArbitrageBal 인스턴스. | class: ~kiwoompy.models.ProgramArbitrageBal 인스턴스. ``` def get_program_arbitrage_bal( self, date: str, exchange: "ExchangeType", ) -> ProgramArbitrageBal: """프로그램 매매 차익 잔고 추이를 조회한다 (ka90006). Args: date: 날짜 (``"YYYYMMDD"``). exchange: 거래소구분 (``"krx"`` / ``"nxt"`` / ``"all"``). Returns: :class:`~kiwoompy.models.ProgramArbitrageBal` 인스턴스. """ raw = _check(self._api.post( self._MRKCOND_PATH, { "date": date, "stex_tp": _EXCHANGE_CODE[exchange], }, headers=self._headers("ka90006"), )) items = [ ProgramArbitrageBalItem( dt=it.get("dt", ""), buy_dfrt_trde_qty=it.get("buy_dfrt_trde_qty", ""), buy_dfrt_trde_amt=it.get("buy_dfrt_trde_amt", ""), buy_dfrt_trde_irds_amt=it.get("buy_dfrt_trde_irds_amt", ""), sel_dfrt_trde_qty=it.get("sel_dfrt_trde_qty", ""), sel_dfrt_trde_amt=it.get("sel_dfrt_trde_amt", ""), sel_dfrt_trde_irds_amt=it.get("sel_dfrt_trde_irds_amt", ""), ) for it in raw.get("prm_trde_dfrt_remn_trnsn", []) ] return ProgramArbitrageBal(items=items) ``` #### get_program_top50 ¶ ``` get_program_top50(trade_upper_type: str, amt_qty_type: str, market_type: str, exchange: 'ExchangeType') -> ProgramTop50 ``` 프로그램 순매수 상위 50 종목을 조회한다 (ka90003). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | trade_upper_type | str | 매매상위구분 ( "1" 순매도상위 / "2" 순매수상위). | required | | amt_qty_type | str | 금액수량구분 ( "1" 금액 / "2" 수량). | required | | market_type | str | 시장구분 ( "P00101" 코스피 / "P10102" 코스닥). | required | | exchange | 'ExchangeType' | 거래소구분 ( "krx" / "nxt" / "all" ). | required | 매매상위구분 ( "1" 순매도상위 / "2" 순매수상위). 금액수량구분 ( "1" 금액 / "2" 수량). 시장구분 ( "P00101" 코스피 / "P10102" 코스닥). 거래소구분 ( "krx" / "nxt" / "all" ). Returns: | Type | Description | | --- | --- | | ProgramTop50 | class: ~kiwoompy.models.ProgramTop50 인스턴스. | class: ~kiwoompy.models.ProgramTop50 인스턴스. ``` def get_program_top50( self, trade_upper_type: str, amt_qty_type: str, market_type: str, exchange: "ExchangeType", ) -> ProgramTop50: """프로그램 순매수 상위 50 종목을 조회한다 (ka90003). Args: trade_upper_type: 매매상위구분 (``"1"``순매도상위 / ``"2"``순매수상위). amt_qty_type: 금액수량구분 (``"1"``금액 / ``"2"``수량). market_type: 시장구분 (``"P00101"``코스피 / ``"P10102"``코스닥). exchange: 거래소구분 (``"krx"`` / ``"nxt"`` / ``"all"``). Returns: :class:`~kiwoompy.models.ProgramTop50` 인스턴스. """ raw = _check(self._api.post( self._STKINFO_PATH, { "trde_upper_tp": trade_upper_type, "amt_qty_tp": amt_qty_type, "mrkt_tp": market_type, "stex_tp": _EXCHANGE_CODE[exchange], }, headers=self._headers("ka90003"), )) items = [ ProgramTop50Item( rank=it.get("rank", ""), stk_cd=it.get("stk_cd", ""), stk_nm=it.get("stk_nm", ""), cur_prc=it.get("cur_prc", ""), flu_sig=it.get("flu_sig", ""), pred_pre=it.get("pred_pre", ""), flu_rt=it.get("flu_rt", ""), acc_trde_qty=it.get("acc_trde_qty", ""), prm_sell_amt=it.get("prm_sell_amt", ""), prm_buy_amt=it.get("prm_buy_amt", ""), prm_netprps_amt=it.get("prm_netprps_amt", ""), ) for it in raw.get("prm_netprps_upper_50", []) ] return ProgramTop50(items=items) ``` #### get_program_trend_by_day ¶ ``` get_program_trend_by_day(date: str, amt_qty_type: str, market_type: str, min_tic_type: str, exchange: 'ExchangeType') -> ProgramTrend ``` 프로그램 매매 추이(일자별)를 조회한다 (ka90010). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | date | str | 날짜 ( "YYYYMMDD" ). | required | | amt_qty_type | str | 금액수량구분 ( "1" 금액(백만원) / "2" 수량(천주)). | required | | market_type | str | 시장구분 ( "P00101" 코스피KRX 등). | required | | min_tic_type | str | 분틱구분 ( "0" 틱 / "1" 분). | required | | exchange | 'ExchangeType' | 거래소구분 ( "krx" / "nxt" / "all" ). | required | 날짜 ( "YYYYMMDD" ). 금액수량구분 ( "1" 금액(백만원) / "2" 수량(천주)). 시장구분 ( "P00101" 코스피KRX 등). 분틱구분 ( "0" 틱 / "1" 분). 거래소구분 ( "krx" / "nxt" / "all" ). Returns: | Type | Description | | --- | --- | | ProgramTrend | class: ~kiwoompy.models.ProgramTrend 인스턴스. | class: ~kiwoompy.models.ProgramTrend 인스턴스. ``` def get_program_trend_by_day( self, date: str, amt_qty_type: str, market_type: str, min_tic_type: str, exchange: "ExchangeType", ) -> ProgramTrend: """프로그램 매매 추이(일자별)를 조회한다 (ka90010). Args: date: 날짜 (``"YYYYMMDD"``). amt_qty_type: 금액수량구분 (``"1"``금액(백만원) / ``"2"``수량(천주)). market_type: 시장구분 (``"P00101"``코스피KRX 등). min_tic_type: 분틱구분 (``"0"``틱 / ``"1"``분). exchange: 거래소구분 (``"krx"`` / ``"nxt"`` / ``"all"``). Returns: :class:`~kiwoompy.models.ProgramTrend` 인스턴스. """ raw = _check(self._api.post( self._MRKCOND_PATH, { "date": date, "amt_qty_tp": amt_qty_type, "mrkt_tp": market_type, "min_tic_tp": min_tic_type, "stex_tp": _EXCHANGE_CODE[exchange], }, headers=self._headers("ka90010"), )) items = [ ProgramTrendItem( cntr_tm=it.get("cntr_tm", ""), dfrt_trde_sel=it.get("dfrt_trde_sel", ""), dfrt_trde_buy=it.get("dfrt_trde_buy", ""), dfrt_trde_netprps=it.get("dfrt_trde_netprps", ""), ndiffpro_trde_sel=it.get("ndiffpro_trde_sel", ""), ndiffpro_trde_buy=it.get("ndiffpro_trde_buy", ""), ndiffpro_trde_netprps=it.get("ndiffpro_trde_netprps", ""), dfrt_trde_sell_qty=it.get("dfrt_trde_sell_qty", ""), dfrt_trde_buy_qty=it.get("dfrt_trde_buy_qty", ""), dfrt_trde_netprps_qty=it.get("dfrt_trde_netprps_qty", ""), ndiffpro_trde_sell_qty=it.get("ndiffpro_trde_sell_qty", ""), ndiffpro_trde_buy_qty=it.get("ndiffpro_trde_buy_qty", ""), ndiffpro_trde_netprps_qty=it.get("ndiffpro_trde_netprps_qty", ""), all_sel=it.get("all_sel", ""), all_buy=it.get("all_buy", ""), all_netprps=it.get("all_netprps", ""), kospi200=it.get("kospi200", ""), basis=it.get("basis", ""), ) for it in raw.get("prm_trde_trnsn", []) ] return ProgramTrend(items=items) ``` #### get_program_trend_by_time ¶ ``` get_program_trend_by_time(date: str, amt_qty_type: str, market_type: str, min_tic_type: str, exchange: 'ExchangeType') -> ProgramTrend ``` 프로그램 매매 추이(시간대별)를 조회한다 (ka90005). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | date | str | 날짜 ( "YYYYMMDD" ). | required | | amt_qty_type | str | 금액수량구분 ( "1" 금액(백만원) / "2" 수량(천주)). | required | | market_type | str | 시장구분 ( "P00101" 코스피KRX 등). | required | | min_tic_type | str | 분틱구분 ( "0" 틱 / "1" 분). | required | | exchange | 'ExchangeType' | 거래소구분 ( "krx" / "nxt" / "all" ). | required | 날짜 ( "YYYYMMDD" ). 금액수량구분 ( "1" 금액(백만원) / "2" 수량(천주)). 시장구분 ( "P00101" 코스피KRX 등). 분틱구분 ( "0" 틱 / "1" 분). 거래소구분 ( "krx" / "nxt" / "all" ). Returns: | Type | Description | | --- | --- | | ProgramTrend | class: ~kiwoompy.models.ProgramTrend 인스턴스. | class: ~kiwoompy.models.ProgramTrend 인스턴스. ``` def get_program_trend_by_time( self, date: str, amt_qty_type: str, market_type: str, min_tic_type: str, exchange: "ExchangeType", ) -> ProgramTrend: """프로그램 매매 추이(시간대별)를 조회한다 (ka90005). Args: date: 날짜 (``"YYYYMMDD"``). amt_qty_type: 금액수량구분 (``"1"``금액(백만원) / ``"2"``수량(천주)). market_type: 시장구분 (``"P00101"``코스피KRX 등). min_tic_type: 분틱구분 (``"0"``틱 / ``"1"``분). exchange: 거래소구분 (``"krx"`` / ``"nxt"`` / ``"all"``). Returns: :class:`~kiwoompy.models.ProgramTrend` 인스턴스. """ raw = _check(self._api.post( self._MRKCOND_PATH, { "date": date, "amt_qty_tp": amt_qty_type, "mrkt_tp": market_type, "min_tic_tp": min_tic_type, "stex_tp": _EXCHANGE_CODE[exchange], }, headers=self._headers("ka90005"), )) items = [ ProgramTrendItem( cntr_tm=it.get("cntr_tm", ""), dfrt_trde_sel=it.get("dfrt_trde_sel", ""), dfrt_trde_buy=it.get("dfrt_trde_buy", ""), dfrt_trde_netprps=it.get("dfrt_trde_netprps", ""), ndiffpro_trde_sel=it.get("ndiffpro_trde_sel", ""), ndiffpro_trde_buy=it.get("ndiffpro_trde_buy", ""), ndiffpro_trde_netprps=it.get("ndiffpro_trde_netprps", ""), dfrt_trde_sell_qty=it.get("dfrt_trde_sell_qty", ""), dfrt_trde_buy_qty=it.get("dfrt_trde_buy_qty", ""), dfrt_trde_netprps_qty=it.get("dfrt_trde_netprps_qty", ""), ndiffpro_trde_sell_qty=it.get("ndiffpro_trde_sell_qty", ""), ndiffpro_trde_buy_qty=it.get("ndiffpro_trde_buy_qty", ""), ndiffpro_trde_netprps_qty=it.get("ndiffpro_trde_netprps_qty", ""), all_sel=it.get("all_sel", ""), all_buy=it.get("all_buy", ""), all_netprps=it.get("all_netprps", ""), kospi200=it.get("kospi200", ""), basis=it.get("basis", ""), ) for it in raw.get("prm_trde_trnsn", []) ] return ProgramTrend(items=items) ``` #### get_qty_ratio_surge ¶ ``` get_qty_ratio_surge(market: 'RkinfoMarketType', ratio_type: str, time_min: str, trade_qty_type: str, stock_cond: str, exchange: 'RkinfoStexType') -> QtyRatioSurge ``` 잔량율 급증 종목을 조회한다 (ka10022). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'RkinfoMarketType' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | ratio_type | str | 비율구분. "1" : 매수/매도비율, "2" : 매도/매수비율. | required | | time_min | str | 시간구분 (분 입력, 예: "1" ). | required | | trade_qty_type | str | 거래량구분. "5" : 5천주이상, "10" : 만주이상, "50" : 5만주이상. | required | | stock_cond | str | 종목조건 ( "0" ~ "9" ). | required | | exchange | 'RkinfoStexType' | 거래소구분. "krx" , "nxt" , "all" . | required | 시장구분. "all" , "kospi" , "kosdaq" . 비율구분. "1" : 매수/매도비율, "2" : 매도/매수비율. 시간구분 (분 입력, 예: "1" ). 거래량구분. "5" : 5천주이상, "10" : 만주이상, "50" : 5만주이상. 종목조건 ( "0" ~ "9" ). 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | QtyRatioSurge | 잔량율급증 QtyRatioSurge . | 잔량율급증 QtyRatioSurge . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_qty_ratio_surge( self, market: "RkinfoMarketType", ratio_type: str, time_min: str, trade_qty_type: str, stock_cond: str, exchange: "RkinfoStexType", ) -> QtyRatioSurge: """잔량율 급증 종목을 조회한다 (ka10022). Args: market: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. ratio_type: 비율구분. ``"1"``: 매수/매도비율, ``"2"``: 매도/매수비율. time_min: 시간구분 (분 입력, 예: ``"1"``). trade_qty_type: 거래량구분. ``"5"``: 5천주이상, ``"10"``: 만주이상, ``"50"``: 5만주이상. stock_cond: 종목조건 (``"0"``~``"9"``). exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 잔량율급증 ``QtyRatioSurge``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "mrkt_tp": _RKINFO_MARKET_CODE[market], "rt_tp": ratio_type, "tm_tp": time_min, "trde_qty_tp": trade_qty_type, "stk_cnd": stock_cond, "stex_tp": _RKINFO_STEX_CODE[exchange], }, headers=self._headers("ka10022"), )) items = [ QtyRatioSurgeItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), pred_pre_sig=item.get("pred_pre_sig", ""), pred_pre=item.get("pred_pre", ""), base_rt=item.get("int", ""), now_rt=item.get("now_rt", ""), sdnin_rt=item.get("sdnin_rt", ""), tot_sel_req=item.get("tot_sel_req", ""), tot_buy_req=item.get("tot_buy_req", ""), ) for item in raw.get("req_rt_sdnin", []) ] return QtyRatioSurge(items=items) ``` #### get_realized_profit_by_date ¶ ``` get_realized_profit_by_date(start_dt: str, stock_code: str = '') -> list[RealizedProfitByDateItem] ``` 일자별종목별실현손익(일자 기준)을 조회한다 (ka10072). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | start_dt | str | 시작일자 ( YYYYMMDD 형식). | required | | stock_code | str | 종목코드. 공백이면 전체 종목. | '' | 시작일자 ( YYYYMMDD 형식). 종목코드. 공백이면 전체 종목. Returns: | Type | Description | | --- | --- | | list [ RealizedProfitByDateItem ] | 일자별종목별실현손익 목록. | 일자별종목별실현손익 목록. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_realized_profit_by_date( self, start_dt: str, stock_code: str = "", ) -> list[RealizedProfitByDateItem]: """일자별종목별실현손익(일자 기준)을 조회한다 (ka10072). Args: start_dt: 시작일자 (``YYYYMMDD`` 형식). stock_code: 종목코드. 공백이면 전체 종목. Returns: 일자별종목별실현손익 목록. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {"stk_cd": stock_code, "strt_dt": start_dt}, headers=self._headers("ka10072"), )) return [ RealizedProfitByDateItem( stk_nm=item.get("stk_nm", ""), cntr_qty=item.get("cntr_qty", ""), buy_uv=item.get("buy_uv", ""), cntr_pric=item.get("cntr_pric", ""), tdy_sel_pl=item.get("tdy_sel_pl", ""), pl_rt=item.get("pl_rt", ""), stk_cd=item.get("stk_cd", ""), tdy_trde_cmsn=item.get("tdy_trde_cmsn", ""), tdy_trde_tax=item.get("tdy_trde_tax", ""), wthd_alowa=item.get("wthd_alowa", ""), loan_dt=item.get("loan_dt", ""), crd_tp=item.get("crd_tp", ""), ) for item in raw.get("dt_stk_div_rlzt_pl", []) ] ``` #### get_realized_profit_by_period ¶ ``` get_realized_profit_by_period(start_dt: str, end_dt: str, stock_code: str = '') -> list[RealizedProfitByPeriodItem] ``` 일자별종목별실현손익(기간 기준)을 조회한다 (ka10073). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | start_dt | str | 시작일자 ( YYYYMMDD 형식). | required | | end_dt | str | 종료일자 ( YYYYMMDD 형식). | required | | stock_code | str | 종목코드. 공백이면 전체 종목. | '' | 시작일자 ( YYYYMMDD 형식). 종료일자 ( YYYYMMDD 형식). 종목코드. 공백이면 전체 종목. Returns: | Type | Description | | --- | --- | | list [ RealizedProfitByPeriodItem ] | 일자별종목별실현손익 목록. | 일자별종목별실현손익 목록. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_realized_profit_by_period( self, start_dt: str, end_dt: str, stock_code: str = "", ) -> list[RealizedProfitByPeriodItem]: """일자별종목별실현손익(기간 기준)을 조회한다 (ka10073). Args: start_dt: 시작일자 (``YYYYMMDD`` 형식). end_dt: 종료일자 (``YYYYMMDD`` 형식). stock_code: 종목코드. 공백이면 전체 종목. Returns: 일자별종목별실현손익 목록. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {"stk_cd": stock_code, "strt_dt": start_dt, "end_dt": end_dt}, headers=self._headers("ka10073"), )) return [ RealizedProfitByPeriodItem( dt=item.get("dt", ""), tdy_htssel_cmsn=item.get("tdy_htssel_cmsn", ""), stk_nm=item.get("stk_nm", ""), cntr_qty=item.get("cntr_qty", ""), buy_uv=item.get("buy_uv", ""), cntr_pric=item.get("cntr_pric", ""), tdy_sel_pl=item.get("tdy_sel_pl", ""), pl_rt=item.get("pl_rt", ""), stk_cd=item.get("stk_cd", ""), tdy_trde_cmsn=item.get("tdy_trde_cmsn", ""), tdy_trde_tax=item.get("tdy_trde_tax", ""), wthd_alowa=item.get("wthd_alowa", ""), loan_dt=item.get("loan_dt", ""), crd_tp=item.get("crd_tp", ""), ) for item in raw.get("dt_stk_rlzt_pl", []) ] ``` #### get_same_net_trade_rank ¶ ``` get_same_net_trade_rank(start_date: str, market: 'RkinfoMarketType', trade_type: NetTradeType, sort_cnd: 'RkinfoSortCndType', unit_type: TradeUnitType, exchange: 'RkinfoStexType', end_date: str = '') -> SameNetTradeRank ``` 기관·외국인 동일 순매매 순위를 조회한다 (ka10062). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | start_date | str | 시작일자 YYYYMMDD . | required | | market | 'RkinfoMarketType' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | trade_type | NetTradeType | 매매구분. "net_buy" : 순매수, "net_sell" : 순매도. | required | | sort_cnd | 'RkinfoSortCndType' | 정렬조건. "qty" : 수량, "amount" : 금액. | required | | unit_type | TradeUnitType | 단위구분. "single" : 단주, "thousand" : 천주. | required | | exchange | 'RkinfoStexType' | 거래소구분. "krx" , "nxt" , "all" . | required | | end_date | str | 종료일자 YYYYMMDD (기본 "" ). | '' | 시작일자 YYYYMMDD . 시장구분. "all" , "kospi" , "kosdaq" . 매매구분. "net_buy" : 순매수, "net_sell" : 순매도. 정렬조건. "qty" : 수량, "amount" : 금액. 단위구분. "single" : 단주, "thousand" : 천주. 거래소구분. "krx" , "nxt" , "all" . 종료일자 YYYYMMDD (기본 "" ). Returns: | Type | Description | | --- | --- | | SameNetTradeRank | 동일순매매순위 SameNetTradeRank . | 동일순매매순위 SameNetTradeRank . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_same_net_trade_rank( self, start_date: str, market: "RkinfoMarketType", trade_type: NetTradeType, sort_cnd: "RkinfoSortCndType", unit_type: TradeUnitType, exchange: "RkinfoStexType", end_date: str = "", ) -> SameNetTradeRank: """기관·외국인 동일 순매매 순위를 조회한다 (ka10062). Args: start_date: 시작일자 ``YYYYMMDD``. market: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. trade_type: 매매구분. ``"net_buy"``: 순매수, ``"net_sell"``: 순매도. sort_cnd: 정렬조건. ``"qty"``: 수량, ``"amount"``: 금액. unit_type: 단위구분. ``"single"``: 단주, ``"thousand"``: 천주. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. end_date: 종료일자 ``YYYYMMDD`` (기본 ``""``). Returns: 동일순매매순위 ``SameNetTradeRank``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "strt_dt": start_date, "end_dt": end_date, "mrkt_tp": _RKINFO_MARKET_CODE[market], "trde_tp": _NET_TRADE_CODE[trade_type], "sort_cnd": _RKINFO_SORT_CND_CODE[sort_cnd], "unit_tp": _TRADE_UNIT_CODE[unit_type], "stex_tp": _RKINFO_STEX_CODE[exchange], }, headers=self._headers("ka10062"), )) items = [ SameNetTradeRankItem( stk_cd=item.get("stk_cd", ""), rank=item.get("rank", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), pre_sig=item.get("pre_sig", ""), pred_pre=item.get("pred_pre", ""), flu_rt=item.get("flu_rt", ""), acc_trde_qty=item.get("acc_trde_qty", ""), orgn_nettrde_qty=item.get("orgn_nettrde_qty", ""), orgn_nettrde_amt=item.get("orgn_nettrde_amt", ""), orgn_nettrde_avg_pric=item.get("orgn_nettrde_avg_pric", ""), for_nettrde_qty=item.get("for_nettrde_qty", ""), for_nettrde_amt=item.get("for_nettrde_amt", ""), for_nettrde_avg_pric=item.get("for_nettrde_avg_pric", ""), nettrde_qty=item.get("nettrde_qty", ""), nettrde_amt=item.get("nettrde_amt", ""), ) for item in raw.get("eql_nettrde_rank", []) ] return SameNetTradeRank(items=items) ``` #### get_sector_daily_price ¶ ``` get_sector_daily_price(market: 'SectMrktType', sector_code: str) -> SectorDailyPrice ``` 업종 현재가 일별 데이터를 조회한다 (ka20009). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'SectMrktType' | 시장구분 ( "kospi" / "kosdaq" / "kospi200" ). | required | | sector_code | str | 업종코드 (예: "001" ). | required | 시장구분 ( "kospi" / "kosdaq" / "kospi200" ). 업종코드 (예: "001" ). Returns: | Type | Description | | --- | --- | | SectorDailyPrice | class: ~kiwoompy.models.SectorDailyPrice 인스턴스. | class: ~kiwoompy.models.SectorDailyPrice 인스턴스. ``` def get_sector_daily_price( self, market: "SectMrktType", sector_code: str, ) -> SectorDailyPrice: """업종 현재가 일별 데이터를 조회한다 (ka20009). Args: market: 시장구분 (``"kospi"`` / ``"kosdaq"`` / ``"kospi200"``). sector_code: 업종코드 (예: ``"001"``). Returns: :class:`~kiwoompy.models.SectorDailyPrice` 인스턴스. """ raw = _check(self._api.post( self._SECT_PATH, { "mrkt_tp": _SECT_MRKT_CODE[market], "inds_cd": sector_code, }, headers=self._headers("ka20009"), )) items = [ SectorDailyPriceItem( dt_n=it.get("dt_n", ""), cur_prc_n=it.get("cur_prc_n", ""), pred_pre_sig_n=it.get("pred_pre_sig_n", ""), pred_pre_n=it.get("pred_pre_n", ""), flu_rt_n=it.get("flu_rt_n", ""), acc_trde_qty_n=it.get("acc_trde_qty_n", ""), ) for it in raw.get("inds_cur_prc_daly_rept", []) ] return SectorDailyPrice( cur_prc=raw.get("cur_prc", ""), pred_pre_sig=raw.get("pred_pre_sig", ""), pred_pre=raw.get("pred_pre", ""), flu_rt=raw.get("flu_rt", ""), trde_qty=raw.get("trde_qty", ""), trde_prica=raw.get("trde_prica", ""), trde_frmatn_stk_num=raw.get("trde_frmatn_stk_num", ""), trde_frmatn_rt=raw.get("trde_frmatn_rt", ""), open_pric=raw.get("open_pric", ""), high_pric=raw.get("high_pric", ""), low_pric=raw.get("low_pric", ""), upl=raw.get("upl", ""), rising=raw.get("rising", ""), stdns=raw.get("stdns", ""), fall=raw.get("fall", ""), lst=raw.get("lst", ""), wk52_hgst_pric=raw.get("52wk_hgst_pric", ""), wk52_hgst_pric_dt=raw.get("52wk_hgst_pric_dt", ""), wk52_hgst_pric_pre_rt=raw.get("52wk_hgst_pric_pre_rt", ""), wk52_lwst_pric=raw.get("52wk_lwst_pric", ""), wk52_lwst_pric_dt=raw.get("52wk_lwst_pric_dt", ""), wk52_lwst_pric_pre_rt=raw.get("52wk_lwst_pric_pre_rt", ""), items=items, ) ``` #### get_sector_day_chart ¶ ``` get_sector_day_chart(sector_code: str, base_date: str) -> SectorDayChart ``` 업종 일봉 차트 데이터를 조회한다 (ka20006). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | sector_code | str | 업종코드. | required | | base_date | str | 기준일자 ( "YYYYMMDD" ). | required | 업종코드. 기준일자 ( "YYYYMMDD" ). Returns: | Type | Description | | --- | --- | | SectorDayChart | class: ~kiwoompy.models.SectorDayChart 인스턴스. | class: ~kiwoompy.models.SectorDayChart 인스턴스. ``` def get_sector_day_chart( self, sector_code: str, base_date: str, ) -> SectorDayChart: """업종 일봉 차트 데이터를 조회한다 (ka20006). Args: sector_code: 업종코드. base_date: 기준일자 (``"YYYYMMDD"``). Returns: :class:`~kiwoompy.models.SectorDayChart` 인스턴스. """ raw = _check(self._api.post( self._CHART_PATH, { "inds_cd": sector_code, "base_dt": base_date, }, headers=self._headers("ka20006"), )) items = [ SectorDayChartItem( cur_prc=item.get("cur_prc", ""), trde_qty=item.get("trde_qty", ""), dt=item.get("dt", ""), open_pric=item.get("open_pric", ""), high_pric=item.get("high_pric", ""), low_pric=item.get("low_pric", ""), trde_prica=item.get("trde_prica", ""), ) for item in raw.get("inds_dt_pole_qry", []) ] return SectorDayChart(inds_cd=raw.get("inds_cd", ""), items=items) ``` #### get_sector_investor_net_buy ¶ ``` get_sector_investor_net_buy(market: 'SectMrktType', amt_qty: 'SectAmtQtyType', base_date: str = '', exchange: 'SectExchangeType' = 'all') -> SectorInvestorNetBuy ``` 업종별 투자자 순매수 현황을 조회한다 (ka10051). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'SectMrktType' | 시장구분 ( "kospi" / "kosdaq" / "kospi200" ). | required | | amt_qty | 'SectAmtQtyType' | 금액수량구분 ( "amount" / "qty" ). | required | | base_date | str | 기준일자 ( "YYYYMMDD" ). 생략 시 당일. | '' | | exchange | 'SectExchangeType' | 거래소구분 ( "krx" / "nxt" / "all" ). 기본 "all" . | 'all' | 시장구분 ( "kospi" / "kosdaq" / "kospi200" ). 금액수량구분 ( "amount" / "qty" ). 기준일자 ( "YYYYMMDD" ). 생략 시 당일. 거래소구분 ( "krx" / "nxt" / "all" ). 기본 "all" . Returns: | Type | Description | | --- | --- | | SectorInvestorNetBuy | class: ~kiwoompy.models.SectorInvestorNetBuy 인스턴스. | class: ~kiwoompy.models.SectorInvestorNetBuy 인스턴스. ``` def get_sector_investor_net_buy( self, market: "SectMrktType", amt_qty: "SectAmtQtyType", base_date: str = "", exchange: "SectExchangeType" = "all", ) -> SectorInvestorNetBuy: """업종별 투자자 순매수 현황을 조회한다 (ka10051). Args: market: 시장구분 (``"kospi"`` / ``"kosdaq"`` / ``"kospi200"``). amt_qty: 금액수량구분 (``"amount"`` / ``"qty"``). base_date: 기준일자 (``"YYYYMMDD"``). 생략 시 당일. exchange: 거래소구분 (``"krx"`` / ``"nxt"`` / ``"all"``). 기본 ``"all"``. Returns: :class:`~kiwoompy.models.SectorInvestorNetBuy` 인스턴스. """ raw = _check(self._api.post( self._SECT_PATH, { "mrkt_tp": _SECT_MRKT_CODE[market], "amt_qty_tp": _SECT_AMT_QTY_CODE[amt_qty], "base_dt": base_date, "stex_tp": _SECT_EXCHANGE_CODE[exchange], }, headers=self._headers("ka10051"), )) items = [ SectorInvestorNetBuyItem( inds_cd=it.get("inds_cd", ""), inds_nm=it.get("inds_nm", ""), cur_prc=it.get("cur_prc", ""), pre_smbol=it.get("pre_smbol", ""), pred_pre=it.get("pred_pre", ""), flu_rt=it.get("flu_rt", ""), trde_qty=it.get("trde_qty", ""), sc_netprps=it.get("sc_netprps", ""), insrnc_netprps=it.get("insrnc_netprps", ""), invtrt_netprps=it.get("invtrt_netprps", ""), bank_netprps=it.get("bank_netprps", ""), jnsinkm_netprps=it.get("jnsinkm_netprps", ""), endw_netprps=it.get("endw_netprps", ""), etc_corp_netprps=it.get("etc_corp_netprps", ""), ind_netprps=it.get("ind_netprps", ""), frgnr_netprps=it.get("frgnr_netprps", ""), native_trmt_frgnr_netprps=it.get("native_trmt_frgnr_netprps", ""), natn_netprps=it.get("natn_netprps", ""), samo_fund_netprps=it.get("samo_fund_netprps", ""), orgn_netprps=it.get("orgn_netprps", ""), ) for it in raw.get("inds_netprps", []) ] return SectorInvestorNetBuy(items=items) ``` #### get_sector_list ¶ ``` get_sector_list(market_type: 'SectorMarketType' = 'kospi') -> SectorList ``` 시장별 업종코드 리스트를 조회한다 (ka10101). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market_type | 'SectorMarketType' | 시장구분. "kospi" : 코스피(거래소), "kosdaq" : 코스닥, "kospi200" : KOSPI200, "kospi100" : KOSPI100, "krx100" : KRX100. | 'kospi' | 시장구분. "kospi" : 코스피(거래소), "kosdaq" : 코스닥, "kospi200" : KOSPI200, "kospi100" : KOSPI100, "krx100" : KRX100. Returns: | Type | Description | | --- | --- | | SectorList | 업종코드 리스트 SectorList . | 업종코드 리스트 SectorList . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_sector_list(self, market_type: "SectorMarketType" = "kospi") -> SectorList: """시장별 업종코드 리스트를 조회한다 (ka10101). Args: market_type: 시장구분. ``"kospi"``: 코스피(거래소), ``"kosdaq"``: 코스닥, ``"kospi200"``: KOSPI200, ``"kospi100"``: KOSPI100, ``"krx100"``: KRX100. Returns: 업종코드 리스트 ``SectorList``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, {"mrkt_tp": _SECTOR_MARKET_CODE[market_type]}, headers=self._headers("ka10101"), )) items = [ SectorItem( market_code=item.get("marketCode", ""), code=item.get("code", ""), name=item.get("name", ""), group=item.get("group", ""), ) for item in raw.get("list", []) ] return SectorList(items=items) ``` #### get_sector_min_chart ¶ ``` get_sector_min_chart(sector_code: str, min_scope: 'ChartMinScope', base_date: str = '') -> SectorMinChart ``` 업종 분봉 차트 데이터를 조회한다 (ka20005). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | sector_code | str | 업종코드. | required | | min_scope | 'ChartMinScope' | 분봉 범위 ( "1" / "3" / "5" / "10" / "15" / "30" / "45" / "60" ). | required | | base_date | str | 기준일자 ( "YYYYMMDD" , 생략 시 최신). | '' | 업종코드. 분봉 범위 ( "1" / "3" / "5" / "10" / "15" / "30" / "45" / "60" ). 기준일자 ( "YYYYMMDD" , 생략 시 최신). Returns: | Type | Description | | --- | --- | | SectorMinChart | class: ~kiwoompy.models.SectorMinChart 인스턴스. | class: ~kiwoompy.models.SectorMinChart 인스턴스. ``` def get_sector_min_chart( self, sector_code: str, min_scope: "ChartMinScope", base_date: str = "", ) -> SectorMinChart: """업종 분봉 차트 데이터를 조회한다 (ka20005). Args: sector_code: 업종코드. min_scope: 분봉 범위 (``"1"`` / ``"3"`` / ``"5"`` / ``"10"`` / ``"15"`` / ``"30"`` / ``"45"`` / ``"60"``). base_date: 기준일자 (``"YYYYMMDD"``, 생략 시 최신). Returns: :class:`~kiwoompy.models.SectorMinChart` 인스턴스. """ body: dict = { "inds_cd": sector_code, "tic_scope": min_scope, } if base_date: body["base_dt"] = base_date raw = _check(self._api.post( self._CHART_PATH, body, headers=self._headers("ka20005"), )) items = [ SectorMinChartItem( cur_prc=item.get("cur_prc", ""), trde_qty=item.get("trde_qty", ""), cntr_tm=item.get("cntr_tm", item.get("dt", "")), open_pric=item.get("open_pric", ""), high_pric=item.get("high_pric", ""), low_pric=item.get("low_pric", ""), acc_trde_qty=item.get("acc_trde_qty", ""), pred_pre=item.get("pred_pre", ""), pred_pre_sig=item.get("pred_pre_sig", ""), ) for item in raw.get("inds_min_pole_qry", []) ] return SectorMinChart(inds_cd=raw.get("inds_cd", ""), items=items) ``` #### get_sector_month_chart ¶ ``` get_sector_month_chart(sector_code: str, base_date: str) -> SectorMonthChart ``` 업종 월봉 차트 데이터를 조회한다 (ka20008). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | sector_code | str | 업종코드. | required | | base_date | str | 기준일자 ( "YYYYMMDD" ). | required | 업종코드. 기준일자 ( "YYYYMMDD" ). Returns: | Type | Description | | --- | --- | | SectorMonthChart | class: ~kiwoompy.models.SectorMonthChart 인스턴스. | class: ~kiwoompy.models.SectorMonthChart 인스턴스. ``` def get_sector_month_chart( self, sector_code: str, base_date: str, ) -> SectorMonthChart: """업종 월봉 차트 데이터를 조회한다 (ka20008). Args: sector_code: 업종코드. base_date: 기준일자 (``"YYYYMMDD"``). Returns: :class:`~kiwoompy.models.SectorMonthChart` 인스턴스. """ raw = _check(self._api.post( self._CHART_PATH, { "inds_cd": sector_code, "base_dt": base_date, }, headers=self._headers("ka20008"), )) items = [ SectorDayChartItem( cur_prc=item.get("cur_prc", ""), trde_qty=item.get("trde_qty", ""), dt=item.get("dt", ""), open_pric=item.get("open_pric", ""), high_pric=item.get("high_pric", ""), low_pric=item.get("low_pric", ""), trde_prica=item.get("trde_prica", ""), ) for item in raw.get("inds_mth_pole_qry", []) ] return SectorMonthChart(inds_cd=raw.get("inds_cd", ""), items=items) ``` #### get_sector_price ¶ ``` get_sector_price(market: 'SectMrktType', sector_code: str) -> SectorPrice ``` 업종 현재가 정보를 조회한다 (ka20001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'SectMrktType' | 시장구분 ( "kospi" / "kosdaq" / "kospi200" ). | required | | sector_code | str | 업종코드 (예: "001" ). | required | 시장구분 ( "kospi" / "kosdaq" / "kospi200" ). 업종코드 (예: "001" ). Returns: | Type | Description | | --- | --- | | SectorPrice | class: ~kiwoompy.models.SectorPrice 인스턴스. | class: ~kiwoompy.models.SectorPrice 인스턴스. ``` def get_sector_price( self, market: "SectMrktType", sector_code: str, ) -> SectorPrice: """업종 현재가 정보를 조회한다 (ka20001). Args: market: 시장구분 (``"kospi"`` / ``"kosdaq"`` / ``"kospi200"``). sector_code: 업종코드 (예: ``"001"``). Returns: :class:`~kiwoompy.models.SectorPrice` 인스턴스. """ raw = _check(self._api.post( self._SECT_PATH, { "mrkt_tp": _SECT_MRKT_CODE[market], "inds_cd": sector_code, }, headers=self._headers("ka20001"), )) items = [ SectorPriceTmItem( tm_n=it.get("tm_n", ""), cur_prc_n=it.get("cur_prc_n", ""), pred_pre_sig_n=it.get("pred_pre_sig_n", ""), pred_pre_n=it.get("pred_pre_n", ""), flu_rt_n=it.get("flu_rt_n", ""), trde_qty_n=it.get("trde_qty_n", ""), acc_trde_qty_n=it.get("acc_trde_qty_n", ""), ) for it in raw.get("inds_cur_prc_tm", []) ] return SectorPrice( cur_prc=raw.get("cur_prc", ""), pred_pre_sig=raw.get("pred_pre_sig", ""), pred_pre=raw.get("pred_pre", ""), flu_rt=raw.get("flu_rt", ""), trde_qty=raw.get("trde_qty", ""), trde_prica=raw.get("trde_prica", ""), trde_frmatn_stk_num=raw.get("trde_frmatn_stk_num", ""), trde_frmatn_rt=raw.get("trde_frmatn_rt", ""), open_pric=raw.get("open_pric", ""), high_pric=raw.get("high_pric", ""), low_pric=raw.get("low_pric", ""), upl=raw.get("upl", ""), rising=raw.get("rising", ""), stdns=raw.get("stdns", ""), fall=raw.get("fall", ""), lst=raw.get("lst", ""), wk52_hgst_pric=raw.get("52wk_hgst_pric", ""), wk52_hgst_pric_dt=raw.get("52wk_hgst_pric_dt", ""), wk52_hgst_pric_pre_rt=raw.get("52wk_hgst_pric_pre_rt", ""), wk52_lwst_pric=raw.get("52wk_lwst_pric", ""), wk52_lwst_pric_dt=raw.get("52wk_lwst_pric_dt", ""), wk52_lwst_pric_pre_rt=raw.get("52wk_lwst_pric_pre_rt", ""), items=items, ) ``` #### get_sector_program ¶ ``` get_sector_program(stock_code: str) -> SectorProgram ``` 업종 프로그램 매매 정보를 조회한다 (ka10010). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드 (예: "005930" , "039490_NX" ). | required | 거래소별 종목코드 (예: "005930" , "039490_NX" ). Returns: | Type | Description | | --- | --- | | SectorProgram | class: ~kiwoompy.models.SectorProgram 인스턴스. | class: ~kiwoompy.models.SectorProgram 인스턴스. ``` def get_sector_program(self, stock_code: str) -> SectorProgram: """업종 프로그램 매매 정보를 조회한다 (ka10010). Args: stock_code: 거래소별 종목코드 (예: ``"005930"``, ``"039490_NX"``). Returns: :class:`~kiwoompy.models.SectorProgram` 인스턴스. """ raw = _check(self._api.post( self._SECT_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10010"), )) return SectorProgram( dfrt_trst_sell_qty=raw.get("dfrt_trst_sell_qty", ""), dfrt_trst_sell_amt=raw.get("dfrt_trst_sell_amt", ""), dfrt_trst_buy_qty=raw.get("dfrt_trst_buy_qty", ""), dfrt_trst_buy_amt=raw.get("dfrt_trst_buy_amt", ""), dfrt_trst_netprps_qty=raw.get("dfrt_trst_netprps_qty", ""), dfrt_trst_netprps_amt=raw.get("dfrt_trst_netprps_amt", ""), ndiffpro_trst_sell_qty=raw.get("ndiffpro_trst_sell_qty", ""), ndiffpro_trst_sell_amt=raw.get("ndiffpro_trst_sell_amt", ""), ndiffpro_trst_buy_qty=raw.get("ndiffpro_trst_buy_qty", ""), ndiffpro_trst_buy_amt=raw.get("ndiffpro_trst_buy_amt", ""), ndiffpro_trst_netprps_qty=raw.get("ndiffpro_trst_netprps_qty", ""), ndiffpro_trst_netprps_amt=raw.get("ndiffpro_trst_netprps_amt", ""), all_dfrt_trst_sell_qty=raw.get("all_dfrt_trst_sell_qty", ""), all_dfrt_trst_sell_amt=raw.get("all_dfrt_trst_sell_amt", ""), all_dfrt_trst_buy_qty=raw.get("all_dfrt_trst_buy_qty", ""), all_dfrt_trst_buy_amt=raw.get("all_dfrt_trst_buy_amt", ""), all_dfrt_trst_netprps_qty=raw.get("all_dfrt_trst_netprps_qty", ""), all_dfrt_trst_netprps_amt=raw.get("all_dfrt_trst_netprps_amt", ""), ) ``` #### get_sector_stock_prices ¶ ``` get_sector_stock_prices(market: 'SectMrktType', sector_code: str, exchange: 'SectExchangeType' = 'krx') -> SectorStockPrices ``` 업종 내 구성 종목별 주가를 조회한다 (ka20002). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'SectMrktType' | 시장구분 ( "kospi" / "kosdaq" / "kospi200" ). | required | | sector_code | str | 업종코드 (예: "001" ). | required | | exchange | 'SectExchangeType' | 거래소구분 ( "krx" / "nxt" / "all" ). 기본 "krx" . | 'krx' | 시장구분 ( "kospi" / "kosdaq" / "kospi200" ). 업종코드 (예: "001" ). 거래소구분 ( "krx" / "nxt" / "all" ). 기본 "krx" . Returns: | Type | Description | | --- | --- | | SectorStockPrices | class: ~kiwoompy.models.SectorStockPrices 인스턴스. | class: ~kiwoompy.models.SectorStockPrices 인스턴스. ``` def get_sector_stock_prices( self, market: "SectMrktType", sector_code: str, exchange: "SectExchangeType" = "krx", ) -> SectorStockPrices: """업종 내 구성 종목별 주가를 조회한다 (ka20002). Args: market: 시장구분 (``"kospi"`` / ``"kosdaq"`` / ``"kospi200"``). sector_code: 업종코드 (예: ``"001"``). exchange: 거래소구분 (``"krx"`` / ``"nxt"`` / ``"all"``). 기본 ``"krx"``. Returns: :class:`~kiwoompy.models.SectorStockPrices` 인스턴스. """ raw = _check(self._api.post( self._SECT_PATH, { "mrkt_tp": _SECT_MRKT_CODE[market], "inds_cd": sector_code, "stex_tp": _SECT_EXCHANGE_CODE[exchange], }, headers=self._headers("ka20002"), )) items = [ SectorStockPriceItem( stk_cd=it.get("stk_cd", ""), stk_nm=it.get("stk_nm", ""), cur_prc=it.get("cur_prc", ""), pred_pre_sig=it.get("pred_pre_sig", ""), pred_pre=it.get("pred_pre", ""), flu_rt=it.get("flu_rt", ""), now_trde_qty=it.get("now_trde_qty", ""), sel_bid=it.get("sel_bid", ""), buy_bid=it.get("buy_bid", ""), open_pric=it.get("open_pric", ""), high_pric=it.get("high_pric", ""), low_pric=it.get("low_pric", ""), ) for it in raw.get("inds_stkpc", []) ] return SectorStockPrices(items=items) ``` #### get_sector_tick_chart ¶ ``` get_sector_tick_chart(sector_code: str, tick_scope: 'ChartTickScope') -> SectorTickChart ``` 업종 틱 차트 데이터를 조회한다 (ka20004). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | sector_code | str | 업종코드 (예: "001" 종합KOSPI, "101" 종합KOSDAQ). | required | | tick_scope | 'ChartTickScope' | 틱 범위 ( "1" / "3" / "5" / "10" / "30" ). | required | 업종코드 (예: "001" 종합KOSPI, "101" 종합KOSDAQ). 틱 범위 ( "1" / "3" / "5" / "10" / "30" ). Returns: | Type | Description | | --- | --- | | SectorTickChart | class: ~kiwoompy.models.SectorTickChart 인스턴스. | class: ~kiwoompy.models.SectorTickChart 인스턴스. ``` def get_sector_tick_chart( self, sector_code: str, tick_scope: "ChartTickScope", ) -> SectorTickChart: """업종 틱 차트 데이터를 조회한다 (ka20004). Args: sector_code: 업종코드 (예: ``"001"`` 종합KOSPI, ``"101"`` 종합KOSDAQ). tick_scope: 틱 범위 (``"1"`` / ``"3"`` / ``"5"`` / ``"10"`` / ``"30"``). Returns: :class:`~kiwoompy.models.SectorTickChart` 인스턴스. """ raw = _check(self._api.post( self._CHART_PATH, { "inds_cd": sector_code, "tic_scope": tick_scope, }, headers=self._headers("ka20004"), )) items = [ SectorCandleItem( cur_prc=item.get("cur_prc", ""), trde_qty=item.get("trde_qty", ""), cntr_tm=item.get("cntr_tm", ""), open_pric=item.get("open_pric", ""), high_pric=item.get("high_pric", ""), low_pric=item.get("low_pric", ""), pred_pre=item.get("pred_pre", ""), pred_pre_sig=item.get("pred_pre_sig", ""), ) for item in raw.get("inds_tic_chart_qry", []) ] return SectorTickChart(inds_cd=raw.get("inds_cd", ""), items=items) ``` #### get_sector_week_chart ¶ ``` get_sector_week_chart(sector_code: str, base_date: str) -> SectorWeekChart ``` 업종 주봉 차트 데이터를 조회한다 (ka20007). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | sector_code | str | 업종코드. | required | | base_date | str | 기준일자 ( "YYYYMMDD" ). | required | 업종코드. 기준일자 ( "YYYYMMDD" ). Returns: | Type | Description | | --- | --- | | SectorWeekChart | class: ~kiwoompy.models.SectorWeekChart 인스턴스. | class: ~kiwoompy.models.SectorWeekChart 인스턴스. ``` def get_sector_week_chart( self, sector_code: str, base_date: str, ) -> SectorWeekChart: """업종 주봉 차트 데이터를 조회한다 (ka20007). Args: sector_code: 업종코드. base_date: 기준일자 (``"YYYYMMDD"``). Returns: :class:`~kiwoompy.models.SectorWeekChart` 인스턴스. """ raw = _check(self._api.post( self._CHART_PATH, { "inds_cd": sector_code, "base_dt": base_date, }, headers=self._headers("ka20007"), )) items = [ SectorDayChartItem( cur_prc=item.get("cur_prc", ""), trde_qty=item.get("trde_qty", ""), dt=item.get("dt", ""), open_pric=item.get("open_pric", ""), high_pric=item.get("high_pric", ""), low_pric=item.get("low_pric", ""), trde_prica=item.get("trde_prica", ""), ) for item in raw.get("inds_stk_pole_qry", []) ] return SectorWeekChart(inds_cd=raw.get("inds_cd", ""), items=items) ``` #### get_sector_year_chart ¶ ``` get_sector_year_chart(sector_code: str, base_date: str) -> SectorYearChart ``` 업종 년봉 차트 데이터를 조회한다 (ka20019). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | sector_code | str | 업종코드. | required | | base_date | str | 기준일자 ( "YYYYMMDD" ). | required | 업종코드. 기준일자 ( "YYYYMMDD" ). Returns: | Type | Description | | --- | --- | | SectorYearChart | class: ~kiwoompy.models.SectorYearChart 인스턴스. | class: ~kiwoompy.models.SectorYearChart 인스턴스. ``` def get_sector_year_chart( self, sector_code: str, base_date: str, ) -> SectorYearChart: """업종 년봉 차트 데이터를 조회한다 (ka20019). Args: sector_code: 업종코드. base_date: 기준일자 (``"YYYYMMDD"``). Returns: :class:`~kiwoompy.models.SectorYearChart` 인스턴스. """ raw = _check(self._api.post( self._CHART_PATH, { "inds_cd": sector_code, "base_dt": base_date, }, headers=self._headers("ka20019"), )) items = [ SectorDayChartItem( cur_prc=item.get("cur_prc", ""), trde_qty=item.get("trde_qty", ""), dt=item.get("dt", ""), open_pric=item.get("open_pric", ""), high_pric=item.get("high_pric", ""), low_pric=item.get("low_pric", ""), trde_prica=item.get("trde_prica", ""), ) for item in raw.get("inds_yr_pole_qry", []) ] return SectorYearChart(inds_cd=raw.get("inds_cd", ""), items=items) ``` #### get_short_sell_trend ¶ ``` get_short_sell_trend(stock_code: str, start_date: str, end_date: str, time_type: TimeRangeType = 'period') -> ShortSellTrend ``` 종목별 공매도 추이를 조회한다 (ka10014). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드 (예: "005930" ). | required | | start_date | str | 시작일자 ( "YYYYMMDD" ). | required | | end_date | str | 종료일자 ( "YYYYMMDD" ). | required | | time_type | TimeRangeType | 시간구분 ( "start" : 시작일, "period" : 기간). 기본 "period" . | 'period' | 거래소별 종목코드 (예: "005930" ). 시작일자 ( "YYYYMMDD" ). 종료일자 ( "YYYYMMDD" ). 시간구분 ( "start" : 시작일, "period" : 기간). 기본 "period" . Returns: | Type | Description | | --- | --- | | ShortSellTrend | class: ~kiwoompy.models.ShortSellTrend 인스턴스. | class: ~kiwoompy.models.ShortSellTrend 인스턴스. ``` def get_short_sell_trend( self, stock_code: str, start_date: str, end_date: str, time_type: TimeRangeType = "period", ) -> ShortSellTrend: """종목별 공매도 추이를 조회한다 (ka10014). Args: stock_code: 거래소별 종목코드 (예: ``"005930"``). start_date: 시작일자 (``"YYYYMMDD"``). end_date: 종료일자 (``"YYYYMMDD"``). time_type: 시간구분 (``"start"``: 시작일, ``"period"``: 기간). 기본 ``"period"``. Returns: :class:`~kiwoompy.models.ShortSellTrend` 인스턴스. """ raw = _check(self._api.post( self._SHSA_PATH, { "stk_cd": stock_code, "tm_tp": _TIME_RANGE_CODE[time_type], "strt_dt": start_date, "end_dt": end_date, }, headers=self._headers("ka10014"), )) items = [ ShortSellItem( dt=it.get("dt", ""), close_pric=it.get("close_pric", ""), pred_pre_sig=it.get("pred_pre_sig", ""), pred_pre=it.get("pred_pre", ""), flu_rt=it.get("flu_rt", ""), trde_qty=it.get("trde_qty", ""), shrts_qty=it.get("shrts_qty", ""), ovr_shrts_qty=it.get("ovr_shrts_qty", ""), trde_wght=it.get("trde_wght", ""), shrts_trde_prica=it.get("shrts_trde_prica", ""), shrts_avg_pric=it.get("shrts_avg_pric", ""), ) for it in raw.get("shrts_trnsn", []) ] return ShortSellTrend(items=items) ``` #### get_split_order_detail ¶ ``` get_split_order_detail(order_no: str) -> list[SplitOrderDetailItem] ``` 미체결 분할주문 상세를 조회한다 (ka10088). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | order_no | str | 주문번호. | required | 주문번호. Returns: | Type | Description | | --- | --- | | list [ SplitOrderDetailItem ] | 미체결 분할주문 상세 목록. | 미체결 분할주문 상세 목록. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_split_order_detail( self, order_no: str, ) -> list[SplitOrderDetailItem]: """미체결 분할주문 상세를 조회한다 (ka10088). Args: order_no: 주문번호. Returns: 미체결 분할주문 상세 목록. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, {"ord_no": order_no}, headers=self._headers("ka10088"), )) return [ SplitOrderDetailItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), ord_no=item.get("ord_no", ""), ord_qty=item.get("ord_qty", ""), ord_pric=item.get("ord_pric", ""), osop_qty=item.get("osop_qty", ""), io_tp_nm=item.get("io_tp_nm", ""), trde_tp=item.get("trde_tp", ""), sell_tp=item.get("sell_tp", ""), cntr_qty=item.get("cntr_qty", ""), ord_stt=item.get("ord_stt", ""), cur_prc=item.get("cur_prc", ""), stex_tp=item.get("stex_tp", ""), stex_tp_txt=item.get("stex_tp_txt", ""), ) for item in raw.get("osop", []) ] ``` #### get_stock_broker_rank ¶ ``` get_stock_broker_rank(stock_code: str, query_type: str, period: str = '', start_date: str = '', end_date: str = '') -> StockBrokerRank ``` 종목별 증권사 순위를 조회한다 (ka10038). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 종목코드 (예: "005930" ). | required | | query_type | str | 조회구분. "1" : 순매도순위정렬, "2" : 순매수순위정렬. | required | | period | str | 기간. "1" : 전일, "4" : 5일, "9" : 10일, "19" : 20일 등 (기본 "" ). | '' | | start_date | str | 시작일자 YYYYMMDD (기본 "" ). | '' | | end_date | str | 종료일자 YYYYMMDD (기본 "" ). | '' | 종목코드 (예: "005930" ). 조회구분. "1" : 순매도순위정렬, "2" : 순매수순위정렬. 기간. "1" : 전일, "4" : 5일, "9" : 10일, "19" : 20일 등 (기본 "" ). 시작일자 YYYYMMDD (기본 "" ). 종료일자 YYYYMMDD (기본 "" ). Returns: | Type | Description | | --- | --- | | StockBrokerRank | 종목별증권사순위 StockBrokerRank . | 종목별증권사순위 StockBrokerRank . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_stock_broker_rank( self, stock_code: str, query_type: str, period: str = "", start_date: str = "", end_date: str = "", ) -> StockBrokerRank: """종목별 증권사 순위를 조회한다 (ka10038). Args: stock_code: 종목코드 (예: ``"005930"``). query_type: 조회구분. ``"1"``: 순매도순위정렬, ``"2"``: 순매수순위정렬. period: 기간. ``"1"``: 전일, ``"4"``: 5일, ``"9"``: 10일, ``"19"``: 20일 등 (기본 ``""``). start_date: 시작일자 ``YYYYMMDD`` (기본 ``""``). end_date: 종료일자 ``YYYYMMDD`` (기본 ``""``). Returns: 종목별증권사순위 ``StockBrokerRank``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "stk_cd": stock_code, "strt_dt": start_date, "end_dt": end_date, "qry_tp": query_type, "dt": period, }, headers=self._headers("ka10038"), )) items = [ StockBrokerRankItem( rank=item.get("rank", ""), mmcm_nm=item.get("mmcm_nm", ""), buy_qty=item.get("buy_qty", ""), sell_qty=item.get("sell_qty", ""), acc_netprps_qty=item.get("acc_netprps_qty", ""), ) for item in raw.get("stk_sec_rank", []) ] return StockBrokerRank( rank_1=raw.get("rank_1", ""), rank_2=raw.get("rank_2", ""), rank_3=raw.get("rank_3", ""), prid_trde_qty=raw.get("prid_trde_qty", ""), items=items, ) ``` #### get_stock_brokers ¶ ``` get_stock_brokers(stock_code: str) -> StockBrokers ``` 주식 매도·매수 상위 5개 거래원을 조회한다 (ka10002). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | 거래소별 종목코드. Returns: | Type | Description | | --- | --- | | StockBrokers | 매도·매수 거래원 정보 StockBrokers . | 매도·매수 거래원 정보 StockBrokers . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_stock_brokers(self, stock_code: str) -> StockBrokers: """주식 매도·매수 상위 5개 거래원을 조회한다 (ka10002). Args: stock_code: 거래소별 종목코드. Returns: 매도·매수 거래원 정보 ``StockBrokers``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10002"), )) sell_brokers = [ BrokerEntry( name=raw.get(f"sel_trde_ori_nm_{i}", ""), code=raw.get(f"sel_trde_ori_{i}", ""), qty=raw.get(f"sel_trde_qty_{i}", ""), ) for i in range(1, 6) ] buy_brokers = [ BrokerEntry( name=raw.get(f"buy_trde_ori_nm_{i}", ""), code=raw.get(f"buy_trde_ori_{i}", ""), qty=raw.get(f"buy_trde_qty_{i}", ""), ) for i in range(1, 6) ] return StockBrokers( stk_cd=raw.get("stk_cd", ""), stk_nm=raw.get("stk_nm", ""), cur_prc=raw.get("cur_prc", ""), sell_brokers=sell_brokers, buy_brokers=buy_brokers, ) ``` #### get_stock_daily_program ¶ ``` get_stock_daily_program(stock_code: str, amt_qty_type: str = '', date: str = '') -> StockDailyProgram ``` 종목 일별 프로그램 매매 추이를 조회한다 (ka90013). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 종목코드 (예: "005930" ). | required | | amt_qty_type | str | 금액수량구분 ( "1" 금액 / "2" 수량, 기본값: "" ). | '' | | date | str | 날짜 ( "YYYYMMDD" , 기본값: "" ). | '' | 종목코드 (예: "005930" ). 금액수량구분 ( "1" 금액 / "2" 수량, 기본값: "" ). 날짜 ( "YYYYMMDD" , 기본값: "" ). Returns: | Type | Description | | --- | --- | | StockDailyProgram | class: ~kiwoompy.models.StockDailyProgram 인스턴스. | class: ~kiwoompy.models.StockDailyProgram 인스턴스. ``` def get_stock_daily_program( self, stock_code: str, amt_qty_type: str = "", date: str = "", ) -> StockDailyProgram: """종목 일별 프로그램 매매 추이를 조회한다 (ka90013). Args: stock_code: 종목코드 (예: ``"005930"``). amt_qty_type: 금액수량구분 (``"1"``금액 / ``"2"``수량, 기본값: ``""``). date: 날짜 (``"YYYYMMDD"``, 기본값: ``""``). Returns: :class:`~kiwoompy.models.StockDailyProgram` 인스턴스. """ raw = _check(self._api.post( self._MRKCOND_PATH, { "amt_qty_tp": amt_qty_type, "stk_cd": stock_code, "date": date, }, headers=self._headers("ka90013"), )) items = [ StockDailyProgramItem( dt=it.get("dt", ""), cur_prc=it.get("cur_prc", ""), pre_sig=it.get("pre_sig", ""), pred_pre=it.get("pred_pre", ""), flu_rt=it.get("flu_rt", ""), trde_qty=it.get("trde_qty", ""), prm_sell_amt=it.get("prm_sell_amt", ""), prm_buy_amt=it.get("prm_buy_amt", ""), prm_netprps_amt=it.get("prm_netprps_amt", ""), prm_netprps_amt_irds=it.get("prm_netprps_amt_irds", ""), prm_sell_qty=it.get("prm_sell_qty", ""), prm_buy_qty=it.get("prm_buy_qty", ""), prm_netprps_qty=it.get("prm_netprps_qty", ""), prm_netprps_qty_irds=it.get("prm_netprps_qty_irds", ""), base_pric_tm=it.get("base_pric_tm", ""), dbrt_trde_rpy_sum=it.get("dbrt_trde_rpy_sum", ""), remn_rcvord_sum=it.get("remn_rcvord_sum", ""), stex_tp=it.get("stex_tp", ""), ) for it in raw.get("stk_daly_prm_trde_trnsn", []) ] return StockDailyProgram(items=items) ``` #### get_stock_day_chart ¶ ``` get_stock_day_chart(stock_code: str, base_date: str, adjusted: 'ChartAdjustedPrice' = 'adjusted') -> StockDayChart ``` 주식 일봉 차트 데이터를 조회한다 (ka10081). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | | base_date | str | 기준일자 ( "YYYYMMDD" ). | required | | adjusted | 'ChartAdjustedPrice' | 수정주가 반영 여부. | 'adjusted' | 거래소별 종목코드. 기준일자 ( "YYYYMMDD" ). 수정주가 반영 여부. Returns: | Type | Description | | --- | --- | | StockDayChart | class: ~kiwoompy.models.StockDayChart 인스턴스. | class: ~kiwoompy.models.StockDayChart 인스턴스. ``` def get_stock_day_chart( self, stock_code: str, base_date: str, adjusted: "ChartAdjustedPrice" = "adjusted", ) -> StockDayChart: """주식 일봉 차트 데이터를 조회한다 (ka10081). Args: stock_code: 거래소별 종목코드. base_date: 기준일자 (``"YYYYMMDD"``). adjusted: 수정주가 반영 여부. Returns: :class:`~kiwoompy.models.StockDayChart` 인스턴스. """ raw = _check(self._api.post( self._CHART_PATH, { "stk_cd": stock_code, "base_dt": base_date, "upd_stkpc_tp": _CHART_ADJ_CODE[adjusted], }, headers=self._headers("ka10081"), )) items = [ StockDayChartItem( cur_prc=item.get("cur_prc", ""), trde_qty=item.get("trde_qty", ""), trde_prica=item.get("trde_prica", ""), dt=item.get("dt", ""), open_pric=item.get("open_pric", ""), high_pric=item.get("high_pric", ""), low_pric=item.get("low_pric", ""), pred_pre=item.get("pred_pre", ""), pred_pre_sig=item.get("pred_pre_sig", ""), trde_tern_rt=item.get("trde_tern_rt", ""), ) for item in raw.get("stk_dt_pole_chart_qry", []) ] return StockDayChart(stk_cd=raw.get("stk_cd", ""), items=items) ``` #### get_stock_detail ¶ ``` get_stock_detail(stock_code: str) -> StockDetail ``` 단일 종목의 상세 정보를 조회한다 (ka10100). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 종목코드 (6자리 단축코드). | required | 종목코드 (6자리 단축코드). Returns: | Type | Description | | --- | --- | | StockDetail | 종목 상세정보 StockDetail . | 종목 상세정보 StockDetail . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_stock_detail(self, stock_code: str) -> StockDetail: """단일 종목의 상세 정보를 조회한다 (ka10100). Args: stock_code: 종목코드 (6자리 단축코드). Returns: 종목 상세정보 ``StockDetail``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10100"), )) return StockDetail( code=raw.get("code", ""), name=raw.get("name", ""), list_count=raw.get("listCount", ""), reg_day=raw.get("regDay", ""), last_price=raw.get("lastPrice", ""), state=raw.get("state", ""), market_code=raw.get("marketCode", ""), market_name=raw.get("marketName", ""), up_name=raw.get("upName", ""), up_size_name=raw.get("upSizeName", ""), nxt_enable=raw.get("nxtEnable", ""), ) ``` #### get_stock_info ¶ ``` get_stock_info(stock_code: str) -> StockInfo ``` 주식 기본정보(현재가·재무지표·시가총액 등)를 조회한다 (ka10001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | 거래소별 종목코드. Returns: | Type | Description | | --- | --- | | StockInfo | 주식기본정보 StockInfo . | 주식기본정보 StockInfo . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_stock_info(self, stock_code: str) -> StockInfo: """주식 기본정보(현재가·재무지표·시가총액 등)를 조회한다 (ka10001). Args: stock_code: 거래소별 종목코드. Returns: 주식기본정보 ``StockInfo``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10001"), )) return StockInfo( stk_cd=raw.get("stk_cd", ""), stk_nm=raw.get("stk_nm", ""), cur_prc=raw.get("cur_prc", ""), flu_rt=raw.get("flu_rt", ""), trde_qty=raw.get("trde_qty", ""), open_pric=raw.get("open_pric", ""), high_pric=raw.get("high_pric", ""), low_pric=raw.get("low_pric", ""), upl_pric=raw.get("upl_pric", ""), lst_pric=raw.get("lst_pric", ""), mac=raw.get("mac", ""), per=raw.get("per", ""), pbr=raw.get("pbr", ""), eps=raw.get("eps", ""), roe=raw.get("roe", ""), flo_stk=raw.get("flo_stk", ""), cap=raw.get("cap", ""), oyr_hgst=raw.get("oyr_hgst", ""), oyr_lwst=raw.get("oyr_lwst", ""), ) ``` #### get_stock_institution_trend ¶ ``` get_stock_institution_trend(stock_code: str, start_date: str, end_date: str, org_price_type: 'EstimatedPriceType' = 'buy', for_price_type: 'EstimatedPriceType' = 'buy') -> StockInstitutionTrend ``` 종목별 기관·외인 매매 추이를 조회한다 (ka10045). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | | start_date | str | 시작일자 ( YYYYMMDD 형식). | required | | end_date | str | 종료일자 ( YYYYMMDD 형식). | required | | org_price_type | 'EstimatedPriceType' | 기관추정단가구분. "buy" : 매수단가, "sell" : 매도단가. | 'buy' | | for_price_type | 'EstimatedPriceType' | 외인추정단가구분. "buy" : 매수단가, "sell" : 매도단가. | 'buy' | 거래소별 종목코드. 시작일자 ( YYYYMMDD 형식). 종료일자 ( YYYYMMDD 형식). 기관추정단가구분. "buy" : 매수단가, "sell" : 매도단가. 외인추정단가구분. "buy" : 매수단가, "sell" : 매도단가. Returns: | Type | Description | | --- | --- | | StockInstitutionTrend | 종목별기관매매추이 StockInstitutionTrend . | 종목별기관매매추이 StockInstitutionTrend . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_stock_institution_trend( self, stock_code: str, start_date: str, end_date: str, org_price_type: "EstimatedPriceType" = "buy", for_price_type: "EstimatedPriceType" = "buy", ) -> StockInstitutionTrend: """종목별 기관·외인 매매 추이를 조회한다 (ka10045). Args: stock_code: 거래소별 종목코드. start_date: 시작일자 (``YYYYMMDD`` 형식). end_date: 종료일자 (``YYYYMMDD`` 형식). org_price_type: 기관추정단가구분. ``"buy"``: 매수단가, ``"sell"``: 매도단가. for_price_type: 외인추정단가구분. ``"buy"``: 매수단가, ``"sell"``: 매도단가. Returns: 종목별기관매매추이 ``StockInstitutionTrend``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._MRKCOND_PATH, { "stk_cd": stock_code, "strt_dt": start_date, "end_dt": end_date, "orgn_prsm_unp_tp": _ESTIMATED_PRICE_CODE[org_price_type], "for_prsm_unp_tp": _ESTIMATED_PRICE_CODE[for_price_type], }, headers=self._headers("ka10045"), )) items = [ StockInstitutionTrendItem( dt=item.get("dt", ""), close_pric=item.get("close_pric", ""), flu_rt=item.get("flu_rt", ""), trde_qty=item.get("trde_qty", ""), orgn_dt_acc=item.get("orgn_dt_acc", ""), orgn_daly_nettrde_qty=item.get("orgn_daly_nettrde_qty", ""), for_dt_acc=item.get("for_dt_acc", ""), for_daly_nettrde_qty=item.get("for_daly_nettrde_qty", ""), limit_exh_rt=item.get("limit_exh_rt", ""), ) for item in raw.get("stk_orgn_trde_trnsn", []) ] return StockInstitutionTrend( orgn_prsm_avg_pric=raw.get("orgn_prsm_avg_pric", ""), for_prsm_avg_pric=raw.get("for_prsm_avg_pric", ""), items=items, ) ``` #### get_stock_investor_by_day ¶ ``` get_stock_investor_by_day(date: str, stock_code: str, trade_type: 'InvestorTradeType' = 'net_buy', amount_qty_type: 'AmtQtyType' = 'amount', unit_type: 'UnitType' = 'thousand') -> StockInvestorByDay ``` 종목별 투자자·기관별 일별 매매 현황을 조회한다 (ka10059). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | date | str | 조회일자 ( YYYYMMDD 형식). | required | | stock_code | str | 거래소별 종목코드. | required | | trade_type | 'InvestorTradeType' | 매매구분. "net_buy" : 순매수, "buy" : 매수, "sell" : 매도. | 'net_buy' | | amount_qty_type | 'AmtQtyType' | 금액수량구분. "amount" : 금액, "qty" : 수량. | 'amount' | | unit_type | 'UnitType' | 단위구분. "thousand" : 천주, "single" : 단주. | 'thousand' | 조회일자 ( YYYYMMDD 형식). 거래소별 종목코드. 매매구분. "net_buy" : 순매수, "buy" : 매수, "sell" : 매도. 금액수량구분. "amount" : 금액, "qty" : 수량. 단위구분. "thousand" : 천주, "single" : 단주. Returns: | Type | Description | | --- | --- | | StockInvestorByDay | 종목별투자자기관별 일별 리스트 StockInvestorByDay . | 종목별투자자기관별 일별 리스트 StockInvestorByDay . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_stock_investor_by_day( self, date: str, stock_code: str, trade_type: "InvestorTradeType" = "net_buy", amount_qty_type: "AmtQtyType" = "amount", unit_type: "UnitType" = "thousand", ) -> StockInvestorByDay: """종목별 투자자·기관별 일별 매매 현황을 조회한다 (ka10059). Args: date: 조회일자 (``YYYYMMDD`` 형식). stock_code: 거래소별 종목코드. trade_type: 매매구분. ``"net_buy"``: 순매수, ``"buy"``: 매수, ``"sell"``: 매도. amount_qty_type: 금액수량구분. ``"amount"``: 금액, ``"qty"``: 수량. unit_type: 단위구분. ``"thousand"``: 천주, ``"single"``: 단주. Returns: 종목별투자자기관별 일별 리스트 ``StockInvestorByDay``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, { "dt": date, "stk_cd": stock_code, "amt_qty_tp": _AMT_QTY_CODE[amount_qty_type], "trde_tp": _INVESTOR_TRADE_CODE[trade_type], "unit_tp": _UNIT_CODE[unit_type], }, headers=self._headers("ka10059"), )) items = [ StockInvestorItem( dt=item.get("dt", ""), cur_prc=item.get("cur_prc", ""), flu_rt=item.get("flu_rt", ""), acc_trde_qty=item.get("acc_trde_qty", ""), ind_invsr=item.get("ind_invsr", ""), frgnr_invsr=item.get("frgnr_invsr", ""), orgn=item.get("orgn", ""), fnnc_invt=item.get("fnnc_invt", ""), bank=item.get("bank", ""), penfnd_etc=item.get("penfnd_etc", ""), ) for item in raw.get("stk_invsr_orgn", []) ] return StockInvestorByDay(items=items) ``` #### get_stock_investor_total ¶ ``` get_stock_investor_total(stock_code: str, start_date: str, end_date: str, trade_type: 'InvestorTradeType' = 'net_buy', amount_qty_type: 'AmtQtyType' = 'amount', unit_type: 'UnitType' = 'thousand') -> StockInvestorTotal ``` 종목별 투자자·기관별 기간 합계를 조회한다 (ka10061). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | | start_date | str | 시작일자 ( YYYYMMDD 형식). | required | | end_date | str | 종료일자 ( YYYYMMDD 형식). | required | | trade_type | 'InvestorTradeType' | 매매구분. "net_buy" : 순매수, "buy" : 매수, "sell" : 매도. | 'net_buy' | | amount_qty_type | 'AmtQtyType' | 금액수량구분. "amount" : 금액, "qty" : 수량. | 'amount' | | unit_type | 'UnitType' | 단위구분. "thousand" : 천주, "single" : 단주. | 'thousand' | 거래소별 종목코드. 시작일자 ( YYYYMMDD 형식). 종료일자 ( YYYYMMDD 형식). 매매구분. "net_buy" : 순매수, "buy" : 매수, "sell" : 매도. 금액수량구분. "amount" : 금액, "qty" : 수량. 단위구분. "thousand" : 천주, "single" : 단주. Returns: | Type | Description | | --- | --- | | StockInvestorTotal | 투자자·기관별 합계 StockInvestorTotal . | 투자자·기관별 합계 StockInvestorTotal . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_stock_investor_total( self, stock_code: str, start_date: str, end_date: str, trade_type: "InvestorTradeType" = "net_buy", amount_qty_type: "AmtQtyType" = "amount", unit_type: "UnitType" = "thousand", ) -> StockInvestorTotal: """종목별 투자자·기관별 기간 합계를 조회한다 (ka10061). Args: stock_code: 거래소별 종목코드. start_date: 시작일자 (``YYYYMMDD`` 형식). end_date: 종료일자 (``YYYYMMDD`` 형식). trade_type: 매매구분. ``"net_buy"``: 순매수, ``"buy"``: 매수, ``"sell"``: 매도. amount_qty_type: 금액수량구분. ``"amount"``: 금액, ``"qty"``: 수량. unit_type: 단위구분. ``"thousand"``: 천주, ``"single"``: 단주. Returns: 투자자·기관별 합계 ``StockInvestorTotal``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, { "stk_cd": stock_code, "strt_dt": start_date, "end_dt": end_date, "amt_qty_tp": _AMT_QTY_CODE[amount_qty_type], "trde_tp": _INVESTOR_TRADE_CODE[trade_type], "unit_tp": _UNIT_CODE[unit_type], }, headers=self._headers("ka10061"), )) first = raw.get("stk_invsr_orgn_tot", [{}])[0] if raw.get("stk_invsr_orgn_tot") else {} return StockInvestorTotal( ind_invsr=first.get("ind_invsr", ""), frgnr_invsr=first.get("frgnr_invsr", ""), orgn=first.get("orgn", ""), fnnc_invt=first.get("fnnc_invt", ""), bank=first.get("bank", ""), penfnd_etc=first.get("penfnd_etc", ""), samo_fund=first.get("samo_fund", ""), natn=first.get("natn", ""), etc_corp=first.get("etc_corp", ""), ) ``` #### get_stock_list ¶ ``` get_stock_list(market_type: 'StkMarketType' = 'kospi') -> StockList ``` 시장별 상장 종목 리스트를 조회한다 (ka10099). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market_type | 'StkMarketType' | 시장구분. "kospi" : 코스피, "kosdaq" : 코스닥, "etf" : ETF, "elw" : ELW, "konex" : 코넥스, "gold" : 금현물 등. | 'kospi' | 시장구분. "kospi" : 코스피, "kosdaq" : 코스닥, "etf" : ETF, "elw" : ELW, "konex" : 코넥스, "gold" : 금현물 등. Returns: | Type | Description | | --- | --- | | StockList | 종목정보 리스트 StockList . | 종목정보 리스트 StockList . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_stock_list(self, market_type: "StkMarketType" = "kospi") -> StockList: """시장별 상장 종목 리스트를 조회한다 (ka10099). Args: market_type: 시장구분. ``"kospi"``: 코스피, ``"kosdaq"``: 코스닥, ``"etf"``: ETF, ``"elw"``: ELW, ``"konex"``: 코넥스, ``"gold"``: 금현물 등. Returns: 종목정보 리스트 ``StockList``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, {"mrkt_tp": _STK_MARKET_CODE[market_type]}, headers=self._headers("ka10099"), )) items = [ StockListItem( code=item.get("code", ""), name=item.get("name", ""), list_count=item.get("listCount", ""), reg_day=item.get("regDay", ""), last_price=item.get("lastPrice", ""), state=item.get("state", ""), market_name=item.get("marketName", ""), up_name=item.get("upName", ""), nxt_enable=item.get("nxtEnable", ""), ) for item in raw.get("list", []) ] return StockList(items=items) ``` #### get_stock_loan_history ¶ ``` get_stock_loan_history(date: str, market: 'SlbMrktType') -> StockLoanHistory ``` 일자별 대차거래 내역을 조회한다 (ka90012). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | date | str | 조회일자 ( "YYYYMMDD" ). | required | | market | 'SlbMrktType' | 시장구분 ( "kospi" / "kosdaq" ). | required | 조회일자 ( "YYYYMMDD" ). 시장구분 ( "kospi" / "kosdaq" ). Returns: | Type | Description | | --- | --- | | StockLoanHistory | class: ~kiwoompy.models.StockLoanHistory 인스턴스. | class: ~kiwoompy.models.StockLoanHistory 인스턴스. ``` def get_stock_loan_history( self, date: str, market: "SlbMrktType", ) -> StockLoanHistory: """일자별 대차거래 내역을 조회한다 (ka90012). Args: date: 조회일자 (``"YYYYMMDD"``). market: 시장구분 (``"kospi"`` / ``"kosdaq"``). Returns: :class:`~kiwoompy.models.StockLoanHistory` 인스턴스. """ raw = _check(self._api.post( self._SLB_PATH, { "dt": date, "mrkt_tp": _SLB_MRKT_CODE[market], }, headers=self._headers("ka90012"), )) items = [ StockLoanHistoryItem( stk_nm=it.get("stk_nm", ""), stk_cd=it.get("stk_cd", ""), dbrt_trde_cntrcnt=it.get("dbrt_trde_cntrcnt", ""), dbrt_trde_rpy=it.get("dbrt_trde_rpy", ""), rmnd=it.get("rmnd", ""), remn_amt=it.get("remn_amt", ""), ) for it in raw.get("dbrt_trde_prps", []) ] return StockLoanHistory(items=items) ``` #### get_stock_loan_top10 ¶ ``` get_stock_loan_top10(start_date: str, market: 'SlbMrktType', end_date: str = '') -> StockLoanTop10 ``` 대차거래 상위 10종목을 조회한다 (ka10069). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | start_date | str | 시작일자 ( "YYYYMMDD" ). | required | | market | 'SlbMrktType' | 시장구분 ( "kospi" / "kosdaq" ). | required | | end_date | str | 종료일자 ( "YYYYMMDD" ). 생략 가능. | '' | 시작일자 ( "YYYYMMDD" ). 시장구분 ( "kospi" / "kosdaq" ). 종료일자 ( "YYYYMMDD" ). 생략 가능. Returns: | Type | Description | | --- | --- | | StockLoanTop10 | class: ~kiwoompy.models.StockLoanTop10 인스턴스. | class: ~kiwoompy.models.StockLoanTop10 인스턴스. ``` def get_stock_loan_top10( self, start_date: str, market: "SlbMrktType", end_date: str = "", ) -> StockLoanTop10: """대차거래 상위 10종목을 조회한다 (ka10069). Args: start_date: 시작일자 (``"YYYYMMDD"``). market: 시장구분 (``"kospi"`` / ``"kosdaq"``). end_date: 종료일자 (``"YYYYMMDD"``). 생략 가능. Returns: :class:`~kiwoompy.models.StockLoanTop10` 인스턴스. """ raw = _check(self._api.post( self._SLB_PATH, { "strt_dt": start_date, "end_dt": end_date, "mrkt_tp": _SLB_MRKT_CODE[market], }, headers=self._headers("ka10069"), )) items = [ StockLoanTop10Item( stk_nm=it.get("stk_nm", ""), stk_cd=it.get("stk_cd", ""), dbrt_trde_cntrcnt=it.get("dbrt_trde_cntrcnt", ""), dbrt_trde_rpy=it.get("dbrt_trde_rpy", ""), rmnd=it.get("rmnd", ""), remn_amt=it.get("remn_amt", ""), ) for it in raw.get("dbrt_trde_upper_10stk", []) ] return StockLoanTop10( dbrt_trde_cntrcnt_sum=raw.get("dbrt_trde_cntrcnt_sum", ""), dbrt_trde_rpy_sum=raw.get("dbrt_trde_rpy_sum", ""), rmnd_sum=raw.get("rmnd_sum", ""), remn_amt_sum=raw.get("remn_amt_sum", ""), dbrt_trde_cntrcnt_rt=raw.get("dbrt_trde_cntrcnt_rt", ""), dbrt_trde_rpy_rt=raw.get("dbrt_trde_rpy_rt", ""), rmnd_rt=raw.get("rmnd_rt", ""), remn_amt_rt=raw.get("remn_amt_rt", ""), items=items, ) ``` #### get_stock_loan_trend ¶ ``` get_stock_loan_trend(start_date: str = '', end_date: str = '') -> StockLoanTrend ``` 전체 대차거래 추이를 조회한다 (ka10068). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | start_date | str | 시작일자 ( "YYYYMMDD" ). | '' | | end_date | str | 종료일자 ( "YYYYMMDD" ). | '' | 시작일자 ( "YYYYMMDD" ). 종료일자 ( "YYYYMMDD" ). Returns: | Type | Description | | --- | --- | | StockLoanTrend | class: ~kiwoompy.models.StockLoanTrend 인스턴스. | class: ~kiwoompy.models.StockLoanTrend 인스턴스. ``` def get_stock_loan_trend( self, start_date: str = "", end_date: str = "", ) -> StockLoanTrend: """전체 대차거래 추이를 조회한다 (ka10068). Args: start_date: 시작일자 (``"YYYYMMDD"``). end_date: 종료일자 (``"YYYYMMDD"``). Returns: :class:`~kiwoompy.models.StockLoanTrend` 인스턴스. """ raw = _check(self._api.post( self._SLB_PATH, { "strt_dt": start_date, "end_dt": end_date, "all_tp": "1", }, headers=self._headers("ka10068"), )) items = [ StockLoanItem( dt=it.get("dt", ""), dbrt_trde_cntrcnt=it.get("dbrt_trde_cntrcnt", ""), dbrt_trde_rpy=it.get("dbrt_trde_rpy", ""), dbrt_trde_irds=it.get("dbrt_trde_irds", ""), rmnd=it.get("rmnd", ""), remn_amt=it.get("remn_amt", ""), ) for it in raw.get("dbrt_trde_trnsn", []) ] return StockLoanTrend(items=items) ``` #### get_stock_loan_trend_by_stock ¶ ``` get_stock_loan_trend_by_stock(stock_code: str, start_date: str = '', end_date: str = '') -> StockLoanByStock ``` 종목별 대차거래 추이를 조회한다 (ka20068). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 종목코드 (예: "005930" ). | required | | start_date | str | 시작일자 ( "YYYYMMDD" ). | '' | | end_date | str | 종료일자 ( "YYYYMMDD" ). | '' | 종목코드 (예: "005930" ). 시작일자 ( "YYYYMMDD" ). 종료일자 ( "YYYYMMDD" ). Returns: | Type | Description | | --- | --- | | StockLoanByStock | class: ~kiwoompy.models.StockLoanByStock 인스턴스. | class: ~kiwoompy.models.StockLoanByStock 인스턴스. ``` def get_stock_loan_trend_by_stock( self, stock_code: str, start_date: str = "", end_date: str = "", ) -> StockLoanByStock: """종목별 대차거래 추이를 조회한다 (ka20068). Args: stock_code: 종목코드 (예: ``"005930"``). start_date: 시작일자 (``"YYYYMMDD"``). end_date: 종료일자 (``"YYYYMMDD"``). Returns: :class:`~kiwoompy.models.StockLoanByStock` 인스턴스. """ raw = _check(self._api.post( self._SLB_PATH, { "strt_dt": start_date, "end_dt": end_date, "all_tp": "0", "stk_cd": stock_code, }, headers=self._headers("ka20068"), )) items = [ StockLoanByStockItem( dt=it.get("dt", ""), dbrt_trde_cntrcnt=it.get("dbrt_trde_cntrcnt", ""), dbrt_trde_rpy=it.get("dbrt_trde_rpy", ""), dbrt_trde_irds=it.get("dbrt_trde_irds", ""), rmnd=it.get("rmnd", ""), remn_amt=it.get("remn_amt", ""), ) for it in raw.get("dbrt_trde_trnsn", []) ] return StockLoanByStock(items=items) ``` #### get_stock_min_chart ¶ ``` get_stock_min_chart(stock_code: str, min_scope: 'ChartMinScope', adjusted: 'ChartAdjustedPrice' = 'adjusted', base_date: str = '') -> StockMinChart ``` 주식 분봉 차트 데이터를 조회한다 (ka10080). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | | min_scope | 'ChartMinScope' | 분봉 범위 ( "1" / "3" / "5" / "10" / "15" / "30" / "45" / "60" ). | required | | adjusted | 'ChartAdjustedPrice' | 수정주가 반영 여부. | 'adjusted' | | base_date | str | 기준일자 ( "YYYYMMDD" , 생략 시 최신). | '' | 거래소별 종목코드. 분봉 범위 ( "1" / "3" / "5" / "10" / "15" / "30" / "45" / "60" ). 수정주가 반영 여부. 기준일자 ( "YYYYMMDD" , 생략 시 최신). Returns: | Type | Description | | --- | --- | | StockMinChart | class: ~kiwoompy.models.StockMinChart 인스턴스. | class: ~kiwoompy.models.StockMinChart 인스턴스. ``` def get_stock_min_chart( self, stock_code: str, min_scope: "ChartMinScope", adjusted: "ChartAdjustedPrice" = "adjusted", base_date: str = "", ) -> StockMinChart: """주식 분봉 차트 데이터를 조회한다 (ka10080). Args: stock_code: 거래소별 종목코드. min_scope: 분봉 범위 (``"1"`` / ``"3"`` / ``"5"`` / ``"10"`` / ``"15"`` / ``"30"`` / ``"45"`` / ``"60"``). adjusted: 수정주가 반영 여부. base_date: 기준일자 (``"YYYYMMDD"``, 생략 시 최신). Returns: :class:`~kiwoompy.models.StockMinChart` 인스턴스. """ body: dict = { "stk_cd": stock_code, "tic_scope": min_scope, "upd_stkpc_tp": _CHART_ADJ_CODE[adjusted], } if base_date: body["base_dt"] = base_date raw = _check(self._api.post( self._CHART_PATH, body, headers=self._headers("ka10080"), )) items = [ StockMinChartItem( cur_prc=item.get("cur_prc", ""), trde_qty=item.get("trde_qty", ""), cntr_tm=item.get("cntr_tm", ""), open_pric=item.get("open_pric", ""), high_pric=item.get("high_pric", ""), low_pric=item.get("low_pric", ""), pred_pre=item.get("pred_pre", ""), pred_pre_sig=item.get("pred_pre_sig", ""), acc_trde_qty=item.get("acc_trde_qty", ""), ) for item in raw.get("stk_min_pole_chart_qry", []) ] return StockMinChart(stk_cd=raw.get("stk_cd", ""), items=items) ``` #### get_stock_minutes ¶ ``` get_stock_minutes(stock_code: str) -> StockMinutes ``` 주식 시·분 시세를 조회한다 (ka10006). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | 거래소별 종목코드. Returns: | Type | Description | | --- | --- | | StockMinutes | 시분 시세 StockMinutes . | 시분 시세 StockMinutes . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_stock_minutes(self, stock_code: str) -> StockMinutes: """주식 시·분 시세를 조회한다 (ka10006). Args: stock_code: 거래소별 종목코드. Returns: 시분 시세 ``StockMinutes``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._MRKCOND_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10006"), )) return StockMinutes( date=raw.get("date", ""), open_pric=raw.get("open_pric", ""), high_pric=raw.get("high_pric", ""), low_pric=raw.get("low_pric", ""), close_pric=raw.get("close_pric", ""), pre=raw.get("pre", ""), flu_rt=raw.get("flu_rt", ""), trde_qty=raw.get("trde_qty", ""), trde_prica=raw.get("trde_prica", ""), cntr_str=raw.get("cntr_str", ""), ) ``` #### get_stock_month_chart ¶ ``` get_stock_month_chart(stock_code: str, base_date: str, adjusted: 'ChartAdjustedPrice' = 'adjusted') -> StockMonthChart ``` 주식 월봉 차트 데이터를 조회한다 (ka10083). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | | base_date | str | 기준일자 ( "YYYYMMDD" ). | required | | adjusted | 'ChartAdjustedPrice' | 수정주가 반영 여부. | 'adjusted' | 거래소별 종목코드. 기준일자 ( "YYYYMMDD" ). 수정주가 반영 여부. Returns: | Type | Description | | --- | --- | | StockMonthChart | class: ~kiwoompy.models.StockMonthChart 인스턴스. | class: ~kiwoompy.models.StockMonthChart 인스턴스. ``` def get_stock_month_chart( self, stock_code: str, base_date: str, adjusted: "ChartAdjustedPrice" = "adjusted", ) -> StockMonthChart: """주식 월봉 차트 데이터를 조회한다 (ka10083). Args: stock_code: 거래소별 종목코드. base_date: 기준일자 (``"YYYYMMDD"``). adjusted: 수정주가 반영 여부. Returns: :class:`~kiwoompy.models.StockMonthChart` 인스턴스. """ raw = _check(self._api.post( self._CHART_PATH, { "stk_cd": stock_code, "base_dt": base_date, "upd_stkpc_tp": _CHART_ADJ_CODE[adjusted], }, headers=self._headers("ka10083"), )) items = [ StockMonthChartItem( cur_prc=item.get("cur_prc", ""), trde_qty=item.get("trde_qty", ""), trde_prica=item.get("trde_prica", ""), dt=item.get("dt", ""), open_pric=item.get("open_pric", ""), high_pric=item.get("high_pric", ""), low_pric=item.get("low_pric", ""), pred_pre=item.get("pred_pre", ""), pred_pre_sig=item.get("pred_pre_sig", ""), trde_tern_rt=item.get("trde_tern_rt", ""), ) for item in raw.get("stk_mth_pole_chart_qry", []) ] return StockMonthChart(stk_cd=raw.get("stk_cd", ""), items=items) ``` #### get_stock_periods ¶ ``` get_stock_periods(stock_code: str) -> StockPeriods ``` 주식의 일·주·월·시·분 OHLCV 데이터를 조회한다 (ka10005). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | 거래소별 종목코드. Returns: | Type | Description | | --- | --- | | StockPeriods | 기간별 OHLCV 리스트 StockPeriods . | 기간별 OHLCV 리스트 StockPeriods . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_stock_periods(self, stock_code: str) -> StockPeriods: """주식의 일·주·월·시·분 OHLCV 데이터를 조회한다 (ka10005). Args: stock_code: 거래소별 종목코드. Returns: 기간별 OHLCV 리스트 ``StockPeriods``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._MRKCOND_PATH, {"stk_cd": stock_code}, headers=self._headers("ka10005"), )) items = [ StockPeriodItem( date=item.get("date", ""), open_pric=item.get("open_pric", ""), high_pric=item.get("high_pric", ""), low_pric=item.get("low_pric", ""), close_pric=item.get("close_pric", ""), pre=item.get("pre", ""), flu_rt=item.get("flu_rt", ""), trde_qty=item.get("trde_qty", ""), trde_prica=item.get("trde_prica", ""), for_poss=item.get("for_poss", ""), for_wght=item.get("for_wght", ""), for_netprps=item.get("for_netprps", ""), orgn_netprps=item.get("orgn_netprps", ""), ind_netprps=item.get("ind_netprps", ""), crd_remn_rt=item.get("crd_remn_rt", ""), frgn=item.get("frgn", ""), prm=item.get("prm", ""), ) for item in raw.get("stk_ddwkmm", []) ] return StockPeriods(items=items) ``` #### get_stock_program_status ¶ ``` get_stock_program_status(date: str, market_type: str, exchange: 'ExchangeType') -> StockProgramStatus ``` 종목별 프로그램 매매 현황을 조회한다 (ka90004). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | date | str | 일자 ( "YYYYMMDD" ). | required | | market_type | str | 시장구분 ( "P00101" 코스피 / "P10102" 코스닥). | required | | exchange | 'ExchangeType' | 거래소구분 ( "krx" / "nxt" / "all" ). | required | 일자 ( "YYYYMMDD" ). 시장구분 ( "P00101" 코스피 / "P10102" 코스닥). 거래소구분 ( "krx" / "nxt" / "all" ). Returns: | Type | Description | | --- | --- | | StockProgramStatus | class: ~kiwoompy.models.StockProgramStatus 인스턴스. | class: ~kiwoompy.models.StockProgramStatus 인스턴스. ``` def get_stock_program_status( self, date: str, market_type: str, exchange: "ExchangeType", ) -> StockProgramStatus: """종목별 프로그램 매매 현황을 조회한다 (ka90004). Args: date: 일자 (``"YYYYMMDD"``). market_type: 시장구분 (``"P00101"``코스피 / ``"P10102"``코스닥). exchange: 거래소구분 (``"krx"`` / ``"nxt"`` / ``"all"``). Returns: :class:`~kiwoompy.models.StockProgramStatus` 인스턴스. """ raw = _check(self._api.post( self._STKINFO_PATH, { "dt": date, "mrkt_tp": market_type, "stex_tp": _EXCHANGE_CODE[exchange], }, headers=self._headers("ka90004"), )) items = [ StockProgramStatusItem( stk_cd=it.get("stk_cd", ""), stk_nm=it.get("stk_nm", ""), cur_prc=it.get("cur_prc", ""), flu_sig=it.get("flu_sig", ""), pred_pre=it.get("pred_pre", ""), buy_cntr_qty=it.get("buy_cntr_qty", ""), buy_cntr_amt=it.get("buy_cntr_amt", ""), sel_cntr_qty=it.get("sel_cntr_qty", ""), sel_cntr_amt=it.get("sel_cntr_amt", ""), netprps_prica=it.get("netprps_prica", ""), all_trde_rt=it.get("all_trde_rt", ""), ) for it in raw.get("stk_prm_trde_prst", []) ] return StockProgramStatus( tot_1=raw.get("tot_1", ""), tot_2=raw.get("tot_2", ""), tot_3=raw.get("tot_3", ""), tot_4=raw.get("tot_4", ""), tot_5=raw.get("tot_5", ""), tot_6=raw.get("tot_6", ""), items=items, ) ``` #### get_stock_tick_chart ¶ ``` get_stock_tick_chart(stock_code: str, tick_scope: 'ChartTickScope', adjusted: 'ChartAdjustedPrice' = 'adjusted') -> StockTickChart ``` 주식 틱 차트 데이터를 조회한다 (ka10079). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드 (예: "005930" , "005930_NX" ). | required | | tick_scope | 'ChartTickScope' | 틱 범위 ( "1" / "3" / "5" / "10" / "30" ). | required | | adjusted | 'ChartAdjustedPrice' | 수정주가 반영 여부 ( "adjusted" 반영 / "raw" 미반영). | 'adjusted' | 거래소별 종목코드 (예: "005930" , "005930_NX" ). 틱 범위 ( "1" / "3" / "5" / "10" / "30" ). 수정주가 반영 여부 ( "adjusted" 반영 / "raw" 미반영). Returns: | Type | Description | | --- | --- | | StockTickChart | class: ~kiwoompy.models.StockTickChart 인스턴스. | class: ~kiwoompy.models.StockTickChart 인스턴스. ``` def get_stock_tick_chart( self, stock_code: str, tick_scope: "ChartTickScope", adjusted: "ChartAdjustedPrice" = "adjusted", ) -> StockTickChart: """주식 틱 차트 데이터를 조회한다 (ka10079). Args: stock_code: 거래소별 종목코드 (예: ``"005930"``, ``"005930_NX"``). tick_scope: 틱 범위 (``"1"`` / ``"3"`` / ``"5"`` / ``"10"`` / ``"30"``). adjusted: 수정주가 반영 여부 (``"adjusted"`` 반영 / ``"raw"`` 미반영). Returns: :class:`~kiwoompy.models.StockTickChart` 인스턴스. """ raw = _check(self._api.post( self._CHART_PATH, { "stk_cd": stock_code, "tic_scope": tick_scope, "upd_stkpc_tp": _CHART_ADJ_CODE[adjusted], }, headers=self._headers("ka10079"), )) items = [ StockCandleItem( cur_prc=item.get("cur_prc", ""), trde_qty=item.get("trde_qty", ""), cntr_tm=item.get("cntr_tm", ""), open_pric=item.get("open_pric", ""), high_pric=item.get("high_pric", ""), low_pric=item.get("low_pric", ""), pred_pre=item.get("pred_pre", ""), pred_pre_sig=item.get("pred_pre_sig", ""), ) for item in raw.get("stk_tic_chart_qry", []) ] return StockTickChart( stk_cd=raw.get("stk_cd", ""), last_tic_cnt=raw.get("last_tic_cnt", ""), items=items, ) ``` #### get_stock_time_program ¶ ``` get_stock_time_program(amt_qty_type: str, stock_code: str, date: str) -> StockTimeProgram ``` 종목 시간별 프로그램 매매 추이를 조회한다 (ka90008). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | amt_qty_type | str | 금액수량구분 ( "1" 금액 / "2" 수량). | required | | stock_code | str | 종목코드 (예: "005930" ). | required | | date | str | 날짜 ( "YYYYMMDD" ). | required | 금액수량구분 ( "1" 금액 / "2" 수량). 종목코드 (예: "005930" ). 날짜 ( "YYYYMMDD" ). Returns: | Type | Description | | --- | --- | | StockTimeProgram | class: ~kiwoompy.models.StockTimeProgram 인스턴스. | class: ~kiwoompy.models.StockTimeProgram 인스턴스. ``` def get_stock_time_program( self, amt_qty_type: str, stock_code: str, date: str, ) -> StockTimeProgram: """종목 시간별 프로그램 매매 추이를 조회한다 (ka90008). Args: amt_qty_type: 금액수량구분 (``"1"``금액 / ``"2"``수량). stock_code: 종목코드 (예: ``"005930"``). date: 날짜 (``"YYYYMMDD"``). Returns: :class:`~kiwoompy.models.StockTimeProgram` 인스턴스. """ raw = _check(self._api.post( self._MRKCOND_PATH, { "amt_qty_tp": amt_qty_type, "stk_cd": stock_code, "date": date, }, headers=self._headers("ka90008"), )) items = [ StockTimeProgramItem( tm=it.get("tm", ""), cur_prc=it.get("cur_prc", ""), pre_sig=it.get("pre_sig", ""), pred_pre=it.get("pred_pre", ""), flu_rt=it.get("flu_rt", ""), trde_qty=it.get("trde_qty", ""), prm_sell_amt=it.get("prm_sell_amt", ""), prm_buy_amt=it.get("prm_buy_amt", ""), prm_netprps_amt=it.get("prm_netprps_amt", ""), prm_netprps_amt_irds=it.get("prm_netprps_amt_irds", ""), prm_sell_qty=it.get("prm_sell_qty", ""), prm_buy_qty=it.get("prm_buy_qty", ""), prm_netprps_qty=it.get("prm_netprps_qty", ""), prm_netprps_qty_irds=it.get("prm_netprps_qty_irds", ""), base_pric_tm=it.get("base_pric_tm", ""), dbrt_trde_rpy_sum=it.get("dbrt_trde_rpy_sum", ""), remn_rcvord_sum=it.get("remn_rcvord_sum", ""), stex_tp=it.get("stex_tp", ""), ) for it in raw.get("stk_tm_prm_trde_trnsn", []) ] return StockTimeProgram(items=items) ``` #### get_stock_week_chart ¶ ``` get_stock_week_chart(stock_code: str, base_date: str, adjusted: 'ChartAdjustedPrice' = 'adjusted') -> StockWeekChart ``` 주식 주봉 차트 데이터를 조회한다 (ka10082). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | | base_date | str | 기준일자 ( "YYYYMMDD" ). | required | | adjusted | 'ChartAdjustedPrice' | 수정주가 반영 여부. | 'adjusted' | 거래소별 종목코드. 기준일자 ( "YYYYMMDD" ). 수정주가 반영 여부. Returns: | Type | Description | | --- | --- | | StockWeekChart | class: ~kiwoompy.models.StockWeekChart 인스턴스. | class: ~kiwoompy.models.StockWeekChart 인스턴스. ``` def get_stock_week_chart( self, stock_code: str, base_date: str, adjusted: "ChartAdjustedPrice" = "adjusted", ) -> StockWeekChart: """주식 주봉 차트 데이터를 조회한다 (ka10082). Args: stock_code: 거래소별 종목코드. base_date: 기준일자 (``"YYYYMMDD"``). adjusted: 수정주가 반영 여부. Returns: :class:`~kiwoompy.models.StockWeekChart` 인스턴스. """ raw = _check(self._api.post( self._CHART_PATH, { "stk_cd": stock_code, "base_dt": base_date, "upd_stkpc_tp": _CHART_ADJ_CODE[adjusted], }, headers=self._headers("ka10082"), )) items = [ StockWeekChartItem( cur_prc=item.get("cur_prc", ""), trde_qty=item.get("trde_qty", ""), trde_prica=item.get("trde_prica", ""), dt=item.get("dt", ""), open_pric=item.get("open_pric", ""), high_pric=item.get("high_pric", ""), low_pric=item.get("low_pric", ""), pred_pre=item.get("pred_pre", ""), pred_pre_sig=item.get("pred_pre_sig", ""), trde_tern_rt=item.get("trde_tern_rt", ""), ) for item in raw.get("stk_stk_pole_chart_qry", []) ] return StockWeekChart(stk_cd=raw.get("stk_cd", ""), items=items) ``` #### get_stock_year_chart ¶ ``` get_stock_year_chart(stock_code: str, base_date: str, adjusted: 'ChartAdjustedPrice' = 'adjusted') -> StockYearChart ``` 주식 년봉 차트 데이터를 조회한다 (ka10094). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | | base_date | str | 기준일자 ( "YYYYMMDD" ). | required | | adjusted | 'ChartAdjustedPrice' | 수정주가 반영 여부. | 'adjusted' | 거래소별 종목코드. 기준일자 ( "YYYYMMDD" ). 수정주가 반영 여부. Returns: | Type | Description | | --- | --- | | StockYearChart | class: ~kiwoompy.models.StockYearChart 인스턴스. | class: ~kiwoompy.models.StockYearChart 인스턴스. ``` def get_stock_year_chart( self, stock_code: str, base_date: str, adjusted: "ChartAdjustedPrice" = "adjusted", ) -> StockYearChart: """주식 년봉 차트 데이터를 조회한다 (ka10094). Args: stock_code: 거래소별 종목코드. base_date: 기준일자 (``"YYYYMMDD"``). adjusted: 수정주가 반영 여부. Returns: :class:`~kiwoompy.models.StockYearChart` 인스턴스. """ raw = _check(self._api.post( self._CHART_PATH, { "stk_cd": stock_code, "base_dt": base_date, "upd_stkpc_tp": _CHART_ADJ_CODE[adjusted], }, headers=self._headers("ka10094"), )) items = [ StockYearChartItem( cur_prc=item.get("cur_prc", ""), trde_qty=item.get("trde_qty", ""), trde_prica=item.get("trde_prica", ""), dt=item.get("dt", ""), open_pric=item.get("open_pric", ""), high_pric=item.get("high_pric", ""), low_pric=item.get("low_pric", ""), ) for item in raw.get("stk_yr_pole_chart_qry", []) ] return StockYearChart(stk_cd=raw.get("stk_cd", ""), items=items) ``` #### get_supply_concentration ¶ ``` get_supply_concentration(concentration_rate: str, supply_count: str, cycle_type: str = '50', market_type: 'MrktType3' = 'all', exchange: 'MrkcondExchangeType' = 'all', current_price_entry: str = '0') -> SupplyConcentration ``` 매물대가 집중된 종목을 조회한다 (ka10025). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | concentration_rate | str | 매물집중비율 (0~100). | required | | supply_count | str | 매물대수 (숫자 입력). | required | | cycle_type | str | 주기구분. "50" : 50일, "100" : 100일, "150" : 150일, "200" : 200일, "250" : 250일, "300" : 300일. | '50' | | market_type | 'MrktType3' | 시장구분. "all" , "kospi" , "kosdaq" . | 'all' | | exchange | 'MrkcondExchangeType' | 거래소구분. "krx" , "nxt" , "all" . | 'all' | | current_price_entry | str | 현재가진입. "0" : 미포함, "1" : 포함. | '0' | 매물집중비율 (0~100). 매물대수 (숫자 입력). 주기구분. "50" : 50일, "100" : 100일, "150" : 150일, "200" : 200일, "250" : 250일, "300" : 300일. 시장구분. "all" , "kospi" , "kosdaq" . 거래소구분. "krx" , "nxt" , "all" . 현재가진입. "0" : 미포함, "1" : 포함. Returns: | Type | Description | | --- | --- | | SupplyConcentration | 매물대집중 종목 리스트 SupplyConcentration . | 매물대집중 종목 리스트 SupplyConcentration . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_supply_concentration( self, concentration_rate: str, supply_count: str, cycle_type: str = "50", market_type: "MrktType3" = "all", exchange: "MrkcondExchangeType" = "all", current_price_entry: str = "0", ) -> SupplyConcentration: """매물대가 집중된 종목을 조회한다 (ka10025). Args: concentration_rate: 매물집중비율 (0~100). supply_count: 매물대수 (숫자 입력). cycle_type: 주기구분. ``"50"``: 50일, ``"100"``: 100일, ``"150"``: 150일, ``"200"``: 200일, ``"250"``: 250일, ``"300"``: 300일. market_type: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. current_price_entry: 현재가진입. ``"0"``: 미포함, ``"1"``: 포함. Returns: 매물대집중 종목 리스트 ``SupplyConcentration``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, { "mrkt_tp": _MRKT_TYPE3_CODE[market_type], "prps_cnctr_rt": concentration_rate, "cur_prc_entry": current_price_entry, "prpscnt": supply_count, "cycle_tp": cycle_type, "stex_tp": _MRKCOND_EXCHANGE_CODE[exchange], }, headers=self._headers("ka10025"), )) items = [ SupplyConcentrationItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), flu_rt=item.get("flu_rt", ""), pric_strt=item.get("pric_strt", ""), pric_end=item.get("pric_end", ""), prps_qty=item.get("prps_qty", ""), prps_rt=item.get("prps_rt", ""), ) for item in raw.get("prps_cnctr", []) ] return SupplyConcentration(items=items) ``` #### get_theme_group ¶ ``` get_theme_group(search_type: 'ThemeSearchType', days: str, profit_type: str, exchange: 'ExchangeType', stock_code: str = '', theme_name: str = '') -> ThemeGroup ``` 테마 그룹별 정보를 조회한다 (ka90001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | search_type | 'ThemeSearchType' | 검색구분 ( "all" / "theme" / "stock" ). | required | | days | str | 날짜구분 — n일 전 ( "1" ~ "99" ). | required | | profit_type | str | 등락수익구분 ( "1" 상위기간수익률 / "2" 하위기간수익률 / "3" 상위등락률 / "4" 하위등락률). | required | | exchange | 'ExchangeType' | 거래소구분 ( "krx" / "nxt" / "all" ). | required | | stock_code | str | 검색 종목코드 (종목검색 시 사용, 기본값: "" ). | '' | | theme_name | str | 검색 테마명 (테마검색 시 사용, 기본값: "" ). | '' | 검색구분 ( "all" / "theme" / "stock" ). 날짜구분 — n일 전 ( "1" ~ "99" ). 등락수익구분 ( "1" 상위기간수익률 / "2" 하위기간수익률 / "3" 상위등락률 / "4" 하위등락률). 거래소구분 ( "krx" / "nxt" / "all" ). 검색 종목코드 (종목검색 시 사용, 기본값: "" ). 검색 테마명 (테마검색 시 사용, 기본값: "" ). Returns: | Type | Description | | --- | --- | | ThemeGroup | class: ~kiwoompy.models.ThemeGroup 인스턴스. | class: ~kiwoompy.models.ThemeGroup 인스턴스. ``` def get_theme_group( self, search_type: "ThemeSearchType", days: str, profit_type: str, exchange: "ExchangeType", stock_code: str = "", theme_name: str = "", ) -> ThemeGroup: """테마 그룹별 정보를 조회한다 (ka90001). Args: search_type: 검색구분 (``"all"`` / ``"theme"`` / ``"stock"``). days: 날짜구분 — n일 전 (``"1"`` ~ ``"99"``). profit_type: 등락수익구분 (``"1"``상위기간수익률 / ``"2"``하위기간수익률 / ``"3"``상위등락률 / ``"4"``하위등락률). exchange: 거래소구분 (``"krx"`` / ``"nxt"`` / ``"all"``). stock_code: 검색 종목코드 (종목검색 시 사용, 기본값: ``""``). theme_name: 검색 테마명 (테마검색 시 사용, 기본값: ``""``). Returns: :class:`~kiwoompy.models.ThemeGroup` 인스턴스. """ raw = _check(self._api.post( self._THME_PATH, { "qry_tp": _THEME_SEARCH_CODE[search_type], "stk_cd": stock_code, "date_tp": days, "thema_nm": theme_name, "flu_pl_amt_tp": profit_type, "stex_tp": _EXCHANGE_CODE[exchange], }, headers=self._headers("ka90001"), )) items = [ ThemeGroupItem( thema_grp_cd=it.get("thema_grp_cd", ""), thema_nm=it.get("thema_nm", ""), stk_num=it.get("stk_num", ""), flu_sig=it.get("flu_sig", ""), flu_rt=it.get("flu_rt", ""), rising_stk_num=it.get("rising_stk_num", ""), fall_stk_num=it.get("fall_stk_num", ""), dt_prft_rt=it.get("dt_prft_rt", ""), main_stk=it.get("main_stk", ""), ) for it in raw.get("thema_grp", []) ] return ThemeGroup(items=items) ``` #### get_theme_stocks ¶ ``` get_theme_stocks(theme_group_code: str, exchange: 'ExchangeType', days: str = '') -> ThemeStocks ``` 테마 구성 종목을 조회한다 (ka90002). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | theme_group_code | str | 테마그룹코드 (예: "100" ). | required | | exchange | 'ExchangeType' | 거래소구분 ( "krx" / "nxt" / "all" ). | required | | days | str | 날짜구분 — n일 전 (기본값: "" ). | '' | 테마그룹코드 (예: "100" ). 거래소구분 ( "krx" / "nxt" / "all" ). 날짜구분 — n일 전 (기본값: "" ). Returns: | Type | Description | | --- | --- | | ThemeStocks | class: ~kiwoompy.models.ThemeStocks 인스턴스. | class: ~kiwoompy.models.ThemeStocks 인스턴스. ``` def get_theme_stocks( self, theme_group_code: str, exchange: "ExchangeType", days: str = "", ) -> ThemeStocks: """테마 구성 종목을 조회한다 (ka90002). Args: theme_group_code: 테마그룹코드 (예: ``"100"``). exchange: 거래소구분 (``"krx"`` / ``"nxt"`` / ``"all"``). days: 날짜구분 — n일 전 (기본값: ``""``). Returns: :class:`~kiwoompy.models.ThemeStocks` 인스턴스. """ raw = _check(self._api.post( self._THME_PATH, { "date_tp": days, "thema_grp_cd": theme_group_code, "stex_tp": _EXCHANGE_CODE[exchange], }, headers=self._headers("ka90002"), )) items = [ ThemeStockItem( stk_cd=it.get("stk_cd", ""), stk_nm=it.get("stk_nm", ""), cur_prc=it.get("cur_prc", ""), flu_sig=it.get("flu_sig", ""), pred_pre=it.get("pred_pre", ""), flu_rt=it.get("flu_rt", ""), acc_trde_qty=it.get("acc_trde_qty", ""), sel_bid=it.get("sel_bid", ""), sel_req=it.get("sel_req", ""), buy_bid=it.get("buy_bid", ""), buy_req=it.get("buy_req", ""), dt_prft_rt_n=it.get("dt_prft_rt_n", ""), ) for it in raw.get("thema_comp_stk", []) ] return ThemeStocks( flu_rt=raw.get("flu_rt", ""), dt_prft_rt=raw.get("dt_prft_rt", ""), items=items, ) ``` #### get_today_prev_execution ¶ ``` get_today_prev_execution(stock_code: str, day_type: 'TodayPrevType' = 'today', tick_min: 'TickMinType' = 'tick', time: str = '') -> TodayPrevExecution ``` 당일·전일 체결 데이터를 조회한다 (ka10084). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | | day_type | 'TodayPrevType' | 당일전일구분. "today" : 당일, "prev" : 전일. | 'today' | | tick_min | 'TickMinType' | 틱분. "tick" : 틱, "minute" : 분. | 'tick' | | time | str | 조회시간 (4자리 HHMM ). 예) 오전 9시 → "0900" . 공백이면 전체. | '' | 거래소별 종목코드. 당일전일구분. "today" : 당일, "prev" : 전일. 틱분. "tick" : 틱, "minute" : 분. 조회시간 (4자리 HHMM ). 예) 오전 9시 → "0900" . 공백이면 전체. Returns: | Type | Description | | --- | --- | | TodayPrevExecution | 당일전일체결 리스트 TodayPrevExecution . | 당일전일체결 리스트 TodayPrevExecution . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_today_prev_execution( self, stock_code: str, day_type: "TodayPrevType" = "today", tick_min: "TickMinType" = "tick", time: str = "", ) -> TodayPrevExecution: """당일·전일 체결 데이터를 조회한다 (ka10084). Args: stock_code: 거래소별 종목코드. day_type: 당일전일구분. ``"today"``: 당일, ``"prev"``: 전일. tick_min: 틱분. ``"tick"``: 틱, ``"minute"``: 분. time: 조회시간 (4자리 ``HHMM``). 예) 오전 9시 → ``"0900"``. 공백이면 전체. Returns: 당일전일체결 리스트 ``TodayPrevExecution``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, { "stk_cd": stock_code, "tdy_pred": _TODAY_PREV_CODE[day_type], "tic_min": _TICK_MIN_CODE[tick_min], "tm": time, }, headers=self._headers("ka10084"), )) items = [ TodayPrevExecutionItem( tm=item.get("tm", ""), cur_prc=item.get("cur_prc", ""), cntr_trde_qty=item.get("cntr_trde_qty", ""), acc_trde_qty=item.get("acc_trde_qty", ""), cntr_str=item.get("cntr_str", ""), stex_tp=item.get("stex_tp", ""), ) for item in raw.get("tdy_pred_cntr", []) ] return TodayPrevExecution(items=items) ``` #### get_today_prev_execution_qty ¶ ``` get_today_prev_execution_qty(stock_code: str, day_type: 'TodayPrevType' = 'today') -> TodayPrevExecutionQty ``` 당일·전일 체결량 시계열을 조회한다 (ka10055). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 거래소별 종목코드. | required | | day_type | 'TodayPrevType' | 당일전일구분. "today" : 당일, "prev" : 전일. | 'today' | 거래소별 종목코드. 당일전일구분. "today" : 당일, "prev" : 전일. Returns: | Type | Description | | --- | --- | | TodayPrevExecutionQty | 당일전일체결량 리스트 TodayPrevExecutionQty . | 당일전일체결량 리스트 TodayPrevExecutionQty . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_today_prev_execution_qty( self, stock_code: str, day_type: "TodayPrevType" = "today", ) -> TodayPrevExecutionQty: """당일·전일 체결량 시계열을 조회한다 (ka10055). Args: stock_code: 거래소별 종목코드. day_type: 당일전일구분. ``"today"``: 당일, ``"prev"``: 전일. Returns: 당일전일체결량 리스트 ``TodayPrevExecutionQty``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, { "stk_cd": stock_code, "tdy_pred": _TODAY_PREV_CODE[day_type], }, headers=self._headers("ka10055"), )) items = [ TodayPrevExecutionQtyItem( cntr_tm=item.get("cntr_tm", ""), cntr_pric=item.get("cntr_pric", ""), flu_rt=item.get("flu_rt", ""), cntr_qty=item.get("cntr_qty", ""), acc_trde_qty=item.get("acc_trde_qty", ""), acc_trde_prica=item.get("acc_trde_prica", ""), ) for item in raw.get("tdy_pred_cntr_qty", []) ] return TodayPrevExecutionQty(items=items) ``` #### get_trade_amt_upper ¶ ``` get_trade_amt_upper(market: 'RkinfoMarketType', include_managed: FlagType, exchange: 'RkinfoStexType') -> TradeAmtUpper ``` 거래대금 상위 종목을 조회한다 (ka10032). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'RkinfoMarketType' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | include_managed | FlagType | 관리종목포함. "off" : 미포함, "on" : 포함. | required | | exchange | 'RkinfoStexType' | 거래소구분. "krx" , "nxt" , "all" . | required | 시장구분. "all" , "kospi" , "kosdaq" . 관리종목포함. "off" : 미포함, "on" : 포함. 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | TradeAmtUpper | 거래대금상위 TradeAmtUpper . | 거래대금상위 TradeAmtUpper . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_trade_amt_upper( self, market: "RkinfoMarketType", include_managed: FlagType, exchange: "RkinfoStexType", ) -> TradeAmtUpper: """거래대금 상위 종목을 조회한다 (ka10032). Args: market: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. include_managed: 관리종목포함. ``"off"``: 미포함, ``"on"``: 포함. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 거래대금상위 ``TradeAmtUpper``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "mrkt_tp": _RKINFO_MARKET_CODE[market], "mang_stk_incls": _FLAG_CODE[include_managed], "stex_tp": _RKINFO_STEX_CODE[exchange], }, headers=self._headers("ka10032"), )) items = [ TradeAmtUpperItem( stk_cd=item.get("stk_cd", ""), now_rank=item.get("now_rank", ""), pred_rank=item.get("pred_rank", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), pred_pre_sig=item.get("pred_pre_sig", ""), pred_pre=item.get("pred_pre", ""), flu_rt=item.get("flu_rt", ""), sel_bid=item.get("sel_bid", ""), buy_bid=item.get("buy_bid", ""), now_trde_qty=item.get("now_trde_qty", ""), pred_trde_qty=item.get("pred_trde_qty", ""), trde_prica=item.get("trde_prica", ""), ) for item in raw.get("trde_prica_upper", []) ] return TradeAmtUpper(items=items) ``` #### get_trade_qty_surge ¶ ``` get_trade_qty_surge(market: 'RkinfoMarketType', sort_type: str, time_type: str, trade_qty_type: str, stock_cond: str, price_type: str, exchange: 'RkinfoStexType', time: str = '') -> TradeQtySurge ``` 거래량 급증 종목을 조회한다 (ka10023). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market | 'RkinfoMarketType' | 시장구분. "all" , "kospi" , "kosdaq" . | required | | sort_type | str | 정렬구분. "1" : 급증량, "2" : 급증률, "3" : 급감량, "4" : 급감률. | required | | time_type | str | 시간구분. "1" : 분, "2" : 전일. | required | | trade_qty_type | str | 거래량구분 ( "5" ~ "1000" ). | required | | stock_cond | str | 종목조건 ( "0" ~ "20" ). | required | | price_type | str | 가격구분 ( "0" ~ "9" ). | required | | exchange | 'RkinfoStexType' | 거래소구분. "krx" , "nxt" , "all" . | required | | time | str | 분 입력 ( time_type="1" 일 때만 유효, 기본 "" ). | '' | 시장구분. "all" , "kospi" , "kosdaq" . 정렬구분. "1" : 급증량, "2" : 급증률, "3" : 급감량, "4" : 급감률. 시간구분. "1" : 분, "2" : 전일. 거래량구분 ( "5" ~ "1000" ). 종목조건 ( "0" ~ "20" ). 가격구분 ( "0" ~ "9" ). 거래소구분. "krx" , "nxt" , "all" . 분 입력 ( time_type="1" 일 때만 유효, 기본 "" ). Returns: | Type | Description | | --- | --- | | TradeQtySurge | 거래량급증 TradeQtySurge . | 거래량급증 TradeQtySurge . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_trade_qty_surge( self, market: "RkinfoMarketType", sort_type: str, time_type: str, trade_qty_type: str, stock_cond: str, price_type: str, exchange: "RkinfoStexType", time: str = "", ) -> TradeQtySurge: """거래량 급증 종목을 조회한다 (ka10023). Args: market: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. sort_type: 정렬구분. ``"1"``: 급증량, ``"2"``: 급증률, ``"3"``: 급감량, ``"4"``: 급감률. time_type: 시간구분. ``"1"``: 분, ``"2"``: 전일. trade_qty_type: 거래량구분 (``"5"``~``"1000"``). stock_cond: 종목조건 (``"0"``~``"20"``). price_type: 가격구분 (``"0"``~``"9"``). exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. time: 분 입력 (``time_type="1"``일 때만 유효, 기본 ``""``). Returns: 거래량급증 ``TradeQtySurge``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._RKINFO_PATH, { "mrkt_tp": _RKINFO_MARKET_CODE[market], "sort_tp": sort_type, "tm_tp": time_type, "trde_qty_tp": trade_qty_type, "tm": time, "stk_cnd": stock_cond, "pric_tp": price_type, "stex_tp": _RKINFO_STEX_CODE[exchange], }, headers=self._headers("ka10023"), )) items = [ TradeQtySurgeItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), pred_pre_sig=item.get("pred_pre_sig", ""), pred_pre=item.get("pred_pre", ""), flu_rt=item.get("flu_rt", ""), prev_trde_qty=item.get("prev_trde_qty", ""), now_trde_qty=item.get("now_trde_qty", ""), sdnin_qty=item.get("sdnin_qty", ""), sdnin_rt=item.get("sdnin_rt", ""), ) for item in raw.get("trde_qty_sdnin", []) ] return TradeQtySurge(items=items) ``` #### get_transaction_history ¶ ``` get_transaction_history(start_dt: str, end_dt: str, trade_type: TransactionType, goods_type: GoodsType, exchange: DomesticExchange = '%', stock_code: str = '', currency_code: str = '', foreign_exchange_code: str = '') -> list[TransactionHistoryItem] ``` 위탁종합거래내역을 조회한다 (kt00015). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | start_dt | str | 시작일자 ( YYYYMMDD 형식). | required | | end_dt | str | 종료일자 ( YYYYMMDD 형식). | required | | trade_type | TransactionType | 구분. "all" : 전체, "deposit_withdraw" : 입출금, "withdraw" : 입출고, "trade" : 매매, "buy" : 매수, "sell" : 매도, "deposit" : 입금, "payment" : 출금. | required | | goods_type | GoodsType | 상품구분. "all" : 전체, "domestic_stock" : 국내주식, "fund" : 수익증권, "overseas_stock" : 해외주식, "financial" : 금융상품. | required | | exchange | DomesticExchange | 국내거래소구분. 기본값 "%" (전체). | '%' | | stock_code | str | 종목코드. 공백 허용. | '' | | currency_code | str | 통화코드. 공백 허용. | '' | | foreign_exchange_code | str | 해외거래소코드. 공백 허용. | '' | 시작일자 ( YYYYMMDD 형식). 종료일자 ( YYYYMMDD 형식). 구분. "all" : 전체, "deposit_withdraw" : 입출금, "withdraw" : 입출고, "trade" : 매매, "buy" : 매수, "sell" : 매도, "deposit" : 입금, "payment" : 출금. 상품구분. "all" : 전체, "domestic_stock" : 국내주식, "fund" : 수익증권, "overseas_stock" : 해외주식, "financial" : 금융상품. 국내거래소구분. 기본값 "%" (전체). 종목코드. 공백 허용. 통화코드. 공백 허용. 해외거래소코드. 공백 허용. Returns: | Type | Description | | --- | --- | | list [ TransactionHistoryItem ] | 위탁종합거래내역 목록. | 위탁종합거래내역 목록. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_transaction_history( self, start_dt: str, end_dt: str, trade_type: TransactionType, goods_type: GoodsType, exchange: DomesticExchange = "%", stock_code: str = "", currency_code: str = "", foreign_exchange_code: str = "", ) -> list[TransactionHistoryItem]: """위탁종합거래내역을 조회한다 (kt00015). Args: start_dt: 시작일자 (``YYYYMMDD`` 형식). end_dt: 종료일자 (``YYYYMMDD`` 형식). trade_type: 구분. ``"all"``: 전체, ``"deposit_withdraw"``: 입출금, ``"withdraw"``: 입출고, ``"trade"``: 매매, ``"buy"``: 매수, ``"sell"``: 매도, ``"deposit"``: 입금, ``"payment"``: 출금. goods_type: 상품구분. ``"all"``: 전체, ``"domestic_stock"``: 국내주식, ``"fund"``: 수익증권, ``"overseas_stock"``: 해외주식, ``"financial"``: 금융상품. exchange: 국내거래소구분. 기본값 ``"%"`` (전체). stock_code: 종목코드. 공백 허용. currency_code: 통화코드. 공백 허용. foreign_exchange_code: 해외거래소코드. 공백 허용. Returns: 위탁종합거래내역 목록. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, { "strt_dt": start_dt, "end_dt": end_dt, "tp": _TRANSACTION_CODE[trade_type], "stk_cd": stock_code, "crnc_cd": currency_code, "gds_tp": _GOODS_TYPE_CODE[goods_type], "frgn_stex_code": foreign_exchange_code, "dmst_stex_tp": exchange, }, headers=self._headers("kt00015"), )) return [ TransactionHistoryItem( trde_dt=item.get("trde_dt", ""), trde_no=item.get("trde_no", ""), rmrk_nm=item.get("rmrk_nm", ""), crd_deal_tp_nm=item.get("crd_deal_tp_nm", ""), exct_amt=item.get("exct_amt", ""), entra_remn=item.get("entra_remn", ""), crnc_cd=item.get("crnc_cd", ""), trde_kind_nm=item.get("trde_kind_nm", ""), stk_nm=item.get("stk_nm", ""), trde_amt=item.get("trde_amt", ""), io_tp_nm=item.get("io_tp_nm", ""), stk_cd=item.get("stk_cd", ""), trde_qty_jwa_cnt=item.get("trde_qty_jwa_cnt", ""), cmsn=item.get("cmsn", ""), proc_tm=item.get("proc_tm", ""), ) for item in raw.get("trst_ovrl_trde_prps_array", []) ] ``` #### get_unfilled_orders ¶ ``` get_unfilled_orders(all_stock_type: AllStockType, trade_type: UnfilledTradeType, exchange: ExchangeType = 'all', stock_code: str = '') -> list[UnfilledOrderItem] ``` 미체결 주문 목록을 조회한다 (ka10075). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | all_stock_type | AllStockType | 전체종목구분. "all" : 전체, "single" : 종목. | required | | trade_type | UnfilledTradeType | 매매구분. "all" : 전체, "sell" : 매도, "buy" : 매수. | required | | exchange | ExchangeType | 거래소구분. "all" : 통합, "krx" : KRX, "nxt" : NXT. | 'all' | | stock_code | str | 종목코드. all_stock_type="single" 일 때 필수. | '' | 전체종목구분. "all" : 전체, "single" : 종목. 매매구분. "all" : 전체, "sell" : 매도, "buy" : 매수. 거래소구분. "all" : 통합, "krx" : KRX, "nxt" : NXT. 종목코드. all_stock_type="single" 일 때 필수. Returns: | Type | Description | | --- | --- | | list [ UnfilledOrderItem ] | 미체결 주문 목록. | 미체결 주문 목록. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_unfilled_orders( self, all_stock_type: AllStockType, trade_type: UnfilledTradeType, exchange: ExchangeType = "all", stock_code: str = "", ) -> list[UnfilledOrderItem]: """미체결 주문 목록을 조회한다 (ka10075). Args: all_stock_type: 전체종목구분. ``"all"``: 전체, ``"single"``: 종목. trade_type: 매매구분. ``"all"``: 전체, ``"sell"``: 매도, ``"buy"``: 매수. exchange: 거래소구분. ``"all"``: 통합, ``"krx"``: KRX, ``"nxt"``: NXT. stock_code: 종목코드. ``all_stock_type="single"`` 일 때 필수. Returns: 미체결 주문 목록. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._ACNT_PATH, { "all_stk_tp": _ALL_STOCK_TYPE_CODE[all_stock_type], "trde_tp": _SELL_TYPE_CODE[trade_type], "stk_cd": stock_code, "stex_tp": _EXCHANGE_CODE[exchange], }, headers=self._headers("ka10075"), )) return [ UnfilledOrderItem( acnt_no=item.get("acnt_no", ""), ord_no=item.get("ord_no", ""), stk_cd=item.get("stk_cd", ""), ord_stt=item.get("ord_stt", ""), stk_nm=item.get("stk_nm", ""), ord_qty=item.get("ord_qty", ""), ord_pric=item.get("ord_pric", ""), oso_qty=item.get("oso_qty", ""), orig_ord_no=item.get("orig_ord_no", ""), io_tp_nm=item.get("io_tp_nm", ""), trde_tp=item.get("trde_tp", ""), tm=item.get("tm", ""), cntr_pric=item.get("cntr_pric", ""), cntr_qty=item.get("cntr_qty", ""), cur_prc=item.get("cur_prc", ""), stex_tp=item.get("stex_tp", ""), stex_tp_txt=item.get("stex_tp_txt", ""), sor_yn=item.get("sor_yn", ""), ) for item in raw.get("oso", []) ] ``` #### get_vi_triggered_stocks ¶ ``` get_vi_triggered_stocks(market_type: 'MrktType3' = 'all', exchange: 'MrkcondExchangeType' = 'all', stock_code: str = '', trigger_type: str = '0', trigger_direction: str = '0', pre_market_type: str = '0', skip_stocks: str = '000000000') -> VIStocks ``` 변동성완화장치(VI) 발동 종목을 조회한다 (ka10054). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market_type | 'MrktType3' | 시장구분. "all" , "kospi" , "kosdaq" . | 'all' | | exchange | 'MrkcondExchangeType' | 거래소구분. "krx" , "nxt" , "all" . | 'all' | | stock_code | str | 종목코드. 공백이면 전체 시장 조회. | '' | | trigger_type | str | 발동구분. "0" : 전체, "1" : 정적VI, "2" : 동적VI, "3" : 동적+정적VI. | '0' | | trigger_direction | str | 발동방향. "0" : 전체, "1" : 상승, "2" : 하락. | '0' | | pre_market_type | str | 장전구분. "0" : 전체, "1" : 정규시장, "2" : 시간외단일가. | '0' | | skip_stocks | str | 제외종목 (9자리). 전종목포함: "000000000" . | '000000000' | 시장구분. "all" , "kospi" , "kosdaq" . 거래소구분. "krx" , "nxt" , "all" . 종목코드. 공백이면 전체 시장 조회. 발동구분. "0" : 전체, "1" : 정적VI, "2" : 동적VI, "3" : 동적+정적VI. 발동방향. "0" : 전체, "1" : 상승, "2" : 하락. 장전구분. "0" : 전체, "1" : 정규시장, "2" : 시간외단일가. 제외종목 (9자리). 전종목포함: "000000000" . Returns: | Type | Description | | --- | --- | | VIStocks | VI 발동종목 리스트 VIStocks . | VI 발동종목 리스트 VIStocks . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_vi_triggered_stocks( self, market_type: "MrktType3" = "all", exchange: "MrkcondExchangeType" = "all", stock_code: str = "", trigger_type: str = "0", trigger_direction: str = "0", pre_market_type: str = "0", skip_stocks: str = "000000000", ) -> VIStocks: """변동성완화장치(VI) 발동 종목을 조회한다 (ka10054). Args: market_type: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. stock_code: 종목코드. 공백이면 전체 시장 조회. trigger_type: 발동구분. ``"0"``: 전체, ``"1"``: 정적VI, ``"2"``: 동적VI, ``"3"``: 동적+정적VI. trigger_direction: 발동방향. ``"0"``: 전체, ``"1"``: 상승, ``"2"``: 하락. pre_market_type: 장전구분. ``"0"``: 전체, ``"1"``: 정규시장, ``"2"``: 시간외단일가. skip_stocks: 제외종목 (9자리). 전종목포함: ``"000000000"``. Returns: VI 발동종목 리스트 ``VIStocks``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, { "mrkt_tp": _MRKT_TYPE3_CODE[market_type], "bf_mkrt_tp": pre_market_type, "stk_cd": stock_code, "motn_tp": trigger_type, "skip_stk": skip_stocks, "trde_qty_tp": "0", "min_trde_qty": "0", "max_trde_qty": "0", "trde_prica_tp": "0", "min_trde_prica": "0", "max_trde_prica": "0", "motn_drc": trigger_direction, "stex_tp": _MRKCOND_EXCHANGE_CODE[exchange], }, headers=self._headers("ka10054"), )) items = [ VIStockItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), acc_trde_qty=item.get("acc_trde_qty", ""), motn_pric=item.get("motn_pric", ""), viaplc_tp=item.get("viaplc_tp", ""), vimotn_cnt=item.get("vimotn_cnt", ""), stex_tp=item.get("stex_tp", ""), ) for item in raw.get("motn_stk", []) ] return VIStocks(items=items) ``` #### get_volume_updated_stocks ¶ ``` get_volume_updated_stocks(market_type: 'MrktType3' = 'all', cycle_type: str = '5', volume_type: str = '5', exchange: 'MrkcondExchangeType' = 'all') -> VolumeUpdatedStocks ``` 기간 대비 거래량이 갱신된 종목을 조회한다 (ka10024). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | market_type | 'MrktType3' | 시장구분. "all" , "kospi" , "kosdaq" . | 'all' | | cycle_type | str | 주기구분. "5" : 5일, "10" : 10일, "20" : 20일 등. | '5' | | volume_type | str | 거래량구분. "5" : 5천주이상, "10" : 만주이상, "50" : 5만주이상 등. | '5' | | exchange | 'MrkcondExchangeType' | 거래소구분. "krx" , "nxt" , "all" . | 'all' | 시장구분. "all" , "kospi" , "kosdaq" . 주기구분. "5" : 5일, "10" : 10일, "20" : 20일 등. 거래량구분. "5" : 5천주이상, "10" : 만주이상, "50" : 5만주이상 등. 거래소구분. "krx" , "nxt" , "all" . Returns: | Type | Description | | --- | --- | | VolumeUpdatedStocks | 거래량갱신 종목 리스트 VolumeUpdatedStocks . | 거래량갱신 종목 리스트 VolumeUpdatedStocks . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_volume_updated_stocks( self, market_type: "MrktType3" = "all", cycle_type: str = "5", volume_type: str = "5", exchange: "MrkcondExchangeType" = "all", ) -> VolumeUpdatedStocks: """기간 대비 거래량이 갱신된 종목을 조회한다 (ka10024). Args: market_type: 시장구분. ``"all"``, ``"kospi"``, ``"kosdaq"``. cycle_type: 주기구분. ``"5"``: 5일, ``"10"``: 10일, ``"20"``: 20일 등. volume_type: 거래량구분. ``"5"``: 5천주이상, ``"10"``: 만주이상, ``"50"``: 5만주이상 등. exchange: 거래소구분. ``"krx"``, ``"nxt"``, ``"all"``. Returns: 거래량갱신 종목 리스트 ``VolumeUpdatedStocks``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, { "mrkt_tp": _MRKT_TYPE3_CODE[market_type], "cycle_tp": cycle_type, "trde_qty_tp": volume_type, "stex_tp": _MRKCOND_EXCHANGE_CODE[exchange], }, headers=self._headers("ka10024"), )) items = [ VolumeUpdatedItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), flu_rt=item.get("flu_rt", ""), prev_trde_qty=item.get("prev_trde_qty", ""), now_trde_qty=item.get("now_trde_qty", ""), ) for item in raw.get("trde_qty_updt", []) ] return VolumeUpdatedStocks(items=items) ``` #### get_watchlist_info ¶ ``` get_watchlist_info(stock_codes: str) -> WatchlistInfo ``` 관심종목 정보(현재가·호가·시가총액 등)를 조회한다 (ka10095). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_codes | str | 종목코드. 여러 종목은 "|" 로 구분. 예) "005930|000660|035720" . | required | 종목코드. 여러 종목은 "|" 로 구분. 예) "005930|000660|035720" . Returns: | Type | Description | | --- | --- | | WatchlistInfo | 관심종목 정보 리스트 WatchlistInfo . | 관심종목 정보 리스트 WatchlistInfo . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 조회 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 조회 실패. ``` def get_watchlist_info(self, stock_codes: str) -> WatchlistInfo: """관심종목 정보(현재가·호가·시가총액 등)를 조회한다 (ka10095). Args: stock_codes: 종목코드. 여러 종목은 ``"|"`` 로 구분. 예) ``"005930|000660|035720"``. Returns: 관심종목 정보 리스트 ``WatchlistInfo``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 조회 실패. """ raw = _check(self._api.post( self._STKINFO_PATH, {"stk_cd": stock_codes}, headers=self._headers("ka10095"), )) items = [ WatchlistStockItem( stk_cd=item.get("stk_cd", ""), stk_nm=item.get("stk_nm", ""), cur_prc=item.get("cur_prc", ""), flu_rt=item.get("flu_rt", ""), trde_qty=item.get("trde_qty", ""), trde_prica=item.get("trde_prica", ""), open_pric=item.get("open_pric", ""), high_pric=item.get("high_pric", ""), low_pric=item.get("low_pric", ""), upl_pric=item.get("upl_pric", ""), lst_pric=item.get("lst_pric", ""), ) for item in raw.get("atn_stk_infr", []) ] return WatchlistInfo(items=items) ``` #### gold_bid ¶ ``` gold_bid(stock_code: GoldStockCode, tick_scope: str) -> GoldBid ``` 금현물 호가를 조회한다 (ka50101). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | GoldStockCode | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). | required | | tick_scope | str | 틱범위. "1" :1틱, "3" :3틱, "5" :5틱, "10" :10틱, "30" :30틱. | required | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). 틱범위. "1" :1틱, "3" :3틱, "5" :5틱, "10" :10틱, "30" :30틱. Returns: | Type | Description | | --- | --- | | GoldBid | class: ~kiwoompy.models.GoldBid 인스턴스. | class: ~kiwoompy.models.GoldBid 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_bid( self, stock_code: GoldStockCode, tick_scope: str, ) -> GoldBid: """금현물 호가를 조회한다 (ka50101). Args: stock_code: 금현물 종목코드. ``"M04020000"`` (금 99.99_1kg) 또는 ``"M04020100"`` (미니금 99.99_100g). tick_scope: 틱범위. ``"1"``:1틱, ``"3"``:3틱, ``"5"``:5틱, ``"10"``:10틱, ``"30"``:30틱. Returns: :class:`~kiwoompy.models.GoldBid` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._MRKCOND_PATH, {"stk_cd": stock_code, "tic_scope": tick_scope}, headers=self._headers("ka50101"), )) items = [ GoldBidItem( cntr_pric=it.get("cntr_pric", ""), pred_pre=it.get("pred_pre", ""), flu_rt=it.get("flu_rt", ""), trde_qty=it.get("trde_qty", ""), acc_trde_prica=it.get("acc_trde_prica", ""), cntr_trde_qty=it.get("cntr_trde_qty", ""), tm=it.get("tm", ""), pre_sig=it.get("pre_sig", ""), pri_sel_bid_unit=it.get("pri_sel_bid_unit", ""), pri_buy_bid_unit=it.get("pri_buy_bid_unit", ""), trde_pre=it.get("trde_pre", ""), trde_tern_rt=it.get("trde_tern_rt", ""), cntr_str=it.get("cntr_str", ""), lpmmcm_nm_1=it.get("lpmmcm_nm_1", ""), stex_tp=it.get("stex_tp", ""), ) for it in raw.get("gold_bid", []) ] return GoldBid(items=items) ``` #### gold_contract_trend ¶ ``` gold_contract_trend(stock_code: GoldStockCode) -> GoldContractTrend ``` 금현물체결추이를 조회한다 (ka50010). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | GoldStockCode | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). | required | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). Returns: | Type | Description | | --- | --- | | GoldContractTrend | class: ~kiwoompy.models.GoldContractTrend 인스턴스. | class: ~kiwoompy.models.GoldContractTrend 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_contract_trend(self, stock_code: GoldStockCode) -> GoldContractTrend: """금현물체결추이를 조회한다 (ka50010). Args: stock_code: 금현물 종목코드. ``"M04020000"`` (금 99.99_1kg) 또는 ``"M04020100"`` (미니금 99.99_100g). Returns: :class:`~kiwoompy.models.GoldContractTrend` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._MRKCOND_PATH, {"stk_cd": stock_code}, headers=self._headers("ka50010"), )) items = [ GoldContractTrendItem( cntr_pric=it.get("cntr_pric", ""), pred_pre=it.get("pred_pre", ""), flu_rt=it.get("flu_rt", ""), trde_qty=it.get("trde_qty", ""), acc_trde_prica=it.get("acc_trde_prica", ""), cntr_trde_qty=it.get("cntr_trde_qty", ""), tm=it.get("tm", ""), pre_sig=it.get("pre_sig", ""), pri_sel_bid_unit=it.get("pri_sel_bid_unit", ""), pri_buy_bid_unit=it.get("pri_buy_bid_unit", ""), trde_pre=it.get("trde_pre", ""), trde_tern_rt=it.get("trde_tern_rt", ""), cntr_str=it.get("cntr_str", ""), ) for it in raw.get("gold_cntr", []) ] return GoldContractTrend(items=items) ``` #### gold_daily_chart ¶ ``` gold_daily_chart(stock_code: GoldStockCode, base_date: str, adjust_price: str = '1') -> GoldDailyChart ``` 금현물일봉차트를 조회한다 (ka50081). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | GoldStockCode | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). | required | | base_date | str | 기준일자 ( "YYYYMMDD" ). | required | | adjust_price | str | 수정주가구분. "0" 또는 "1" . 기본값 "1" . | '1' | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). 기준일자 ( "YYYYMMDD" ). 수정주가구분. "0" 또는 "1" . 기본값 "1" . Returns: | Type | Description | | --- | --- | | GoldDailyChart | class: ~kiwoompy.models.GoldDailyChart 인스턴스. | class: ~kiwoompy.models.GoldDailyChart 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_daily_chart( self, stock_code: GoldStockCode, base_date: str, adjust_price: str = "1", ) -> GoldDailyChart: """금현물일봉차트를 조회한다 (ka50081). Args: stock_code: 금현물 종목코드. ``"M04020000"`` (금 99.99_1kg) 또는 ``"M04020100"`` (미니금 99.99_100g). base_date: 기준일자 (``"YYYYMMDD"``). adjust_price: 수정주가구분. ``"0"`` 또는 ``"1"``. 기본값 ``"1"``. Returns: :class:`~kiwoompy.models.GoldDailyChart` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._CHART_PATH, {"stk_cd": stock_code, "base_dt": base_date, "upd_stkpc_tp": adjust_price}, headers=self._headers("ka50081"), )) items = [ GoldDailyChartItem( cur_prc=it.get("cur_prc", ""), acc_trde_qty=it.get("acc_trde_qty", ""), acc_trde_prica=it.get("acc_trde_prica", ""), open_pric=it.get("open_pric", ""), high_pric=it.get("high_pric", ""), low_pric=it.get("low_pric", ""), dt=it.get("dt", ""), pred_pre_sig=it.get("pred_pre_sig", ""), ) for it in raw.get("gds_day_chart_qry", []) ] return GoldDailyChart(items=items) ``` #### gold_daily_minute_chart ¶ ``` gold_daily_minute_chart(stock_code: GoldStockCode, tick_scope: str) -> GoldDailyMinuteChart ``` 금현물당일분봉차트를 조회한다 (ka50092). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | GoldStockCode | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). | required | | tick_scope | str | 틱범위(분). "1" :1분, "3" :3분, "5" :5분, "10" :10분, "30" :30분. | required | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). 틱범위(분). "1" :1분, "3" :3분, "5" :5분, "10" :10분, "30" :30분. Returns: | Type | Description | | --- | --- | | GoldDailyMinuteChart | class: ~kiwoompy.models.GoldDailyMinuteChart 인스턴스. | class: ~kiwoompy.models.GoldDailyMinuteChart 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_daily_minute_chart( self, stock_code: GoldStockCode, tick_scope: str, ) -> GoldDailyMinuteChart: """금현물당일분봉차트를 조회한다 (ka50092). Args: stock_code: 금현물 종목코드. ``"M04020000"`` (금 99.99_1kg) 또는 ``"M04020100"`` (미니금 99.99_100g). tick_scope: 틱범위(분). ``"1"``:1분, ``"3"``:3분, ``"5"``:5분, ``"10"``:10분, ``"30"``:30분. Returns: :class:`~kiwoompy.models.GoldDailyMinuteChart` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._CHART_PATH, {"stk_cd": stock_code, "tic_scope": tick_scope}, headers=self._headers("ka50092"), )) items = [ GoldDailyMinuteChartItem( cntr_pric=it.get("cntr_pric", ""), pred_pre=it.get("pred_pre", ""), acc_trde_qty=it.get("acc_trde_qty", ""), acc_trde_prica=it.get("acc_trde_prica", ""), trde_qty=it.get("trde_qty", ""), open_pric=it.get("open_pric", ""), high_pric=it.get("high_pric", ""), low_pric=it.get("low_pric", ""), cntr_tm=it.get("cntr_tm", ""), dt=it.get("dt", ""), pred_pre_sig=it.get("pred_pre_sig", ""), ) for it in raw.get("gds_min_chart_qry", []) ] return GoldDailyMinuteChart(items=items) ``` #### gold_daily_tick_chart ¶ ``` gold_daily_tick_chart(stock_code: GoldStockCode, tick_scope: str) -> GoldDailyTickChart ``` 금현물당일틱차트를 조회한다 (ka50091). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | GoldStockCode | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). | required | | tick_scope | str | 틱범위. "1" :1틱, "3" :3틱, "5" :5틱, "10" :10틱, "30" :30틱. | required | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). 틱범위. "1" :1틱, "3" :3틱, "5" :5틱, "10" :10틱, "30" :30틱. Returns: | Type | Description | | --- | --- | | GoldDailyTickChart | class: ~kiwoompy.models.GoldDailyTickChart 인스턴스. | class: ~kiwoompy.models.GoldDailyTickChart 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_daily_tick_chart( self, stock_code: GoldStockCode, tick_scope: str, ) -> GoldDailyTickChart: """금현물당일틱차트를 조회한다 (ka50091). Args: stock_code: 금현물 종목코드. ``"M04020000"`` (금 99.99_1kg) 또는 ``"M04020100"`` (미니금 99.99_100g). tick_scope: 틱범위. ``"1"``:1틱, ``"3"``:3틱, ``"5"``:5틱, ``"10"``:10틱, ``"30"``:30틱. Returns: :class:`~kiwoompy.models.GoldDailyTickChart` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._CHART_PATH, {"stk_cd": stock_code, "tic_scope": tick_scope}, headers=self._headers("ka50091"), )) items = [ GoldDailyTickChartItem( cntr_pric=it.get("cntr_pric", ""), pred_pre=it.get("pred_pre", ""), trde_qty=it.get("trde_qty", ""), open_pric=it.get("open_pric", ""), high_pric=it.get("high_pric", ""), low_pric=it.get("low_pric", ""), cntr_tm=it.get("cntr_tm", ""), dt=it.get("dt", ""), pred_pre_sig=it.get("pred_pre_sig", ""), ) for it in raw.get("gds_tic_chart_qry", []) ] return GoldDailyTickChart(items=items) ``` #### gold_daily_trend ¶ ``` gold_daily_trend(stock_code: GoldStockCode, base_date: str) -> GoldDailyTrend ``` 금현물일별추이를 조회한다 (ka50012). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | GoldStockCode | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). | required | | base_date | str | 기준일자 ( "YYYYMMDD" ). | required | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). 기준일자 ( "YYYYMMDD" ). Returns: | Type | Description | | --- | --- | | GoldDailyTrend | class: ~kiwoompy.models.GoldDailyTrend 인스턴스. | class: ~kiwoompy.models.GoldDailyTrend 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_daily_trend( self, stock_code: GoldStockCode, base_date: str, ) -> GoldDailyTrend: """금현물일별추이를 조회한다 (ka50012). Args: stock_code: 금현물 종목코드. ``"M04020000"`` (금 99.99_1kg) 또는 ``"M04020100"`` (미니금 99.99_100g). base_date: 기준일자 (``"YYYYMMDD"``). Returns: :class:`~kiwoompy.models.GoldDailyTrend` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._MRKCOND_PATH, {"stk_cd": stock_code, "base_dt": base_date}, headers=self._headers("ka50012"), )) items = [ GoldDailyTrendItem( cur_prc=it.get("cur_prc", ""), pred_pre=it.get("pred_pre", ""), flu_rt=it.get("flu_rt", ""), trde_qty=it.get("trde_qty", ""), acc_trde_prica=it.get("acc_trde_prica", ""), open_pric=it.get("open_pric", ""), high_pric=it.get("high_pric", ""), low_pric=it.get("low_pric", ""), dt=it.get("dt", ""), pre_sig=it.get("pre_sig", ""), orgn_netprps=it.get("orgn_netprps", ""), for_netprps=it.get("for_netprps", ""), ind_netprps=it.get("ind_netprps", ""), ) for it in raw.get("gold_daly_trnsn", []) ] return GoldDailyTrend(items=items) ``` #### gold_expected_contract ¶ ``` gold_expected_contract(stock_code: GoldStockCode) -> GoldExpectedContract ``` 금현물예상체결을 조회한다 (ka50087). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | GoldStockCode | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). | required | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). Returns: | Type | Description | | --- | --- | | GoldExpectedContract | class: ~kiwoompy.models.GoldExpectedContract 인스턴스. | class: ~kiwoompy.models.GoldExpectedContract 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_expected_contract(self, stock_code: GoldStockCode) -> GoldExpectedContract: """금현물예상체결을 조회한다 (ka50087). Args: stock_code: 금현물 종목코드. ``"M04020000"`` (금 99.99_1kg) 또는 ``"M04020100"`` (미니금 99.99_100g). Returns: :class:`~kiwoompy.models.GoldExpectedContract` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._MRKCOND_PATH, {"stk_cd": stock_code}, headers=self._headers("ka50087"), )) items = [ GoldExpectedContractItem( exp_cntr_pric=it.get("exp_cntr_pric", ""), exp_pred_pre=it.get("exp_pred_pre", ""), exp_flu_rt=it.get("exp_flu_rt", ""), exp_acc_trde_qty=it.get("exp_acc_trde_qty", ""), exp_cntr_trde_qty=it.get("exp_cntr_trde_qty", ""), exp_tm=it.get("exp_tm", ""), exp_pre_sig=it.get("exp_pre_sig", ""), stex_tp=it.get("stex_tp", ""), ) for it in raw.get("gold_expt_exec", []) ] return GoldExpectedContract(items=items) ``` #### gold_investor_status ¶ ``` gold_investor_status() -> GoldInvestorStatus ``` 금현물투자자현황을 조회한다 (ka52301). Returns: | Type | Description | | --- | --- | | GoldInvestorStatus | class: ~kiwoompy.models.GoldInvestorStatus 인스턴스. | class: ~kiwoompy.models.GoldInvestorStatus 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_investor_status(self) -> GoldInvestorStatus: """금현물투자자현황을 조회한다 (ka52301). Returns: :class:`~kiwoompy.models.GoldInvestorStatus` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._FRGNISTT_PATH, {}, headers=self._headers("ka52301"), )) items = [ GoldInvestorStatusItem( stk_nm=it.get("stk_nm", ""), stk_cd=it.get("stk_cd", ""), all_dfrt_trst_sell_qty=it.get("all_dfrt_trst_sell_qty", ""), sell_qty_irds=it.get("sell_qty_irds", ""), all_dfrt_trst_sell_amt=it.get("all_dfrt_trst_sell_amt", ""), sell_amt_irds=it.get("sell_amt_irds", ""), all_dfrt_trst_buy_qty=it.get("all_dfrt_trst_buy_qty", ""), buy_qty_irds=it.get("buy_qty_irds", ""), all_dfrt_trst_buy_amt=it.get("all_dfrt_trst_buy_amt", ""), buy_amt_irds=it.get("buy_amt_irds", ""), all_dfrt_trst_netprps_qty=it.get("all_dfrt_trst_netprps_qty", ""), netprps_qty_irds=it.get("netprps_qty_irds", ""), all_dfrt_trst_netprps_amt=it.get("all_dfrt_trst_netprps_amt", ""), netprps_amt_irds=it.get("netprps_amt_irds", ""), sell_uv=it.get("sell_uv", ""), buy_uv=it.get("buy_uv", ""), acc_netprps_amt=it.get("acc_netprps_amt", ""), acc_netprps_qty=it.get("acc_netprps_qty", ""), ) for it in raw.get("inve_trad_stat", []) ] return GoldInvestorStatus(items=items) ``` #### gold_market_info ¶ ``` gold_market_info(stock_code: GoldStockCode) -> GoldMarketInfo ``` 금현물 시세정보를 조회한다 (ka50100). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | GoldStockCode | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). | required | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). Returns: | Type | Description | | --- | --- | | GoldMarketInfo | class: ~kiwoompy.models.GoldMarketInfo 인스턴스. | class: ~kiwoompy.models.GoldMarketInfo 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_market_info(self, stock_code: GoldStockCode) -> GoldMarketInfo: """금현물 시세정보를 조회한다 (ka50100). Args: stock_code: 금현물 종목코드. ``"M04020000"`` (금 99.99_1kg) 또는 ``"M04020100"`` (미니금 99.99_100g). Returns: :class:`~kiwoompy.models.GoldMarketInfo` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._MRKCOND_PATH, {"stk_cd": stock_code}, headers=self._headers("ka50100"), )) return GoldMarketInfo( pred_pre_sig=raw.get("pred_pre_sig", ""), pred_pre=raw.get("pred_pre", ""), flu_rt=raw.get("flu_rt", ""), trde_qty=raw.get("trde_qty", ""), open_pric=raw.get("open_pric", ""), high_pric=raw.get("high_pric", ""), low_pric=raw.get("low_pric", ""), pred_rt=raw.get("pred_rt", ""), upl_pric=raw.get("upl_pric", ""), lst_pric=raw.get("lst_pric", ""), pred_close_pric=raw.get("pred_close_pric", ""), ) ``` #### gold_minute_chart ¶ ``` gold_minute_chart(stock_code: GoldStockCode, tick_scope: str, adjust_price: str = '1') -> GoldMinuteChart ``` 금현물분봉차트를 조회한다 (ka50080). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | GoldStockCode | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). | required | | tick_scope | str | 틱범위(분). "1" :1분, "3" :3분, "5" :5분, "10" :10분, "15" :15분, "30" :30분, "45" :45분, "60" :60분. | required | | adjust_price | str | 수정주가구분. "0" 또는 "1" . 기본값 "1" . | '1' | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). 틱범위(분). "1" :1분, "3" :3분, "5" :5분, "10" :10분, "15" :15분, "30" :30분, "45" :45분, "60" :60분. 수정주가구분. "0" 또는 "1" . 기본값 "1" . Returns: | Type | Description | | --- | --- | | GoldMinuteChart | class: ~kiwoompy.models.GoldMinuteChart 인스턴스. | class: ~kiwoompy.models.GoldMinuteChart 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_minute_chart( self, stock_code: GoldStockCode, tick_scope: str, adjust_price: str = "1", ) -> GoldMinuteChart: """금현물분봉차트를 조회한다 (ka50080). Args: stock_code: 금현물 종목코드. ``"M04020000"`` (금 99.99_1kg) 또는 ``"M04020100"`` (미니금 99.99_100g). tick_scope: 틱범위(분). ``"1"``:1분, ``"3"``:3분, ``"5"``:5분, ``"10"``:10분, ``"15"``:15분, ``"30"``:30분, ``"45"``:45분, ``"60"``:60분. adjust_price: 수정주가구분. ``"0"`` 또는 ``"1"``. 기본값 ``"1"``. Returns: :class:`~kiwoompy.models.GoldMinuteChart` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._CHART_PATH, {"stk_cd": stock_code, "tic_scope": tick_scope, "upd_stkpc_tp": adjust_price}, headers=self._headers("ka50080"), )) items = [ GoldMinuteChartItem( cur_prc=it.get("cur_prc", ""), pred_pre=it.get("pred_pre", ""), acc_trde_qty=it.get("acc_trde_qty", ""), trde_qty=it.get("trde_qty", ""), open_pric=it.get("open_pric", ""), high_pric=it.get("high_pric", ""), low_pric=it.get("low_pric", ""), cntr_tm=it.get("cntr_tm", ""), dt=it.get("dt", ""), pred_pre_sig=it.get("pred_pre_sig", ""), ) for it in raw.get("gds_min_chart_qry", []) ] return GoldMinuteChart(items=items) ``` #### gold_monthly_chart ¶ ``` gold_monthly_chart(stock_code: GoldStockCode, base_date: str, adjust_price: str = '1') -> GoldMonthlyChart ``` 금현물월봉차트를 조회한다 (ka50083). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | GoldStockCode | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). | required | | base_date | str | 기준일자 ( "YYYYMMDD" ). | required | | adjust_price | str | 수정주가구분. "0" 또는 "1" . 기본값 "1" . | '1' | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). 기준일자 ( "YYYYMMDD" ). 수정주가구분. "0" 또는 "1" . 기본값 "1" . Returns: | Type | Description | | --- | --- | | GoldMonthlyChart | class: ~kiwoompy.models.GoldMonthlyChart 인스턴스. | class: ~kiwoompy.models.GoldMonthlyChart 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_monthly_chart( self, stock_code: GoldStockCode, base_date: str, adjust_price: str = "1", ) -> GoldMonthlyChart: """금현물월봉차트를 조회한다 (ka50083). Args: stock_code: 금현물 종목코드. ``"M04020000"`` (금 99.99_1kg) 또는 ``"M04020100"`` (미니금 99.99_100g). base_date: 기준일자 (``"YYYYMMDD"``). adjust_price: 수정주가구분. ``"0"`` 또는 ``"1"``. 기본값 ``"1"``. Returns: :class:`~kiwoompy.models.GoldMonthlyChart` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._CHART_PATH, {"stk_cd": stock_code, "base_dt": base_date, "upd_stkpc_tp": adjust_price}, headers=self._headers("ka50083"), )) items = [ GoldMonthlyChartItem( cur_prc=it.get("cur_prc", ""), acc_trde_qty=it.get("acc_trde_qty", ""), acc_trde_prica=it.get("acc_trde_prica", ""), open_pric=it.get("open_pric", ""), high_pric=it.get("high_pric", ""), low_pric=it.get("low_pric", ""), dt=it.get("dt", ""), ) for it in raw.get("gds_month_chart_qry", []) ] return GoldMonthlyChart(items=items) ``` #### gold_tick_chart ¶ ``` gold_tick_chart(stock_code: GoldStockCode, tick_scope: str, adjust_price: str = '1') -> GoldTickChart ``` 금현물틱차트를 조회한다 (ka50079). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | GoldStockCode | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). | required | | tick_scope | str | 틱범위. "1" :1틱, "3" :3틱, "5" :5틱, "10" :10틱, "30" :30틱. | required | | adjust_price | str | 수정주가구분. "0" 또는 "1" . 기본값 "1" . | '1' | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). 틱범위. "1" :1틱, "3" :3틱, "5" :5틱, "10" :10틱, "30" :30틱. 수정주가구분. "0" 또는 "1" . 기본값 "1" . Returns: | Type | Description | | --- | --- | | GoldTickChart | class: ~kiwoompy.models.GoldTickChart 인스턴스. | class: ~kiwoompy.models.GoldTickChart 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_tick_chart( self, stock_code: GoldStockCode, tick_scope: str, adjust_price: str = "1", ) -> GoldTickChart: """금현물틱차트를 조회한다 (ka50079). Args: stock_code: 금현물 종목코드. ``"M04020000"`` (금 99.99_1kg) 또는 ``"M04020100"`` (미니금 99.99_100g). tick_scope: 틱범위. ``"1"``:1틱, ``"3"``:3틱, ``"5"``:5틱, ``"10"``:10틱, ``"30"``:30틱. adjust_price: 수정주가구분. ``"0"`` 또는 ``"1"``. 기본값 ``"1"``. Returns: :class:`~kiwoompy.models.GoldTickChart` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._CHART_PATH, {"stk_cd": stock_code, "tic_scope": tick_scope, "upd_stkpc_tp": adjust_price}, headers=self._headers("ka50079"), )) items = [ GoldTickChartItem( cur_prc=it.get("cur_prc", ""), pred_pre=it.get("pred_pre", ""), trde_qty=it.get("trde_qty", ""), open_pric=it.get("open_pric", ""), high_pric=it.get("high_pric", ""), low_pric=it.get("low_pric", ""), cntr_tm=it.get("cntr_tm", ""), dt=it.get("dt", ""), pred_pre_sig=it.get("pred_pre_sig", ""), ) for it in raw.get("gds_tic_chart_qry", []) ] return GoldTickChart(items=items) ``` #### gold_weekly_chart ¶ ``` gold_weekly_chart(stock_code: GoldStockCode, base_date: str, adjust_price: str = '1') -> GoldWeeklyChart ``` 금현물주봉차트를 조회한다 (ka50082). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | GoldStockCode | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). | required | | base_date | str | 기준일자 ( "YYYYMMDD" ). | required | | adjust_price | str | 수정주가구분. "0" 또는 "1" . 기본값 "1" . | '1' | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). 기준일자 ( "YYYYMMDD" ). 수정주가구분. "0" 또는 "1" . 기본값 "1" . Returns: | Type | Description | | --- | --- | | GoldWeeklyChart | class: ~kiwoompy.models.GoldWeeklyChart 인스턴스. | class: ~kiwoompy.models.GoldWeeklyChart 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_weekly_chart( self, stock_code: GoldStockCode, base_date: str, adjust_price: str = "1", ) -> GoldWeeklyChart: """금현물주봉차트를 조회한다 (ka50082). Args: stock_code: 금현물 종목코드. ``"M04020000"`` (금 99.99_1kg) 또는 ``"M04020100"`` (미니금 99.99_100g). base_date: 기준일자 (``"YYYYMMDD"``). adjust_price: 수정주가구분. ``"0"`` 또는 ``"1"``. 기본값 ``"1"``. Returns: :class:`~kiwoompy.models.GoldWeeklyChart` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._CHART_PATH, {"stk_cd": stock_code, "base_dt": base_date, "upd_stkpc_tp": adjust_price}, headers=self._headers("ka50082"), )) items = [ GoldWeeklyChartItem( cur_prc=it.get("cur_prc", ""), acc_trde_qty=it.get("acc_trde_qty", ""), acc_trde_prica=it.get("acc_trde_prica", ""), open_pric=it.get("open_pric", ""), high_pric=it.get("high_pric", ""), low_pric=it.get("low_pric", ""), dt=it.get("dt", ""), ) for it in raw.get("gds_week_chart_qry", []) ] return GoldWeeklyChart(items=items) ``` --- # 주문 (order) # 주문 (order) ¶ 매수·매도·정정·취소 등 주문 기능을 담당하는 모듈입니다. 실계좌 주의 env="real" 환경에서는 실제 계좌에 주문이 접수됩니다. 반드시 env="demo" (모의투자)로 먼저 테스트하세요. ## 파라미터 타입 안내 ¶ 모든 고정 선택지 파라미터는 의미 있는 문자열 키를 사용합니다. API 내부 코드(숫자)로의 변환은 라이브러리가 자동으로 처리합니다. | 타입 | 값 | 의미 | | --- | --- | --- | | OrderTradeType | "market" / "limit" / "conditional" / "best" / "priority" / "stop" / "mid" / "limit_ioc" / "market_ioc" / "best_ioc" / "limit_fok" / "market_fok" / "best_fok" / "mid_ioc" / "mid_fok" / "pre_market" / "after_hours" / "post_market" | 매매구분 | | OrderExchange | "KRX" / "NXT" / "SOR" | 국내거래소구분 | ### 매매구분 상세 ¶ | 값 | 한글명 | 비고 | | --- | --- | --- | | "limit" | 보통(지정가) | 가격 지정 필수 | | "market" | 시장가 | price 생략 가능 | | "conditional" | 조건부지정가 | | | "best" | 최유리지정가 | | | "priority" | 최우선지정가 | | | "stop" | 스톱지정가 | condition_price 지정 필수 | | "mid" | 중간가 | | | "limit_ioc" | 보통(IOC) | | | "market_ioc" | 시장가(IOC) | | | "best_ioc" | 최유리(IOC) | | | "limit_fok" | 보통(FOK) | | | "market_fok" | 시장가(FOK) | | | "best_fok" | 최유리(FOK) | | | "mid_ioc" | 중간가(IOC) | | | "mid_fok" | 중간가(FOK) | | | "pre_market" | 장시작전시간외 | | | "after_hours" | 시간외단일가 | | | "post_market" | 장마감후시간외 | | ## API 레퍼런스 ¶ ## kiwoompy.order ¶ 주문 모듈 — 주식·신용 매수/매도/정정/취소 주문 (kt10000~kt10009) 및 금현물 주문·조회 (kt50000~kt50075). ### KiwoomOrder ¶ ``` KiwoomOrder(api: KiwoomApi) ``` 키움 REST API 주문 클라이언트. 주식·신용 매수/매도/정정/취소 주문 TR을 담당한다. 모든 메서드는 KiwoomApi 를 통해 HTTP 요청을 전송하며, 응답을 dataclass로 파싱하여 반환한다. 주문은 실계좌에 직접 영향을 미치므로 env="real" 사용 시 주의한다. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | api | KiwoomApi | 인증 토큰이 설정된 KiwoomApi 인스턴스. | required | 인증 토큰이 설정된 KiwoomApi 인스턴스. ``` def __init__(self, api: KiwoomApi) -> None: self._api = api ``` #### buy ¶ ``` buy(stock_code: str, quantity: str, trade_type: OrderTradeType, exchange: OrderExchange = 'KRX', price: str = '', condition_price: str = '') -> OrderResponse ``` 주식 매수주문을 제출한다 (kt10000). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 종목코드 (예: "005930" ). | required | | quantity | str | 주문수량 (단위: 주). | required | | trade_type | OrderTradeType | 매매구분. "market" : 시장가, "limit" : 보통(지정가), "conditional" : 조건부지정가 등. 시장가( "market" ) 주문 시 price 는 공백으로 전달한다. | required | | exchange | OrderExchange | 국내거래소구분. "KRX" , "NXT" , "SOR" . 기본값 "KRX" . | 'KRX' | | price | str | 주문단가 (단위: 원). 시장가 주문 시 공백. | '' | | condition_price | str | 조건단가. 스톱지정가( "stop" ) 주문 시 스톱가. 기본값 공백. | '' | 종목코드 (예: "005930" ). 주문수량 (단위: 주). 매매구분. "market" : 시장가, "limit" : 보통(지정가), "conditional" : 조건부지정가 등. 시장가( "market" ) 주문 시 price 는 공백으로 전달한다. 국내거래소구분. "KRX" , "NXT" , "SOR" . 기본값 "KRX" . 주문단가 (단위: 원). 시장가 주문 시 공백. 조건단가. 스톱지정가( "stop" ) 주문 시 스톱가. 기본값 공백. Returns: | Type | Description | | --- | --- | | OrderResponse | 매수주문 응답 OrderResponse (주문번호 포함). | 매수주문 응답 OrderResponse (주문번호 포함). Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 주문 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 주문 실패. ``` def buy( self, stock_code: str, quantity: str, trade_type: OrderTradeType, exchange: OrderExchange = "KRX", price: str = "", condition_price: str = "", ) -> OrderResponse: """주식 매수주문을 제출한다 (kt10000). Args: stock_code: 종목코드 (예: ``"005930"``). quantity: 주문수량 (단위: 주). trade_type: 매매구분. ``"market"``: 시장가, ``"limit"``: 보통(지정가), ``"conditional"``: 조건부지정가 등. 시장가(``"market"``) 주문 시 ``price``는 공백으로 전달한다. exchange: 국내거래소구분. ``"KRX"``, ``"NXT"``, ``"SOR"``. 기본값 ``"KRX"``. price: 주문단가 (단위: 원). 시장가 주문 시 공백. condition_price: 조건단가. 스톱지정가(``"stop"``) 주문 시 스톱가. 기본값 공백. Returns: 매수주문 응답 ``OrderResponse`` (주문번호 포함). Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 주문 실패. """ raw = _check(self._api.post( self._ORDR_PATH, { "dmst_stex_tp": exchange, "stk_cd": stock_code, "ord_qty": quantity, "ord_uv": price, "trde_tp": _TRADE_TYPE_CODE[trade_type], "cond_uv": condition_price, }, headers=self._headers("kt10000"), )) return OrderResponse( ord_no=raw.get("ord_no", ""), dmst_stex_tp=raw.get("dmst_stex_tp", ""), ) ``` #### cancel ¶ ``` cancel(original_order_no: str, stock_code: str, cancel_quantity: str, exchange: OrderExchange = 'KRX') -> CancelOrderResponse ``` 주식 취소주문을 제출한다 (kt10003). 미체결 주문을 취소한다. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | original_order_no | str | 원주문번호 (취소할 주문의 주문번호). | required | | stock_code | str | 종목코드. | required | | cancel_quantity | str | 취소수량 (단위: 주). "0" 입력 시 잔량 전부 취소. | required | | exchange | OrderExchange | 국내거래소구분. 기본값 "KRX" . | 'KRX' | 원주문번호 (취소할 주문의 주문번호). 종목코드. 취소수량 (단위: 주). "0" 입력 시 잔량 전부 취소. 국내거래소구분. 기본값 "KRX" . Returns: | Type | Description | | --- | --- | | CancelOrderResponse | 취소주문 응답 CancelOrderResponse (새 주문번호 포함). | 취소주문 응답 CancelOrderResponse (새 주문번호 포함). Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 주문 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 주문 실패. ``` def cancel( self, original_order_no: str, stock_code: str, cancel_quantity: str, exchange: OrderExchange = "KRX", ) -> CancelOrderResponse: """주식 취소주문을 제출한다 (kt10003). 미체결 주문을 취소한다. Args: original_order_no: 원주문번호 (취소할 주문의 주문번호). stock_code: 종목코드. cancel_quantity: 취소수량 (단위: 주). ``"0"`` 입력 시 잔량 전부 취소. exchange: 국내거래소구분. 기본값 ``"KRX"``. Returns: 취소주문 응답 ``CancelOrderResponse`` (새 주문번호 포함). Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 주문 실패. """ raw = _check(self._api.post( self._ORDR_PATH, { "dmst_stex_tp": exchange, "orig_ord_no": original_order_no, "stk_cd": stock_code, "cncl_qty": cancel_quantity, }, headers=self._headers("kt10003"), )) return CancelOrderResponse( ord_no=raw.get("ord_no", ""), base_orig_ord_no=raw.get("base_orig_ord_no", ""), cncl_qty=raw.get("cncl_qty", ""), ) ``` #### credit_buy ¶ ``` credit_buy(stock_code: str, quantity: str, trade_type: OrderTradeType, exchange: OrderExchange = 'KRX', price: str = '', condition_price: str = '') -> OrderResponse ``` 신용 매수주문을 제출한다 (kt10006). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 종목코드. | required | | quantity | str | 주문수량 (단위: 주). | required | | trade_type | OrderTradeType | 매매구분. "market" : 시장가, "limit" : 보통(지정가) 등. | required | | exchange | OrderExchange | 국내거래소구분. 기본값 "KRX" . | 'KRX' | | price | str | 주문단가 (단위: 원). 시장가 주문 시 공백. | '' | | condition_price | str | 조건단가. 기본값 공백. | '' | 종목코드. 주문수량 (단위: 주). 매매구분. "market" : 시장가, "limit" : 보통(지정가) 등. 국내거래소구분. 기본값 "KRX" . 주문단가 (단위: 원). 시장가 주문 시 공백. 조건단가. 기본값 공백. Returns: | Type | Description | | --- | --- | | OrderResponse | 신용 매수주문 응답 OrderResponse (주문번호 포함). | 신용 매수주문 응답 OrderResponse (주문번호 포함). Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 주문 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 주문 실패. ``` def credit_buy( self, stock_code: str, quantity: str, trade_type: OrderTradeType, exchange: OrderExchange = "KRX", price: str = "", condition_price: str = "", ) -> OrderResponse: """신용 매수주문을 제출한다 (kt10006). Args: stock_code: 종목코드. quantity: 주문수량 (단위: 주). trade_type: 매매구분. ``"market"``: 시장가, ``"limit"``: 보통(지정가) 등. exchange: 국내거래소구분. 기본값 ``"KRX"``. price: 주문단가 (단위: 원). 시장가 주문 시 공백. condition_price: 조건단가. 기본값 공백. Returns: 신용 매수주문 응답 ``OrderResponse`` (주문번호 포함). Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 주문 실패. """ raw = _check(self._api.post( self._CRDORDR_PATH, { "dmst_stex_tp": exchange, "stk_cd": stock_code, "ord_qty": quantity, "ord_uv": price, "trde_tp": _TRADE_TYPE_CODE[trade_type], "cond_uv": condition_price, }, headers=self._headers("kt10006"), )) return OrderResponse( ord_no=raw.get("ord_no", ""), dmst_stex_tp=raw.get("dmst_stex_tp", ""), ) ``` #### credit_cancel ¶ ``` credit_cancel(original_order_no: str, stock_code: str, cancel_quantity: str, exchange: OrderExchange = 'KRX') -> CancelOrderResponse ``` 신용 취소주문을 제출한다 (kt10009). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | original_order_no | str | 원주문번호. | required | | stock_code | str | 종목코드. | required | | cancel_quantity | str | 취소수량 (단위: 주). "0" 입력 시 잔량 전부 취소. | required | | exchange | OrderExchange | 국내거래소구분. 기본값 "KRX" . | 'KRX' | 원주문번호. 종목코드. 취소수량 (단위: 주). "0" 입력 시 잔량 전부 취소. 국내거래소구분. 기본값 "KRX" . Returns: | Type | Description | | --- | --- | | CancelOrderResponse | 신용 취소주문 응답 CancelOrderResponse . | 신용 취소주문 응답 CancelOrderResponse . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 주문 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 주문 실패. ``` def credit_cancel( self, original_order_no: str, stock_code: str, cancel_quantity: str, exchange: OrderExchange = "KRX", ) -> CancelOrderResponse: """신용 취소주문을 제출한다 (kt10009). Args: original_order_no: 원주문번호. stock_code: 종목코드. cancel_quantity: 취소수량 (단위: 주). ``"0"`` 입력 시 잔량 전부 취소. exchange: 국내거래소구분. 기본값 ``"KRX"``. Returns: 신용 취소주문 응답 ``CancelOrderResponse``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 주문 실패. """ raw = _check(self._api.post( self._CRDORDR_PATH, { "dmst_stex_tp": exchange, "orig_ord_no": original_order_no, "stk_cd": stock_code, "cncl_qty": cancel_quantity, }, headers=self._headers("kt10009"), )) return CancelOrderResponse( ord_no=raw.get("ord_no", ""), base_orig_ord_no=raw.get("base_orig_ord_no", ""), cncl_qty=raw.get("cncl_qty", ""), ) ``` #### credit_modify ¶ ``` credit_modify(original_order_no: str, stock_code: str, modify_quantity: str, modify_price: str, exchange: OrderExchange = 'KRX', modify_condition_price: str = '') -> ModifyOrderResponse ``` 신용 정정주문을 제출한다 (kt10008). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | original_order_no | str | 원주문번호. | required | | stock_code | str | 종목코드. | required | | modify_quantity | str | 정정수량 (단위: 주). | required | | modify_price | str | 정정단가 (단위: 원). | required | | exchange | OrderExchange | 국내거래소구분. 기본값 "KRX" . | 'KRX' | | modify_condition_price | str | 정정조건단가. 기본값 공백. | '' | 원주문번호. 종목코드. 정정수량 (단위: 주). 정정단가 (단위: 원). 국내거래소구분. 기본값 "KRX" . 정정조건단가. 기본값 공백. Returns: | Type | Description | | --- | --- | | ModifyOrderResponse | 신용 정정주문 응답 ModifyOrderResponse . | 신용 정정주문 응답 ModifyOrderResponse . Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 주문 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 주문 실패. ``` def credit_modify( self, original_order_no: str, stock_code: str, modify_quantity: str, modify_price: str, exchange: OrderExchange = "KRX", modify_condition_price: str = "", ) -> ModifyOrderResponse: """신용 정정주문을 제출한다 (kt10008). Args: original_order_no: 원주문번호. stock_code: 종목코드. modify_quantity: 정정수량 (단위: 주). modify_price: 정정단가 (단위: 원). exchange: 국내거래소구분. 기본값 ``"KRX"``. modify_condition_price: 정정조건단가. 기본값 공백. Returns: 신용 정정주문 응답 ``ModifyOrderResponse``. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 주문 실패. """ raw = _check(self._api.post( self._CRDORDR_PATH, { "dmst_stex_tp": exchange, "orig_ord_no": original_order_no, "stk_cd": stock_code, "mdfy_qty": modify_quantity, "mdfy_uv": modify_price, "mdfy_cond_uv": modify_condition_price, }, headers=self._headers("kt10008"), )) return ModifyOrderResponse( ord_no=raw.get("ord_no", ""), base_orig_ord_no=raw.get("base_orig_ord_no", ""), mdfy_qty=raw.get("mdfy_qty", ""), dmst_stex_tp=raw.get("dmst_stex_tp", ""), ) ``` #### credit_sell ¶ ``` credit_sell(stock_code: str, quantity: str, trade_type: OrderTradeType, credit_deal_type: str, exchange: OrderExchange = 'KRX', price: str = '', credit_loan_date: str = '', condition_price: str = '') -> OrderResponse ``` 신용 매도주문을 제출한다 (kt10007). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 종목코드. | required | | quantity | str | 주문수량 (단위: 주). | required | | trade_type | OrderTradeType | 매매구분. "market" : 시장가, "limit" : 보통(지정가) 등. | required | | credit_deal_type | str | 신용거래구분. "33" : 융자, "99" : 융자합. | required | | exchange | OrderExchange | 국내거래소구분. 기본값 "KRX" . | 'KRX' | | price | str | 주문단가 (단위: 원). 시장가 주문 시 공백. | '' | | credit_loan_date | str | 대출일 ( YYYYMMDD 형식). credit_deal_type="33" (융자) 일 때 필수. | '' | | condition_price | str | 조건단가. 기본값 공백. | '' | 종목코드. 주문수량 (단위: 주). 매매구분. "market" : 시장가, "limit" : 보통(지정가) 등. 신용거래구분. "33" : 융자, "99" : 융자합. 국내거래소구분. 기본값 "KRX" . 주문단가 (단위: 원). 시장가 주문 시 공백. 대출일 ( YYYYMMDD 형식). credit_deal_type="33" (융자) 일 때 필수. 조건단가. 기본값 공백. Returns: | Type | Description | | --- | --- | | OrderResponse | 신용 매도주문 응답 OrderResponse (주문번호 포함). | 신용 매도주문 응답 OrderResponse (주문번호 포함). Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 주문 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 주문 실패. ``` def credit_sell( self, stock_code: str, quantity: str, trade_type: OrderTradeType, credit_deal_type: str, exchange: OrderExchange = "KRX", price: str = "", credit_loan_date: str = "", condition_price: str = "", ) -> OrderResponse: """신용 매도주문을 제출한다 (kt10007). Args: stock_code: 종목코드. quantity: 주문수량 (단위: 주). trade_type: 매매구분. ``"market"``: 시장가, ``"limit"``: 보통(지정가) 등. credit_deal_type: 신용거래구분. ``"33"``: 융자, ``"99"``: 융자합. exchange: 국내거래소구분. 기본값 ``"KRX"``. price: 주문단가 (단위: 원). 시장가 주문 시 공백. credit_loan_date: 대출일 (``YYYYMMDD`` 형식). ``credit_deal_type="33"`` (융자) 일 때 필수. condition_price: 조건단가. 기본값 공백. Returns: 신용 매도주문 응답 ``OrderResponse`` (주문번호 포함). Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 주문 실패. """ raw = _check(self._api.post( self._CRDORDR_PATH, { "dmst_stex_tp": exchange, "stk_cd": stock_code, "ord_qty": quantity, "ord_uv": price, "trde_tp": _TRADE_TYPE_CODE[trade_type], "crd_deal_tp": credit_deal_type, "crd_loan_dt": credit_loan_date, "cond_uv": condition_price, }, headers=self._headers("kt10007"), )) return OrderResponse( ord_no=raw.get("ord_no", ""), dmst_stex_tp=raw.get("dmst_stex_tp", ""), ) ``` #### gold_balance ¶ ``` gold_balance() -> GoldBalance ``` 금현물 잔고를 확인한다 (kt50020). Returns: | Type | Description | | --- | --- | | GoldBalance | class: ~kiwoompy.models.GoldBalance 인스턴스. | class: ~kiwoompy.models.GoldBalance 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_balance(self) -> GoldBalance: """금현물 잔고를 확인한다 (kt50020). Returns: :class:`~kiwoompy.models.GoldBalance` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._GOLD_ACNT_PATH, {}, headers=self._headers("kt50020"), )) holdings = [ GoldBalanceItem( stk_cd=it.get("stk_cd", ""), stk_nm=it.get("stk_nm", ""), real_qty=it.get("real_qty", ""), avg_prc=it.get("avg_prc", ""), cur_prc=it.get("cur_prc", ""), est_amt=it.get("est_amt", ""), est_lspft=it.get("est_lspft", ""), est_ratio=it.get("est_ratio", ""), cmsn=it.get("cmsn", ""), vlad_tax=it.get("vlad_tax", ""), book_amt2=it.get("book_amt2", ""), pl_prch_prc=it.get("pl_prch_prc", ""), qty=it.get("qty", ""), buy_qty=it.get("buy_qty", ""), sell_qty=it.get("sell_qty", ""), able_qty=it.get("able_qty", ""), ) for it in raw.get("gold_acnt_evlt_prst", []) ] return GoldBalance( tot_entr=raw.get("tot_entr", ""), net_entr=raw.get("net_entr", ""), tot_est_amt=raw.get("tot_est_amt", ""), net_amt=raw.get("net_amt", ""), tot_book_amt2=raw.get("tot_book_amt2", ""), tot_dep_amt=raw.get("tot_dep_amt", ""), paym_alowa=raw.get("paym_alowa", ""), pl_amt=raw.get("pl_amt", ""), items=holdings, ) ``` #### gold_buy ¶ ``` gold_buy(stock_code: GoldStockCode, order_quantity: str, trade_type: GoldOrderTradeType, order_price: str = '') -> GoldOrderResponse ``` 금현물 매수주문을 제출한다 (kt50000). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | GoldStockCode | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). | required | | order_quantity | str | 주문수량 (단위: g). | required | | trade_type | GoldOrderTradeType | 매매구분. "normal" :보통, "normal_ioc" :보통(IOC), "normal_fok" :보통(FOK). | required | | order_price | str | 주문단가. 시장가 주문 시 생략 가능. | '' | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). 주문수량 (단위: g). 매매구분. "normal" :보통, "normal_ioc" :보통(IOC), "normal_fok" :보통(FOK). 주문단가. 시장가 주문 시 생략 가능. Returns: | Type | Description | | --- | --- | | GoldOrderResponse | class: ~kiwoompy.models.GoldOrderResponse 인스턴스. | class: ~kiwoompy.models.GoldOrderResponse 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 주문 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 주문 실패. ``` def gold_buy( self, stock_code: GoldStockCode, order_quantity: str, trade_type: GoldOrderTradeType, order_price: str = "", ) -> GoldOrderResponse: """금현물 매수주문을 제출한다 (kt50000). Args: stock_code: 금현물 종목코드. ``"M04020000"`` (금 99.99_1kg) 또는 ``"M04020100"`` (미니금 99.99_100g). order_quantity: 주문수량 (단위: g). trade_type: 매매구분. ``"normal"``:보통, ``"normal_ioc"``:보통(IOC), ``"normal_fok"``:보통(FOK). order_price: 주문단가. 시장가 주문 시 생략 가능. Returns: :class:`~kiwoompy.models.GoldOrderResponse` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 주문 실패. """ body: dict[str, str] = { "stk_cd": stock_code, "ord_qty": order_quantity, "trde_tp": _GOLD_TRADE_TYPE_CODE[trade_type], } if order_price: body["ord_uv"] = order_price raw = _check(self._api.post( self._GOLD_ORDR_PATH, body, headers=self._headers("kt50000"), )) return GoldOrderResponse(ord_no=raw.get("ord_no", "")) ``` #### gold_cancel ¶ ``` gold_cancel(stock_code: GoldStockCode, original_order_no: str, cancel_quantity: str) -> GoldCancelOrderResponse ``` 금현물 취소주문을 제출한다 (kt50003). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | GoldStockCode | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). | required | | original_order_no | str | 원주문번호. | required | | cancel_quantity | str | 취소수량 (단위: g). "0" 입력 시 잔량 전부 취소. | required | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). 원주문번호. 취소수량 (단위: g). "0" 입력 시 잔량 전부 취소. Returns: | Type | Description | | --- | --- | | GoldCancelOrderResponse | class: ~kiwoompy.models.GoldCancelOrderResponse 인스턴스. | class: ~kiwoompy.models.GoldCancelOrderResponse 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 주문 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 주문 실패. ``` def gold_cancel( self, stock_code: GoldStockCode, original_order_no: str, cancel_quantity: str, ) -> GoldCancelOrderResponse: """금현물 취소주문을 제출한다 (kt50003). Args: stock_code: 금현물 종목코드. ``"M04020000"`` (금 99.99_1kg) 또는 ``"M04020100"`` (미니금 99.99_100g). original_order_no: 원주문번호. cancel_quantity: 취소수량 (단위: g). ``"0"`` 입력 시 잔량 전부 취소. Returns: :class:`~kiwoompy.models.GoldCancelOrderResponse` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 주문 실패. """ raw = _check(self._api.post( self._GOLD_ORDR_PATH, { "orig_ord_no": original_order_no, "stk_cd": stock_code, "cncl_qty": cancel_quantity, }, headers=self._headers("kt50003"), )) return GoldCancelOrderResponse( ord_no=raw.get("ord_no", ""), base_orig_ord_no=raw.get("base_orig_ord_no", ""), cncl_qty=raw.get("cncl_qty", ""), ) ``` #### gold_deposit ¶ ``` gold_deposit() -> GoldDeposit ``` 금현물 예수금을 조회한다 (kt50021). Returns: | Type | Description | | --- | --- | | GoldDeposit | class: ~kiwoompy.models.GoldDeposit 인스턴스. | class: ~kiwoompy.models.GoldDeposit 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_deposit(self) -> GoldDeposit: """금현물 예수금을 조회한다 (kt50021). Returns: :class:`~kiwoompy.models.GoldDeposit` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._GOLD_ACNT_PATH, {}, headers=self._headers("kt50021"), )) return GoldDeposit( entra=raw.get("entra", ""), profa_ch=raw.get("profa_ch", ""), chck_ina_amt=raw.get("chck_ina_amt", ""), etc_loan=raw.get("etc_loan", ""), etc_loan_dlfe=raw.get("etc_loan_dlfe", ""), etc_loan_tot=raw.get("etc_loan_tot", ""), prsm_entra=raw.get("prsm_entra", ""), buy_exct_amt=raw.get("buy_exct_amt", ""), sell_exct_amt=raw.get("sell_exct_amt", ""), sell_buy_exct_amt=raw.get("sell_buy_exct_amt", ""), dly_amt=raw.get("dly_amt", ""), prsm_pymn_alow_amt=raw.get("prsm_pymn_alow_amt", ""), pymn_alow_amt=raw.get("pymn_alow_amt", ""), ord_alow_amt=raw.get("ord_alow_amt", ""), ) ``` #### gold_modify ¶ ``` gold_modify(stock_code: GoldStockCode, original_order_no: str, modify_quantity: str, modify_price: str) -> GoldModifyOrderResponse ``` 금현물 정정주문을 제출한다 (kt50002). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | GoldStockCode | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). | required | | original_order_no | str | 원주문번호. | required | | modify_quantity | str | 정정수량 (단위: g). | required | | modify_price | str | 정정단가. | required | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). 원주문번호. 정정수량 (단위: g). 정정단가. Returns: | Type | Description | | --- | --- | | GoldModifyOrderResponse | class: ~kiwoompy.models.GoldModifyOrderResponse 인스턴스. | class: ~kiwoompy.models.GoldModifyOrderResponse 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 주문 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 주문 실패. ``` def gold_modify( self, stock_code: GoldStockCode, original_order_no: str, modify_quantity: str, modify_price: str, ) -> GoldModifyOrderResponse: """금현물 정정주문을 제출한다 (kt50002). Args: stock_code: 금현물 종목코드. ``"M04020000"`` (금 99.99_1kg) 또는 ``"M04020100"`` (미니금 99.99_100g). original_order_no: 원주문번호. modify_quantity: 정정수량 (단위: g). modify_price: 정정단가. Returns: :class:`~kiwoompy.models.GoldModifyOrderResponse` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 주문 실패. """ raw = _check(self._api.post( self._GOLD_ORDR_PATH, { "stk_cd": stock_code, "orig_ord_no": original_order_no, "mdfy_qty": modify_quantity, "mdfy_uv": modify_price, }, headers=self._headers("kt50002"), )) return GoldModifyOrderResponse( ord_no=raw.get("ord_no", ""), base_orig_ord_no=raw.get("base_orig_ord_no", ""), mdfy_qty=raw.get("mdfy_qty", ""), ) ``` #### gold_order_detail ¶ ``` gold_order_detail(stock_bond_type: StockBondType, sell_type: SellType, exchange: str, query_type: OrderHistoryQueryType = 'asc', order_date: str = '', stock_code: str = '', from_order_no: str = '') -> GoldOrderDetail ``` 금현물 주문체결을 조회한다 (kt50031). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_bond_type | StockBondType | 주식채권구분. "all" :전체, "stock" :주식, "bond" :채권. | required | | sell_type | SellType | 매도수구분. "all" :전체, "sell" :매도, "buy" :매수. | required | | exchange | str | 국내거래소구분. "%" :전체, "KRX" , "NXT" , "SOR" . | required | | query_type | OrderHistoryQueryType | 조회구분. "asc" :주문순, "desc" :역순, "unfilled" :미체결, "filled_only" :체결내역만. 기본값 "asc" . | 'asc' | | order_date | str | 주문일자 ( "YYYYMMDD" ). 공백 허용. | '' | | stock_code | str | 종목코드. 공백 시 전체 종목. | '' | | from_order_no | str | 시작주문번호. 공백 시 전체 주문. | '' | 주식채권구분. "all" :전체, "stock" :주식, "bond" :채권. 매도수구분. "all" :전체, "sell" :매도, "buy" :매수. 국내거래소구분. "%" :전체, "KRX" , "NXT" , "SOR" . 조회구분. "asc" :주문순, "desc" :역순, "unfilled" :미체결, "filled_only" :체결내역만. 기본값 "asc" . 주문일자 ( "YYYYMMDD" ). 공백 허용. 종목코드. 공백 시 전체 종목. 시작주문번호. 공백 시 전체 주문. Returns: | Type | Description | | --- | --- | | GoldOrderDetail | class: ~kiwoompy.models.GoldOrderDetail 인스턴스. | class: ~kiwoompy.models.GoldOrderDetail 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_order_detail( self, stock_bond_type: StockBondType, sell_type: SellType, exchange: str, query_type: OrderHistoryQueryType = "asc", order_date: str = "", stock_code: str = "", from_order_no: str = "", ) -> GoldOrderDetail: """금현물 주문체결을 조회한다 (kt50031). Args: stock_bond_type: 주식채권구분. ``"all"``:전체, ``"stock"``:주식, ``"bond"``:채권. sell_type: 매도수구분. ``"all"``:전체, ``"sell"``:매도, ``"buy"``:매수. exchange: 국내거래소구분. ``"%"``:전체, ``"KRX"``, ``"NXT"``, ``"SOR"``. query_type: 조회구분. ``"asc"``:주문순, ``"desc"``:역순, ``"unfilled"``:미체결, ``"filled_only"``:체결내역만. 기본값 ``"asc"``. order_date: 주문일자 (``"YYYYMMDD"``). 공백 허용. stock_code: 종목코드. 공백 시 전체 종목. from_order_no: 시작주문번호. 공백 시 전체 주문. Returns: :class:`~kiwoompy.models.GoldOrderDetail` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._GOLD_ACNT_PATH, { "ord_dt": order_date, "qry_tp": _ORDER_HISTORY_QUERY_CODE[query_type], "stk_bond_tp": _STOCK_BOND_CODE[stock_bond_type], "sell_tp": _SELL_TYPE_CODE[sell_type], "stk_cd": stock_code, "fr_ord_no": from_order_no, "dmst_stex_tp": exchange, }, headers=self._headers("kt50031"), )) items = [ GoldOrderDetailItem( ord_no=it.get("ord_no", ""), stk_cd=it.get("stk_cd", ""), trde_tp=it.get("trde_tp", ""), crd_tp=it.get("crd_tp", ""), ord_qty=it.get("ord_qty", ""), ord_uv=it.get("ord_uv", ""), cnfm_qty=it.get("cnfm_qty", ""), acpt_tp=it.get("acpt_tp", ""), rsrv_tp=it.get("rsrv_tp", ""), ord_tm=it.get("ord_tm", ""), ori_ord=it.get("ori_ord", ""), stk_nm=it.get("stk_nm", ""), io_tp_nm=it.get("io_tp_nm", ""), loan_dt=it.get("loan_dt", ""), cntr_qty=it.get("cntr_qty", ""), cntr_uv=it.get("cntr_uv", ""), ord_remnq=it.get("ord_remnq", ""), comm_ord_tp=it.get("comm_ord_tp", ""), mdfy_cncl=it.get("mdfy_cncl", ""), cnfm_tm=it.get("cnfm_tm", ""), dmst_stex_tp=it.get("dmst_stex_tp", ""), cond_uv=it.get("cond_uv", ""), ) for it in raw.get("acnt_ord_cntr_prps_dtl", []) ] return GoldOrderDetail(items=items) ``` #### gold_order_status ¶ ``` gold_order_status(order_date: str, market_deal_type: str, stock_bond_type: StockBondType, sell_type: SellType, query_type: GoldOrderQueryType = 'asc', stock_code: str = '', from_order_no: str = '', exchange: str = '%') -> GoldOrderStatus ``` 금현물 주문체결전체를 조회한다 (kt50030). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | order_date | str | 주문일자 ( "YYYYMMDD" ). | required | | market_deal_type | str | 시장구분. | required | | stock_bond_type | StockBondType | 주식채권구분. "all" :전체, "stock" :주식, "bond" :채권. | required | | sell_type | SellType | 매도수구분. "all" :전체, "sell" :매도, "buy" :매수. | required | | query_type | GoldOrderQueryType | 조회구분. "asc" :주문순, "desc" :역순. 기본값 "asc" . | 'asc' | | stock_code | str | 종목코드. 공백 시 전체 종목. | '' | | from_order_no | str | 시작주문번호. 공백 시 전체 주문. | '' | | exchange | str | 국내거래소구분. "%" :전체, "KRX" , "NXT" , "SOR" . 기본값 "%" . | '%' | 주문일자 ( "YYYYMMDD" ). 시장구분. 주식채권구분. "all" :전체, "stock" :주식, "bond" :채권. 매도수구분. "all" :전체, "sell" :매도, "buy" :매수. 조회구분. "asc" :주문순, "desc" :역순. 기본값 "asc" . 종목코드. 공백 시 전체 종목. 시작주문번호. 공백 시 전체 주문. 국내거래소구분. "%" :전체, "KRX" , "NXT" , "SOR" . 기본값 "%" . Returns: | Type | Description | | --- | --- | | GoldOrderStatus | class: ~kiwoompy.models.GoldOrderStatus 인스턴스. | class: ~kiwoompy.models.GoldOrderStatus 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_order_status( self, order_date: str, market_deal_type: str, stock_bond_type: StockBondType, sell_type: SellType, query_type: GoldOrderQueryType = "asc", stock_code: str = "", from_order_no: str = "", exchange: str = "%", ) -> GoldOrderStatus: """금현물 주문체결전체를 조회한다 (kt50030). Args: order_date: 주문일자 (``"YYYYMMDD"``). market_deal_type: 시장구분. stock_bond_type: 주식채권구분. ``"all"``:전체, ``"stock"``:주식, ``"bond"``:채권. sell_type: 매도수구분. ``"all"``:전체, ``"sell"``:매도, ``"buy"``:매수. query_type: 조회구분. ``"asc"``:주문순, ``"desc"``:역순. 기본값 ``"asc"``. stock_code: 종목코드. 공백 시 전체 종목. from_order_no: 시작주문번호. 공백 시 전체 주문. exchange: 국내거래소구분. ``"%"``:전체, ``"KRX"``, ``"NXT"``, ``"SOR"``. 기본값 ``"%"``. Returns: :class:`~kiwoompy.models.GoldOrderStatus` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._GOLD_ACNT_PATH, { "ord_dt": order_date, "qry_tp": _GOLD_ORDER_QUERY_CODE[query_type], "mrkt_deal_tp": market_deal_type, "stk_bond_tp": _STOCK_BOND_CODE[stock_bond_type], "slby_tp": _SELL_TYPE_CODE[sell_type], "stk_cd": stock_code, "fr_ord_no": from_order_no, "dmst_stex_tp": exchange, }, headers=self._headers("kt50030"), )) items = [ GoldOrderStatusItem( stk_bond_tp=it.get("stk_bond_tp", ""), ord_no=it.get("ord_no", ""), stk_cd=it.get("stk_cd", ""), trde_tp=it.get("trde_tp", ""), io_tp_nm=it.get("io_tp_nm", ""), ord_qty=it.get("ord_qty", ""), ord_uv=it.get("ord_uv", ""), cnfm_qty=it.get("cnfm_qty", ""), data_send_end_tp=it.get("data_send_end_tp", ""), mrkt_deal_tp=it.get("mrkt_deal_tp", ""), rsrv_tp=it.get("rsrv_tp", ""), orig_ord_no=it.get("orig_ord_no", ""), stk_nm=it.get("stk_nm", ""), dcd_tp_nm=it.get("dcd_tp_nm", ""), crd_deal_tp=it.get("crd_deal_tp", ""), cntr_qty=it.get("cntr_qty", ""), cntr_uv=it.get("cntr_uv", ""), ord_remnq=it.get("ord_remnq", ""), comm_ord_tp=it.get("comm_ord_tp", ""), mdfy_cncl_tp=it.get("mdfy_cncl_tp", ""), dmst_stex_tp=it.get("dmst_stex_tp", ""), cond_uv=it.get("cond_uv", ""), ) for it in raw.get("acnt_ord_cntr_prst", []) ] return GoldOrderStatus(items=items) ``` #### gold_sell ¶ ``` gold_sell(stock_code: GoldStockCode, order_quantity: str, trade_type: GoldOrderTradeType, order_price: str = '') -> GoldOrderResponse ``` 금현물 매도주문을 제출한다 (kt50001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | GoldStockCode | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). | required | | order_quantity | str | 주문수량 (단위: g). | required | | trade_type | GoldOrderTradeType | 매매구분. "normal" :보통, "normal_ioc" :보통(IOC), "normal_fok" :보통(FOK). | required | | order_price | str | 주문단가. 시장가 주문 시 생략 가능. | '' | 금현물 종목코드. "M04020000" (금 99.99_1kg) 또는 "M04020100" (미니금 99.99_100g). 주문수량 (단위: g). 매매구분. "normal" :보통, "normal_ioc" :보통(IOC), "normal_fok" :보통(FOK). 주문단가. 시장가 주문 시 생략 가능. Returns: | Type | Description | | --- | --- | | GoldOrderResponse | class: ~kiwoompy.models.GoldOrderResponse 인스턴스. | class: ~kiwoompy.models.GoldOrderResponse 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 주문 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 주문 실패. ``` def gold_sell( self, stock_code: GoldStockCode, order_quantity: str, trade_type: GoldOrderTradeType, order_price: str = "", ) -> GoldOrderResponse: """금현물 매도주문을 제출한다 (kt50001). Args: stock_code: 금현물 종목코드. ``"M04020000"`` (금 99.99_1kg) 또는 ``"M04020100"`` (미니금 99.99_100g). order_quantity: 주문수량 (단위: g). trade_type: 매매구분. ``"normal"``:보통, ``"normal_ioc"``:보통(IOC), ``"normal_fok"``:보통(FOK). order_price: 주문단가. 시장가 주문 시 생략 가능. Returns: :class:`~kiwoompy.models.GoldOrderResponse` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 주문 실패. """ body: dict[str, str] = { "stk_cd": stock_code, "ord_qty": order_quantity, "trde_tp": _GOLD_TRADE_TYPE_CODE[trade_type], } if order_price: body["ord_uv"] = order_price raw = _check(self._api.post( self._GOLD_ORDR_PATH, body, headers=self._headers("kt50001"), )) return GoldOrderResponse(ord_no=raw.get("ord_no", "")) ``` #### gold_trade_history ¶ ``` gold_trade_history(start_date: str = '', end_date: str = '', trade_type: GoldTransactionType = 'all', stock_code: str = '') -> GoldTradeHistory ``` 금현물 거래내역을 조회한다 (kt50032). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | start_date | str | 시작일자 ( "YYYYMMDD" ). 공백 허용. | '' | | end_date | str | 종료일자 ( "YYYYMMDD" ). 공백 허용. | '' | | trade_type | GoldTransactionType | 구분. "all" :전체, "deposit_withdraw" :입출금, "withdraw" :출고, "trade" :매매, "buy" :매수, "sell" :매도, "deposit" :입금, "payment" :출금. 기본값 "all" . | 'all' | | stock_code | str | 종목코드. 공백 시 전체 종목. | '' | 시작일자 ( "YYYYMMDD" ). 공백 허용. 종료일자 ( "YYYYMMDD" ). 공백 허용. 구분. "all" :전체, "deposit_withdraw" :입출금, "withdraw" :출고, "trade" :매매, "buy" :매수, "sell" :매도, "deposit" :입금, "payment" :출금. 기본값 "all" . 종목코드. 공백 시 전체 종목. Returns: | Type | Description | | --- | --- | | GoldTradeHistory | class: ~kiwoompy.models.GoldTradeHistory 인스턴스. | class: ~kiwoompy.models.GoldTradeHistory 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_trade_history( self, start_date: str = "", end_date: str = "", trade_type: GoldTransactionType = "all", stock_code: str = "", ) -> GoldTradeHistory: """금현물 거래내역을 조회한다 (kt50032). Args: start_date: 시작일자 (``"YYYYMMDD"``). 공백 허용. end_date: 종료일자 (``"YYYYMMDD"``). 공백 허용. trade_type: 구분. ``"all"``:전체, ``"deposit_withdraw"``:입출금, ``"withdraw"``:출고, ``"trade"``:매매, ``"buy"``:매수, ``"sell"``:매도, ``"deposit"``:입금, ``"payment"``:출금. 기본값 ``"all"``. stock_code: 종목코드. 공백 시 전체 종목. Returns: :class:`~kiwoompy.models.GoldTradeHistory` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._GOLD_ACNT_PATH, { "strt_dt": start_date, "end_dt": end_date, "tp": _GOLD_TRANSACTION_CODE[trade_type], "stk_cd": stock_code, }, headers=self._headers("kt50032"), )) items = [ GoldTradeHistoryItem( deal_dt=it.get("deal_dt", ""), deal_no=it.get("deal_no", ""), rmrk_nm=it.get("rmrk_nm", ""), deal_qty=it.get("deal_qty", ""), gold_spot_vat=it.get("gold_spot_vat", ""), exct_amt=it.get("exct_amt", ""), dly_sum=it.get("dly_sum", ""), entra_remn=it.get("entra_remn", ""), mdia_nm=it.get("mdia_nm", ""), orig_deal_no=it.get("orig_deal_no", ""), stk_nm=it.get("stk_nm", ""), uv_exrt=it.get("uv_exrt", ""), cmsn=it.get("cmsn", ""), uncl_ocr=it.get("uncl_ocr", ""), rpym_sum=it.get("rpym_sum", ""), spot_remn=it.get("spot_remn", ""), proc_time=it.get("proc_time", ""), rcpy_no=it.get("rcpy_no", ""), stk_cd=it.get("stk_cd", ""), deal_amt=it.get("deal_amt", ""), tax_tot_amt=it.get("tax_tot_amt", ""), cntr_dt=it.get("cntr_dt", ""), proc_brch_nm=it.get("proc_brch_nm", ""), prcsr=it.get("prcsr", ""), ) for it in raw.get("gold_trde_hist", []) ] return GoldTradeHistory( acnt_print=raw.get("acnt_print", ""), items=items, ) ``` #### gold_unfilled ¶ ``` gold_unfilled(order_date: str, market_deal_type: str, stock_bond_type: StockBondType, sell_type: SellType, query_type: GoldOrderQueryType = 'asc', stock_code: str = '', from_order_no: str = '', exchange: str = '%') -> GoldUnfilled ``` 금현물 미체결을 조회한다 (kt50075). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | order_date | str | 주문일자 ( "YYYYMMDD" ). | required | | market_deal_type | str | 시장구분. | required | | stock_bond_type | StockBondType | 주식채권구분. "all" :전체, "stock" :주식, "bond" :채권. | required | | sell_type | SellType | 매도수구분. "all" :전체, "sell" :매도, "buy" :매수. | required | | query_type | GoldOrderQueryType | 조회구분. "asc" :주문순, "desc" :역순. 기본값 "asc" . | 'asc' | | stock_code | str | 종목코드. 공백 시 전체 종목. | '' | | from_order_no | str | 시작주문번호. 공백 시 전체 주문. | '' | | exchange | str | 국내거래소구분. "%" :전체, "KRX" , "NXT" , "SOR" . 기본값 "%" . | '%' | 주문일자 ( "YYYYMMDD" ). 시장구분. 주식채권구분. "all" :전체, "stock" :주식, "bond" :채권. 매도수구분. "all" :전체, "sell" :매도, "buy" :매수. 조회구분. "asc" :주문순, "desc" :역순. 기본값 "asc" . 종목코드. 공백 시 전체 종목. 시작주문번호. 공백 시 전체 주문. 국내거래소구분. "%" :전체, "KRX" , "NXT" , "SOR" . 기본값 "%" . Returns: | Type | Description | | --- | --- | | GoldUnfilled | class: ~kiwoompy.models.GoldUnfilled 인스턴스. | class: ~kiwoompy.models.GoldUnfilled 인스턴스. Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류. | 토큰 미발급 또는 인증 실패. 서버 오류. ``` def gold_unfilled( self, order_date: str, market_deal_type: str, stock_bond_type: StockBondType, sell_type: SellType, query_type: GoldOrderQueryType = "asc", stock_code: str = "", from_order_no: str = "", exchange: str = "%", ) -> GoldUnfilled: """금현물 미체결을 조회한다 (kt50075). Args: order_date: 주문일자 (``"YYYYMMDD"``). market_deal_type: 시장구분. stock_bond_type: 주식채권구분. ``"all"``:전체, ``"stock"``:주식, ``"bond"``:채권. sell_type: 매도수구분. ``"all"``:전체, ``"sell"``:매도, ``"buy"``:매수. query_type: 조회구분. ``"asc"``:주문순, ``"desc"``:역순. 기본값 ``"asc"``. stock_code: 종목코드. 공백 시 전체 종목. from_order_no: 시작주문번호. 공백 시 전체 주문. exchange: 국내거래소구분. ``"%"``:전체, ``"KRX"``, ``"NXT"``, ``"SOR"``. 기본값 ``"%"``. Returns: :class:`~kiwoompy.models.GoldUnfilled` 인스턴스. Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류. """ raw = _check(self._api.post( self._GOLD_ACNT_PATH, { "ord_dt": order_date, "qry_tp": _GOLD_ORDER_QUERY_CODE[query_type], "mrkt_deal_tp": market_deal_type, "stk_bond_tp": _STOCK_BOND_CODE[stock_bond_type], "sell_tp": _SELL_TYPE_CODE[sell_type], "stk_cd": stock_code, "fr_ord_no": from_order_no, "dmst_stex_tp": exchange, }, headers=self._headers("kt50075"), )) items = [ GoldUnfilledItem( stk_bond_tp=it.get("stk_bond_tp", ""), ord_no=it.get("ord_no", ""), stk_cd=it.get("stk_cd", ""), trde_tp=it.get("trde_tp", ""), io_tp_nm=it.get("io_tp_nm", ""), ord_qty=it.get("ord_qty", ""), ord_uv=it.get("ord_uv", ""), cnfm_qty=it.get("cnfm_qty", ""), data_send_end_tp=it.get("data_send_end_tp", ""), mrkt_deal_tp=it.get("mrkt_deal_tp", ""), rsrv_tp=it.get("rsrv_tp", ""), orig_ord_no=it.get("orig_ord_no", ""), stk_nm=it.get("stk_nm", ""), dcd_tp_nm=it.get("dcd_tp_nm", ""), crd_deal_tp=it.get("crd_deal_tp", ""), cntr_qty=it.get("cntr_qty", ""), cntr_uv=it.get("cntr_uv", ""), ord_remnq=it.get("ord_remnq", ""), comm_ord_tp=it.get("comm_ord_tp", ""), mdfy_cncl_tp=it.get("mdfy_cncl_tp", ""), dmst_stex_tp=it.get("dmst_stex_tp", ""), cond_uv=it.get("cond_uv", ""), ) for it in raw.get("acnt_ord_oso_prst", []) ] return GoldUnfilled(items=items) ``` #### modify ¶ ``` modify(original_order_no: str, stock_code: str, modify_quantity: str, modify_price: str, exchange: OrderExchange = 'KRX', modify_condition_price: str = '') -> ModifyOrderResponse ``` 주식 정정주문을 제출한다 (kt10002). 미체결 주문의 수량 또는 가격을 정정한다. Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | original_order_no | str | 원주문번호 (정정할 주문의 주문번호). | required | | stock_code | str | 종목코드. | required | | modify_quantity | str | 정정수량 (단위: 주). | required | | modify_price | str | 정정단가 (단위: 원). | required | | exchange | OrderExchange | 국내거래소구분. 기본값 "KRX" . | 'KRX' | | modify_condition_price | str | 정정조건단가. 기본값 공백. | '' | 원주문번호 (정정할 주문의 주문번호). 종목코드. 정정수량 (단위: 주). 정정단가 (단위: 원). 국내거래소구분. 기본값 "KRX" . 정정조건단가. 기본값 공백. Returns: | Type | Description | | --- | --- | | ModifyOrderResponse | 정정주문 응답 ModifyOrderResponse (새 주문번호 포함). | 정정주문 응답 ModifyOrderResponse (새 주문번호 포함). Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 주문 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 주문 실패. ``` def modify( self, original_order_no: str, stock_code: str, modify_quantity: str, modify_price: str, exchange: OrderExchange = "KRX", modify_condition_price: str = "", ) -> ModifyOrderResponse: """주식 정정주문을 제출한다 (kt10002). 미체결 주문의 수량 또는 가격을 정정한다. Args: original_order_no: 원주문번호 (정정할 주문의 주문번호). stock_code: 종목코드. modify_quantity: 정정수량 (단위: 주). modify_price: 정정단가 (단위: 원). exchange: 국내거래소구분. 기본값 ``"KRX"``. modify_condition_price: 정정조건단가. 기본값 공백. Returns: 정정주문 응답 ``ModifyOrderResponse`` (새 주문번호 포함). Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 주문 실패. """ raw = _check(self._api.post( self._ORDR_PATH, { "dmst_stex_tp": exchange, "orig_ord_no": original_order_no, "stk_cd": stock_code, "mdfy_qty": modify_quantity, "mdfy_uv": modify_price, "mdfy_cond_uv": modify_condition_price, }, headers=self._headers("kt10002"), )) return ModifyOrderResponse( ord_no=raw.get("ord_no", ""), base_orig_ord_no=raw.get("base_orig_ord_no", ""), mdfy_qty=raw.get("mdfy_qty", ""), dmst_stex_tp=raw.get("dmst_stex_tp", ""), ) ``` #### sell ¶ ``` sell(stock_code: str, quantity: str, trade_type: OrderTradeType, exchange: OrderExchange = 'KRX', price: str = '', condition_price: str = '') -> OrderResponse ``` 주식 매도주문을 제출한다 (kt10001). Parameters: | Name | Type | Description | Default | | --- | --- | --- | --- | | stock_code | str | 종목코드 (예: "005930" ). | required | | quantity | str | 주문수량 (단위: 주). | required | | trade_type | OrderTradeType | 매매구분. "market" : 시장가, "limit" : 보통(지정가), "conditional" : 조건부지정가 등. 시장가( "market" ) 주문 시 price 는 공백으로 전달한다. | required | | exchange | OrderExchange | 국내거래소구분. "KRX" , "NXT" , "SOR" . 기본값 "KRX" . | 'KRX' | | price | str | 주문단가 (단위: 원). 시장가 주문 시 공백. | '' | | condition_price | str | 조건단가. 스톱지정가( "stop" ) 주문 시 스톱가. 기본값 공백. | '' | 종목코드 (예: "005930" ). 주문수량 (단위: 주). 매매구분. "market" : 시장가, "limit" : 보통(지정가), "conditional" : 조건부지정가 등. 시장가( "market" ) 주문 시 price 는 공백으로 전달한다. 국내거래소구분. "KRX" , "NXT" , "SOR" . 기본값 "KRX" . 주문단가 (단위: 원). 시장가 주문 시 공백. 조건단가. 스톱지정가( "stop" ) 주문 시 스톱가. 기본값 공백. Returns: | Type | Description | | --- | --- | | OrderResponse | 매도주문 응답 OrderResponse (주문번호 포함). | 매도주문 응답 OrderResponse (주문번호 포함). Raises: | Type | Description | | --- | --- | | KiwoomAuthError | 토큰 미발급 또는 인증 실패. | | KiwoomApiError | 서버 오류 또는 주문 실패. | 토큰 미발급 또는 인증 실패. 서버 오류 또는 주문 실패. ``` def sell( self, stock_code: str, quantity: str, trade_type: OrderTradeType, exchange: OrderExchange = "KRX", price: str = "", condition_price: str = "", ) -> OrderResponse: """주식 매도주문을 제출한다 (kt10001). Args: stock_code: 종목코드 (예: ``"005930"``). quantity: 주문수량 (단위: 주). trade_type: 매매구분. ``"market"``: 시장가, ``"limit"``: 보통(지정가), ``"conditional"``: 조건부지정가 등. 시장가(``"market"``) 주문 시 ``price``는 공백으로 전달한다. exchange: 국내거래소구분. ``"KRX"``, ``"NXT"``, ``"SOR"``. 기본값 ``"KRX"``. price: 주문단가 (단위: 원). 시장가 주문 시 공백. condition_price: 조건단가. 스톱지정가(``"stop"``) 주문 시 스톱가. 기본값 공백. Returns: 매도주문 응답 ``OrderResponse`` (주문번호 포함). Raises: KiwoomAuthError: 토큰 미발급 또는 인증 실패. KiwoomApiError: 서버 오류 또는 주문 실패. """ raw = _check(self._api.post( self._ORDR_PATH, { "dmst_stex_tp": exchange, "stk_cd": stock_code, "ord_qty": quantity, "ord_uv": price, "trde_tp": _TRADE_TYPE_CODE[trade_type], "cond_uv": condition_price, }, headers=self._headers("kt10001"), )) return OrderResponse( ord_no=raw.get("ord_no", ""), dmst_stex_tp=raw.get("dmst_stex_tp", ""), ) ```