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

백테스트를 위한 유저 인터페이스의 제작-5-

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

안녕하세요?


지난번 포스팅에서 백테스트의 결과를 저장하는 폴더에 관해서 에러가 발생한 것을 볼 수 있었는데, 이제 이 에러도 강화학습에까지 영향을 미치기 때문에 반드시 수정을 하고 넘어가야 합니다. 그래서 관련된 내용을 이번 포스팅에서 다루어 보고자 합니다.



먼저 위 스크린샷의 결과에서 나오는 것처럼, 저 eppch_summary_dir이 어디를 가르키는 것인지 알아야 할 필요성이 있기 때문에, 한번 살펴 보도록 합니다.



일단 컴퓨터내에 있는 폴더를 지정하는 것이 아니기 때문에 결과가 저장이 되지 않았다고 생각이 됩니다.



그래서 일단 두번째로 저장을 하기 위한 폴더의 경로를 저장하기 위한 내용물이 비어 있는 변수를 만들어 주도록 합니다.



그리고 나서 이제 policy_learner.py에서 PyQt5를 import하도록 합니다.



그리고 나서 위 스크린샷과 같이 가시화 결과를 저장할 폴더를 준빟는 단계 이전에 이 단계에 넘어가기 위한 사전단계=저장할 폴더가 지정되어 있지 않으면 경고 박스가 뜨도록 만들어 놓기 위해서 인데.....



그런데 무슨 일이 있었는지 모르겠지만, 여기서도 또 에러가 나서 프로그램이 강제 종료되는 것을 볼 수 있었습니다.



먼저 문제가 경고박스를 띄우기 위해서 너무 준비할 것이 많아서, 하는 수 없이 이 경고박스와 PyQt5를 제거하고, 그냥 return만 주도록 합니다.



그리고 나서 위 스크린샷에 보이는 것처럼 main.py에 있는 MainWindow()를 가지고 오기 위한 작업입니다.




그리고 나서 위 스크린샷과 같이 from py파일 이름 import py파일 안에 있는 클래스의 이름 으로 다른 파일에 있는 클래스를 사용할 수 있습니다.



그리고 나서 위 스크린샷과 같이 MainWindow 클래스에 있는 savePath가 있으면, dirRoot라는 변수의 값이 바뀌어 져라고 if문으로 코드를 짭니다.



그리고 나서, 한번 제대로 작동을 하는 것이 맞는지 확인을 위해서, 강화학습을 위한 트리거 1번과 백테스팅을 위한 트리거1번을 한번 print()함수를 써서 제대로 나오는지 봅니다.



그런데 문제가 생겼습니다. 여기서 백테스티를 했기 때문에, 당연 강화학습의 1번 트리거는 False가 맞지만, 왜 백테스팅을 위한 표지까지 False가 나오는 것을 볼 수 있습니다.


기묘하게도, 모든 백테스트의 트리거들이 백테스트 버튼을 유저 인터페이스에서 누르기 전까지는 모두 True였다가, 버튼을 누르고 나서는 모두 False로 바뀌는 것을 볼 수 있었습니다. 이 때문에 지금까지 제대로 작업이 안되는 것을 볼 수 있었습니다.



그래서 하는 수 없이, policy_learner.py에 있는 PolicyLearner 클래스에서 이전에는 없던 변수 2개를 위 스크린샷에서 보이는 대로 추가해 줍니다.




그리고 나서 main.py로 가서, 위 스크린샷과 같이 강화학습을 시작하는 부분이나, 백테스트를 위한 부분에서 savingPath라는 것을 추가해 주도록 합니다.



그리고 백테스트를 위한 부분에서도 바꾸어 주도록 합니다.



그리고 나서 당연하다면 당연하게도 if문도 이렇게 바꾸어서 제대로 작동을 하는지를 보여 주도록 합니다.



이제서야 백테스트가 제대로 작동이 되는 것을 확인할 수 있었습니다.




마지막으로 제가 지정한 폴더에 제대로 저장이 되는 것을 볼 수 있었습니다. 이렇게 하는 것으로 이제 마지막 작업까지 완료가 되었습니다. 이렇게 유저 인터페이스를 추가한다는 작업을 마무리 지었으나, 하나 빠졌는 것이 있는데, 바로 강화학습에 걸리는 시간을 정확하게 측정하는 것 입니다. 다음 포스팅에서는 강화학습에 들어가면서, 학습에 얼마나 시간이 걸렸는지 측정하는 것을 다루고자 합니다.

반응형