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

한번의 시도성공과 한번의 시도실패

by 인터넷떠돌이 2018. 12. 29.
반응형

안녕하세요?


드디어 외면하고 외면했던 작업에 직면해야 했습니다. 제가 굳이 무리해서까지 exe파일을 만들어 보는 실습을 해보며, 다양한 시도를 하였던 이유가 바로 pytrader에서 만들어 낸 명령으로 RLTrader를 실행시키고, 서로간에 변수를 주고 받도록 하는 것 이었습니다. 그런데 일단 한번 pytrader에서 RLTrader를 실행시키는 것은 성공했는데, 문제는 다른 프로젝트에 있는 파이썬 프로그램간에 변수를 공유하는 것은 무리였습니다.



먼저 프로젝트를 위해서 새로운 프로젝트를 생성하도록 합니다.



그리고 여기에는 RLTrader의 스크립트 파일들을 가지고 오도록 합니다.



다음으로는 새로운 환경을 만들어 보는데, 기존의 RLTrader를 작동시킨 환경에서 pyinstaller를 추가하는 가상환경을 만들어 주고자 하는 것 입니다.



지난번에 했던 것과 마찬가지로 pip를 사용해서 pyinstaller를 인스톨하되, 개발자 버젼의 주소를 구해서 인스톨하도록 해야 했습니다.



일단 pyinstaller의 홈페이지가 불통인 관계로 위 스크린샷과 같은 곳을 가서, 한번 다운로드 받아서 와야만 했습니다. 아무튼 간에 일단 pyinstaller를 개발자 버젼으로 다운로드 받도록 합니다.



그리고 이제 새로 만들어 낸 프로젝트의 환경을 방금 설정을 끝마쳐준 환경을 Pycharm에서 Setting메뉴를 통해서 한번 설정해 주도록 합니다.




일단 하나하나 스크립트를 수정해 주어야 하는데, 일단 먼저 수정해 주는 것은 다름 아닌, stock code와 같은 변수를 class를 선언하면서 선언해 주어서 일단 이전에 RLTrader에서는 그렇게 신경쓰지 않았는 클래스 변수를 만들어 주도록 합니다.



다음으로는 이전에는 클래스와 메소드의 선언이 없었지만, 여기서는 만들어 주어서 한번 들어가 보기는 보는데, 먼저 로그 기록을 남기는 메서드를 만들어 줍니다.



그리고 나서 여기서는 기계 학습을 시키는 것이 아니기 때문에, 비학습 투자학습 시뮬레이션만 남기도록 합니다. 그리고 나서 프로그램이 종료가 되도록 만들기 위해서 sys.exit()라는 것을 추가해 주도록 했습니다.



그리고 나서 실행을 시키기 위한 __name__ == '__main__': 을 추가해 주도록 합니다.



그리고 나서 한계라면 한계이겠지만, 일단 cutting_point2를 제대로 %가 되도록 설정해 주도록 합니다. 그런데 여기서 이제와서야 깨달은 것이 있습니다.



위 스크린샷처럼 정식으로 계산을 해서 나오는 반올림한 값을 cuttingPoint로 만들어야 하는데, 지난번 기계학습을 시킬 때는 그렇게 하지를 못했습니다.




다음으로는 모델의 경로인데, 이 역시 시작하자 마자 설정을 해 주도록 __init__(self): 에서 변수선언을 해 주도록 합니다.



다음으로는 위 스크린샷에서 보이는 것과 마찬가지로, 우선 data_manager.py에서 관련된 내용을 먼저 sql 데이터 베이스를 읽어 들일수 있도록 만들어 주도록 합니다. 그리고 나서, 위 스클린샷처럼 개조를 해 주도록 합니다.



일단 시험적으로 newTestAI라는 프로젝트 폴더안에 모델과 데이터 베이스를 넣고 나서 위 스크린샷처럼 학습을 시켜놓고 나니, 제대로 돌아는 가는 것을 볼 수 있었습니다.



이제 다시 pytrader에 가서 위 스크린샷처럼 os.system()함수를 사용해서 하드 디스크에 있는 다른 프로젝트의 파일을 실행시켜 줄 차례인데, 위 스크린샷처럼 abspath()함수를 써서 절대경로를 만들어야 했는데, 그 이유는 제 유저 이름등에 있는 n때문에 윈도우에서 사용하는 폴더를 구분하는 기호인 \를 사용하면 \n이 나와서 에러가 떴습니다. 그래서 리눅스처럼 / 를 사용해야 했는데, 이렇게 되면 윈도우 환경에서는 인식이 안 됩니다. 그래서 이번에는 abspath()라는 함수를 사용하도록 했습니다.



일단 pytrader를 실행시키도록 합니다.



그리고 나서 pytrader만 실행시켰을 뿐인데, RLTrader가 제대로 작동이 되는 것을 확인할 수 있었습니다.




이제 다음 작업을 위해서 먼저 pytrader를 백업해 주도록 합니다.



다음으로는 일단 위 스크린샷처럼 프로젝트의 폴더 안에 또 폴더를 만들어서 아래에 만들어 주도록 합니다.



그리고 나서 인터넷에서 찾아낸 정보로 sys.path.insert()를 사용했지만, 문제는 이것만 가지고서는 전혀 파이썬 스크립트 안에서 import가 되지 않는 문제점이 발생하는 것 이었습니다.



그래서 하는 수 없이 리눅스에서 touch명령을 하는 copy /b 파일명 +,, 명령을 사용했습니다만, 이 방법도 그다지 효과가 없었습니다.



결국 무슨 수를 써도 스크립트 상에서 어떻게 하는 것으로는 다른 프로젝트-그것도 다른 환경에서 만들어져 있는 경우에는 위 스크린샷처럼 변수를 공유할 수 없다는 것 입니다. 그래서 또 문제에 부딪쳤습니다만, 그래도 언제나 그러했듯이 계속해서 문제의 해결책을 찾아 보려고 할 것입니다.

반응형