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

pytrader를 만드는 실습에 들어가기-12-

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

안녕하세요?


어째 개발3일째가 잘 나가다가 생각지도 못한 암초에 부딪쳤는데, 아무튼 간에 이 에러부터 일단 해결을 하기는 해야 합니다. 그래서 이번 포스팅에서는 처음으로 만난 암초를 어떻게 알아내서 처리를 했으며, 그 과정을 포스팅 해 보고자 합니다.



우선 위 스크린샷에 보이는 것과 같이, 먼저 check_balance()라는 메소드에 어느 중에서 에러가 났는지를 알아보고자 합니다. 예전 유니티5의 C# 스크립트에서도 에러가 어디서 났는지 모르겠다고 하면, 이 방법을 섰는데, 이렇게 print함수를 사용하는 것은 어디서든지 통한다는 생각이 듭니다.



일단 실행을 시켜보니, part1만 뜨고, 그 이후에는 전혀 뜨지 않는 것을 볼 수 있습니다. 한마디로 이후에는 아예 아무것도 안 나온다는 것을 알 수 있는데, 이를 어떻게 해결해야 합니다.



그래서 어디가 문제인가 했더니, 위 스크린샷에 보이는 kiwoom.py에 보이는 reset_opw00018_output(): 이라는 메소드를 검사해 보고자 합니다.



일단 한번 더 프로그램을 실행시킨 다음에 조회버튼을 누르자 위 스크린샷처럼 python의 작동이 중지되었다는 메세지가 뜨는 것을 볼 수 있었습니다.



그리고 일단 위 스크린샷처럼 제대로 처음에 계좌번호를 가지고 오는 것 까지는 확인을 할 수 있었습니다. 그래서 정말 어디가 문제인지 이래저래 헤메었습니다.




알고 봤더니, 지난번 시간에 kiwoom이라고 되어 있었는 변수를 그냥 대문자 K로 바꾸어 주었는데, 그걸 잊어버리고, 그냥 github에서 가지고 와서 생긴 문제였습니다. 여기에 있는 kiwoom을 모두 K로 바꾸어 주도록 합니다.



그러자 이전에는 part1까지만 나오는 것이 part5까지 나오는 것을 볼 수 있었습니다. 하지만 마지막 part6가 나오지 않는 문제가 보이는 가 싶더니.....



이번에 또 PyCharm에서 문제가 발생하는 것을 볼 수 있었습니다. 이런 문제가 발생하는 것으로 보아서, 이걸 어떻게 해야 할지 모르겠지만, 일단 그래도 해결을 해야 하기는 하니, 계속해서 어느  줄에서 에러가 발생한 것인지 알아보러 갑니다.



우선 pytrader에 있는 kiwoom.py에 있는 comm_rq_data()라는 메소드로 넘어가는 것 까지는 어떻게 제대로 되는 것을 확인할 수 있었습니다.



그래서 한번 모의투자와 실제 투자서버를 구분해 주는 메소드가 문제가 아닌가 하는 생각이 들어서, 한번 이 부분을 주석처리를 해 보고자 합니다.




그리고 아랫쪽에 있는 구절역시 아예 주석처리를 해 버리도록 합니다.



그래서 이번에는 서버에서 이벤트로 데이터가 오면, 이걸 잡는 메소드인 _comm_get_data()라는 메소드에서 무슨 문제가 있는 것이 아닌가 싶어서, 여기다가 print()함수로 문자열을 지정해서 표식을 남겨 두었습니다.



무슨 일인가 했더니, 계속해서 이 부분이 호출이 되면서 연속적으로 문제가 발생하는 것을 볼 수 있었습니다. 결국 계속해서 서버에서 데이터가 와서 이걸 잡으려 한다는 것을 알수는 있는데, 지금 이 단계에서는 어디가 문제인지 일단은 알 수 없었습니다.



그래서 데이터를 받는 메소드에서 무슨 문제가 생긴 것이 아닌가 해서, 한번 여기다가도 위 스크린샷처럼 표식을 찍도록 했습니다. 이렇게 해서 한번 더 프로그램을 작동시켜 보았습니다.



그 결과 어떻게 된 것인지 모르겠지만, 계속해서 프로그램에서 데이터를 받는 메소드로 넘어가지 않는 현상이 발생했다는 것을 알 수 있었습니다. 아마 어딘가가 오타일 수도 있고, 어딘가가 잘못되었을 수도 있는데, 이걸 알아챈 시간이 거의 새벽이었습니다. 지금다시 생각해 보면, 다시 하라고 하면 그냥은 못하겠지만........ 이때는 어떻게 해결하려고 마구 진행을 하였습니다.

반응형