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

1주당 가격에 제한을 두어서 단타매매에 적합한 종목찾기

by 인터넷떠돌이 2019. 2. 17.
반응형

안녕하세요?


일단 가장 먼저 10분봉에서 알아보기를 시도하기 전에 하나 먼저 해두어야 하는 것이 있습니다. 그건 바로 1주당 가격이 너무 높으면 실전투자에 들어가기에는 너무 무리가 따르기 때문에 여기서는 먼저 1주당 가격에 대해서 제한을 줄 수 있는 것에 대해서 한번 구현해 보고자 합니다.



먼저 처음의 시도는 간단하다면 간단합니다. 그냥 close가 있는 dataframe에서 가장 마지막에 있는 값을 가지고 와서, 이 값이 목표로 한 31만원 미만이면 기록을 하라는 식으로 명령을 내려 주었습니다.



그런데 무슨 문제가 생겼는지 ValueError이라는 것이 나오는 것을 확인할 수 있었습니다. 그리고 문제가 된 것은 당연히 새로 코드를 추가한 곳이였습니다.



다음으로는 한번 위 스크린샷과 같이 바꾸어 보았습니다. 이유는 간단하게도, pandas가 0.14버젼이 되기 전이라면 이렇게 -1을 주어서 마지막 행의 데이터를 가지고 오려고 하면 에러를 일으킨다고 합니다. 그래서 이런 경우에는 tail()이라는 함수를 사용해서 dataframe의 끝에서 몇번째 가지를 선택해서 가지고 온다는 명령을 내려야 합니다.



실제로 tail(1)을 주자, 위 스크린샷처럼 제대로 마지막 행에 있는 가장 최신의 현재가를 가지고 오는 것을 확인할 수 있었습니다.




그리고 나서 이제 어떻게 해서 데이터만 추출해야 할 필요성이 있기 때문에, 이 경우에는 위 스크린샷처럼 나오듯이 데이터 프레임 객체의 이름에다가 iloc함수를 사용, [row번호]['column의 이름']을 붙여주는 식으로 추출이 가능합니다.



이렇게 해서 한번 연습으로 돌려본 결과 제대로 해당하는 값을 추출해 낸다는 것을 확인할 수 있었습니다. 이제 다음단계로 넘어가도록 합니다.



그런데 범위를 늘려서 실전으로 들어가니, 위 스크린샷과 같은 에러가 뜨는 것을 확인할 수 있었습니다. 그래서 어디가 문제인가 해서 한참을 헤메었습니다.



문제는 바로 위 스크린샷처럼 000030이라고 하는 종목코드가 문제였습니다. 일단 이걸 한번 검색해 보면, 실제로 있는 주식의 종목이 아닌데, 그 때문에 빈 dataframe이 전송되어 오고, 이걸 처리하지 못해서 생기는 문제가 상당합니다.




그래서 위 스크린샷처럼 먼저 만들어 주기를 dataframe.empty라는 것을 주어서 데이터 프레임이 비었는지를 확인해 보도록 했으며, 다음으로 비었으면 그냥 통과를 시켜 주도록 했습니다.



이렇게 하는 것으로 이제 제대로 프로그램이 돌아가는 것을 확인할 수 있었습니다. 물론 한번에 모든 코스피의 종목을 선택해서 움직일 수는 없기 때문에, 하는 수 없이 300개씩 끊어서 탐색을 해 보아야 했습니다.



일단 당초에 없을 것이라는 예상과는 다르게 상당히 많은 종목들이 검색이 되어서 나오는 것을 확인할 수 있었습니다. 이제 이 데이터를 한번 엑셀에 옮겨 보도록 합니다.



그전에 위 스크린샷처럼 혹시나 하는 생각이 들어서 여러개의 텍스트 파일로 저장을 미리 해 주었습니다.



마지막으로 확인을 해 본 결과 동원F&B를 비롯해서 상당히 많은 기업들이 있는 것을 확인해 볼 수 있었습니다. 이것으로 가격을 제한하는 기능을 구현하는 것을 확인할 수 있었습니다. 다만 이렇게 간단한 기능을 하나 추가하는 것에도 상당한 힘이 소모가 되었는데, 앞으로는 조금 캄캄합니다.

반응형