TR 호출에 필요한 나머지 입력 값인 "체결구분"은 ‘0:전체, 1:미체결, 2:체결’처럼 체결, 미체결 여부를 구분하는 값이며, 전체를 의미하는 "0"을 전달하여 사용하겠습니다. 또 "매매구분"은 ‘0:전체, 1:매도, 2:매수’처럼 매수/매도를 구분하는 값이며, 이 역시 전체를 의미하는 "0"을 전달하여 사용하겠습니다.
입력 값 설정을 마친 후 CommRqData로 TR 호출을 완료하고, 마찬가지로 self.tr_event_loop.exec_()를 사용하여 응답 대기 상태로 만듭니다.
이렇게 함수 구성을 마치고 나서 TR 슬롯 함수 _on_receive_tr_data에 우리가 사용한 TR(opt10075)에 대한 응답 부분을 구성합니다.
Kiwoom.py
(...)
elif rqname == "opt10075_req":
for i in range(tr_data_cnt):
code = self.dynamicCall("GetCommData(QString, QString, int, QString", trcode, rqname, i, "종목코드")
code_name = self.dynamicCall("GetCommData(QString, QString, int, QString", trcode, rqname, i, "종목명")
order_number = self.dynamicCall("GetCommData(QString, QString, int, QString", trcode, rqname, i, "주문번호")
order_status = self.dynamicCall("GetCommData(QString, QString, int, QString", trcode, rqname, i, "주문상태")
order_quantity = self.dynamicCall("GetCommData(QString, QString, int, QString", trcode, rqname, i, "주문수량")
order_price = self.dynamicCall("GetCommData(QString, QString, int, QString", trcode, rqname, i, "주문가격")
current_price = self.dynamicCall("GetCommData(QString, QString, int, QString", trcode, rqname, i, "현재가")
order_type = self.dynamicCall("GetCommData(QString, QString, int, QString", trcode, rqname, i, "주문구분")
left_quantity = self.dynamicCall("GetCommData(QString, QString, int, QString", trcode, rqname, i, "미체결수량")
executed_quantity = self.dynamicCall("GetCommData(QString, QString, int, QString", trcode, rqname, i, "체결량")
ordered_at = self.dynamicCall("GetCommData(QString, QString, int, QString", trcode, rqname, i, "시간")
fee = self.dynamicCall("GetCommData(QString, QString, int, QString", trcode, rqname, i, "당일매매수수료")
tax = self.dynamicCall("GetCommData(QString, QString, int, QString", trcode, rqname, i, "당일매매세금")
code = code.strip()
code_name = code_name.strip()
order_number = str(int(order_number.strip()))
order_status = order_status.strip()
order_quantity = int(order_quantity.strip())
order_price = int(order_price.strip())
current_price = int(current_price.strip().lstrip('+').lstrip('-'))
order_type = order_type.strip().lstrip('+').lstrip('-') # +매수, -매도처럼 +, - 제거
left_quantity = int(left_quantity.strip())
executed_quantity = int(executed_quantity.strip())
ordered_at = ordered_at.strip()
fee = int(fee)
tax = int(tax)
self.order[code] = {
'종목코드': code,
'종목명': code_name,
'주문번호': order_number,
'주문상태': order_status,
'주문수량': order_quantity,
'주문가격': order_price,
'현재가': current_price,
'주문구분': order_type,
'미체결수량': left_quantity,
'체결량': executed_quantity,
'주문시간': ordered_at,
'당일매매수수료': fee,
'당일매매세금': tax
}
self.tr_data = self.order