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

키움증권 OpenAPI를 이용해서 전체 분봉차트를 가지고 오는 시도

by 인터넷떠돌이 2019. 3. 16.
반응형

안녕하세요?


이렇게 주식 인공지능을 하다보니 필요한 일이 생겨서, 키움증권 Open API를 이용해서 한번 일련의 종목들의 1분봉 차트를 가지고 와야 하는 일이 생겼습니다. 그래서 DchoI님이 보내온 종목코드를 먼저 읽어보고, 이를 하나하나 손으로 다 긁어오는 것은 무리라는 생각이 들어서, 한번 프로그램으로 한번에 긁어 오고자 합니다.



먼저 위 스크린샷과 같이, dataharvester.py라는 파일과 parent파일을 만들어 주도록 합니다. 이 파일들은 이전에 제가 특정한 조건을 막족하는 코드들을 탐색할 때 사용한 py파일들의 복사본입니다.



먼저 위스크린샷과 같이 여러개의 종목의 명칭과 종목코드가 있는 것을 확인할 수 있었습니다. 일단 종목명은 제가 필요하지 않기 때문에, 우선 종목코드만 따로 txt파일에 보관을 하도록합니다.



위 스크린샷과 같이, 일단 txt파일에 따로 종목코드만 보관을 하도록 합니다.



그래서 위 스크린샷과 같은 txt파일을만들어서, pytrader가 있는 폴더에 가져다 놓도록 합니다.



다음은 dataharvester의 부모 프로세스로 가서, 위 스크린샷처럼 먼저 txt파일을 읽는 작업에 들어가 보도록 합니다.




우선 어떻게 읽어오는가 했더니, 위 스크린샷처럼 모두 \n이 붙어 있는 것을 확인할 수 있습니다.



그래서 위 스크린샷처럼 read().splitlines()라는 함수를 사용해서, \n을 제거하도록 합니다.



일단 여기까지 해서, 위 스크린샷처럼 제대로 \n이 사라진 것을 확인할 수 있기는 있었습니다.



다음으로는 실제로 자식 프로세스에 데이터인 종목의 코드를 넘겨주기 위해서 위 스크린샷과 같이 바꾸어 주도록 합니다. 우선은 2개의 종목씩 요청할 것이기 때문에, 위 스크린샷과 같이 len()함수를 써서 리스트의 길이 절반을 for문에 사용하도록 합니다.



그리고 나서 자식 프로세스의 이름도 바뀌었기 때문에, 위 스크린샷처럼 dataharvester.py로 자식 프로세스의 이름을 바꾸어 주도록 합니다.




다음으로 위 스크린샷에 보이는 것처럼 부모 프로세스의 데이터가 지식 프로세스에 넘어오면, input()을 이용해서 받고, 중간에 있는 &&&를 기준으로 제거해 주도록 합니다.



다음은 분봉차트를 가지고 가지고 오는 코드를 가지고 오도록 하고, 마지막으로 여기서 to_sql()이라는 sqlite3 모듈을 import한 다음에 위 스크린샷처럼 가지고 와서, 모든 데이터를 데이터 베이스 파일에 넣어 주도록 합니다.



그런데 무슨 이유에서 인지 위 스크린샷과 같은 에러가 벌어지는 것을 확인할 수 있기는 있었습니다.



일단 여기서 문제인가 했더니, 위 스크린샷처럼 쉼표(,)로 따로 분리해 주어야 하는데, 그걸 안해 주어서 생긴 문제였습니다.



일단 이렇게 해서 모두 떼어내서 위 스크린샷처럼 for문에서 어떻게 사용할 수 있는 것까지 부모 프로세스에서 사용할 수 있도록 만들어 주었습니다.




다음으로 위 스크린샷에 보이는 것처럼, 위와 같은 방법을 사용해서 일단 문자열로 되어 있는 부분을 숫자로 바꾸어 주는 작업을 들어가 보도록 합니다.



그런데 정작 코드를 실행시킨 결과는 아무것도 나오지 않았습니다. 일단 이로 미루어 볼때 새로 추가한 코드로는 아무것도 되지 않는 다는 것을 확인할 수 있었습니다.



다음으로 map()이라는 함수를 상용해서 일단 문자열로 들어가서 문제가 된 리스트를 숫자의 리스트로 만들어 주고자 합니다만, 문제는 이 역시..........



이 경우에도 문제가 나왔습니다. 일단 대괄호인 [가 생겨서 이걸 제거하는 것이 문제이긴 한데, 어떻게 제거해서 계속해서 리스트를 pycharm에서 읽은 다음에, 이를 파이썬으로 작업할 수 있도록 만들어 주고자 합니다. 아무튼 포스팅의 내용이 너무 길어졌기 때문에, 하는 수 없이 여기서 일단 자르도록 하겠습니다.

반응형