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

문제점이 드러난 Average_returning2.py

by 인터넷떠돌이 2020. 3. 11.
반응형

안녕하세요?

 

이번 포스팅에서는 제 평균회귀 전략을 이용해서 한번 주식을 매수할 지 매도할지를 결정하는 py파일이라고 할 수 있는 average_returning2.py파일에 대해서 한번 포스팅을 해 보고자 합니다. 그 동안은 정신없이 하느라고 급하게 만들었는데, 이제와서 다시 보니, 상당한 에러가 있는 것이 노출되었습니다.

 

먼저 시작부인데, 여기서 가장 중요한 것은 input() 이라는 함수입니다. 이 함수가 있어야 subprocess에서 communicate()함수로 입력한 내용을 넣어줄 수 있기 때문입니다. 그리고 나서 기존에 만들어 주었던 average_returning.py와 다른점이 무엇이냐고 하면, 일단 미체결 수량에 대한 고려를 하는 missingQuantity와 missingTrade라는 변수등이 추가가 되었고, 그 다음에는 TreatmentOfMissing()이라는 함수가 추가된 것 입니다.

 

그 다음으로는 이 미체결이 발생했을 경우 처리하는 메서드에 대해서 말해야 하는데, 제가 너무 급하게 움직인다고 쓸데없이 종가를 가지고 오는 코드를 그대로 가져다 쓴 상황인 것을 확인할 수 있었습니다.

 

그래도 일단 find라는 함수를 사용해서 미체결 거래가 있으면, 거래취소 명령을 내리라고 코드를 짰습니다. 그런데 결과적으로 말하자면, 이게 다 쓸모없는 노력이 되었습니다.

 

 

그리고 나서 다음으로 넘어가게 되는 메서드인 preProcessData라는 메서드에 대해서 한번 살펴 보고자 합니다. 일단 여기서 현재가를 가지고 와야 하는데, 만약 이게 0원이다 = 현재가에 대한 정보가 키움증권 서버에서 오지 않았다로 간주하고 데이터 베이스에서 읽어 들이라는 식으로 계산을 하게 했습니다.

 

그리고 나서 현재가-평균과 표준편차를 비교해 보아서, 나오는 숫자를 가지고서 한번 비교를 해 보고서, 여기서도 additionalDatabasename이라는 변수가 등장하게 되는데, 여기서 이 변수는 어디서 나오느냐 하면..............

 

이전 부모 프로세스에서 일단 매수를 하면 매수가를 기록하기 위한 메서드 였습니다. 여기서 매수한 가격을 저장해 놓았다가 나중에 필요할 때 꺼내서 쓰도록 합니다.

 

그리고 나서 다음으로 나오는 것은 바로 매수가를 가지고 와서, 여기서 수수료 - 모의투자에 경우에든 아니든 간에 거래 수수료를 고려해야 만 수익을 낼 수 있기 때문에 이를 고려해서 거래를 하도록 합니다.

 

그리고 나서 매수결정을 하는 것으로 나왔다고 하면, 여기서 중요한 것은 총 매수비용이 30만원을 넘지 않도록 만들어 주는 것이라고 할 수 있습니다.

 

그리고 마지막으로 나오는 결정을 위 스크린샷의 메서드에서 나오는데, 여기서 여기서 나오는 결정을 부모 프로세스의 communicate()함수로 지정된 변수중에 stdout이 가지고 와서 움직이게 되는 것 입니다. 그런데 이렇게 해서 한번 정리를 해 보니까, 코드가 많이 복잡하고 어지러운데, 그 동안 필요하다는 생각이 들면 항상 거래를 하면서 추가하고 추가한 코드들 때문에 이렇게 된 것으로 생각이 됩니다.

반응형