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

새로운 수익모델을 만들기 위한 종목찾기 알고리즘의 제작-3-

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

안녕하세요?


지난번 포스팅에서 어떻게 다 완성이 되었다고 생각을 했었는데, 사실은 불완전하게 완성이 되어서 종목을 하나 나오기는 나왔는데, 무언가 석연치 않은 결과가 나왔습니다. 그래서 이대로 끝낼 수 많은 없고 해서, 한번 또 코드를 손보는 작업을 진행해 보고자 합니다.



먼저 의심이 가는 부분은 바로 저 역순서라고 해야 할까요? 최신의 데이터가 가장 상위에 있고, 가장 하위로 가면 갈수록 과거의 데이터가 나오는 것이 문제라고 생각을 했습니다.



그래서 위 스크린샷처럼 dataframe = dataframe[::-1]이라는 코드를 입력하는 것으로 원래의 데이터 프레임 객체에 있는 데이터를 모두 역순으로 바꿀 수 있다고 합니다.



위 스크린샷처럼 가장 과거의 종가 데이터가 가장 위에 오게 만드는 데는 성공한 것을 볼 수 있습니다. 하지만 문제는 인덱스는 그대로 역순인 채로 그대로 있어서 문제가 심각합니다.



그래서 이번에는 reset_index()라는 명령어를 이용해서 인덱스를 다시 리셋하는 작업을 시작해 주고자 합니다. 여기서 가장 중요한 것은 ()를 반드시 붙여야 작업이 된다는 것 입니다.




이제 인덱스는 제대로 나오는 것을 볼 수 있었습니다. 하지만 문제는 위 스크린샷에 보이는 것처럼 index라고 하는 새로운 column이 생겨서 자리를 차지하는 것을 볼 수 있습니다.



그래서 이번에는 drop('column 이름', 1, inplace=False)라는 식으로 명령어를 입력해서 새로 만들어진 index라는 열을 삭제하는 작업에 들어가 보도록 합니다. 여기서 1은 열이고, 0으로 입력하면 행을 삭제하라는 의미가 됩니다.



이제서야 close만 남기고 다른 열은 없는 것을 확인할 수 있었습니다. 이제 얘네들을 가지고서 계산에 들어가면 되기는 되는 것 입니다.



일단 계산이 제대로 되는지도 의문이 들기 때문에 아주 소수-0에서 2까지만 종목을 가지고 와서, 확인을 하는데, 일단 종목코드 000020의 경우 변화량이 없다고 나왔습니다.




진짜로 위 스크린샷처럼 없다고 나왔는데, 이래서야 이게 진짜로 60분봉 차트에서 거래량이 거의 없어서 현재가가 전혀 변하지 않는 종목이 맞는지에 대해서 한번 확인을 들어가 봐야 겠다는 생각이 들었습니다.



실제로 pytrader를 실행시킨 다음에, 위 스크린샷처럼 동화약품이라고 나오는 것을 확인할 수 있었습니다. 그래서 이 동화약품의 60분봉 차트를 따로 가지고 오도록 합니다.



그리고 나서 엑셀에서 계산을 해본 결과, 위 스크린샷처럼 변화량을 절대값으로 바꾼 다음에 평균을 구해서 0이 아닌 다른 값이 나오는 것을 볼 수 있었습니다. 즉, 제 코드에 무언가 문제가 있다는 것을 의미하고 있습니다.



이러는 와중에 CJ대한통운의 주식을 강화학습 시킨 결과가 나왔습니다. 이전에 저장이 되지 않은 문제는 바로 저장할 폴더가 없으면 만들으라고 했지만, 권한의 문제로 만들지 못해서 os Error가 나오면서 그냥 저장이 되지 않은 문제였습니다. 그래서 저장할 폴더를 직접 만들어 주었더니 이 문제는 해결이 되었습니다.



결국 어디가 문제였나 하면, 저는 처음에 이게 dataframe에서 데이터를 가져오는 것이라는 것을 잊고서 그만 배열에서 가져오는 것으로 착각을 했습니다. 그래서 dataframe.iloc[0] 과 같은 식으로 iloc를 써서 데이터 프레임 객체의 특정한 행에 있는 데이터를 가져 오라는 식으로 했습니다. 반대로 데이터 프레임 객체에서 열을 선택하기 위해서는 dataframe.iloc[:,0] 이런 식으로 입력을 해야 합니다.



그리고 목요일 오후 3시를 넘겨서 다시금 가지고 온 동화약품의 60분봉 차트에서 추출한 현재가로 계산을 해보니, 제가 만들어 놓은 프로그램이 제대로 계산에 들어간다는 것을 확인할 수 있었습니다. 즉 이것으로 일단 계산이 제대로 되지 않던 문제까지 해결은 했는데, 이 대는 몰랐습니다만, 이후 또 다른 문제가 기다리고 있었습니다.



반응형

댓글0