본문 바로가기
무모한 도전-주식 인공지능 만들기

키움증권 API와 연동해 보기-PyQt를 연습해 보기-2-

by 인터넷떠돌이 2018. 11. 15.
반응형

안녕하세요?


지난번 포스팅에서는 어떻게 기초적인 메세지 박스를 띄우는 데는 성공했습니다만, 문제는 이제부터가 문제라고 해야 할까요? 본격적으로 키움증권에서 제공하고 있는 Open API와 파이썬을 연동하는 작업에 시작을 들어가면서, 한번 전자책인 '파이썬으로 배우는 알고리즘 트레이닝'이라는 책의 내용을 실습해 보고 있는데, 이래저래 좌우충돌이 많은 상황입니다.



일단 지난번 포스팅에서 Check State라는 글자가 제대로 안 보이는 문제가 벌어졌는데, 이 문제를 해결하기 위해서는 위 스크린샷처럼 Object.resize( ###, ###) 라고 해서 resize라는 명령어를 사용해서 일일히 사이즈를 지정하면 해결이 됩니다. 하지만 Object.resize(Object.sizeHint()) 라고 해서 sizeHint()메서드를 사용하면 자동으로 글자의 크기에 맞게 사이즈를 조정해 주는 기능이 있다는 정보를 얻었습니다.



그리고 나서 다음으로는 버튼3를 눌렀을 경우 connect()라는 메소드를 사용해서, 일단 버튼을 눌렀을 경우 어떻게 작동을 할 수 있도록 미리 처리를 해 주도록 합니다.



일단 sizeHint()메소드의 효과로, 제대로 Check state라는 글씨가 나오는 것을 볼 수 있었습니다. 그래서 이제 다음 단계의 실습에 들어가 보고자 했는데, 여기서 조금 문제가 생기기 시작했습니다.



먼저 위 스크린샷처럼 QAxWidget()메소드 안에서 OCX를 사용하기 위해 밑 작업을 하고, 키움증권 Open API에서 제공하는 메소드인 KHOpenAPICtrl.1이라는 메소드를 지정해서 실행하는데, 지금의 저는 잘 모르겠지만, 일단 책에서 설명하는 말을 이해하면, self.kiwoom이라는 변수는 QAxWidget이라는 클래스의 생성자이며, 이 생성자는 바로 키움증권의 ProgID라고 해서 문자열로 되어 있는 명령어의 인스턴스를 생성한다-사용가능하게 한다 라고 이해를 했습니다.



그래서 원래라면 QAxWidget이라고 해서 일일히 앞에다가 입력해 주저야 하지만, 여기서는 self.kiwoom이라고 변수를 입력한 다음, . 을 찍고서 dynamicCall()이라는 메소드로 원래는 파이썬이 아닌 OCX에서 구현이 되어 있는 메소드를 호출하라는 의미가 됩니다. 그리고 가운데에 있는 "CommConnect()"라는 것은 키움증권의 증권거래 서버-HTS를 통해서 접속할 수 있는 서버에 접속을 하라는 의미가 됩니다.




그래서 위 스크린샷처럼 전체적인 파이썬 스크립트를 짜 놓도록 하며, 이것을 바탕으로 실제 키움증권 Open API를 통해서 접속을 시도해 보도록 합니다.



그런데 위 스크린샷처럼 QAxWidget은 OnEventConnect라고 해서 접속이 되는 것과 같은 변화가 일어날 때 마다 호출이 되는 키움증권 Open API에서 제공하고 있는 메소드가 없다고 합니다. 무언가 잘못 되어도 좀 잘못되었는데, 일단 지금 일어난 현상은 PyQt5의 문제는 아닌 듯 합니다.



혹시나 싶어서 KOA Studio를 통해서 한번 Open API를 통해서 접속을 한 다음에, 다시 한번 PyCharm에서 실행을 시켜 보았으나 결과는 마찬가지였습니다.



그래서 들어보니 키움증권 Open API는 32비트 시스템에서 작동을 한다고 합니다. 그래서 먼저 아나콘다를 기존의 64비트가 아닌 32비트용으로 다운로드 받아 보도록 합니다.



일단 32비트용 아나콘다의 설치에 들어가 보도록 합니다.




그리고 나서 위 스크린샷처럼 옵션 중에 위에것을 선택한 다음 설치에 들어가 보도록 합니다.



그래서 아나콘다 네비게이터를 실행 시켜서 테스트를 위한 새로운 환경을 만들어 봅니다.



그 다음에 이 환경을 아나콘다 32비트용에 따로 설치한 폴더에 복사해 놓도록 합니다.



그리고 PyCharm으로 가서, 방금 설정해 둔 환경을 설정해 줍니다.



하지만 그래도 어찌된 셈인지 제대로 실행이 되기는 커녕 계속해서 에러가 발생하는 것을 볼 수 있었습니다. 그래서 64비트 아나콘다를 유지하고 있는 상태에서 32비트 아나콘다를 설치하기는 무리라는 생각이 듭니다. 그래서 하는 수 없이 다음 포스팅에서는 이 64비트용 아나콘다를 언인스톨 한 다음에, 실습을 진행 하도록 하겠습니다.

반응형