본문 바로가기

키움 OpenAPI

키움증권 OpenAPI 파이썬 퀀트 프로그래밍: 코스피 코스닥 리스트 가져오기

콤보박스, 버튼 그리고 텍스트창 간단히 세가지 툴킷을 이용하여 코스피/코스닥 종목 코드와 이름을 가져오는 프로그램을 짰다. 이전에 사용했던 opt10001.py를 재활용하여 추가할 건 추가하고 삭제할 건 삭제하였다.

 

장 선택 콤보박스

	def initUI(self):
        ...
        self.Market_combo = QComboBox(self)
		self.Market_combo.addItem('코스피')
		self.Market_combo.addItem('코스닥')
		self.Market_combo.setGeometry(20, 20, 130, 30)
		self.Market_combo.activated[str].connect(self.market_combo_activated)
        
	def market_combo_activated(self, text):
		if text == "코스피":
			self.sMarket = "0"		# kospi
		else:
			self.sMarket = "10"		# kosdaq

QComboBox를 사용하여 코스피, 코스닥 두개 아이템을 추가하고 콤보박스 시그널을 추가하여 아이템이 선택되었을 때 문자열 비교를 통해 코스피이면 "0"을 코스닥이면 "10"을 설정했다. 이 숫자 문자열 코드값은 추후 GetCodeListByMarket(QString) 함수에 인자로 넘겨주게 된다.

	def jongmok_button_clicked(self):
		self.JongMok_result.clear()
		ret = self.kiwoom.dynamicCall("GetCodeListByMarket(QString)", [self.sMarket])
		code_list = ret.split(';')
		if len(code_list) > 1:
			code_list = code_list[:-1] # remove last null item due to split(';')
		name_list = []
		count = 0

		for x in code_list:
			count = count + 1
			name = self.kiwoom.dynamicCall("GetMasterCodeName(QString)", [x])
			name_list.append(x + " : " + name)
			self.JongMok_result.append(str(count) + " " + x + " : " + name)
		self.JongMok_result.append("전체: " + str(len(name_list)) + " 개 검색")

버튼을 클릭했을 때 호출되는 함수다. GetCodeListByMarket() 에서 받아온 코드 리스트는 ';'문자로 구분되는데 맨마지막에 ';'문자가 붙어오므로 split을 하게되면 맨 마지막 아이템이 null문자열을 가지게 된다. 그래서 code_list[:-1]로 맨마지막 아이템을 제거해 주었다. 이후에 받아온 code_list배열을 루프를 돌면서 종목이름을 받아와서 QTextEdit위젯에 정보를 다음 그림과 같이 뿌리게 된다.

 

github 소스코드

전체 소스코드는 다음 위치에서 받을 수 있습니다.

https://github.com/mole-cricket/kiwoom-openapi

 

mole-cricket/kiwoom-openapi

Contribute to mole-cricket/kiwoom-openapi development by creating an account on GitHub.

github.com

링크

키움 OpenAPI 개발 가이드: https://download.kiwoom.com/web/openapi/kiwoom_openapi_plus_devguide_ver_1.5.pdf