IT/Programming

[한국투자증권 API] pykis 라이브러리 pask2 에러 해결하기

헬로덱 2025. 5. 2. 11:53
반응형

한국투자증권 API 라이브러리 사용 중 에러가 발생했습니다. 

pykis 라이브러리 : https://github.com/Soju06/python-kis
 

GitHub - Soju06/python-kis: 📈 파이썬 한국투자증권 REST 기반 Trading API 라이브러리

📈 파이썬 한국투자증권 REST 기반 Trading API 라이브러리. Contribute to Soju06/python-kis development by creating an account on GitHub.

github.com

 

1. 에러 발생

잘 사용하고 있었는데 25.4월 어느 날부터...
주문호가 조회를 위해 함수를 호출하면 에러가 납니다.

order_book = stock.orderbook()

예외발생 내역을 보면 pask2 가 보입니다. 

챗지피티와 함께 해결책을 찾아보았습니다. 
라이브러리를 수정하거나, 아니면 한국투자증권의 API를 이용해서 새로 개발하라고 하네요. 

주식투자가 목표이지 프로그램 개발이 목표가 아니기에 쉬운 길을 가기로 합니다. 
라이브러리 일부를 수정해서 그냥 쓰기로 합니다. 

2. 코드 변경

pykis/api/stock/order_book.py 

문제점

self.asks = [
    KisForeignOrderbookItem(
        price=Decimal(output2[f"pask{i}"]),  # << 여기서 'pask2' KeyError 발생
        volume=int(output2[f"vask{i}"]),
    )
    for i in range(1, 1 + count)
]

수정 후 

pask2가 없으면 "0"을 기본값으로 사용하거나, 아예 해당 항목을 건너뛰게 합니다.

self.asks = [
    KisForeignOrderbookItem(
        price=Decimal(output2.get(f"pask{i}", "0")),
        volume=int(output2.get(f"vask{i}", "0")),
    )
    for i in range(1, 1 + count)
    if output2.get(f"pask{i}") is not None and output2.get(f"vask{i}") is not None
]

self.bids = [
    KisForeignOrderbookItem(
        price=Decimal(output2.get(f"pbid{i}", "0")),
        volume=int(output2.get(f"vbid{i}", "0")),
    )
    for i in range(1, 1 + count)
    if output2.get(f"pbid{i}") is not None and output2.get(f"vbid{i}") is not None
]

적용 후 사용해 보도록 하겠습니다. 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

반응형