오랜만에 글을 쓰는 것 같은데, 전역하고 열심히 탱구탱구 노느라 신경을 많이 못 썼던 것 같아요 ㅋㅋ 그래도 생산적인 것들은 꽤 많이 하려고 노력했는데 뭔가 해이해지는 느낌이 있어서 바로잡으려고 다시 돌아오게 됐네요...
요즘에는 Kaggle이랑 Dacon 대회 데이터들로 조금 연습을 했는데, 뭔가 조금 알겠다 싶은 느낌이 있어서 바로 실천해보려고 왔습니다.
예전부터 해볼까 고민했었던 건데, 그동안 계속 미뤄왔던 시스템 트레이딩을 구현해보려고 해요. 항상 '시작하면 환경 자체를 만드는 건 그리 어렵지 않아도, 내 알고리즘에 자신이 있어야 한다.'라는 마음이었어서, 알고리즘을 갖추기 위한 준비를 계속 했었습니다. 그런데 그냥 이제 좀 뭐라도 해보고 싶은 마음이 들어서 정말 간단하게 구현만 해놓으려고 해요. 만들어 놓으면 뭔가 발전시키고 싶은 생각도 들 것 같고, 이래저래 유용할 것 같아서 시작했습니다.
각설하고, 개발환경으로 가보도록 하겠습니다.
Language : Python (3.8.5)
GUI : PyQt5
증권사 : 키움증권 (Open API 제공)
추가적으로 Anaconda + Jupyter notebook 사용하였습니다.
기본적으로는 그 유명한 '파이썬으로 배우는 알고리즘 트레이딩'을 천천히 따라가고 있습니다.
Link - https://wikidocs.net/book/110
기본부터 완성까지 정말 잘 되어있어서 금방금방 따라할 수 있었네요.
여기에는 제가 다시 개발환경 구축할 때를 위해서 Troubleshooting만 조금 적어놓을까 해요.
스토리를 따라서 천천히 가보겠습니다!
1. PyQt5 Errors
PyQt5를 활용해서 키움증권 API를 처리하기 위해 PyQt5를 설치하여야 했습니다. 저는 Anaconda로 한번에 설치했기 때문에 그냥 돌려보면 될 줄 알았는데, 이것만 해도 엄청 에러가 많이 뜨더라구요ㅋㅋ큐ㅠㅠ 대다수의 에러는 그냥 Anaconda 재설치만 하면 해결되었던 것 같습니다. 그럼에도 해결되지 않는 에러가 있었는데, 바로 module import 문제입니다.
다른 코드들은 문제가 없는데
import PyQt5.QAxContainer
요 코드에서 모듈이 없다고 떠서, 이걸 해결해야했습니다. 열심히 구글링을 하고 적용해보니 이 친구는 Anaconda의 PyQt5 버전 문제인 것 같은데, Anaconda Prompt에서 PyQt5 라이브러리 자체를 재설치해주면 해결되었습니다. 즉,
conda install PyQt
를 해주면 해결되었던 것 같아요.
이렇게 해주면 기본 세팅에서는 문제 없이 PyQt5 라이브러리가 돌아갑니다.
2. 32bit Errors (Connection errors with Kiwoom API)
키움 API를 사용하려면 32bit 환경을 사용해야 하는데, 그걸 모르고 계속 64bit로 돌리면서 왜안되지 왜안되지 이랬거든요.. 로그인 버튼을 누르면 로그인창이 떠야 하는데, 그게 안떠서 이상하다 싶었습니다. 알고보니 32bit로 돌려야 한다고 해서 눈물 머금고 anaconda 자체를 32bit로 깔았습니다. 그런데 32bit로 깔고보니 불편한 점이 훨씬 많아서 그냥 아나콘다는 64bit로 깔고 32bit로 가상환경을 추가해주기로 하였습니다. 결과적으로는, 이렇게 하면 돌릴 수 있습니다.
3. 32bit + PyQt5 Errors
어찌저찌해서 맞는 방향으로 가고는 있는 것 같았는데, 32bit로 가상환경을 구성하고 나서도 에러가 많이 생기더라구요ㅋㅋㅋㅋ...
우선 구글링을 해서 32bit 가상환경을 jupyter notebook kernel에 추가해주었습니다.
근데 여기서 정말 다양한 종류의 에러가 발생했습니다.
- kernel connection 자체가 안되는 경우
- PyQt5 import 자체가 안되는 경우
- PyQt5.QAxContainer import가 안되는 경우
- SSL 문제로 jupyter notebook이 아예 열리지 않는 경우
- jupyter notebook은 열렸는데 path가 이상하게 설정된 경우
- win32를 읽을 수 없다는 등의 에러 등등
결과적으로는, '순서만 잘 지키면 해결된다'는 교훈을 얻었습니다.
구글에 있는 해결책들로 대부분 해결이 되는데, 이게 적용하는 순서가 정말 중요한 것 같더라구요. 그래서 가장 깔끔한 방법은 그냥 재설치를 하고 구글링한 해결책들을 천천히 따라가다보면 대다수 해결이 됩니다.
제 경우에는 kernel connection이 안되는 경우는 conda activate (가상환경)을 해주지 않은 상태에서 이런저런 작업들을 해놓아서 원래 있던 python3까지 꼬여버린 케이스여서, 그냥 여러번 재설치하고 시도해봤더니 해결되었습니다.
좀 애먹었던(헷갈렸던?) 것 중에 하나는 가상환경을 구성한 상태에서는 1번처럼 conda install PyQt를 해도 import PyQt5.QAxContainer를 하면 에러가 뜨더라구요. 저는 그냥 anaconda prompt에서 conda activate (가상환경)을 해놓고 pip install PyQt5를 해주니 에러가 뜨지 않았습니다.
정리해보자면, 해결책은 이 정도로 줄여볼 수 있을 것 같습니다.
1. 안되면 재설치를 하자.
2. 재설치해도 안되는 경우에는 에러 메시지를 읽어보고 거기에 등장하는 Path로 이동해서 눈으로 직접 살펴보자.
3. 그래도 안되는 경우에 구글링을 하면 거의 다 해결된다. (순서에 유념하자)
환경 세팅하는데만 해도 한참 걸렸네요... 그래도 이제 첫 발은 내딛었으니 실제 트레이딩까지는 연결시켜 보겠습니다.
댓글 없음:
댓글 쓰기