미국주식 자동 매매 프로그램을 21년에 만들어서 운영한 지 벌써 만으로 2년이 되어갑니다. 당시에는 그리드 매매법을 빠르게 구현해서 투자에 뛰어드는 것을 중요하게 생각했어서 RPA 도구를 활용해서 작업했었습니다.
UiPath 툴(RPA)을 활용해서 빠르게 매매 로직을 구현하고 운영하는 것은 아래를 참고해 주세요.
2022.06.22 - [기능과 기술] - 미국주식 그리드 매매 빠르게 자동화하기 (1)
현재도 당시에 만들었던 UiPath 툴로 매매를 수행하고 있으나 UiPath 도구에 대한 진입 장벽이 점점 커지고 있습니다. 계속 고민했었지만 어쨌든 동작은 하니깐 미루고 미뤄왔던 파이썬으로 영웅문 Global을 직접 핸들링하는 작업을 시작해야겠다고 생각했습니다. 23년을 넘기지 않는 것이 목표입니다. 저에게 힘을 주세요.
1차 목표는 영웅문 Global HTS를 파이썬으로 핸들링 하는 것으로 정했습니다. 영웅문Global HTS를 핸들링하는 방법을 따라 하면 수행할 수 있도록 안내해 보는 것이 목표입니다. 그렇기에 주요 작업을 수행하는 창 몇 개만 집중적으로 핸들링해 봅니다.
2차는 21년에 만든 그리드 매매법 로직을 이관하는 것입니다. 완전 자동을 목표로 수행하므로 스케줄링, 로그인, 사용자 설정, 예외 처리, 리포팅 등의 기능을 구현합니다.
3차는 그리드 매매법 로직을 고도화하는 것을 목표로 합니다. 미국 공휴일을 적용해서 수행 여부를 판단하고, 본장뿐만 아니라 프리, 애프터 매매를 적용합니다. 텔레그램 메신저로 이력을 남기고, 명령을 끝까지 수행할 수 있도록 대부분의 로직에 재시도 로직을 포함합니다. 마지막으로 주문 체결 확인을 정확하게 확인하고 수익을 집계하는 로직을 반영하고 리포팅합니다.
에필로그와 같이 마무리는 이런 과정에서 직접 기능을 만들기 위해 작업했던 과정 중 도움이 된 내용들을 추가 설명하려 합니다. Microsoft Spy++ 프로그램을 활용하고, Pywinauto 기능을 확인하는 방법을 가이드합니다.
에필로그까지 잘 마무리할 수 있기를 바라면서 열심히 작성해 보겠습니다. 파이팅!!
해외주식 투자를 시작한 지 2년이 지났는데도 여전히 키움증권은 API를 제공해 주지 않고 있습니다. 23년 11월 기준으로 한국투자증권이 유일하게 해외주식 거래 API를 제공하는 증권사인 것 같습니다. 자신이 매매 로직을 구현하고 운영하는 데 있어서 빠르고 더 정확하게 매매를 진행해야 한다면 한국투자증권을 활용하는 것을 최우선으로 고려하시는 것이 좋겠습니다. 그러나 그 외에 수수료, 접근성 등도 고려한다면 저와 같이 차선책으로 선택할 수 있는 방법이 프로그래밍을 통해 직접적인 핸들링하는 것입니다. 물론 이러다가 키움증권이 해외주식 거래 API를 제공해 주면 다 헛수고가 될 수 있지만 개인적인 학습과 다른 프로그램을 핸들링하는데 필요한 기술이라고 생각하면 그나마 위로가 됩니다. 그럼에도 키움증권이 해외주식 거래 API를 제공해 주면 좋겠습니다. 제발!
영웅문 Global 설치
영웅문 Global은 키움증권의 HTS입니다. 키움증권에 회원가입하고 계좌를 만드는 사전 작업이 필요합니다.
키움증권 - 키움증권 | 대한민국 주식시장 점유율 1위 (kiwoom.com)
다운로드 - 주문매체안내 | 다운로드 | 고객서비스 | 키움증권 (kiwoom.com)
- 회원가입 필요
- 영웅문 Global HTS 다운로드
이 부분을 설명할 순 있지만 혹시 진행하다가 막히는 부분이 생기면 언제든지 댓글, 문의 부탁 드립니다. 도와드릴게요!
파이썬
영웅문 Global을 핸들링하기 위해서 저는 파이썬 언어를 선택했습니다. Java도 있고, C++, C#도 있는데 그중에서도 파이썬이 저를 비롯한 대중 분들이 접하기에 좋은 언어라고 생각했습니다. 국내 주식을 키움증권에서 제공하는 API를 활용하려면 파이썬 32bit를 설치해야 하는 제약이 있는데, 저희는 제공하지 않는 부분을 핸들링할 거라서 파이썬 64bit 버전을 설치해도 됩니다. 23년 11월을 기점으로 저는 파이썬 3.11 64bit 버전을 사용하고 있습니다. 파이썬 3.11 버전은 구글에서 파이썬 다운로드를 검색 후 다운로드하면 됩니다.
파이썬은 프로그래밍 언어입니다. 저는 프로그래밍을 업으로 삼고 살아가는데도 파이썬이란 언어는 묘한 매력을 갖고 있습니다. 언어에 대해서 잘 몰라도 대충 검색해서 적용해도 많은 부분들이 의도한 대로 돌아갑니다. +_+ 물론 삽질을 시작하게 될 때도 있지만 그래도 지금까지 해왔던 다른 언어와는 다른 부분이 있고 장점이 충분한 언어라고 생각합니다. 파이썬이 아니라 Java, C# 등의 언어로도 지금 제가 하려는 일들을 할 수 있다고 생각합니다. (해보진 않았지만 그럴 수 있다고 생각합니다. +_+) 그럼에도 파이썬을 선택한 이유는 접근성이 가장 큰 이유인 것 같습니다. 현재는 파이썬 3 버전을 주로 사용하고 있기에 2 버전과의 혼란을 고려할 필요도 없어졌습니다. 어쨌든 파이썬으로 영웅문 Global 핸들링을 어느 정도 할 수 있다는 점을 확인했으니 앞으로도 파이썬으로 해보려 합니다.
개발을 위한 도구 (IDE - Integrated Development Environment)
IDE는 개발을 위한 도구입니다. 약어이고 통합 개발 환경이란 뜻입니다. 개발을 하기 위해서 지원하는 여러 가지 환경을 구성해 놓은 도구라고 생각하면 좋습니다. 파이썬 프로그래밍을 위한 여러 개발 도구가 있지만 저는 JetBrain 회사의 PyCharm 이란 IDE를 사용합니다. Community 버전은 무료로 제공하고 있으므로 누구나 사용할 수 있습니다. 최근에는 IDE에서 플러그인을 통한 여러 도움을 받을 수 있고, ChatGPT와 같은 인공지능 도구를 통해 도움을 받는다면 누구나 개발을 쉽게 할 수 있는 시대입니다. 새로운 것에는 항상 두려움이 앞서지만 도전을 한다면 분명히 지금보다 더 나은 과정이 될 거라고 생각합니다.
파이썬에 대한 이해 (Self +_+)
파이썬 언어 및 문법에 대한 이해는 옆으로 치워 두려 합니다.
- Welcome to Python.org : 파이썬 공식 사이트
- PyPI · The Python Package Index : 파이썬 패키지 검색 사이
- 파이썬 자습서 — Python 3.12.0 문서 : 파이썬 자습서
지금부터는 약간의 의지가 필요합니다. 앞서 잠깐 언급했지만 파이썬 2 버전과 3 버전에서는 혼선이 많았습니다. 그러나 이제는 파이썬 3 버전을 사용하면 되고 점점 더 좋아지는 것을 느낍니다.
파이썬의 진입장벽
처음 파이썬을 사용해보려 했을 때 2 버전과 3 버전에 대한 혼선도 있었지만, 3 버전에서도 3.7, 3.9, 3.11 등의 버전의 차이에 따른 혼선도 큰 진입장벽이라 느꼈습니다. 시간이 흘러감에 따라 파이썬도 점점 업그레이드되는 것이 당연하지만 활용하는 패키지들이 파이썬 버전 호환에 민감한 경우가 많습니다. 또한 패키기도 업그레이드 되면서 문법이 변경되고, 기존 문법이 없어지는 (deprecated) 경험을 하기도 합니다. 그래서 저는 기본적으로 venv (가상환경)을 활용하고 있습니다.
- venv — 가상 환경 생성 — Python 3.12.0 문서 : 파이썬 가상 환경 생성
이 부분도 문서를 참고해 주시고 잘 안 되는 부분은 문의하시면 최선을 다해 답변드리겠습니다!
영웅문 Global 환경 설정
아래 내용들은 영웅문 Global HTS를 사용하면서 한 번의 설정이 필요한 내용일 수 있습니다. 어떤 경우는 매매를 위해 매매 종류를 선택할 때 알림 창이 뜨기도 하고, 종목 조회 시 영웅문 Global의 오류로 인해 에러 창이 뜨기도 할 겁니다. 추후 이런 예외적인 처리에 대해 대응하는 방법을 고민해 보겠습니다. 아래의 내용은 기본적인 설정이라 생각해 주시면 됩니다.
매매 시마다 비밀번호 입력 하지 않으려면 비밀번호를 저장해 놓는 설정을 해야 합니다.
그렇지 않으면 위와 같은 확인 창이 매매마다 발생합니다. +_+ (번거롭게 됩니다.)
- 비밀번호 유지
- 메모리 보안 적용 (해제)
여기까지 내용을 직접 실행해 보셨나요? 부족한 점이 있거나 어려운 점이 있다면 언제든지 댓글, 이메일로 문의주세요. 문의를 주시는데 시간을 쏟으신 만큼 최선을 다해 답변드리겠습니다.
다음은 프로그램 실행 준비 및 모든 창 닫기에 대해 설명드리겠습니다.
2023.11.23 - [영웅문 Global 핸들링] - 프로그램 실행 전 준비 (실행 중인 영웅문 Global 연결하고 "모든 창 닫기")
관심의 표현은 저에게 큰 힘이 됩니다. 😍 도움을 주셔서 정말 감사합니다.
'영웅문Global 핸들링' 카테고리의 다른 글
지금까지 작업 내용 취합 (반복 로직 수행) (3) | 2023.12.02 |
---|---|
영웅문Global 로그인 (0) | 2023.12.01 |
매매 결과 확인 (실시간 잔고 스크린샷과 값 확인 방법) (0) | 2023.11.29 |
매수 / 매도 수행하기 - 2 (미니주문 창 핸들링하기) (3) | 2023.11.28 |
매수 / 매도 수행하기 - 1 (미니주문 창 호출하기) (0) | 2023.11.28 |