¶CommConnect
CommConnect
메서드는 인자를 갖지 않으며 반환 값을 통해 로그인 성공 여부를 확인.
1 | self.kiwoom.dynamicCall("CommConnect()") |
¶CommRqData
TR을 서버로 송신
¶GetConnectState
현재 접속 상태를 반환하는 메서드
메서드의 리턴 값을 확인함으로 서버 접속 상태를 확인 가능.
1 | if self.kiwoom.dynamicCall("GetConnectState()") == 0: |
¶OnEventConnect
OnEventConnect
함수의 인자로 nErrCode
라는 정숫값이 입력되는데
해당 값이 0
이면 로그인 성공, 음수
이면 로그인 실패.
PyQt
에서 OpenAPI+
의 이벤트를 처리하려면 이벤트 함수의 원형을 참조해서 해당 이벤트를 처리할 메서드를 구현해야 함.
1 | def event_connect(self, err_code): |
¶OnReceiveTrData
서버와 통신 후 서버로 부터 데이터를 전달받은 시점에 발생.
이벤트는 총 9개의 인자가 전달됨.
1 | def receive_trdata(self, screen_no, rqname, trcode, recordname, prev_next, data_len, err_code, msg1, msg2): |
¶OnReceiveRealData
실시간 데이터를 받는 곳으로 주식시장이 열려있는 동안에만 발동 됨.
가격이나 거래량, 호가상태등이 변동 할 때 이벤트가 발생(setrealreg이용)
¶OnReceiveChejanData
체결 데이터를 받은 시점을 알려준다.
1 | self.OnReceiveChejanData.connect(self._receive_chejan_data) |
¶CommGetData
더 이상 지원하지 않을 함수(2017년 11월 25일 현재는 지원)
TR
데이터, 실시간 데이터, 체결잔고 데이터 등을 얻어올 수 있음.
CommGetData
메서드는 OpenAPI+
가 제공하는 메서드이므로 이를 파이썬에서 사용하려면 dynamicCall
메서드를 사용해야 함.
그리고 OpenAPI+
에는 수많은 TR
이 있으므로 CommGetData
의 첫 번째 인자와 세 번째 인자에 TR
명과 Request
명을 입력하여 어떤 TR
에 대한 데이터를 얻고자 하는지 알려줘야 함.
1 | def receive_trdata(self, screen_no, rqname, trcode, recordname, prev_next, data_len, err_code, msg1, msg2): |
위의 코드에서 receive_trdata
메서드는 OnReceiveTrData
이벤트가 발생할 때마다 자동으로 호출.
어떤 TR
요청에 의해 OnReceiveTrData
이벤트가 발생했는지를 확인하기 위해 먼저 사용자 Request 명(rqname)
을 확인.
앞서 CommRqData
를 통해 서버에 TR
을 송신 할 때 Request
명으로 opt10001_req
을 설정했으므로 receive_trdata
메서드에서는 rqname
값이 opt10001_req
인지 확인.
¶GetCommData
¶GetCommRealData
¶GetLoginInfo
계좌 개수, 계좌 번호, 사용자 ID, 사용자명등의 정보를 얻어올 수 있음.
1 | account_num = self.kiwoom.dynamicCall("GetLoginInfo(QString)", ["ACCNO"]) |
¶GetCodeListByMarket
종목 코드 목록을 얻어오는 메서드.
메서드의 인자로 시장 구분 코드를 문자열로 넘겨주면 메서드의 리턴 값으로 해당 시장에 속해 있는 종목들의 종목 코드 목록을 반환.
1 | ret = self.kiwoom.dynamicCall("GetCodeListByMarket(QString)", ["0"]) |
¶GetMasterCodeName
종목 코드로부터 한글 종목명을 얻기 위해 사용
1 | kospi_code_name_list = [] |
¶GetRepeatCnt
1 | def _get_repeat_cnt(self, trcode, rqname): |
¶SendOrder
주식 주문에 대한 정보를 서버로 전송.
다만, 증권사 서버에 주문 요청을 했다고 해서 즉시 체결되는 것이 아니므로 이벤트 루프를 사용해 대기하고 있어야 함.
총 9개의 인자를 받음
1 | def send_order(self, rqname, screen_no, acc_no, order_type, code, quantity, price, hoga, order_no): |
¶GetChejanData
체결잔고 데이터를 반환.
1 | def get_chejan_data(self, fid): |
get_chejan_data
메서드는 함수 인자인 FID
값을 통해 서로 다른 데이터를 얻을 수 있음.
더 자세한 FID
정보는 개발 가이드 8.19절
을 참조.
FID | 설명 |
---|---|
9203 | 주문번호 |
302 | 종목명 |
900 | 주문수량 |
901 | 주문가격 |
902 | 미체결수량 |
904 | 원주문번호 |
905 | 주문구분 |
908 | 주문/체결시간 |
909 | 체결번호 |
911 | 체결량 |
10 | 현재가, 체결가, 실시간 종가 |
¶SetInputValue
1 | def set_input_value(self, id, value): |