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

6월 둘째주 월요일에 발견된 에러를 수정하기 위한 과정

by 인터넷떠돌이 2019. 6. 12.
반응형

안녕하세요?

 

이번주 월요일에 발견한 에러는 제 의도와는 벗어나게 왜 인지 모르게 많은 양의 수량이 거래가 되는 문제가 있었습니다. 그래서 이 문제를 해결하기 위해서 한번 일련의 작업을 하고서, 그 내용을 이번 포스팅에 올리고자 합니다.

 

먼저 매수라는 결정을 그냥 하지 않으니까, 일단 관망에서 위 스크린샷과 같이 데이터 베이스 파일을 열고 하는 코드를 임시로 임력해 줍니다. 그리고 나서 다음으로 해야 할일은 quantity라는 column을 추가해 주는 일이 남아 있는데, 일단 위 스크린샷처럼 insert()라는 함수를 사용해 봅니다.

 

그런데 위 스크린샷과 같이 왜 인지 이 insert라는 함수가 없다는 식으로 나오는 것을 볼 수 있었습니다. 그래서 어디가 문제인지 해결을 해야만 했습니다.

 

일단 어떤 타입의 변수인지 알아보았는데, 얘네가 아직은 pandas의 데이터 프레임이 아니라서 발생하는 문제라는 것을 알 수 있었습니다.

 

그래서 미리미리 판다스의 데이터 프레임으로 처리를 하고난 다음에 위 스크린샷에서 보이는 것처럼 집어 넣도록 해 보도록 합니다.

 

그런데 이번에는 인덱스 에러라고 하면서 본적도 없는 에러가 나오는 것을 볼 수 있었습니다. 이게 왜 이런 에러가 나오는 가 하니........

 

2라고 입력해서 생긴 문제라서, 1로 숫자를 변경했습니다. 여기서 insert(들어갈 행, 행의 이름, 값) 이런 식으로 정의가 되는데, 여기서 1행이 없는데 2행을 집어 넣으려고 해서 문제가 생긴 것 입니다. 그래서 이번에는 2를 1로 바꾸어 주었습니다.

 

그런데 이번에는 데이터 베이스 파일에서 quantity라는 column이 없어서 생기는 문제라는 것을 알 수 있었습니다. 이 문제를 해결하는 방법은 간단하게도 일단 기존의 additionalcosts.db를 제거하는 수 밖에 없었습니다.

 

 

그리고 새로이 데이터 베이스의 테이블등을 생성하는 단계가 되는 위 스크린샷의 내용에서는 기존에 없던 column인 보유량을 보여주는 내용을 넣어 보도록 합니다.

 

이렇게 해서 위 스크린샷처럼 pytrader4는 제대로 작동을 하는 것을 확인할 수 있기는 있었습니다. 그래서 이렇게 한느 것으로 일단은 작업을 하나 완료가 되기는 되었습니다.

 

그런데 위 스크린샷과 같이 한번 저장이 된 데이터를 보니까, 보유량이 무슨 널뛰기를 하는 것 마냥 60개다 0개가 이렇게 왔다갔다 하는 것을 볼 수 있었습니다.

 

이렇게 된 이유가 별것도 없이 관망에 이 내용이 있어서 벌어진 일이었습니다. 그래서 이번에는 위 스크린샷에서 볼 수 있는 것처럼 매수를 할 경우 새로 만들어 지는 데이터의 내용에 집어 넣도록 합니다.

 

그 다음으로는 평균회귀 전략의 두뇌역할을 하는 py파일로 가서, 위 스크린샷에서 보이는 것처럼 한번 blankdata라는 것에서 0을 하나 더 붙여 주고, column도 quantity라고 붙여 주도록 합니다.

 

그리고 나서 위 스크린샷에서 보이는 것처럼 pytrader4로 가서, 한번 보유량을 가지고 못 올 경우를 대비해서 이럴 경우 0으로 처리를 하도록 합니다.

 

그리고 나서 위 스크린샷에서 나오는 것처럼, 한번 pytrader의 다른 py파일에 가서, 내용을 복사해서 붙여넣기 해 보도록 합니다.

 

그런데 생각해 보니, 마냥 보유량을 0으로만 처리하면 안되겠다는 생각이 들었습니다. 그래서 additionalcosts.db 데이터 베이스를 참고해서 보유량을 일단 가지고 오는 과정을 만들어 주도록 합니다.

 

그리고 원활한 작업을 위해서 미리미리 열려있는 sqlite3.connect를 닫아 주도록 하고, 다음으로 다른 py파일에서는 한번 다르게 작업을 해 보도록 합니다.

 

그리고 나서 위 스크린샷에서 보이는 것처럼 다른 py파일도 한번 작동에 들어가서 제대로 문제없이 작동이 되는 것을 보도록 합니다.

 

그런데 하다보니 위 스크린샷과 같은 에러가 나오는 것을 볼 수 있었습니다. 이런 에러가 왜 나왔냐 하면, 데이터베이스 파일내에 해당하는 테이블이 없어서 생긴 문제입니다.

 

그래서 한번 위 스크린샷에서 보이는 것처럼 데이터 베이스 파일에서 테이블을 찾는 방법을 한번 파이썬으로 코딩하는 방법을 시도해 보도록 합니다. 이 방법으로 사용해 봐서, 있으면 데이터 베이스 내에 있는 보유량을 데이터로 쓰고, 아니면 0처리를 하도록 합니다.

 

이렇게 하는 것으로 일차적인 작동이 제대로 되는 것을 확인할 수 있기는 있었습니다. 이제 이 내용을 다른 py파일에도 붙여 주도록 합니다.

 

이렇게 해서 다른 파일에도 붙여넣기를 해 주고 나서, 관련된 작동이 제대로 되는 것을 확인할 수 있었습니다. 이걸로 수요일 모의투자에 들어갈 준비는 다 끝났다고 할 수 있습니다. 이제 남은 것은 제대로 매수/매도가 되는지를 한번 테스트 해 보는 수 밖에 없다는 생각이 듭니다.

반응형