안녕하세요?


일단 가장 먼저 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를 비롯해서 상당히 많은 기업들이 있는 것을 확인해 볼 수 있었습니다. 이것으로 가격을 제한하는 기능을 구현하는 것을 확인할 수 있었습니다. 다만 이렇게 간단한 기능을 하나 추가하는 것에도 상당한 힘이 소모가 되었는데, 앞으로는 조금 캄캄합니다.

+ Recent posts

티스토리 툴바