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

PyMon을 만드는 실습에 들어가기

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

안녕하세요?


갑자기 잘 만들던 pytrader를 놔두고, 이 무슨 PyMon이냐고 하실 분들이 많으실 텐데요, 바로 주식시장이 닫힌 시간동안 잠시 작업해서, 이 알고리즘 트레이딩 시스템의 뇌 역할을 하는 프로그램인 PyMon을 작성해서 한번 테스트를 해 보고자 했습니다. 이 PyMon의 작업은 급등주를 찾아내서, 코스닥에서 집어주는 역할을 합니다.



기존의 PyQtTest환경에서 그냥 pymon.py라는 파일을 추가해 주기만 하는 작업이기는 합니다. 그래서 일단 만들어 주도록 해 보도록 합니다.



그리고 나서, 코드의 초반부를 입력하도록 합니다. 당연하지만, 당연하게도 여기서는 코스피와 코스닥을 구분하는 코드로 각각 0과 10이 있는데, 일단 코드를 조금만 손 보면 코스피에서도 급등주를 찾아낼 것으로 예상이 되지만, 지금은 코스닥만 타겟으로 해서 작업을 해 보도록 합니다.



그 다음에는 코드 리스트를 가지고 오는 메소드를 실행시킵니다. 이 메소드는 kiwoom.py에 있는 메소드를 가지고 쓰기 때문에 딱히 더는 할 것이 없다면 없다고 할 수 있습니다.




그리고 나서 get_ohlcv(): 라는 메소드가 나오는데, 간단하게 말해서 주식의 일봉 차트를 가지고 오는 것을 이야기 하고 있습니다. 일단 여기서는 여기까지로 해 보도록 합니다.



다음은 이 PyMon에서 가장 핵심이라고 할 수 있는 급등주 포착 알고리즘을 구현한 코드입니다. 일단 오늘 거래량이 지난 20일 평균 거래량의 10배를 넘으면 이 주식이 급등할 것이라고 예측을 하는 비교적 간단해 보이는 알고리즘 이기 때문에, 일단 위 코드에서는 if문을 이용해서 오늘의 거래량이 20일간의 평균 거래량을 10배 초과할 경우 true라는 값을 반환(return)하도록 설계했습니다.



다음은 buy_list를 업데이트하는 메소드입니다. 여기서는 buy_list.txt를 열어서, 나머지는 다 똑같은데, code만을 집어넣고 나서 닫는다는 점에서 차이가 있습니다.



다음은 프로그램을 작동하라는 명령을 내리는 run메소드입니다. 여기서는 일단 키움증권 서버에서 코드 리스트와 일봉차트를 기반으로 해서, 작업을 하고나서, 만약에 급등주 알아보는 메소드에서 true라고 나오면, 이를 buy_list.txt에 올리라는 메서드입니다.




그리고 나서, 일단 여기서는 클래스를 객체화 시키는 것만이 아니라, 아예 변수.메소드명() 이라는 식으로 클래스 안의 특정한 메소드를 작동 시킬 수 있습니다.



일단 프로젝트가 있는 폴더에 txt파일을 각각 빈 파일로 만들어 주도록 합니다. 그리고 나서 프로그램을 돌려서 제대로 결과가 나오는 지 여부를 살펴 보고자 합니다.



그런데 조회횟수 제한이라는 것이 나와서 진짜 씨름할 것은 지금부터라는 생각이 듭니다. 아무튼 키움증권의 서버가 서버안정화를 위해서 일단 이런 제한을 둔 것은 맞지만, 될 수 있으면, 이런 제약을 피하면서 데이터를 가지고 와야 겠다는 생각이 듭니다. 이제 부터 일련의 포스팅은 이 키움증권 서버의 조회횟수 제한 -210과 같은 에러와 싸움을 다루고 있다고 보시면 됩니다.

반응형