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

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

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

안녕하세요?


지난번에 이어서 계속해서 유저 인터페이스를 작성하는 과정을 기록으로 남기고자, 포스팅을 이어 가 보도록 하겠습니다. 일단 이번 포스팅에서 백테스트에 들어가기는 들어갔는데, 여기서 부터 예기치 못한 일의 연속이라고 할 수 있었습니다.



다음으로는 데이터 베이스 내에서 테이블이 있는지 없는지를 체크하기 위해서, 종목코드를 입력하는 LineEdit의 텍스트를 다 입력하고 나서, 엔터키를 누르면, 마지막에 지정되어 있는 메소드가 작동이 되도록 만들었습니다.



다음으로는 이 종목코드를 저장하기 위한 빈 메소드를 __init__()에서 선언을 해 주도록 합니다.



일단 여기서는 이전 포스팅에서 올린 내용과 마찬가지로 제대로 데이터 베이스 파일이 경로에 포함된 것이 맞는지 아닌지를 find()에서 확인을 해서, 위 스크린샷과 같이 해당하는 메세지 박스가 뜨도록 만들어 주도록 합니다.



그리고 나서, 다음으로는 백테스트에 들어가기 위해서 위 스크린샷과 같이 setValidator함수를 이용해서 1~99사이의 숫자만 지정을 하도록 만들어 주도록 하고, lineEdit에 텍스트를 입력하고 나서, 위 스크린샷과 같이 지정된 메서드가 작동되도록 만들어 주도록 합니다.




이전에 했던 것과 마찬가지로, 이전에 백테스트를 위한 트리거 4개 중에서 3개-모델의 파일, 데이터 베이스 파일, 테이블의 확인이 끝나면 작동에 들어갈 수 있도록 만들어 주도록 하고, 먼저 여기서는 데이터 베이스의 테이블에서 전체 열(row)의 갯수를 구한 다음에, 지정된 %만 선택하도록 만들어 줍니다.



그리고 나서 이전에 했던 것과 마찬가지로 주식 데이터를 준비하는데, 여기서도 변수의 이름만 바꾸었을 뿐, 나미지 내용은 그렇게 달라진 것은 없기는 없었습니다.



그리고 나서, 위 스크린샷과 같이 원래의 차트 데이터에서 지정된 지정cuttingPoint만 지정을 하도록 해 줍니다. 그렇게 여기까지 생각을 해보니 중대한 문제점이 생겼습니다. 바로 여기서는 위 스크린샷처럼 인텍스 0부터 시작을 하면, 과거의 데이터를 지정하기 때문에 바꾸어야 했습니다.



그리고 나서 중간에 변경해야 할 점이 있기 때문에, 위 스크린샷과 같이 data_manager.py에 가서, 위 스크린샷과 같이 기존에 없던 메소드를 만들어준 다음에, 위 스크린샷과 같이 이번에는 cutting_point부터 마지막까지 선택을 하라고 메소드를 만들어 줍니다.




다시 main.py로 돌아와서 원래는 load_chart_data라고 되어 있는 부분을 load_chart_data2라고 메서드를 지정하도록 합니다. 그리고 나서 백테스트에 들어가기 위한 트리거를 True로 바꾸어 줍니다.



이렇게 이제 유저 인터페이스를 만들어 주었고, 지난번에 만들어 준 모델 파일로 있기는 있으니, 일단 테스트에 들어나 가 보도록 합니다.



그런데 위 스크린샷과 같이 에러가 뜨는 것을 볼 수 있었습니다. 그리고 나서, 결과가 나오기라도 했냐하면, 그것도 아니고 해서 상당히 작업이 제대로 진행이 되지 않았습니다.



일단 위 스크린샷과 같이 백테스트를 위한 데이터 베이스의 일련의 파일들이 만들어 지는 것을 확인은 할 수 있는데.....



일단은 예상치 못한 벽에 부딪친 것은 맞습니다. 우선 위 스크린샷과 같이 제대로 데이터 베이스에서 테스트를 위한 데이터는 가지고 오는 것은 맞는데, 이게 어디에서 에러를 일으킨지를 찾아야 겠다는 생각이 듭니다. 물론 이 방법은 당연하다면 당연하게도 코드 한줄한줄 마다 print()함수를 쓰는 것인데, 이 에러를 다음 포스팅에서는 해결을 하도록 해 보겠습니다.

반응형