Soju06 / python-kis

📈 파이썬 한국투자증권 REST 기반 Trading API 라이브러리
https://github.com/Soju06/python-kis/wiki
MIT License
135 stars 46 forks source link

[버그] balance_all() 함수에 무한루프 현상이 존재합니다. #20

Closed jhyunetp closed 3 months ago

jhyunetp commented 1 year ago

버그 설명

일부 계좌에서 balance_all() 함수에 무한루프 현상이 존재합니다.

재구현

주식잔고조회 API 호출 후 50 개 이상의 종목이 있는 경우에 연속 조회가 이루어지는데, 연속 조회 과정에서 Loop에 빠지는 것 같습니다.

해당 테스트 계좌는 정확히 50종목만 보유한 계좌입니다.

원인

while loop에 빠져서 나오질 못함

개발 환경

파이썬 버전: 3.10

추가 내용

jhyunetp commented 1 year ago

balance debug "tr_cont" : "N" if page.search != "" else "" # 다음 페이지가 있는 경우, N을 입력하고 아니라면 비워놓는다.

일단 이렇게 제거하고 사용하고 있습니다. 혹시 소유주님께 도움이 되실까 하여 공유드립니다.

Soju06 commented 3 months ago

시간 내어 원인을 찾아주셔서 감사합니다. 현재 라이브러리를 개편하면서, 국내 및 해외 구분 없이 동일한 인터페이스로 쿼리할 수 있는 기능이 개발되었습니다. 해당 버그 또한 v2에서 해결되어, 2.0.1버전으로 라이브러리로 업데이트 하시고 이용해주시면 됩니다.

pip install python-kis --upgrade

Tutorial#3.1. 예수금 및 보유 종목 조회 문서를 참고하여 예수금 및 보유종목을 조회하실 수 있습니다.

from pykis import PyKis

kis = PyKis("secret.json", keep_token=True)
account = kis.account()

balance = account.balance()

print(repr(balance)) # repr을 통해 객체의 주요 내용을 확인할 수 있습니다.
KisIntegrationBalance(
    account_number=KisAccountNumber('50113500-01'),
    deposits={
        'KRW': KisDomesticDeposit(account_number=KisAccountNumber('50113500-01'), currency='KRW', amount=2447692, exchange_rate=1),
        'USD': KisForeignPresentDeposit(account_number=KisAccountNumber('50113500-01'), currency='USD', amount=0, exchange_rate=1384.6),
    },
    stocks=[
        KisDomesticBalanceStock(account_number=KisAccountNumber('50113500-01'), market='KRX', symbol='000660', qty=14, price=192600, amount=2696400, profit=22900, profit_rate=0.856555077613615111277351786),
        KisDomesticBalanceStock(account_number=KisAccountNumber('50113500-01'), market='KRX', symbol='039200', qty=118, price=39600, amount=4672800, profit=-199500, profit_rate=-4.094575457176282248630010467)
    ],
    purchase_amount=7545800,
    current_amount=7369200,
    profit=-176600,
    profit_rate=-2.340374778022211031302181346
)