따라서 종목 코드(s_code)와 조회하고 싶은 항목의 fid를 self.dynamicCall에 전달하면 응답으로 해당 종목의 실시간 데이터를 얻어 옵니다. 예를 들어 다음 코드는 get_fid 함수를 사용하여 ‘체결시간’의 fid를 찾아 전달하므로 ‘체결시간’을 얻어 와 signed_at 변수에 저장합니다.
signed_at = self.dynamicCall("GetCommRealData(Qstring, int)", s_code, get_fid("체결시간"))
이처럼 ‘주식체결’ 부분 아래로 이어지는 코드는 같은 방법으로 조회할 항목들을 얻어 온 후 미리 만들어 놓은 self.universe_realtime_transaction_info 딕셔너리에 저장합니다. 눈여겨볼 점은 주문, 잔고 조회 후 order, balance 딕셔너리에 값을 할당했던 방식과 달리 체결 데이터는 프로그램 실행 동안 계속해서 갱신된다는 의미의 update를 이용하여 값을 저장했다는 것입니다.
self.universe_realtime_transaction_info[s_code].update({
"체결시간": signed_at,
"시가": open,
"고가": high,
"저가": low,
"현재가": close,
"(최우선)매도호가": top_priority_ask,
"(최우선)매수호가": top_priority_bid,
"누적거래량": accum_volume
})