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

pytrader의 치명적 오류의 해결

by 인터넷떠돌이 2019. 1. 21.
반응형

안녕하세요?


오늘 하루는 수많은 오류때문에 실시간으로 주식처리를 제대로 하지도 못하고 몇번 하다가 주식 인공지능이 뻗어버리기 일수였습니다. 그런데 그전에 몸의 역할을 하는 pytrader에 한가지 치명적인 오류가 있다는 것을 일요일 밤에 늦게 알아차려서, 이를 수정하기 위해서 상당히 애를 먹었습니다. 이번 포스팅에서는 그 오류를 수정하는 과정에 대해서 포스팅을 하고자 합니다.



먼저 토요일 밤새도록 돌린 결과를 엑셀로 정리하였습니다. 아래의 가로축이 시간이며, 좌측의 세로축이 바로 매수횟수입니다. 처음에는 같은 데이터가 나왔을 때, 어떤 결정을 RLTrader가 내리는 지에 대해서 알아보고자 했습니다. 그런데 여기서 살펴보면서 한가지 오류가 있다는 것을 알게 되었습니다.



일단 데이터 베이스안에 들어가 있는 자료는 주식 시장이 종료된 토요일 밤이기 때문에 모두 같은 내용으로 현재가를 비롯한 값들이 들어가 있는 것을 볼 수 있습니다. 문제는 RLTrader는 hold라는 행동이 있어서 관망을 하는데, pytrader에는 이런 액션이 아예 없다는 것 입니다!



그래서 처음에 buy_list와 sell_list로 나뉘어져 있는 상황인데, 이걸 개선하기 위해서 일단 action_list라는 텍스트 파일을 만들어서 앞으로 여기다가 RLTrader가 결정한 행동을 넣어 주도록 합니다.



다음으로는 RLTradedr의 agent.py로 가서 위 스크린샷처럼 기존에는 buy_list와 sell_list로 나누어져 있던 것을 모두 action_txt로 바꾸어 주도록 합니다.




다음으로 매도항목에 가서, 여기서는 원래는 sell_list.txt라고 되어 있던 것을 action_list.txt로 한개로 모두 통합시켜 주도록 만들어 주도록 합니다.



다음으로는 원래는 텍스트 파일에 아무런 내용도 적지 않았는 관망이라는 HOLD의 경우에는 얘네도 행동에 대해서 적어 주도록 만들어 보도록 합니다.



그리고 나서 스펙파일로 가서, 한번 이름을 바꾸어 주도록 합니다.



그런데 가만히 보다보니 한가지 빠트린 것이 있었습니다. 그래서 하는 수 없이 이미 빌드중인 exe파일은 포기하도록 했습니다.




일단 포기한 것은 포기하도록 하고, 이제는 새로운 파일을 만들어 보기 위해서 일단 이름만을 바꾸어 보았습니다. 이렇게 하고서 아나콘다 프롬프트를 열어서 pyinstaller를 시작하자.......



문제가 생겼습니다. 하다하다 보니, 그만 실수로 기존에 있던 정보를 전달하기 위한 텍스트 파일이 필요없다고 생각해서 삭제하자, pyinstaller가 지정한 위치에 텍스트 파일이 없다는 이유로 안된다는 메세지를 내면서 빌드가 안되는 것 입니다.



다시 스펙파일로 가서, 이전에 있던 다른 텍스트 파일도 지웠기 때문에, 이름만 바꾼게 아니라, 이미 존재하지 않는 텍스트 파일에 대한 정보도 모두 지워주도록 합니다.



이런 우여곡절끝에 일단 RLTrader를 exe파일로 빌드하기는 하는데 성공했습니다. 이제 남은 과정에 들어가 보도록 해 봅니다.




다음으로는 pytrader로 가서, 기존에는 buy_list나 sell_list를 열도록 되어 있는 구조를 action_list로 바꾸어 주도록 합니다. 그리고 나서 다음으로는 trade_stocks()라는 메서드를 찾아가 보도록 합니다.



여기서도 역시 action_list라고 변수이름부터 바꾸어 주도록 합니다. 그리고 남은 부분에서는 for문을 써서 반복문이 있는데, 여기도 buy_list니 sell_list라고 되어 있는 부분을 모두 없애고, 그냥 action_list에 대한 것만 남겨 주도록 합니다.



for문의 속에서 if문을 이용해서 관망/매수/매도인것에 대해서 각각의 액션을 취하도록 만들어 주도록 합니다. 그리고 당연 관망에는 그냥 쉬어가기만 하도록 만들어 주었습니다.



일단 이렇게 해서 action_list에서 관망만 하는 행동을 집어넣는 것에는 성공했습니다. 하지만 아직 완성이라기에는 부족한 점이 있기 때문에, 더 포스팅을 올려하 하지만, 내용이 너무 길어지는 감이 있기 때문에 하는 수 없이 여기서 끊어야 겠다는 생각이 듭니다. 그럼 일요일 밤부터 월요일 오후까지 했는 일련의 작업을 차례차례 블로그에 올려 보겠습니다.

반응형