/MyKiwoom

키움증권 시스템 트레이딩

Primary LanguagePythonOtherNOASSERTION

MyKiwoom

파이썬으로 만든 키움증권 시스템 트레이딩 프로그램입니다.

멀티프로세스와 큐를 적극 활용하여 분산 연산이 가능하며

초단타용 백테스터가 포함되어 있습니다.

UI

화면 캡처 2021-08-31 045712

코드

  1. mykiwoom.py는 UI용 코드이며 UI관련 명령이 포함된 코드입니다.
  • mykiwoom.bat는 프로그램을 실행하는 배치파일이며 반드시 관리자권한으로 실행해야합니다.
  1. backteser 폴더내에는 초단타용 백테스터가 포함되어 있습니다.
  • backtester_vc.py는 초단타 전략을 변수의 범위를 지정하여 최적화 백테스트하는 코드입니다.
  • backtester_vj.py는 초단타 전략의 변수를 지정하여 백테스트하는 코드입니다.
  1. database 폴더는 디비용 폴더이며 전략용 stg.db가 포함되어 있으며
  • 백테스터용 backtest.db와 틱데이터 저장용 tick.db가 생성됩니다.
  1. login 폴더는 버전처리와 자동로그인 설정 파일입니다.
  • versioupdater.bat는 버전 업그레이드용 파일입니다
  • autologin1.py는 user.txt 파일에서 설정한 첫번째 계정 자동로그인 설정이며
  • autologin2.py는 두번째 계정 자동로그인 설정입니다.
  • user.txt는 계정 설정용 파일입니다.
  • "고객아이디" 및 "공동인증서" 관련 오류창이 뜰 경우 "고객아이디 저장"를 체크 하신 후
  • 수동으로 로그인을 한번 한 후에 재실행하시면 오류가 해결됩니다.
  1. 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는 차트에 표시될 세부 아이템용 클래스 파일입니다.
  • 전략과 관련된 코드는 모두 비공개상태입니다.

화면 캡처 2021-09-02 112945 5. utility 폴더는 각종 설정 및 static 함수 파일입니다.

  • setui.py는 pyqt5 라이브러리를 이용한 UI 설정 파일입니다.
  • sound.py는 알림소리용 클래스 파일입니다.
  • query.py는 데이터베이스 기록용 클래스 파일입니다.
  • telegrammsg.py는 텔레그램 메세지용 클래스 파일입니다.
  • UI 색상 및 글꼴을 변경하실려면 setting.py를 변경하시면 됩니다.
  1. 프로그램 작동 순서
  • 두번째 계정으로 버전업그레이드
  • 두번째 계정으로 자동로그인 설정
  • 리시버 및 콜렉터 실행
  • 30초 후 첫번째 계정으로 자동로그인 설정
  • 전략연산 및 트레이더 실행
  • 9시 1분까지 장운영시간 알림이 오지 않을 경우, 프로그램 및 컴퓨터 종료
  • 10시 이후 앱이 종료될 경우 백테스터 실행 후 프로그램 및 컴퓨터 종료

설정방법

  1. login/user.txt 파일에 계정 두개 설정

화면 캡처 2021-09-02 113057

  1. utility/setting.py 파일에 각종 경로 설정

화면 캡처 2021-09-03 063854 4. mykiwoom.bat 파일을 열어서 두번째줄 경로 수정

화면 캡처 2021-09-02 113149 5. mykiwoom.bat 관리자권한으로 실행

화면_캡처_2021-08-12_133730

  • 설정이 올바르게 되었다면, 데이터베이스에 필요한 테이블이 만들어지고
  • OPENAPI 로그인 후 정상적으로 프로그램이 구동됩니다.
  • 여기서부터 장운영시간 알림을 받아 프로그램이 단계별로 작동됩니다.
  1. 시스템설정탭에서 텔레그램 토큰 및 사용자 아이디를 설정합니다.

화면_캡처_2021-08-26_195057

  • 설정탭의 ON/OFF 버튼을 제외한 버튼은 한번 실행 또는 클릭하면 바탕이 어둡게 변합니다.
  • ON/OFF 버튼은 상태에 따라 버튼명이 변합니다.
  1. 윈도우 cmd 창을 닫아 모든 프로그램을 종료합니다.
  2. 키움증권 HTS를 실행하여 조건검색식 0번 1번 두개를 만듭니다.
  • 0번은 시가총액10조원이하, 관리종목 제외, 거래대금상위 100종목
  • 1번은 시가총액10조원이하, 관리종목 제외
  1. mykiwoom.bat 재실행합니다.
  • 구동 완료 후 텔레그램으로 "자동매매 시스템을 시작하였습니다."라는
  • 메세지가 수신되면 텔레그램 정보가 올바르게 설정된 겁니다.
  1. 로그 및 설정 위젯 우측 하단에 버튼이 세개있습니다.

화면 캡처 2021-09-02 113320

  • 차트탭변경 버튼은 지수차트 및 종목차트의 탭 상태를 변경합니다.
  • 차트유형변경 버튼은 두종목차트 >> 한종목차트 >> 복기차트 순으로 변경됩니다.
  • 창크기변경 버튼은 UI의 크기를 최소모드, 최대모드로 변경합니다.
  1. 각종목록의 첫번째 칼럼 클릭시 차트1 및 호가창1이 표시되고 두번째 칼럼 클릭시 차트2 및 호가창2가 표시됩니다.
  • 테이블위젯을 한 번 클릭 후 화살표키로 선택된 셀을 이동하여 엔터키를 누르면 마우스 클릭과 같은 명령이 실행됩니다.

화면_캡처_2021-07-04_144808

  • 한종목 집중모드에서는 차트 호가창 이외에 기업개요, 뉴스, 공시, 투자자별 매매동향, 재무재표, 체결강도 추이까지 표시됩니다.

화면 캡처 2021-09-04 032533

  • 복기차트 모드시 데이터베이스에 저장된 체결목록을 불러와서 차트에 매수 및 매도가격를 표시합니다.

화면_캡처_2021-07-04_144925

  1. 거래목록탭에서 달력의 날짜를 클릭하면 해당 날짜의 거래목록을 불러옵니다.

화면 캡처 2021-09-02 113352

  1. 수익현황 탭에서는 기간별 집계를 구분하였습니다.

화면 캡처 2021-09-02 113422

  1. 테스트모드 ON으로 변경하면 로그인 후 아무런 명령이 실행되지 않고
  • 시스템설정에 버튼들을 누르면 각각의 명령이 하나씩 실행됩니다.
  • 모의투자 ON 상태는 실서버에 접속해서 테스트 하지만, 실제 매매가 이뤄지지 않고 매도수를 기록합니다.
  • 모의투자 OFF 상태에서만 실제 매매 주문이 전송됩니다.
  1. 차트는 마우스 좌클릭으로 드래그하면 선택한 영역이 줌인됩니다.

화면 캡처 2021-09-02 113501

  • 줌아웃은 마우스 우클릭하시면 됩니다.
  • 차트 캔들 영역 좌측 하단은 십자선 기준가격 및 전일대비 십자선 등락율이 표시됩니다.
  1. 호가창

화면_캡처_2021-07-04_144709

  • 호가창 우측 상단의 금액을 선택하여 매수주문 영역에 마우스를 클릭하면 매수주문이 전송됩니다.
  • 호가창 좌측 상단의 퍼센트를 선택하여 매도주문 영역에 마우스를 클릭하면 매도주문이 전송됩니다.
  • 시장가 매도수와 매도수 취소 버튼은 버튼의 설명 그대로 명령이 실행됩니다.
  • 미체결 수량이 남아 있으면 매도주문, 매수주문 영역에 남은 수량이 표시됩니다.
  • 키움증권 8282 호가주문창과 거의 동일하지만, 중복 및 복수 주문은 되지 않으니 착오없으시길 바랍니다.
  1. 텔레그램 사용자 버튼은 아래와 같이 4개로 설정되어 있습니다.

P20210812_160357000_127FD7AC-B059-4E5C-BAEA-8401B325A423

화면 캡처 2021-09-29 231129 화면 캡처 2021-09-29 231157