MyKiwoom
파이썬으로 만든 키움증권 시스템 트레이딩 프로그램입니다.
멀티프로세스와 큐를 적극 활용하여 분산 연산이 가능하며
초단타용 백테스터가 포함되어 있습니다.
UI
코드
- mykiwoom.py는 UI용 코드이며 UI관련 명령이 포함된 코드입니다.
- mykiwoom.bat는 프로그램을 실행하는 배치파일이며 반드시 관리자권한으로 실행해야합니다.
- backteser 폴더내에는 초단타용 백테스터가 포함되어 있습니다.
- backtester_vc.py는 초단타 전략을 변수의 범위를 지정하여 최적화 백테스트하는 코드입니다.
- backtester_vj.py는 초단타 전략의 변수를 지정하여 백테스트하는 코드입니다.
- database 폴더는 디비용 폴더이며 전략용 stg.db가 포함되어 있으며
- 백테스터용 backtest.db와 틱데이터 저장용 tick.db가 생성됩니다.
- login 폴더는 버전처리와 자동로그인 설정 파일입니다.
- versioupdater.bat는 버전 업그레이드용 파일입니다
- autologin1.py는 user.txt 파일에서 설정한 첫번째 계정 자동로그인 설정이며
- autologin2.py는 두번째 계정 자동로그인 설정입니다.
- user.txt는 계정 설정용 파일입니다.
- "고객아이디" 및 "공동인증서" 관련 오류창이 뜰 경우 "고객아이디 저장"를 체크 하신 후
- 수동으로 로그인을 한번 한 후에 재실행하시면 오류가 해결됩니다.
- trader 폴더는 자동매매용 코드입니다.
- 화면해상도 3440 x 1440에 최적화되어 있습니다.
- receiver.py는 두번째 계정으로 로그인되며 실시간데이터 수신용 클래스 파일입니다.
- collector.py는 receiver에서 받은 실시간데이터를 수신하여 기록용 클래스 파일입니다.
- strategy.py는 receiver에서 받은 실시간데이티로 전략 연산용 클래스 파일입니다.
- trader.py는 ocx가 선언된 클래스이며 TR 조회 및 주문, 잔고관리용 클래스 파일입니다.
- updater_chart.py는 ui에 표시될 차트 연산용 클래스 파일입니다.
- updater_hoga.py는 ui에 표시될 호가창 연산용 클래스 파일입니다.
- chartitem.py는 차트에 표시될 세부 아이템용 클래스 파일입니다.
- 전략과 관련된 코드는 모두 비공개상태입니다.
5. utility 폴더는 각종 설정 및 static 함수 파일입니다.
- setui.py는 pyqt5 라이브러리를 이용한 UI 설정 파일입니다.
- sound.py는 알림소리용 클래스 파일입니다.
- query.py는 데이터베이스 기록용 클래스 파일입니다.
- telegrammsg.py는 텔레그램 메세지용 클래스 파일입니다.
- UI 색상 및 글꼴을 변경하실려면 setting.py를 변경하시면 됩니다.
- 프로그램 작동 순서
- 두번째 계정으로 버전업그레이드
- 두번째 계정으로 자동로그인 설정
- 리시버 및 콜렉터 실행
- 30초 후 첫번째 계정으로 자동로그인 설정
- 전략연산 및 트레이더 실행
- 9시 1분까지 장운영시간 알림이 오지 않을 경우, 프로그램 및 컴퓨터 종료
- 10시 이후 앱이 종료될 경우 백테스터 실행 후 프로그램 및 컴퓨터 종료
설정방법
- 기본 환경은 miniconda 32bit python 3.9버전입니다.
- https://repo.anaconda.com/miniconda/Miniconda3-py39_4.10.3-Windows-x86.exe
- 미니콘다 환경에서 추가로 설치할 라이브러리는 다음과 같습니다.
- pip install psutil pyqt5 pandas pyttsx3 pyqtgraph matplotlib BeautifulSoup4 lxml python-telegram-bot
- login/user.txt 파일에 계정 두개 설정
- utility/setting.py 파일에 각종 경로 설정
4. mykiwoom.bat 파일을 열어서 두번째줄 경로 수정
- 설정이 올바르게 되었다면, 데이터베이스에 필요한 테이블이 만들어지고
- OPENAPI 로그인 후 정상적으로 프로그램이 구동됩니다.
- 여기서부터 장운영시간 알림을 받아 프로그램이 단계별로 작동됩니다.
- 시스템설정탭에서 텔레그램 토큰 및 사용자 아이디를 설정합니다.
- 설정탭의 ON/OFF 버튼을 제외한 버튼은 한번 실행 또는 클릭하면 바탕이 어둡게 변합니다.
- ON/OFF 버튼은 상태에 따라 버튼명이 변합니다.
- 윈도우 cmd 창을 닫아 모든 프로그램을 종료합니다.
- 키움증권 HTS를 실행하여 조건검색식 0번 1번 두개를 만듭니다.
- 0번은 시가총액10조원이하, 관리종목 제외, 거래대금상위 100종목
- 1번은 시가총액10조원이하, 관리종목 제외
- mykiwoom.bat 재실행합니다.
- 구동 완료 후 텔레그램으로 "자동매매 시스템을 시작하였습니다."라는
- 메세지가 수신되면 텔레그램 정보가 올바르게 설정된 겁니다.
- 로그 및 설정 위젯 우측 하단에 버튼이 세개있습니다.
- 차트탭변경 버튼은 지수차트 및 종목차트의 탭 상태를 변경합니다.
- 차트유형변경 버튼은 두종목차트 >> 한종목차트 >> 복기차트 순으로 변경됩니다.
- 창크기변경 버튼은 UI의 크기를 최소모드, 최대모드로 변경합니다.
- 각종목록의 첫번째 칼럼 클릭시 차트1 및 호가창1이 표시되고 두번째 칼럼 클릭시 차트2 및 호가창2가 표시됩니다.
- 테이블위젯을 한 번 클릭 후 화살표키로 선택된 셀을 이동하여 엔터키를 누르면 마우스 클릭과 같은 명령이 실행됩니다.
- 한종목 집중모드에서는 차트 호가창 이외에 기업개요, 뉴스, 공시, 투자자별 매매동향, 재무재표, 체결강도 추이까지 표시됩니다.
- 복기차트 모드시 데이터베이스에 저장된 체결목록을 불러와서 차트에 매수 및 매도가격를 표시합니다.
- 거래목록탭에서 달력의 날짜를 클릭하면 해당 날짜의 거래목록을 불러옵니다.
- 수익현황 탭에서는 기간별 집계를 구분하였습니다.
- 테스트모드 ON으로 변경하면 로그인 후 아무런 명령이 실행되지 않고
- 시스템설정에 버튼들을 누르면 각각의 명령이 하나씩 실행됩니다.
- 모의투자 ON 상태는 실서버에 접속해서 테스트 하지만, 실제 매매가 이뤄지지 않고 매도수를 기록합니다.
- 모의투자 OFF 상태에서만 실제 매매 주문이 전송됩니다.
- 차트는 마우스 좌클릭으로 드래그하면 선택한 영역이 줌인됩니다.
- 줌아웃은 마우스 우클릭하시면 됩니다.
- 차트 캔들 영역 좌측 하단은 십자선 기준가격 및 전일대비 십자선 등락율이 표시됩니다.
- 호가창
- 호가창 우측 상단의 금액을 선택하여 매수주문 영역에 마우스를 클릭하면 매수주문이 전송됩니다.
- 호가창 좌측 상단의 퍼센트를 선택하여 매도주문 영역에 마우스를 클릭하면 매도주문이 전송됩니다.
- 시장가 매도수와 매도수 취소 버튼은 버튼의 설명 그대로 명령이 실행됩니다.
- 미체결 수량이 남아 있으면 매도주문, 매수주문 영역에 남은 수량이 표시됩니다.
- 키움증권 8282 호가주문창과 거의 동일하지만, 중복 및 복수 주문은 되지 않으니 착오없으시길 바랍니다.
- 텔레그램 사용자 버튼은 아래와 같이 4개로 설정되어 있습니다.