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

RLTrader와 pytrader를 이어주는 작업 시즌2

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

안녕하세요?


지난번 포스팅까지 어떻게 연습을 하기는 했으니, 이제 실전에 들어가서 RLTrader와 pytrader를 연결해서 제대로 주식 인공지능을 만들어야 하는 단계까지 오기는 왔습니다. 그래서 이번 포스팅에서는 이렇게 두뇌 역할을 하는 RLTrader와 몸의 역할을 하는 pytrader를 연결하는 작업을 했고, 그 과정을 포스팅 하고자 합니다.



먼저 pytrader에서 기존에 있었던 txtFile이라는 이름의 변수를 제거하는 단계부터 시작해야 합니다. 이제는 더 이상은 txt파일을 읽어야 할 필요가 없기 때문입니다.



계속해서 텍스트 파일을 제거하는 방법을 실행해 보도록 합니다.




다음으로는 데이터를 한데 묶어서 보내기 위해서 먼저 문자열로 만든 다음에, 이를 제거하기 좋은 문자열로 구분을 하도록 합니다. 그리고 나서 encode()를 시켜 보도록 합니다.



다음으로는 제대로 된 결과가 나오는 것이 맞는지 일단 communicate()함수를 사용해 주는데, 여기서 당연 들어갈 데이터는 위에서 만들어 놓은 한줄의 문자열 데이터를 encode한 것입니다.



그리고 나서 제대로 된 결과가 나오는지 아닌지를 알아보기 위해서, 결과가 나왔다면, print(stdout)으로 결과가 나오게 되리라 생각을 합니다. 그리고 문제가 생겼다면, print(stderr)에서 에러 메세지를 받아볼 수 있습니다.



다음으로는 RLTrader로 가서, 기존에 있던 txt파일을 읽어 들이는 부분을 모두 삭제하도록 하고, 다음으로 해야 할 일은 바로 input()명령어를 써서, 가지고 오는 데이터를 받는 것 입니다.




다음으로는 agent.py로 가서, 여기서도 역시 input()명령어를 써서 한번 데이터를 받은 다음에, 이를 가지고 오도록 하도록 합니다.



다음으로는 빌드를 하기 위한 spec파일로 가서, 한번 기존에 있던 이름을 날짜를 넣어주어서 구분이 되도록 바꾸어 주도록 해 봅니다.



다음으로는 아나콘다 프롬프트를 열어서, 한번 pyinstaller를 실행시켜 보아서, 이를 exe파일로 만드는 과정에 들어가 보도록 해 줍니다. 명령어는 pyinstaller --noconfirm --log-level=WARN --onefile --nowindow main.spec 이라는 형식으로 들어갑니다.



실제로 잠시만 기다린 끝에 위 스크린샷처럼 나오는 것을 볼 수 있었습니다. 제대로 exe파일이 생성이 되는 것을 확인할 수 있었으니, 이제 실행에 들어가 보도록 합니다.



pytrader를 실행시킨 다음에, 위 스크린샷처럼 pytrader에 각각의 항목을 입력해 주도록 합니다.



그런데 시작하면서 결과가 나오는 것이 아니라 에러가 뜨는 것을 볼 수 있었 습니다.




어디가 문제인가 했더니, 바로 예수금 항목에 있던 콤마(,)가 문제가 되어서 이게 제대로 숫자로 반영이 되지 않는 것이 문제였습니다. 그래서 이번에는 콤마를 replace()함수를 써서 제거해 주도록 하고, 다음으로는 int(float())함수를 써서 정수로 바꾸어 줍니다.



그리고 나서 spec파일로 가서, 구분이 되도록 이번에는 뒤에 ver2라고 붙여 주도록 합니다. 이렇게 한 다음에 반드시 스펙파일을 저장해 주도록 합니다.



다음으로는 역시 아나콘다 프롬프트를 열어서, 역시 같은 명령어를 사용해서 pyinstaller를 사용 exe파일로 만들어 주도록 해 봅니다.



역시 이번에도 다른 exe파일로 생성이 된 것 까지는 확인을 할 수 있었습니다.



이번에도 역시 pytrader를 실행시켜서 한번 작동시켜 보도록 합니다.



그런데 또 다른 에러가 발생하는 것을 볼 수 있었습니다. 이번 에러는 RLTrader의 29번째 줄에서 발생을 한 것으로 생각이 되는데, 일단 포스팅이 너무 길어지는 감이 있어서 여기서 끊어 주도록 하고, 다음 포스팅에서 이어서 가도록 하겠습니다. 일단 여기까지 오기는 했는데, 왔다고 바로 일이 일이 확 풀어지는 것도 아닌 듯 합니다.

반응형