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

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

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

안녕하세요?


주말 내내 이 백테스트라고 해서 전체 데이터를 모두 강화학습에 사용하지 않고, 보통 75%를 강화학습에 사용하도록 하고, 나머지 25%를 이 강화학습으로 만든 모델이 얼마나 제대로 작동하는 지 알아보기 위해서 테스트를 하는 작업에 들어가는 데, 이제부터 일련의 포스팅은 이 백테스트를 한번에 간단하게 하도록 만드는 작업에 들어가 보고자 합니다.



먼저 위 스크린샷과 같이 유저 인터페이스를 Qt Designer에서 만들어 주도록 합니다. 일단 욕심이 과해서 한번 프로그래스바까지 만들어 놓았기는 합니다만, 결국 마지막까지 가서도 제대로 만들지 못하기는 했습니다.



그리고 나서 main.py에 가서는 먼저 백테스트를 위한 여건이 되었는지 아닌지를 보여주는 지표를 모두 hide()처리를 해서, 처음에는 안 보이도록 만들어 주도록 합니다. 계획으로는 처음에는 작업의 진척도도 표시해 주는 위젯도 생각을 했지만, 나중으로 미루도록 합니다. 그리고 나서 가장 아랫쪽에 모델을 지정하기 위한 버튼을 누르면 Selection_of_Model_File()메소드가 작동되도록 만들어 주도록 합니다.



그리고 나서 클래스 변수로 위 스크린샷과 같이 빈 변수를 하나 선언해 주는데, 이 변수는 바로 나중에 모델이 어디에 있는지를 저장하는 역할을 하게 됩니다.



다음으로는 백테스트에 사용할 모델파일(h5)파일을 지정해 달라는 선택 윈도우를 띄우는 코드를 만들었습니다. 당연하다면 당연하게도, 여기서도 결과는 튜플에 저장이 되기 때문에, modelPath[0]로 강화학습으로 만든 모델이 저장된 경로만 선택하도록 합니다.




그리고 나서 모델이 선택된 경로가 보여지는 lineEdit에 텍스트가 바뀌면 위 스크린샷과 같이 텍스트가 바뀌면 작동이 되는 메서드를 지정하도록 합니다.



그리고 여기서는 위 스크린샷과 같이, 제대로 기계학습의 모델이 선택이 된 것이 맞는지 아닌지를 지난번과 같이 find()함수를 이용해서 체크를 해 주도록 합니다.



그리고 나서 백테스트에 들어가기 위한 조건의 역할을 하는 지표를 4개 만들어 주도록 하고, 위 스크린샷과 같이 모두 False처리를 해 주도록 합니다.



다음으로는 데이터 베이스를 선택할 경우를 위한 버튼을 구현해 주도록 합니다. 물론 위에서 강화학습을 위해서 선택한 데이터 베이스의 경로와 같이 공유할 수도 있지만, 일단은 제 경우에는 따로따로 지정해 주도록 했습니다.




다음으로는 백테스트를 위해서 데이터 베이스파일의 경로를 지정했을 경우에는, 위 스크린샷과 같이 변수를 지정해 주도록 합니다.



위 스크린샷과 같이 파일을 선택하기 위한 윈도우를 지정해 주도록 하고, 다음으로는 당연하다면 당연하게 이 경로를 위에서 생성한 빈 변수에다가 저장을 해 주도록 합니다.



그리고 당연히 위 스크린샷과 같이 Test_Data_Set_Check()라는 메서드를 지정해서, 이 경로가 타나나는 LineEdit의 텍스트가 변경되었을 경우, 위 스크린샷과 같이 작동이 되도록 지정합니다.



다음으로는 데이터 베이스 파일을 지정한 경로가 제대로 지정이 된 것이 맞는지 아닌지를 알아보기 위해서, 위 스크린샷과 같이 메서드를 작성해 주도록 합니다. 원래라면 포스팅을 더 이어나가야 하지만, 너무 길어지는 관계로 일단 여기서 한번 끊도록 해 보겠습니다. 다음의 내용은 다음 포스팅에서 이어서 올리도록 해 보겠습니다.

반응형