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

주식의 현재가를 비롯한 정보를 얻어오는 방법

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

안녕하세요?


이번 포스팅에서 부터는 제가 만들 주식 인공지능의 눈 역할이라고 해야 할까요? 일단 학습을 위해서는 일봉차트를 가지고 오는 것이 맞기는 했습니다만, 문제는 이것만 가지고서는 주식시장의 현재 상황에 바로바로 대응을 할 수 없다는 문제가 있습니다. 그래서 인공지능 주식 투자자의 눈 역할을 하는 부분을 만들어 보고자 하는 것이 목표인데, 이 작업도 예상외의 문제가 붉어지는 바람에 많이 지체가 되었습니다.



먼저 PytraderWithBrain이라고 하는 새로운 프로젝트를 생성하도록 하고 나서, 기존의 Pytrader에 있던 파일들을 복사해서 이 프로젝트의 폴더안에 넣도록 합니다.



다음으로는 3번째 타이머를 주어서, 이 타이머가 10초마다 카운트를 치게 되면 timeout3라는 메서드가 실행이 되도록 디자인을 해 주도록 합니다.



그리고 나서, Qt designer를 열어서 위 스크린샷과 같이 실시간 정보요청이라는 체크박스를 만들어 주도록 합니다. 이 체크박스가 체크가 되면, 10초마다 현재가를 비롯한 시가, 고가, 저가, 거래량의 정보가 요청을 하도록 하는 겁니다.



다음으로는 timeout3의 메소드를 만들어 주도록 하고, 10초마다 실행이 되는 메소드로는 바로 Requirement_of_current라는 메소드입니다. 이 메소드에서는 데이터를 저장할 폴더의 경로와 정보를 요청할 종목코드가 있는지 여부를 살펴보도록 합니다.



다음으로는 종목코드를 얻어오고, 저장경로가 있으면, 위 스크린샷과 같이 opw10001이라는 TR을 요청하도록 하는 메소드를 작성하는 것 입니다.



그리고 나서 다음으로는 TR데이터를 받으면 호출이 되는 메서드를 디자인하는데 rq이름이 제가 지정한 opw10001에 해당하는 내용이 오면, 성공이라고 타이핑이 뜨도록 만들어 놓았습니다.



이제 모든 준비를 갖추고, 일단 통신이 잘 되는지를 한번 과거의 통장잔고를 보여주는 메소드를 가지고 와서, 체크해 보도록 합니다.



그런데 어디가 이상이 생긴 걸까요? 일단 타이머쪽에 문제가 생긴것 같아서, print()함수를 이용해서 어느줄에서 문제가 발생한 것인지를 찾아 보도록 합니다.




그리고 나서, 이전에 있던 if문의 체크를 정보를 요청하는 곳에서는 모두 삭제를 하도록 했습니다. 왜냐하면 여기서 까지 2중으로 체크할 필요는 없으니까요.



그래도 정보가 요청이 되지를 않자, 이번에는 OnReceiveRealData라는 메소드를 지정해서, 실시간 데이터 정보를 받는데 따로 메소드가 있는 것인가 싶어서 한번 테스트를 해보고자 합니다.



그렇게 해서, 일단 제대로 realData라는 실시간 정보가 오게 되면, 위 스크린샷과 같이 실시간 정보가 오도록 만들어 주도록 합니다.



그런데 나중에 알고보니, 또 다른 오류를 하나 더 범했습니다. opw가 아니라 opt10001이라는 것 이였습니다. 그런데 여기서 눈치빠르신 분들은 아시겠지만, 오타가 나 있는 것을 보실 건데요, 이 오타하나의 문제로 인해서 제가 많이 헤메게 되는 원인이 됩니다.



아무튼 이렇게 해서 첫 시도는 실패로 끝이 났습니다. 하지만 이제 겨우 만드는 단계의 시작일 뿐 입니다. 책에서도 이렇게 실시간으로 정보-특히 현재가를 얻어오는 것을 바로 알려주지 않았기 때문에, 제가 키움증권의 메뉴얼이나 KOA studio 등을 참조해 가면서 만들어야 하는데, 겨우 첫 발자국만 뗀 것 입니다.

반응형