ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 한국투자증권, 텔레그램 API 활용 - 잔고 조회
    프로그래밍/Open API 2023. 2. 28. 19:55
    반응형
     

    한국투자증권, 텔레그램 API 활용기

    한국투자증권의 Open API와 텔레그램 API를 활용하여 필요한 요청과 그에 대한 결과를 텔레그램 봇 메시지 받는 토이 프로젝트를 진행하였다. 두 API 모두 https 프로토콜을 사용하기 때문에 난이도

    malchooni.name

     

      스케줄러를 활용하여 매일 장마감 이후 잔고 내역을 텔레그램 메시지로 받아보려 한다.  스케줄러는 StockBalance클래스의 execute() 메소드를 호출한다.  이후엔 https 프로토콜로 한국투자로 요청하고 응답값을 정제하여 생성된 메시지를 텔레그램 api로 요청하면 사용자의 단말기로 메시지를 수신받을 수 있다.  이를 도식화하면 아래와 같다.

     

    잔고조회 흐름도

     

      한국투자증권과 텔레그램은 https 프로토콜로 통신하기 때문에 접근하기 매우 쉽다.  한국투자증권 요청은 GET 메소드를 사용하고 텔레그램 요청은 POST 메소드를 사용한다.  한국투자증권은 인증정보를 http header에 텔레그램은 인증값을 URI에 넣는다.  다음 표는 잔고조회에 사용되는 URI이다.  

     

    메소드명 http method ContentType URI
    한국투자 잔고조회 GET application/json
    https://openapi.koreainvestment.com:9443/uapi/domestic-stock/v1/trading/inquire-balance
    텔레그램 메시지 발송 POST application/json
    https://api.telegram.org/bot[TOKEN]/sendMessage

     

      아래 소스는 잔고조회 소스 중 일부인 StockBalance 클래스이다.  

     

      - 78번 라인, createPaper 메소드를 통해 요청값들을 설정한다.

      - 48번 라인, 응답받은 TTTC8434RRes 오브젝트를 createMessage 메소드로 사용자에게 보낼 메시지를 만든다.

      - 보낼 메시지를 만들고 64번 라인의 sendMessageToUser 메소드를 통해 텔레그램을 호출한다.

     

      프로세스는 매우 간단한다.  오히려 value object를 생성하는 일이 더 힘들다.  Map객체를 활용할 수 있겠으나 결국엔 명세는 있어야 한다.  그래서 value object를 만들었다.  WADL를 지원하면 참 좋을 것 같다.

     

      주식잔고에 요청할 명세는 아래 표와 같다.  헤더 부분은 필자가 간추린 속성들이다.  자세한 API 문서는 KIS Developers 사이트를 참조하면 되겠다.  해당 소스는 샘플이므로 쿼리파라미터의 계좌번호를 제외한 다른 속성 값들은 소스에 고정 기입되어 있다. 

     

      - http header

    헤더 속성명 설명
    gt_uid 트랜젝션 고윳값
    authorization appkey, appsecret 값으로 발급받은 토큰값
    appkey api 신청시 발급받은 appkey
    appsecret api 신청시 발급받은 appsecret
    tr_id 잔고조회 아이디

     

      - query parameters

        잔고조회 API는 GET 메소드를 사용하기 때문에 Body 값에 메시지를 담는 것이 아닌 URI의 query parameter를 사용해야 한다.  

     

    Element 한글명 Type 필수 여부 길이 설명
    CANO 종합계좌번호 String Y 8 계좌번호 체계(8-2)의 앞 8자리
    ACNT_PRDT_CD 계좌상품코드 String Y 2 계좌번호 체계(8-2)의 뒤 2자리
    AFHR_FLPR_YN 시간외단일가여부 String Y 1 N : 기본값
    Y : 시간외단일가
    OFL_YN 오프라인여부 String Y 1 공란(Default)
    INQR_DVSN 조회구분 String Y 2 01 : 대출일별
    02 : 종목별
    UNPR_DVSN 단가구분 String Y 2 01 : 기본값
    FUND_STTL_ICLD_YN 펀드결제분포함여부 String Y 1 N : 포함하지 않음
    Y : 포함
    FNCG_AMT_AUTO_RDPT_YN 융자금액자동상환여부 String Y 1 N : 기본값
    PRCS_DVSN 처리구분 String Y 2 00 : 전일매매포함
    01 : 전일매매미포함
    CTX_AREA_FK100 연속조회검색조건100 String Y 100 공란 : 최초 조회시
    이전 조회 Output CTX_AREA_FK100 값 : 다음페이지 조회시(2번째부터)
    CTX_AREA_NK100 연속조회키100 String Y 100 공란 : 최초 조회시
    이전 조회 Output CTX_AREA_NK100 값 : 다음페이지 조회시(2번째부터)

     

      텔레그램으로 사용자가 받은 메시지는 아래 그림과 같다.

     

    사용자가 받은 메시지

     

      전체소스는 아래 링크를 통해 확인할 수 있다. 

     

    GitHub - malchooni/trader-malchooni: toy project. 한국투자증권, 텔레그램 연동

    toy project. 한국투자증권, 텔레그램 연동. Contribute to malchooni/trader-malchooni development by creating an account on GitHub.

    github.com

     

    반응형

    댓글

Designed by Tistory.