PYTHON/Kiwoom Open API

자동 매매 프로그램의 가격 데이터 관리 (2)

지난 게시글에서 실시간 데이터가 발생한 후 해당 데이터를 기반으로 가격 데이터를 어떻게 비교하여 거래를 진행하게 되는지에 대해 살펴보았고, 마지막에는 "과연 하나의 알고리즘만 사용할 것인가?"하는 소제목과 함께 끝마쳤다. 그럼 이제 그 부분이 뭔 소린지 다시 한 번 살펴보도록 하자.

 

 

나는 진짜 하나의 알고리즘만 쓸 건데?

뭐, 백 번 양보해서 정말 하나의 알고리즘만 사용할 것이라고 가정해보도록 하자. 당신은 얼마 가지 않아 "어.. 이런 유형의 주가 흐름은 비중을 조금 더 싣고, 이런 유형의 주가 흐름은 비중을 조금 더 줄이고 싶은데.."하는 생각이 들 것이다. 이럴 때 사용할 수 있는 것이 바로 해당 종목의 거래 유형 번호를 저장하는 것이다. 아래의 도표를 살펴보도록 하자.

만약 당신의 주가 데이터를 기반으로 위와 같은 데이터를 생성해냈다고 가정해보도록 하자.(물론 알고리즘 번호는 없다고 생각하고 보시길 바란다.) 똑같은 알고리즘에 의해 두 개의 종목이 선정되었으나, 본인이 지나고 나니 첫 번째 종목(000020)에 대해서는 100만원의 비중만 싣고 싶었지만 두 번째 종목(000040)에 대해서는 200만원의 비중을 싣고 싶다는 생각이 들었다고 해보도록 하자. 그렇다면 두 종목을 매수하기 전에 앞서 비중을 달리할 수 있는 그 기준이 되는, 즉 두 종목 간의 차이점을 구분할 수 있는 하나의 데이터를 남기라는 것이다. 단순하게 여러 개의 알고리즘을 쓴다고 해서 수익이 많이 발생하는 것도 아니다. 

그렇다면 만약 두 개의 알고리즘을 사용한다고 가정한다면 아래와 같은 데이터를 생성하게 될 것이다. 참고로 두 번째 알고리즘은 분할매수가 아닌 한 번의 매수만 진행한다고 가정하였다.

그렇다면 위와 같은 데이터가 발생할 것인데, 이 데이터를 기반으로 거래를 진행하기 위해서는 우리는 어떤 구조의 코드를 작성해야 할까? 아래의 로직을 한 번 살펴보자.

 

왼쪽의 로직은 해당 종목이 계산된 근거가 몇 번 알고리즘인가를 먼저 판단한 후에 거래를 진행할 수 있는가 없는가를 구분해내는 것이고, 두 번째 로직은 먼저 계산할 수 있는가 없는가를 판단한 후에 어떤 알고리즘에 의해 계산된 것인지를 구분해내는 것이다. 어떤 로직이 거래를 진행하기에 불필요한 작업을 수행하지 않는가? 당연 두 번째 로직이다. 왜냐하면 거래를 진행하지 않는 것에 대한 데이터 계산을 하지 않기 때문이다. 아래의 데이터를 살펴보자

  • 왼쪽 로직 : 첫 번째 종목(000020)과 두 번째 종목(000040)에 대해 알고리즘 여부를 판단
  • 오른쪽 로직 : 4개 종목에 대해 알고리즘 판단 후 가격 데이터 비교

다시 말해, ①어떤 알고리즘에 의해 계산된 종목인가와 ②매수 가능한 가격인가라는 두 개의 판단이 필요할 때, 컴퓨터가 수행해야 할 판단 과제를 최소한으로 하는 것이 좋다는 것이다. 다시 말해, 매수 가능한 가격에 들어오지 않은 종목에 대해서는 어떤 알고리즘에 의해 계산된 종목인가는 중요하지 않다는 것이다. 

 

 


728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.