본문 바로가기

기타/주가분석

주가 데이터를 읽어오기 위해서는 32bit 파이썬이 필요하다.

728x90

지난 글에서는 FastAPI를 설치하고 확인하는 작업을 해 보았습니다.

그런데 지난 글을 올리고 시간이 꽤 많이 지나서 흐름이 끊어지는 바람에 글의 구성이 잘 되지 않네요.

그래서 이번 글에서는 간단하게 주가 데이터를 읽어오는 내용에 대하여 이야기 해 보고자 합니다.

 

 

 

 

아마 주가예측 시스템이나 자동투자 시스템 등에 관심이 많은 분들은 이미 몇 권 정도의 관련된 책이나 자료를 읽어보셨을 겁니다.

이런 자료들에서 우리가 확인할 수 있는 공통된 지식은 바로 32bit 파이썬을 사용해야 한다.. 라는 것이죠.

가장 손쉽게 주가 데이터를 읽어오려면 바로 증권사들이 제공하는 API를 사용하는 방법일 것입니다.

 

제 블로그의 <응용/주식투자에 대한 활용> 카테고리에서 네이버를 이용하여 주가 데이터를 읽어오는 방법을 다루고 있긴 합니다만.. Web Scraping 방식을 사용하는 것이기때문에 대상이 되는 사이트가 개편되거나 일부 변경이 발생하거나 하면 사용할 수 없다는 단점이 있죠.

Web Scraping 또는 Web Crawling을 사용하는 경우에는 대상 사이트의 변화를 언제나 확인하고, 변경이 발생하면 바로 수정작업을 해 주어야 합니다.

뭐... 대형 사이트들이 그렇게 자주 바뀌지는 않겠지만 알 수는 없죠.

 

그래서 이 프로젝트에서도 주가 데이터를 읽어오기 위해서는 증권사가 제공하는 API를 사용할 계획입니다.

그런데 이 증권사가 제공하는 API가 32bit로만 동작을 합니다.

증권사의 API는 COM / DLL 모델로 제공되고 있는데 이 녀석에게 접근하려면 32bit 모듈만 가능한게 문제인거죠.

PC의 기본 사양이 64bit 체제로 바뀐지 상당히 오랜 시간이 지났는데... 증권사들은 왜 한결같이 32bit 만 고집하는지 모르겠네요.

어쨋든 64bit 기반의 파이썬에서는 해당 API를 사용할 수 없습니다.

 

인터넷을 뒤져보니 공인인증서 모듈을 개발하는 업체가 32bit 용만 개발해서 증권사들도 어쩔 수 없이 따라야 한다.. 라는 내용을 본 적이 있는데.. 뭐 사실 여부는 모르겠네요.

이제 공인인증서도 폐지되었다고 하니(이름만 바꾼 것 같지만..) 64bit 용 API가 나올.... 지도.... 모르겠습니다.(안나올듯..)

 

아무튼.. 이런 이유로 우리는 32bit 용 파이썬을 설치하여야 합니다.

그런데 여기에서 문제가 발생합니다.

AI 기술.. 그러니까 강화학습이든.. RNN 모델이든.. 어쨋든.. 프로젝트에서는 이런 모듈을 사용하려고 하는데, 가장 중요한 라이브러리인 Tensorflow의 GPU버전을 사용하기를 원하고 있습니다만.. Tensorflow GPU는 64bit만 지원합니다.

그래서 아나콘다 등을 이용하여 가상환경을 구성하고 하나의 가상환경에는 32bit 파이썬을, 또 다른 가상환경에는 64bit 파이썬을 설치해서 따로 동작을 시키는 방법을 많이 사용하고 있습니다.

 

그런데.. 인터넷에서 자료를 찾아보고 따라해보면... 글쓴이들은 아주 쉽게 성공했다고 쓰고 있는데 내가 하면 꼭 뭔가 문제가 생기고.. 제대로 동작하지 않는 경우가 많습니다.

전혀 문제가 없어보이는데도 말이죠.

실제로 두 가지 버전의 가상환경을 만들고 32bit 버전에서 증권사 API에 접속 테스트를 해서 성공하였고.. 64bit 환경에서 다른 기본 모듈을 동작시키는 것도 성공했는데 두 환경이 같이 동작하도록 하면 알 수 없는 문제들이 생겨서 실패를 많이 했습니다 (왜 그런지는 모르겠습니다).

 

그래서 이 프로젝트에서는 아예 리눅스와 윈도우를 함께 사용하는 것으로 계획을 하게 되었고, 전체 시스템은 리눅스를 기반으로 구성하게 되었습니다.

윈도우는 리눅스 시스템 안에 가상 머신으로 설치하고 해당 윈도우는 증권사 API를 이용하여 주가 데이터만 꾸준히 읽어오는 작업을 시킬 것입니다.

읽어들인 데이터는 가상머신의 Host-Guest OS간 통신을 통해서 리눅스 시스템의 DB에 저장하고, 시스템의 본체는 리눅스 기반에서 동작을 하는 형태입니다.

간단하게 그려보면 아래의 그림과 같은거죠.

 

Data 흐름

함께 쓰는 것이 불편하면 그냥 따로 나눠서 그 일만 하도록 시키는게 제일 속 편합니다.

그럼 다음 글에서 계속 진행하겠습니다.

 

 

 

 

 

728x90
반응형