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

RLTrader의 유저 인터페이스를 만드는 작업-7-

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

안녕하세요?


지난번 포스팅에서는 예상치 못한 일이 일어나서, 그걸 막는 작업을 하기 위해서 작업을 했는데, 이번에는 다음 작업이라고 할 수 있는 데이터 베이스 파일에서 제대로 원하는 이름의 테이블이 있는지를 알아보기 위한 작업에 들어가 보는 것 입니다.



먼저 위 스크린샷처럼 Qt Designer에서 새로운 레이블을 만들어서 테이블(종목코드) 체크 완료 라는 것을 입력해 주도록 합니다. 이렇게 함으로써, 사용자가 빠진 단계가 있는지에 대해서 하나하나 알아 갈 수 있습니다.



그리고 새로 만든 레이블인 label_5는 프로그램이 시작하자 마자 바로 초기 설정에서 hide()메소드를 주어서 감추도록 합니다. 이렇게 함으로써, 조건이 갖추어 지지 않으면 뜨지 않는 메세지는 볼 수 없는 것 입니다.



다음으로는 위 스크린샷과 가이 먼저 sql구문을 select name from sqlite_master where type = "table" and name "%s" 라고 주어서 선택한 데이터 베이스의 파일에서 원하는 테이블이 존재하는지 아닌지에 대해서 값을 알 수 있는 구문을 주었습니다. 그리고 나서 cur.fetchone()이라는 메소드를 주어서 튜플의 형식으로 나온 결과값에서 하나를 선택하라는 식으로 만들어 주었습니다.


당연 여기서 선택된 값이 있다=원하는 특정한 테이블이 있다 라는 결과이면 결과값이 None이 아니기 때문에 데이터 베이스 안에 테이블이 있다고 판정을 내릴 수 있으며, 아닌 경우 = 결과값이 None이다 = 원하는 테이블이 없는 경우에는 그에 상응하는 메세지 박스가 뜨도록 만들어 주었습니다.




그래서 제대로 테이블이 데이터 베이스 파일안에 있을 경우에는 위 스크린샷처럼 제대로 표식이 뜨는 것을 확인할 수 있었습니다. 이렇게 하는 것으로, 종목코드를 입력하고 확인하는 단계를 완료할 수 있었습니다.



다음으로는 lineEdit_3이라고 해서, 학습에 사용할 데이터의 비율 - 전체 데이터 베이스 안에 들어간 주식의 일봉차트 데이터에서 얼마나 많은 비율을 강화학습에 사용할 것이냐고 물어보는 단계입니다. 일단 여기 항목에다가 값을 입력하고 엔터키를 누르는 순간에 작동을 하도록 만들어 주어야 합니다.



그리고 나서 한번 만들어 보기를 1~99사이의 값만을 사용하기 위해서, 위 스크린샷과 같이 setValidator(QtGui.QintValidator(최소값, 최대값, self)) 라는 형식으로 입력을 하게 되는 것 입니다. 물론 여기서는 제가 정수만이 필요해서 이렇게 만들었지만, float과 같은 형식을 사용하면 실수도 특정 범위 안에서 입력이 가능하라라 생각이 됩니다.




일단 한번 입력이 일어난 다음에는 제대로 1~99사이의 정수만이 입력이 되는데 , 제일 처음에 입력을 할 때는 이게 적용이 되지 않는 문제점이 나왔습니다.



그래서 위 스크린샷과 같이 __init__(self): 메소드에서 그냥 지정해 주도록 합니다. 이렇게 하는 식으로 시작하자 마자 제약을 주는 식으로 바뀌어야 합니다.



이제서야 이번 과정까지는 제대로 실행이 되는 것을 확인할 수 있었습니다. 다음 포스팅에서는 저를 정말 많이 골치아프게 했는 항목에 대한 내용이 나올 것 입니다. 지금이야 어떻게 해서 이를 해결할 수 있었는지 알 수 있었지만, 그래도 그 당시에는 정말로 신경을 많이 쓰게 만들었습니다.

반응형

댓글0