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

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

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

안녕하세요?


지난번 포스팅에서 어떻게 당장은 해결할 수 있을지 없을 지 모르는 에러를 만나기는 했는데, 이번 포스팅에서는 그 에러를 해결했고, 어떻게 실시간으로 주식투자가 가능한 인공지능이 거의 완성이 되었다는 생각이 듭니다. 그럼 지금부터 어떻게 해서 에러를 해결하고 연결을 했는지에 대해서 포스팅을 하겠습니다.



먼저 policy_learner.py로 가서, 위 스크린샷처럼 __init__(): 항목에 위  스크린샷처럼 기존에는 없던 파라미터를 넣어주도록 합니다.



다시 RLTrader의 main.py로 가서, 위 스크린샷처럼 기존에는 없던 주식 보유량을 가지고 오는 코드를 위 스크린샷처럼 추가해 주도록 합니다.



다음으로는 비학습 투자 시뮬레이션을 하는 항목을 위 스크린샷처럼 기존에는 없던 pytrader로 가는 경로와 주식 보유량을 추가해 주도록 합니다. 이렇게 하는 이유는 바로 main.py와 같은 경우는 기존의 포스팅에서도 나왔다 시피 if__name__ 이라는 식으로 최종 실행결과를 내는 곳이기 때문에, 다른 파이썬 파일에 import되지를 않기 때문입니다.



다음으로는 agent.py라는 에이전트 모듈로 가서, 위 스크린샷처럼 기존에는 없던 파라미터인 pytrader로 가는 경로와, 주식종목의 코드, 그리고 주식 보유량에 대한 정보를 입력하도록 합니다.




다음으로는 policy_learner.py라고 해서 정책학습기 모듈에서 위 스크린샷처럼 에이전트 객체를 부르는 항목이 있는데, 이 항목으로 가서, 전달하고자 하는 내용을 집어 넣도록 해 봅니다.



다음으로는 agent.py로 다시 가서, 이제 가지고 오기는 왔으니, 이걸 스크립트 안에서 사용할 수 있도록 한번 변수에 집어넣는 과정이 필요합니다. 그래서 위 스크린샷처럼 한번 self라고 붙인 변수에 집어 넣도록 합니다.



그리고 나서 위 스크린샷처럼 한번 스펙파일로 가서, 위 스크린샷처럼 RLTrader의 이름을 따로 지정해 주도록 합니다. 그리고 나서 아나콘다 프롬프트를 열어서 pyinstaller를 실행시켜 봅니다.



잠시만의 시간이 흐른 다음에, 위 스크린샷처럼 제대로 exe파일로 빌드가 되어서 나오는 것을 이제 볼 수 있었습니다. 이렇게 RLTrader의 빌드까지 끝이 나기는 났으니, 이제 다음으로 pytrader를 실행시켜 보도록 합니다.




그런데 처음시작했을 때, 위 스크린샷처럼 toomany indices for array라고 해서, 입력된 데이터가 처음으로 들어가서 1행밖에 없을 경우에 생기는 에러를 볼 수 있었습니다. 물론 이 에러가 났다고 해서 바로 프로그램이 종료되거나 멈추는 것은 아니지만, 일단 기분은 찝찝합니다.



다시 2줄 이상이 되어서 실행시켰을 때는 위 스크린샷처럼 제대로 결과인 stdout으로 마지막을 뜻하는 finish가 나오는 것을 볼 수 있습니다. 그리고 어째서 인지 에러를 출력하는 항목에 그 모의투자 결과가 나오는 것을 볼 수 있습니다.


다음으로는 위 스크린샷처럼 어떻게 결과가 나왔는지를 볼 수 있습니다. 추가로 그렇게 중요한지 아닌지는 모르지만, 일단 처음에 데이터 베이스에 1행만 있어서 생기는 에러가 나왔어도, 다음에 나오는 주식투자는 제대로 된 매수/매도를 하는 것을 볼 수 있었습니다.



다음으로 제대로 매수 주문이 되었는지 한번 보도록 합니다. 이렇게 나오는 것을 볼 수 있었습니다만, 문제는 제가 한가지 염려가 되는 것이 있습니다. 우선 시간이 지나면 지날수록 점점 매수주문의 양이 많아 지는 것을 볼 수 있는데, 이게 모의투자 및 주식시장이 종료되어 있어서 실전에서 어떻게 나올지는 모르겠습니다만, 이렇게 과거의 데이터가 반영이 되어서 계속 매수/매도를 하게 되면 어떻게 결과를 낼 지 우려가 됩니다. 아무튼 일단 월요일이 되면 진짜로 하루종일 모의투자지만 한번 들어가 봐야 겠습니다.

반응형