3.15절에서 실시간 체결 정보를 수신하면 이를 Kiwoom 클래스 내 universe_realtime_transaction_info 딕셔너리에 저장했습니다. 따라서 RSIStrategy 클래스에서는 self.kiwoom.universe_realtime_transaction_info를 이용하여 해당 딕셔너리에 접근할 수 있습니다. 그러나 self.kiwoom.universe_realtime_transaction_info에는 항상 모든 종목의 데이터가 저장되어 있다고 할 수 없습니다. 먼저 체결이 된 후 우리 프로그램이 데이터를 수신해야 self.kiwoom.universe_realtime_transaction_info에 데이터가 저장되는데, 조회하는 시점에 아직 아무런 체결도 되지 않았거나 딕셔너리에 데이터를 저장하기 전 미리 접근하여 조회하려는 경우가 있을 수 있기 때문입니다. 그러므로 self.kiwoom.universe_realtime_transaction_info에 체결 데이터가 항상 있다고 판단하기보다 if 문으로 다음과 같이 확인하는 코드가 필요합니다.
if code in self.kiwoom.universe_realtime_transaction_info.keys():
다시 한 번 main.py 파일을 실행하여 실시간 체결 정보를 확인해 보겠습니다.
(...)
[1/200_메리츠화재]
{'체결시간': '105255', '현재가': 24900, '고가': 25700, '시가': 24700, '(최우선)매도호가': 24950, '(최우선)매수호가': 24900, '누적거래량': 201757}
[2/200_DB하이텍]
{'체결시간': '105306', '현재가': 61200, '고가': 61800, '시가': 60800, '(최우선)매도호가': 61200, '(최우선)매수호가': 61100, '누적거래량': 206824}
[3/200_LX인터내셔널]
{'체결시간': '105241', '현재가': 30900, '고가': 31400, '시가': 30400, '(최우선)매도호가': 30950, '(최우선)매수호가': 30900, '누적거래량': 96923}
[4/200_유진투자증권]
{'체결시간': '105227', '현재가': 4065, '고가': 4120, '시가': 4060, '(최우선)매도호가': 4070, '(최우선)매수호가': 4065, '누적거래량': 76594}
(...)