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

에러 하나의 해결과 또 다른 에러의 발견

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

안녕하세요?


지난번 포스팅에서 어디가 오류인지 몰라서 연속적으로 주식 인공지능을 돌리지를 못했는데, 결국 녹화된 화면을 보고 나서야 겨우겨우 어디가 에러인지 알아내고, 그 에러를 수정하는 데 성공했습니다. 그런데 이번에는 또 어디가 문제인지 알아볼 수 없는 또 다른 에러가 나와서, 애를 먹이고 있습니다. 아무튼 이번 포스팅에서는 그 과정을 포스팅 하고자 합니다.



먼저 통상적인 경우의 화면입니다. 일단 위 화면은 Pycharm에서 debug로 작동시키는 것을 하였으며, 도저히 실시간으로 봐서는 알아낼 수 없어서 oCam으로 녹화한 다음, 윈도우 미디어 플레이어로 재생시켜 보면서 어디가 에러인지 알아본 것 입니다. 우선 통상적인 경우에는 위 화면에서 붉은 줄을 친 부분처럼 기존의 정보가 오면 표시가 되게 됩니다. 물론 여기서 왜인지 AJ렌터가가 보광산업이라고 표시가 되었는지는 모르겠습니다.



그런데 에러가 나오기 바로 직전에 스톱포인트에 멈추었을 때 화면입니다. 녹화된 화면으로 보면, 문제는 데이터가 들어가 있어야 하는데, 데이터가 전혀 없는 경우를 볼 수 있습니다. 이런 경우가발생한 다음 RLTrader를 부르면? 당연 데이터가 없기 때문에 에러가 나는 것 입니다.



결국 RLTrader를 불러오는 단계에서 이렇게 에러가 나서 정지가 되어 버리는 것을 볼 수 있었습니다. 저로서는 왜 이런 에러가 나왔는지는 모르겠습니다만, 일단 분명히 나타나고 있습니다.



그런데 그 이전에 위에 있는 stop point를 보니, 아예 대놓고 데이터가 왔으면 이걸 보고서 전체 데이터의 길이를 측정하는 단계가 있다는 것을 알 수 있었습니다. 그래서 이로 미루어 보아서, 여기서 if문을 쓰면 괜찮을 것이라는 생각을 했습니다.



다음으로는 그 이전의 스톱 포인트를 열어서 한번 보도록 합니다. 일단 위에서 밑줄친 것처럼 현재가를 비롯한 주식의 시세 정보를 받아오기 위해서 opw00018 이라는 TR을 요청하는 것을 볼 수 있습니다.




일단 녹화된 파일이 하나만 있는 것이 아니기 때문에, 위 스크린샷처럼 3개나 되었습니다. 그래서 다른 파일을 열어서 여기서도 비디오판독을 시도해 보고자 합니다.



여기서도 역시 같은 유형의 에러가 일어난 것을 확인할 수 있었습니다. 일단 여기서도 제대로 위에서 언급한 dataframe객체에 데이터가 없이 RLTRader를 불러서 생긴 에러인지 알아보기 위해서 한번 알아보고자 합니다.



여기서도 에러 직전의 상황인데, 역시나 데이터를 제대로 받아오지 못했다는 것을 볼 수 있었습니다. 이래서야 거의 판박이가 아닌가 하는 생각이 듭니다.



실제로 이 이전에 OPW00018이라는 TR을 요청하는 것 까지도 똑같다는 것을 알 수 있었습니다. 그래서 여기서도 같은 현상이 벌어진다는 것을 볼 수 있었습니다.



좀 더 확실하게 알아보기 위해서 확대를 한 화면 인데, 마지막 녹화파일 여기서도 역시나 여기서도 데이터가 전혀 없다는 것을 알 수 있었습니다. 이런 식으로 데이이터가 넘어가게 되면, 당연하다면 당연하게도 에러가 일어나게 됩니다.




다음으로는 에러가 발생한 곳인데, 역시 에러의 코드역시 비슷하다는 것을 알 수 있습니다. 물론 이건 그렇게 까지 큰 영향이 없는 것이, 일단 이 에러코드 자체는 봐본들 이것만 가지고서는 정확히 무슨일이 벌어진 것인지 알아보기 힘듧니다.



그래서 다시 pycharm으로 돌아가서, 먼저 위 스크린샷과 같은 메서드를 하나 만들어 주도록 합니다. 이 메서드는 실시간 주식 투자를 하는 메서드가 다시 실시간 주식 투자하는 메서드를 호출하면 에러가 날 우려가 있다고 생각을 해서, 중간 기착지가 되도록 만들어 준 것입니다.



그리고 나서 위 스크린샷처럼 데이터의 길이를 측정하는 코드 바로 아래에 if문을 두어서 만약에 가지고 온 데이터의 길이가 0이다. = 데이터가 없다면, 다시 이 실시간 투자를 하는 메서드를 처음부터 다시 시작하도록 만들어 주었습니다.



그런데 이렇게 하고도 또 다른 종류의 새로운 에러가 발생하는 것을 확인할 수 있었습니다. 이 에러는 어디에서 오는 것인지 전혀 알 수 없었는데, 아무튼 간에 일단 새로운 에러는 에러라고 치고.....




그리고 제가 본적이 없는 장황한 에러가 실시간 주식 투자를 하는 와중에 발생하는 것을 볼 수 있었는데, 몇 시간이나 작동을 한 다음에야 위 스크린샷과 같은 에러가 떴습니다.



다행인지 불행인지 이 에러의 경우에는 한번만 볼 수 있었습니다. 그래도 처음보는 종류의 장황한 에러 메세지는 메세지라서 추가로 더 조사를 하기 위해서 일단 텍스트 파일에 붙여넣기로 기록을 하였습니다.



그리고 여기서 또 위 스크린샷과 같은 에러가 또 발생하는데, 예, 이렇게 commgetData라는 함수가 호출되고 난 다음에 어떤 종류의 에러가 생기는 것 같은데, 이게 이제는 가장 큰 문제입니다.



그리고 뜻하지 않게도 에러가 해결이 되는 것을 debug를 작동시키면서 알아내는 데 성공했습니다. 우선 위 스크린샷과 같이 진짜로 데이터의 길이가 0이 되었습니다.



그리고 나서는 제대로 턴을해서 다시 실행시키는 방법으로 에러가 나오는 것이 아니라 위 스크린샷처럼 comm_get_data메서드를 다시금 호출을 해서, 이렇게 계속 호출을 하다가 다시 RLTrader가 정상적으로 작동이 되는 것으로 가는 것을 볼 수 있었습니다. 이렇게 하는 것으로 봐서, 에러 하나는 해결이 되었지만, 다른 에러 하나의 해결에 상당히 큰 골칫꺼리가 생긴 것을 볼 수 있습니다.



반응형