Kiwoom API를 이용한 주식 자동매매 프로그램 입니다.
- 프로젝트 이름 : 웹 크롤링과 자연어분석을 통한 주식 자동매매 프로그램
- 개발 배경 : 코인뿐만 아니라 주식까지도 자동매매를 제작해보고 싶어 기획하게 되었습니다.
- 개발 언어 : Python
- 프론트 : React, Electron
- 백엔드 : Flask, 키움증권 API
- 키움증권 API를 이용하여 주식 자동매매 프로그램을 제작하였습니다.
- 현재 Mac 환경을 지원해 주는 HTS가 없기에 윈도우에 서버를 두고 맥북으로도 주식매매를 이용할 수 있도록 만들고자 하였습니다.
- 과거 차트 데이터를 통해서 사용자가 직접 백테스팅을 할 수 있는 기능까지 추가하여 자동매매를 실행할 수 있습니다.
- 기존 증권사들의 HTS는 Window 환경에서만 사용가능하고, MAC 사용자들은 사용할 수 없다는 문제점을 해결하기 위해 데스크톱 앱으로 제작하였습니다.
- 적정주가 계산기 기능을 추가하여 사용자에게 제공합니다.
- 키움증권 모의투자 계좌를 통해 실제매매 진행
- 2023.03.27 - 2023.06.10
- 홍영환 - 백엔드 (Flask), 키움증권 API , 백테스팅 , 자동매매
- 조준희 - 프론트 (React Electron)
- 김현욱 - 적정주가 계산기
- 키움증권 로그인
- 주식 사용자 매도, 매수 (시장가, 지정가)
- 볼린저밴드 값, 익절% 손절%에 따른 자동매매
- 실시간 주식 정보
- 매매기록
- 자동매매 체결 내역
- 볼린저밴드를 사용한 백테스팅
- 백테스팅 결과 내역
- 주식관련 뉴스
- 증권사 차트 및 부가기능
- 주식 상세정보
- 주식 포트폴리오
![]() |
![]() |
|---|---|
| 주문 | 자동매매 |
![]() |
![]() |
|---|---|
| 백테스팅 | 매매기록 |
![]() |
![]() |
![]() |
|---|---|---|
| 주식 상세정보 | 주식 차트 | 주식 뉴스 |
국내 증권사 API 사용하려면 32비트 버전 파이썬 인터프리터 사용
Anaconda Python 버전
Python 3.9
pip 설치목록
pandaspyqt5matplotlibpywin32CORSThreadtimenumpysys
- 32비트 버전 가상환경 설치
- 키움 api 동기방식 때문에 값 받아오기 어려움.
- 키움 api를 통해 값을 요청할 때 요청을 하면 비동기로 바로 값을 리턴해주는게 아니라 따로 이벤트 요청함수를 연결시켜야 값을 받아옴. 그래서 이벤트 요청을 연속적으로 하면 받아오는 값이 섞이는 경우가 발생함 → flag변수를 통해서 해결
- Flask와 FastApi에서 Flask를 선택한 이유도 위와같은 이유로 충돌발생 (flaks는 동기방식 기반)
- PyQt5는 비동기 방식으로 무한루프를 돌며 실행됨. 하지만 Kiwoom은 동기방식, 그리고 Flask에서 요청이 들어오고 처리되는 것도 동기방식이라 충돌을 해결하기 어려웠음.
- 자동매매를 돌리려면 쓰레드 한개를 사용해야함. 처음에 메인쓰레드에서 값 요청과 자동매매를 함께 돌리려고 했는데 동기방식이라 쓰레드를 따로 한개 만듬. 그래서 총 메인 Flask에서 한개, 키움증권 1개, 자동매매 1개를 사용.
- 주식시장이 활성화되는 시간 9시 ~ 3시30분 까지만 테스트를 할 수 있다는 불편함.






