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

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

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

안녕하세요?


지난번 포스팅에서는 어떻게 새로운 시도를 하기는 했습니다만, 그래도 어떻게 에러를 이번에야 말로 고쳐서 제대로 작동을 일단 시키는 데는 성공했습니다. 그래서 관련된 내용을 이번 포스팅에 올리고자 합니다.



일단은 한번 OnReceiveMsg라는 메소드를 가지고 오도록 합니다. 이 메서드는 서버에서 메세지를 받으면 그걸 보여준다고 하는데, 이걸 통해서 어디서 에러가 나왔는지를 알고자 합니다.



일단 서버에서 내려받은 메세지를 표기할 수 있도록 합니다.



일단 실행을 시키니까, 서버에서는 알수 없는 오류라고 나와서 다시금 답답하게 만들어 줍니다.



그런데 자세히 보면, 어디가 문제였냐 하면, 바로 0하나를 중간에 빼먹는 것 때문에 벌어진 일 입니다.




일단 이 오타를 정정하니까, 어떻게 제가 원하는 대로 결과가 나오는 것을 볼 수 있습니다. 이렇게 모든 일의 원인이 이 오타라는 것을 보니까, 왠지 힘이 빠지기는 합니다만, 그래도 작업은 이어 가도록 해 보겠습니다.



이제 print()함수로 글자만 나오는 것을 원하는 것은 아니기는 하기 때문에, 이번에는 해당하는 메서드를 지정해서 본격적으로 데이터를 받아 오도록 해 봅니다. 다시 말하지만, 키움증권의 서버에 TR을 opt10001을 보내서 오는 메서드를 바로 여기서 받아오라는 것 입니다.



그전에 일단 CommGetData는 키움증권의 매뉴얼에서도 점점 지원을 하지 않을 것이라는 것을 보여주고 있습니다. 그래서 앞으로 사용이 권장되는 GetCommData를 한번 사용해 보고자 합니다.



먼저 여기서는 현재가를 가지고 올 필요가 있기 때문에 위 스크린샷처럼 close로 하도록 합니다. 일봉차트에서는 종가라고 표기가 되는 것이기는 합니다만, 이게 현 시점에서 마지막 가격이기 때문에 사싱상 현재가 = 종가 로 처리해도 됩니다.




어떻게 해서 값이 나오는 것을 볼 수 있었습니다. 그런데 앞에 -가 붙었는데, 원래는 이런 식으로 나오는 것인지는 모르겠습니다만, 문제는 이렇게 나와서는 제대로 사용을 할 수 없기 때문에, 이번에는 절대값으로 바꿔야 할 필요가 있어 보이기도 합니다.



일단 서버에서는 이 데이터를 받은 시점을 따로 지정해 주지 않습니다. 그래서 datetime이라는 모듈을 import해 오도록 합니다. 



그렇게 해서 장황해 보이는 것이기는 합니다만, 그래도 원리는 간단합니다. getcommdata라는 키움증권의 메소드로 서버로 부터 받은 다양한 데이터 중에 일부를 가지고 오는 것 입니다. 정확히는 제가 선정한 변수에 넣는 것인데, 여기서 날짜인 data만은 제가 strftime()이라는 함수로 원하는 형식으로 컴퓨터에서 찍어서 ohlcv라는 딕셔너리에 넣는 것 입니다.



다음으로는 pytrader.py로 가서, 한번 ohlcv라는 딕셔너리에 데이터가 들어왔으면, 이걸 pandas의 데이터 프레임 객체에 집어넣고, 이 데이터 프레임에 있는 그대로 sqlite의 데이터 베이스 파일에 데이터를 넣는 과정을 거치게 됩니다.




그렇게 코딩을 하고서 준비를 마쳤습니다.



그런데 어디서 문제가 생긴 것인지 몰라도 이번에도 충돌이 일어난 것을 볼 수 있었습니다.



일단 위 스크린샷처럼 표식을 남겨서 제대로 어디까지 작동을 하는 지 알아보고자 합니다.



표식을 남긴 결과, 날짜까지는 제대로 나오는 것을 볼 수 있었습니다만, 문제는 그 이하는 제대로 나오지 않는 것을 볼 수 있었습니다. 그래서 하는 수 없이 이제부터 하나하나 살펴보는 작업을 하는 수 밖에 없다는 생각이 듭니다. 이런 점에서 볼 때 유니티5는 얼마나 대단한 툴인지는 알만 한데, 그래도 파이썬을 유니티5에서....... 할 수는 있을지 없을지 모르겠습니다만, 한가지 확실한 것은 PyCharm에서는 귀찮더라도 이 과정을 거쳐야 한다는 것입니다.

반응형