在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:elbakramer/koapy开源软件地址:https://github.com/elbakramer/koapy开源编程语言:Python 99.6%开源软件介绍:KOAPYKiwoom Open Api Plus Python
IntroductionKOAPY 는 키움증권의 OpenAPI+ 를 Python 에서 쉽게 사용할 수 있도록 만든 라이브러리 패키지 및 툴입니다. 키움에서 제공하는 OpenAPI+ 를 활용하는데 필요한 구체적인 지식들을 전혀 알지 못해도, 기본적인 Python 에 대한 지식만 어느 정도 있다면 쉽게 사용할 수 있도록 하는 것에 초점을 두었습니다. 예를 들어 Python 기준으로 아래와 같은 내용들을 잘 모르더라도 충분히 모든 기능을 사용할 수 있음을 의미합니다.
Showcase테이블 데이터 처리를 위한 pandas 임포트>>> import pandas as pd 엔트리포인트 객체 생성>>> from koapy import KiwoomOpenApiPlusEntrypoint >>> entrypoint = KiwoomOpenApiPlusEntrypoint() 키움증권 서버와의 연결 확인 및 로그인 처리>>> entrypoint.IsConnected()
False
>>> entrypoint.EnsureConnected()
True
>>> entrypoint.IsConnected()
True 종목 리스트 및 종목 코드와 이름 확인>>> code_list = entrypoint.GetCodeListByMarketAsList("0")
>>> code_list
['000020', '000040', '000050', '000060', '000070', ...] >>> name_list = [entrypoint.GetMasterCodeName(code) for code in code_list]
>>> name_list
['동화약품', 'KR모터스', '경방', '메리츠화재', '삼양홀딩스', ...] >>> code_by_name = {name: code for code, name in zip(code_list, name_list)} >>> name = "삼성전자"
>>> code = code_by_name[name]
>>> code
'005930' 단일 종목의 기본정보 확인>>> info = entrypoint.GetStockBasicInfoAsDict(code)
>>> info
{'종목코드': '005930', '종목명': '삼성전자', '결산월': '12', '액면가': '100', '자본금': '7780', '상장주식': '5969783', '신용비율': '+0.12', '연중최고': '+79800', '연중최저': '-71200', '시가총액': '4417639', '시가총액비중': '', '외인소진률': '+52.09', '대용가': '57170', 'PER': '19.27', 'EPS': '3841', 'ROE': '10.0', 'PBR': '1.88', 'EV': '5.09', 'BPS': '39406', '매출액': '2368070', '영업이익': '359939', '당기순이익': '264078', '250최고': '+86400', '250최저': '-68300', '시가': '+74300', '고가': '+74600', '저가': '+73400', '상한가': '+95200', '하한가': '-51400', '기준가': '73300', '예상체결가': '-0', '예상체결수량': '0', '250최고가일': '20210202', '250최고가대비율': '-14.35', '250최저가일': '20211013', '250최저가대비율': '+8.35', '현재가': '+74000', '대비기호': '2', '전일대비': '+700', '등락율': '+0.95', '거래량': '12730034', '거래대비': '-71.74', '액면가단위': '원', '유통주식': '4459119', '유통비율': '74.7'} 복수 종목의 기본정보 확인>>> code_list_info = entrypoint.GetStockQuoteInfoAsDataFrame(code_list)
>>> code_list_info
종목코드 종목명 현재가 기준가 전일대비 전일대비기호 등락율 \
0 000020 동화약품 +12450 12300 +150 2 +1.22
1 000040 KR모터스 +810 790 +20 2 +2.53
2 000050 경방 +14450 14200 +250 2 +1.76
3 000060 메리츠화재 49450 49450 0 3 0.00
4 000070 삼양홀딩스 +90700 88400 +2300 2 +2.60
... ... ... ... ... ... ... ...
1744 580031 KB 인버스 KOSDAQ150 선물 ETN -10930 10960 -30 5 -0.27
1745 580032 KB 레버리지 구리 선물 ETN(H) -20515 20560 -45 5 -0.22
1746 580033 KB 인버스 2X 구리 선물 ETN(H) +18350 18280 +70 2 +0.38
1747 580010 KB Wise 분할매매 ETN +10820 10770 +50 2 +0.46
1748 590018 미래에셋 중국 심천 100 ETN +18810 18645 +165 2 +0.88
거래량 거래대금 체결량 ... ELW만기일 미결제약정 미결제전일대비 이론가 내재변동성 델타 감마 쎄타 베가 \
0 135513 1670 +500 ... 00000000
1 230165 186 -10 ... 00000000
2 6214 89 97 ... 00000000
3 411584 20423 -4 ... 00000000
4 9052 813 +5 ... 00000000
... ... ... ... ... ... ... ... .. ... .. .. .. ..
1744 2 0 -1 ... 00000000
1745 0 0 ... 00000000
1746 17 0 +10 ... 00000000
1747 0 0 ... 00000000
1748 1 0 +1 ... 00000000
로
0
1
2
3
4
... ..
1744
1745
1746
1747
1748
[1749 rows x 63 columns] 특정 종목의 차트 데이터 확인>>> chart_data = entrypoint.GetDailyStockDataAsDataFrame(code)
>>> chart_data
종목코드 현재가 거래량 거래대금 일자 시가 고가 저가 수정주가구분 \
0 005930 74000 12730034 941413 20220204 74300 74600 73400
1 73300 17744721 1314506 20220203 74900 74900 73300
2 73300 21367447 1552586 20220128 71300 73700 71200
3 71300 22274777 1603685 20220127 73800 74000 71300
4 73300 12976730 955547 20220126 73900 74400 73100
... ... ... ... ... ... ... ... ... ...
9797 8010 4970 1 19850109 8240 8240 7950
9798 8300 12930 4 19850108 8400 8400 8300
9799 8410 11810 3 19850107 8400 8500 8390
9800 8390 1660 0 19850105 8400 8440 8390
9801 8450 1710 0 19850104 8500 8500 8450
수정비율 대업종구분 소업종구분 종목정보 수정주가이벤트 전일종가
0
1
2
3
4
... ... ... ... ... ... ...
9797
9798
9799
9800
9801
[9802 rows x 15 columns] 키움증권의 TR 메타 정보 확인>>> from koapy import KiwoomOpenApiPlusTrInfo >>> tr_info_list = KiwoomOpenApiPlusTrInfo.get_trinfo_list() >>> data = pd.DataFrame.from_records([(info.tr_code, info.name) for info in tr_info_list], columns=['tr_code', 'name'])
>>> data
tr_code name
0 opt10001 주식기본정보요청
1 opt10059 종목별투자자기관별요청
2 opt10087 시간외단일가요청
3 opt50037 코스피200지수요청
4 opt90005 프로그램매매추이요청
.. ... ...
220 opw20013 계좌미결제청산가능수량조회요청
221 opw20014 선옵실시간증거금산출요청
222 opw20015 옵션매도주문증거금현황요청
223 opw20016 신용융자 가능종목요청
224 opw20017 신용융자 가능문의
[225 rows x 2 columns] OPT10001 TR 요청 전송 및 응답 처리 (싱글데이터)>>> opt10001_info = KiwoomOpenApiPlusTrInfo.get_trinfo_by_code("opt10001")
>>> opt10001_info
KiwoomOpenApiPlusTrInfo('opt10001', '주식기본정보요청', 'STOCK', '', '1', '', [KiwoomOpenApiPlusTrInfo.Field('종목코드', 0, 6, 9001)], '주식기본정보', [KiwoomOpenApiPlusTrInfo.Field('종목코드', 0, 20, 389), KiwoomOpenApiPlusTrInfo.Field('종목명', 20, 50, 302), KiwoomOpenApiPlusTrInfo.Field('결산월', 40, 20, 315), KiwoomOpenApiPlusTrInfo.Field('액면가', 60, 20, 310), KiwoomOpenApiPlusTrInfo.Field('자본금', 80, 20, 309), KiwoomOpenApiPlusTrInfo.Field('상장주식', 100, 20, 312), KiwoomOpenApiPlusTrInfo.Field('신용비율', 120, 20, 329), KiwoomOpenApiPlusTrInfo.Field('연중최고', 140, 20, 1006), KiwoomOpenApiPlusTrInfo.Field('연중최저', 160, 20, 1009), KiwoomOpenApiPlusTrInfo.Field('시가총액', 180, 20, 311), KiwoomOpenApiPlusTrInfo.Field('시가총액비중', 200, 20, 336), KiwoomOpenApiPlusTrInfo.Field('외인소진률', 220, 20, 314), KiwoomOpenApiPlusTrInfo.Field('대용가', 240, 20, 308), KiwoomOpenApiPlusTrInfo.Field('PER', 260, 20, 1600), KiwoomOpenApiPlusTrInfo.Field('EPS', 280, 20, 1604), KiwoomOpenApiPlusTrInfo.Field('ROE', 300, 20, 1630), KiwoomOpenApiPlusTrInfo.Field('PBR', 320, 20, 1601), KiwoomOpenApiPlusTrInfo.Field('EV', 340, 20, 1608), KiwoomOpenApiPlusTrInfo.Field('BPS', 360, 20, 1605), KiwoomOpenApiPlusTrInfo.Field('매출액', 380, 20, 1610), KiwoomOpenApiPlusTrInfo.Field('영업이익', 400, 20, 1611), KiwoomOpenApiPlusTrInfo.Field('당기순이익', 420, 20, 1614), KiwoomOpenApiPlusTrInfo.Field('250최고', 440, 20, 1000), KiwoomOpenApiPlusTrInfo.Field('250최저', 460, 20, 1003), KiwoomOpenApiPlusTrInfo.Field('시가', 480, 20, 16), KiwoomOpenApiPlusTrInfo.Field('고가', 500, 20, 17), KiwoomOpenApiPlusTrInfo.Field('저가', 520, 20, 18), KiwoomOpenApiPlusTrInfo.Field('상한가', 540, 20, 305), KiwoomOpenApiPlusTrInfo.Field('하한가', 560, 20, 306), KiwoomOpenApiPlusTrInfo.Field('기준가', 580, 20, 307), KiwoomOpenApiPlusTrInfo.Field('예상체결가', 600, 20, 10023), KiwoomOpenApiPlusTrInfo.Field('예상체결수량', 620, 20, 10024), KiwoomOpenApiPlusTrInfo.Field('250최고가일', 640, 20, 1001), KiwoomOpenApiPlusTrInfo.Field('250최고가대비율', 660, 20, 1002), KiwoomOpenApiPlusTrInfo.Field('250최저가일', 680, 20, 1004), KiwoomOpenApiPlusTrInfo.Field('250최저가대비율', 700, 20, 1005), KiwoomOpenApiPlusTrInfo.Field('현재가', 720, 20, 10), KiwoomOpenApiPlusTrInfo.Field('대비기호', 740, 20, 25), KiwoomOpenApiPlusTrInfo.Field('전일대비', 760, 20, 11), KiwoomOpenApiPlusTrInfo.Field('등락율', 780, 20, 12), KiwoomOpenApiPlusTrInfo.Field('거래량', 800, 20, 13), KiwoomOpenApiPlusTrInfo.Field('거래대비', 820, 20, 30), KiwoomOpenApiPlusTrInfo.Field('액면가단위', 840, 20, 796), KiwoomOpenApiPlusTrInfo.Field('유통주식', 840, 20, 1683), KiwoomOpenApiPlusTrInfo.Field('유통비율', 840, 20, 1684)], '', [])
>>> opt10001_info.inputs
[KiwoomOpenApiPlusTrInfo.Field('종목코드', 0, 6, 9001)]
>>> opt10001_info.single_outputs
[KiwoomOpenApiPlusTrInfo.Field('종목코드', 0, 20, 389), KiwoomOpenApiPlusTrInfo.Field('종목명', 20, 50, 302), KiwoomOpenApiPlusTrInfo.Field('결산월', 40, 20, 315), KiwoomOpenApiPlusTrInfo.Field('액면가', 60, 20, 310), KiwoomOpenApiPlusTrInfo.Field('자본금', 80, 20, 309), KiwoomOpenApiPlusTrInfo.Field('상장주식', 100, 20, 312), KiwoomOpenApiPlusTrInfo.Field('신용비율', 120, 20, 329), KiwoomOpenApiPlusTrInfo.Field('연중최고', 140, 20, 1006), KiwoomOpenApiPlusTrInfo.Field('연중최저', 160, 20, 1009), KiwoomOpenApiPlusTrInfo.Field('시가총액', 180, 20, 311), KiwoomOpenApiPlusTrInfo.Field('시가총액비중', 200, 20, 336), KiwoomOpenApiPlusTrInfo.Field('외인소진률', 220, 20, 314), KiwoomOpenApiPlusTrInfo.Field('대용가', 240, 20, 308), KiwoomOpenApiPlusTrInfo.Field('PER', 260, 20, 1600), KiwoomOpenApiPlusTrInfo.Field('EPS', 280, 20, 1 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论