추가된 부분은 맨 아래쪽 세 줄입니다(빈 줄 제외). 밑에서부터 위로 하나씩 살펴보면 time.sleep(0.5)는 프로그램을 0.5초만큼 쉬도록 하겠다는 의미이며, 이 코드가 실행되는 순간부터 바로 0.5초를 대기합니다. 이렇게 프로그램을 고의로 멈추게 하는 이유는 키움 API를 이용할 때
1초에 최대 5회의 요청만 허용하는 정책 때문입니다. 따라서 0.2초에 한 번씩 데이터를 요청할 수 있지만, 여기서는 조금 더 여유 있게 0.5초의 대기 시간을 두었습니다. 또 해당 코드를 사용하고자 Kiwoom.py 파일 위쪽에 time 모듈을 import하는 코드를 넣겠습니다.
Kiwoom.py
from PyQt5.QAxContainer import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import time
다음으로 self.tr_event_loop.exit()라는 코드는 TR 요청을 보내고 응답을 대기시키는 데 사용하는 self.tr_event_loop를 종료하는 역할을 합니다. 이 변수에 대한 선언은 TR을 호출하는 함수에서 등장하므로 지금은 ‘이런 코드가 있어야 응답 대기 상태에서 해제되는구나’ 정도로만 생각해도 좋습니다.
다음은 self.tr_data = ohlcv입니다. ohlcv에는 방금까지 받아 온 일봉 데이터를 딕셔너리 형태로 저장해 두었습니다. 이 값을 self.tr_data에 저장하는 이유는 Kiwoom 객체의 속성으로 저장하여 객체를 만든 영역에서 접근해서 사용할 수 있도록 하기 위해서입니다. 좀 더 간단히 설명하면 받아 온 일봉 데이터를 외부에서 사용할 수 있도록 만들고자 값을 옮겼다고 이해해 주기 바랍니다.