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

목요일 하루종일 해가 떠 있는 동안 시도한 주식 모의투자

by 인터넷떠돌이 인터넷떠돌이 2019. 1. 25.
반응형

안녕하세요?


지난번 포스팅에서 새로운 지연보상 임계치로 모델을 만들고, 백테스트 결과 제대로 수익이 나오는 것 까지 보는데 성공했습니다. 그래서 이번에는 이 모델도 적용해 보면서, 계속해서 발생하는 에러에 대해서 한번 해결해 보고자 가지가지 방법을 시도해 보는 것을 했습니다. 그리고 이번 포스팅은 그런 내용에 대해서 올리겠습니다.



먼저 언제나 그렇듯이 에러가 발생하는 것을 볼 수 있는데, 일단 RQname을 찍도록 만들었기 때문에, 어느 지점에서 에러가 나온 것인지 대충이나마 알 수 있게 되기는 되었습니다.



계속해서 이런 에러가 벌어지는 것을 볼 수 있는데, 이 에러를 어떻게 해결하지 않으면 연속적이고 자동으로 주식 자동 매매를 하는 인공지능 주식 투자자는 만들어 지지 않습니다.



다음으로는 어디서 에러가 났는 것인지 알아보기 위해서, 표식을 한개의 데이터마다 찍어주도록 했습니다. 그렇게 하는 것으로 어디서 나온 것인지 더 잘 알수 있으리라 생각을 했습니다.



그런데 결과를 보니까, 컴퓨터가 자체적으로 생성을 하는 날짜 데이터를 제외하고는 모두 나오지 않는다는 것을 알 수 있었습니다. 즉 데이터가 공백인데 여기다가 숫자처리등을 하라고 하니 에러가 나서 프로그램이 정지되어 버린 것 이었습니다.



그래서 시가부터 오지 않아서 생긴다고 생각하고 일단 if문을 써서 변수에 내용이 있으면 true값이 되므로 여기서 데이터를 변형 하도록 하고, 그렇지 않으면 다시 rqdata를 보내라는 식으로 다시금 짜 보도록 했습니다.



그런데 그렇게 하고서도 위 스크린샷처럼 날짜만 나오고 이렇게 되지 않는 에러가 발생하는 것을 볼 수 있었습니다. 어디가 문제인지 일단 감이 안 잡히기는 했습니다.




그래서 정확하게 알기 위해서 한번 위 스크린샷과 같이 if문에서 else로 빠진 것이 맞는지 알기 위해서는 먼저 print()함수가 앞으로 와야만 하는 것 이었습니다.



그리고 나서 위 스크린샷처럼 먼저 kiwoom.py의 시작지점에 위 스크린샷과 같은 변수와 타이머를 만들어 주도록 합니다. 그리고 나서 이 타이머가 다 되면 Break_and_Retry라는 메서드가 작동이 되도록 만들어 주도록 합니다.



그리고 나서 다시 rq_data를 보내기 위해서는 특정한 데이터가 필요하기도 합니다. 그래서 이와 같은 과정을 하기 위해서 위 스크린샷처럼 빈 변수들을 만들어 주도록 합니다.



그리고 다른 메소드에서도 사용이 가능하도록 위 스크린샷처럼 한번 self를 붙ㅇ인 변수를 만들어 줘서 trcode등을 집어넣어 주도록 하고, 다음으로 타이머를 작동시키도록 합니다. 지금와서 보면 무언가 이상하게 되었다는 생각이 들기도 하는데, 일단 너무 많은 시간이 CommRqData에 걸려서 이런 일이 벌어진 것이 아닌가 하는 생각이 들어서, 일단 타이머를 만들어 주어서, 이 타이머동안 CommRqData함수를 빠져나가지 못하면 강제로 다른 함수가 작동되도록 했습니다.



그런데 일단 프로그램이 작동 하자마자 한번 에러가 나는 것을 볼 수 있었습니다. 아무래도 코딩이 잘못된 곳이 존재한다는 이야기가 되는 듯 합니다.



일단 기능을 알 수 없는 예제에서 본 코드 한줄을 주석처리하였습니다. 위 코드를 주석처리 하고서 프로그램을 작동시켜 보도록 했습니다.




그리고 다시 보니까, 위 스크린샷처럼 self를 빼먹어서 일련의 에러가 난 것이라는 생각이 들었습니다. 그래서 늦게나마 self를 붙여 주도록 했습니다.



그리고 나서 다시 실행을 해 보니까, 위 스크린샷처럼, 에러가 나오는 것을 볼 수 있었습니다. 나중에야 알았지만, 저는 이때까지만 해도 어디가 정확히 문제인지 몰랐습니다.



일단 디버거를 실행시켜서 한번 알아본 결과, 에러가 일어나기 전에 제대로 commRqData 메서드를 위한 준비는 다 끝나 있다는 것을 알 수 있었습니다.



그리고 여기서 하나 알게된 것이 let이라고 해서 CommRqData의 함수-OpenAPI가 본래 가지고 있던 함수가 어떤 값을 반환하는 지를 알아보게 되었습니다.



일단 KOA studio를 열어서 한번 이 에러 메세지가 무엇을 의미하는 지 알아보았습니다. 그랬더니 위 스크린샷처럼 입력값의 오류가 있어서 생기는 오류라고 나오는 것을 볼 수 있었습니다. 분명히 제가 TRcode랑 Rq name등은 제대로 입력한 것이 맞는데, 어디서 문제가 생겼는지, 정확히 이 때는 알지 못했습니다. 다만 이게 바로 오전에 해메었던 것이었고, 점점 찾아가다 보니 답이 보이기 시작했는데, 그 내용은 다음 포스팅에서 올리도록 하겠습니다.

반응형

댓글0