서론 파이썬(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