티스토리 뷰

서론


파이썬(Python)을 공부하게 된 직접적인 계기가 바로 증권 데이터를 활용하는 코드를 구현하고 싶어서입니다. 기존에 제가 익숙한 다른 언어가 아닌 요즘 많이들 사용하는 파이썬(Python)을 활용해서 구현하고 싶었습니다. 파이썬(Python)을 통해 키움증권 Open API를 활용하는 방법에 대해서 포스팅을 시작하려합니다.

파이썬(Python) 키움증권 Open API (2) - 조건식 조회

파이썬(Python) 키움증권 Open API (2) - 조건식 조회
파이썬(Python) 을 통해 키움증권 Open API 를 활용한 코드 구현하는 포스팅입니다. 이번 포스팅에서는 로그인한 계정의 조건식을 조회하고 조건식에 해당하는 종목 코드를 읽어오는 코드를 구현해보도록 하겠습니다. 조건식의 경우 키움증권 HTS인 영웅문4를 통해 설정할 수 있습니다.
https://joel-helloworld.tistory.com/75

1. 사전 준비


키움증권
(필수) 해외선물옵션 실시간 반대매매 위험고지 해외선물옵션 실시간 반대매매 위험고지 해외선물옵션 실시간 반대매매 위험고지
https://www.kiwoom.com/h/customer/download/VOpenApiInfoView
💡
위 링크에 접속해서 사용 신청하러 가기를 눌러주세요. 간단한 절차로 서비스를 등록할 수 있습니다.

💡
이후 키움 Open API+ 모듈 다운로드를 눌러서 다운로드 해주세요.

💡
KOA Studio 다운로드도 진행해주세요.

💡
C:\OpenAPI 경로에 KOA Studio 다운로드 파일을 옮겨주세요.

💡
같은 경로에 있는 opversionup.exe 파일을 관리자 권한으로 실행해주세요.

💡
KOAStudioSA.exe 를 실행하여 파일Open API 접속 메뉴를 선택하여 로그인을 해봅니다. 참고로 KOA Studio의 경우 모의 투자 신청된 계정만 로그인 가능합니다.

제 31회 키움증권 대학생 모투대회
참가하면 100% 경품 증정! 장학금, 인턴쉽, 아이패드, 닌텐도 등 풍성한 혜택 가득!
https://www.kiwoom.com/h/mock/ordinary/VMockTotalMHOMEView?dummyVal=0
💡
모의 투자의 경우 위 링크를 클릭한 뒤 상시모의투자 참가신청더 알아보기를 클릭해주세요.

2. 파이썬으로 키움증권 Open API 시작하기


💡
pykiwoom 모듈이라는 키움증권 Open API를 파이썬에서 보다 쉽게 사용할 수 있도록 하는 모듈이 있습니다. 해당 모듈을 설치합니다. pip install pykiwoom
pykiwoom
python wrapper for Kiwoom Open API+ (Korea Stock Market)
https://pypi.org/project/pykiwoom/

2-1 로그인


from pykiwoom.kiwoom import *

kiwoom = Kiwoom()
kiwoom.CommConnect(block=True)
💡
키움증권 로그인창을 실행합니다. block을 True로 설정하면 로그인이 완료될 때까지 다음 줄의 코드가 수행되지 않고 블로킹됩니다.

💡
실행 시 출력되는 키움증권 로그인 화면입니다.

2-2 사용자 정보 얻어오기


from pykiwoom.kiwoom import *

kiwoom = Kiwoom()
kiwoom.CommConnect(block=True)

account_num = kiwoom.GetLoginInfo('ACCOUNT_CNT') # 전체 계좌수
accounts = kiwoom.GetLoginInfo('ACCNO')          # 전체 계좌 리스트
user_id = kiwoom.GetLoginInfo('USER_ID')         # 사용자 ID
user_name = kiwoom.GetLoginInfo('USER_NAME')     # 사용자명
keyboard = kiwoom.GetLoginInfo('KEY_BSECGB')     # 키보드보안 해지여부
firewall = kiwoom.GetLoginInfo('FIREW_SECGB')    # 방화벽 설정 여부

print(account_num)
print(accounts)
print(user_id)
print(user_name)
print(keyboard)
print(firewall)
💡
로그인한 이후에 사용자 정보를 얻어올 수 있습니다.
💡
ACCOUNT_CNT → 전체 계좌 수 ACCNO → 전체 계좌 리스트 USER_ID → 사용자 ID USER_NAME → 사용자 명 KEY_BSECGB → 키보드보안 해지 여부 FIREW_SECGB → 방화벽 설정 여부

2-3 종목 코드 얻기 (코스피, 코스닥, ETF 전체 종목)


from pykiwoom.kiwoom import *

kiwoom = Kiwoom()
kiwoom.CommConnect(block=True)

kospi = kiwoom.GetCodeListByMarket('0')
kosdaq = kiwoom.GetCodeListByMarket('10')
etf = kiwoom.GetCodeListByMarket('8')

print(len(kospi), kospi)
print(len(kosdaq), kosdaq)
print(len(etf), etf)
💡
코스피, 코스닥, ETF에 상장된 모든 종목에 대한 종목 코드를 출력하는 코드입니다.
💡
코스피 → 0 ELW → 3 뮤추얼펀드 → 4 신주인수권 → 5 리츠 → 6 ETF → 8 하이얼펀드 → 9 코스닥 → 10 K-OTC → 30 코넥스 → 50

2-4 종목명 얻기


from pykiwoom.kiwoom import *

kiwoom = Kiwoom()
kiwoom.CommConnect(block=True)

name = kiwoom.GetMasterCodeName('005930')
print(name)
💡
종목 코드에 대한 종목 명을 얻어오는 코드입니다. 예제로 삼성전자의 종목 코드인 005930을 구현했습니다.

2-5 종목 별 전일가


from pykiwoom.kiwoom import *

kiwoom = Kiwoom()
kiwoom.CommConnect(block=True)

lastDayPrice = kiwoom.GetMasterLastPrice('005930')
print(lastDayPrice)
💡
종목 코드에 대한 전일가를 얻어오는 코드입니다. 예제로 삼성전자의 종목 코드인 005930을 구현했습니다.

2-6 테마 그룹에 대한 코드 구하기


from pykiwoom.kiwoom import *

kiwoom = Kiwoom()
kiwoom.CommConnect(block=True)

group = kiwoom.GetThemeGroupList(1)
print(group)
💡
테마 그룹에 대한 코드들을 얻어올 수 있습니다.
💡
<결과> → 각 테마에 대한 코드를 얻어올 수 있습니다. '2차전지_소재(양극화물질등)': '141', '2차전지_완제품': '140', 'AMOLED_소재': '571', 'AMOLED_장비': '570', 'Cheap-Chic_저가실용품': '830', 'FPCB(연성회로기판)': '501', 'LCD_부품': '562', 'LCD_소재': '561', 'LCD_장비': '560', 'LED': '572', 'LPG(액화석유가스)': '600', 'PCB(인쇄회로기판)': '500', 'SI(시스템통합)': '458', 'SNS(Social Network Service)': '452', 'U-헬스케어': '353', '가구': '250', '강관': '170', '거푸집': '202', '건강식품': '319', '건설_국내주택': '201', '건설_해외건설': '200', '게임_모바일': '471', '게임_온라인': '470', '곡물가공품_설탕/밀가루/유지': '312', '교육': '270', '그린카_하이브리드카/전기차': '245', '금형/몰드베이스': '160', '기계_건설기계': '210', '기계_공작기계': '211', '네트워크/광통신': '480', '도시가스': '610', '라면': '316', '로봇_지능형': '213', '모바일솔루션': '456', '무선충전기관련주': '517', '미디어_디지털방송전환': '281', '미디어_방송광고': '280', '바이오_디젤/에탄올': '130', '바이오_바이오시밀러/베터': '360', '바이오_유전체분석': '363', '바이오_줄기세포치료제': '361', '바이오_진단/백신': '362', '반도체_생산': '550', '반도체_설계(fabless)': '551', '반도체_시스템반도체': '557', '반도체_전공정소재': '556', '반도체_전공정장비': '555', '반도체_후공정': '552', '반도체_후공정소재': '554', '반도체_후공정장비': '553', '방위산업': '212', '배합사료': '313', '백화점': '290', '보안_인터넷': '453', '보험_생명보험': '420', '보험_손해보험': '421', '부탄가스': '611', '비철금속주': '171', '빙과': '315', '셋톱박스': '530', '소프트웨어_자동차용': '459', '수산물/수산가공품': '310', '슈퍼박테리아': '364', '스마트 그리드': '810', '스마트폰_삼성전자관련주': '515', '스마트폰_애플 관련주': '516', '시멘트': '203', '식자재유통': '318', '신약개발/기술수출': '370', '에니메이션': '286', '엔젤산업': '820', '엔지니어링 플라스틱': '154', '여행': '261', '온실가스배 출저감': '800', '우주항공': '214', '운송_육상운송': '232', '운송_항공': '230', '운송_해운': '231', '원자력_기자재': '110', '원자력_설계시공': '111', '유가공': '314', '육계': '311', '은행': '400', '의료기기': '351', '의료기기_안과': '352', '의료기기_치아': '350', '의복_OEM': '256', '의복_아웃도어': '255', '자동차_블랙박스관련주': '242', '자동차_전장화 수혜': '241', '자동차_차량경량화 수혜': '240', '자동차_차량용 반도체': '243', '자원개발 E&P': '215', '전기자전거': '262', '전자결제': '454', '전자결제_B2B': '455', '전자책_e-book': '450', '제과스낵': '317', '제지_골판지': '180', '제지_기타': '181', '조선_Eco선': '223', '조선_LNG보냉재': '220', '조 선_해양플랜트': '222', '조선_해양플랜트기자재': '221', '주류': '300', '중국_내수소비 확대': '910', '증권': '430', '창투': '410', '카지노': '260', '컨텐츠_메니지먼 트': '284', '컨텐츠_영상': '282', '컨텐츠_음원': '283', '컨텐츠_한류': '285', '컴퓨터전화통합(CTI)': '451', '코스닥_라이징스타': '920', '코스닥_히든챔피언': '900', '클라우드 컴퓨팅': '457', '타이어': '244', '탄소섬유': '153', '태블릿 PC': '520', '태양광_발전/설치/운영': '103', '태양광_부품/소재/장비': '102', '태양광_잉곳/웨 이퍼/셀/모듈': '101', '태양광_폴리실리콘': '100', '통신장비': '481', '폐기물처리': '850', '풍력_단조/기자재': '121', '합금철': '172', '합성고무': '152', '합성섬유_원료': '151', '합성수지': '150', '홈쇼핑': '291', '화력_발전기자재': '120', '화장품': '330', '환경산업': '840', '휴대폰_RF부품': '511', '휴대폰_베트남현지법인': '518', '휴대폰_수동부품': '510', '휴대폰_카메라': '514', '휴대폰_케이스/기구물': '513', '휴대폰_터치스크린': '512', '희소금속': '173'

2-7 특정 테마에 해당하는 종목 코드


from pykiwoom.kiwoom import *
import pprint

kiwoom = Kiwoom()
kiwoom.CommConnect(block=True)

tickers = kiwoom.GetThemeGroupCode('141')
print(tickers)
💡
테마 코드에 속한 종목 코드를 얻어오는 코드입니다. 2차전지_소재(양극화물질등)에 대한 테마 코드인 141을 전달하여 구현했습니다.
💡
<결과> ['004000', '009830', '078930', '005420', '005070', '066970', '102710', '036830', '161000', '093370', '047310', '054210', '131100', '131390', '091580']

마무리


파이썬(Python)을 통해 키움증권 Open API를 활용하는 방법에 대한 첫번째 포스팅이었습니다. 기본적인 기능들에 대한 설명 위주로 포스팅을 하게되었는데요. 다음 포스팅에서는 좀 더 응용된 동작을 구현하는 방법에 대해서 이어가도록 하겠습니다.

파이썬(Python) 키움증권 Open API (2) - 조건식 조회

파이썬(Python) 키움증권 Open API (2) - 조건식 조회
파이썬(Python) 을 통해 키움증권 Open API 를 활용한 코드 구현하는 포스팅입니다. 이번 포스팅에서는 로그인한 계정의 조건식을 조회하고 조건식에 해당하는 종목 코드를 읽어오는 코드를 구현해보도록 하겠습니다. 조건식의 경우 키움증권 HTS인 영웅문4를 통해 설정할 수 있습니다.
https://joel-helloworld.tistory.com/75


Uploaded by N2T

댓글