1. 국내주식/1-1. 국내주식 연구일지

(엑셀) 주식 자동 매매를 위한 알고리즘 패턴 찾기 (4) 패턴별 승률을 엑셀로 계산해보기 (카카오 035720)

봄이오네 2022. 10. 20. 08:11
반응형
목 차
1. 들어가며
2. 사전준비 (엑셀 함수 설명)
1) MAX(범위), ,MIN(범위)
2) MATCH(특정값, 범위, 0)
3) IF 함수를 활용하여, 2개의 행(row)에 대해 비교하여, 승/패를 부여한다
4) countifs를 활용하여, 조건에 맞는 내용의 갯수를 확인한다.
3. 엑셀 설명
1) 1분봉을 키움서버에서 다운 받을 후 필요없는 내용은 삭제한다.
2) 패턴을 조합하고, 패턴의 중복된 데이터를 없앤다.
3) 각 패턴에 따른 최대값/최소값의 행을 구하고, if를 통해 승/패를 계산한다.
4) 중복값을 없애고, 각 패턴의 출현 빈도는 countifs 함수로 계산한다.
4. 주의사항
5. 마치며

1. 들어가며

카카오(221019).xlsx
0.04MB

이전 글에서는 주식 1분봉 모음 추출한 패턴을 파이썬에 적용해 보았다.
장 종료로 인해 INPUT 함수를 이용할 수 밖에 없는 점이 아쉽긴 하다.

 

(파이썬) 주식 자동 매매를 위한 알고리즘 패턴 찾기 (3) 파이썬에 적용

1. 들어가며 지난 2번의 글에서 주식 패턴 만들기 및 만들어진 패턴으로 익절/손절 정하기 등을 알아보았다. 이번 시간에는 input함수와 for 반복문을 통해 패턴 및 익절/손절 타점을 파이썬에 적용

springcoming.tistory.com


이번 글에서는 패턴의 승률을 엑셀을 통해 구해보고자 테스트를 진행하였다.
패턴에 따른 이상적인 수익/손절 타점을 설정하기 어려운 상황에서,
승률이 높은 패턴을 먼저 알아보고, 그 패턴에 맞는 수익/손절 타점을 알아본다면,
좀 더 시간을 아낄 수 있지않을까? 라는 생각에서 테스트를 시작하게 되었다.

상황마다 가정이 많은 관계로, 하나의 아이디어 차원으로 가볍게 읽어보면 좋을 것이다.

종목은 데이터센터 화재로 최근 핫이슈인 카카오(035720)의 2022년 10월 19일(수) 1분봉으로 분석할 예정이다.

그림1. 카카오(035720)의 2022년 10월 19일 1분봉 차트


2. 사전 준비(엑셀 함수 설명)

  • 들어가기에 앞서, 엑셀의 함수 4개를 먼저 설명한다.

1) MAX(범위), MIN(범위)

범위 내의 가장 큰값과 가장 작은값의 숫자를 반환해 준다.

그림2-1. MAX/MIN 함수를 활용한 내용

 

2) MATCH(특정값, 범위, 0)

① 범위 내의 특정값이 일치(0)할 경우, 행(row) 번호를 반환한다.
아래 <그림1-2>의 B3에 입력된 숫자 5의 행은 3이다.
→ E2에서 3으로 반환한 것을 확인할 수 있다.

그림2-2. MATCH 함수를 이용한 화면


② MAX함수와 함께 쓰이는 MATCH는 최대값의 행을 반환한다.
아래 <그림1-3>에서 최대값은 5의 행은 5(E3)이다.
→ 주의할 것은 범위(C3~C7)까지 정하였더라도,
반환되는 값은 1~5까지, 5칸의 마지막 줄인 5가 반환된다.

그림2-3. MATCH 함수와 MAX함수를 함께 활용

 

3) IF 함수를 활용하여, 2개의 행(row)에 대해 비교하여, 승/패를 부여한다.

<그림2-4>에서는 시간의 흐름에 C열/D열에 각각 고가와 저가를 임의로 정하였다.
고가와 저가를 익절과 손절로 가정했을 때,
13:00분에 진입하였다고 하면, 저가에 먼저 도달하게 되어 손절한다. → lose로 가정한다.
반대의 경우인 고가에 먼저 도달하면 익절한다. → win로 가정한다.

그림2-4. IF 함수를 통해 최대값/최소값의 행(row)을 구한다.

 

4) countifs를 활용하여, 조건에 맞는 내용의 갯수를 확인한다.

<그림2-5>에서는 커피류이면서 아메리카노인 것은 2개이다.

그림2-5. countifs함수를 활용한 화면


3. 엑셀 설명

1) 1분봉을 키움서버에서 다운 받을 후 필요없는 내용은 삭제한다.

- 6가지만 남긴다.(일자, 시간, OHLC)

그림3-1. 1분봉 중 필요한 부분만 남기고 삭제한다.

※ 키움증권 영웅문에서 1분봉 다운받는 방법

 

(주식 자동매매) 키움증권 영웅문4에서 1분봉 엑셀로 받는 방법

1. 들어가며 키움증권의 영웅문4은 사용자에게 각종 데이터를 제공한다. 사용자는 종목차트, 보조지표, 주식 현재가 등 주식 매매를 위해 필요한 정보를 얻을 수 있다. 이번 시간에는 영웅문4에

springcoming.tistory.com

 

2) 패턴을 조합하고, 패턴의 중복된 데이터를 없앤다.

 

(파이썬) 주식 자동 매매를 위한 알고리즘 패턴 찾기 (1) 엑셀 이용

1. 들어가며 주식 차트를 계속 보고 있으면, 느낌 때문일까? 반복되는 패턴이 눈에 보인다. 그 패턴에서만 매매를 하면 좋을텐데, 사람의 마음이 어디 한결 같으랴... 알고리즘 패턴 찾기 글을 총

springcoming.tistory.com

 

3) 각 패턴에 따른 최대값/최소값의 행을 구하고, if를 통해 승/패를 계산한다.

패턴의 다음 1분봉 시가로 진입한다고 가정하고, 고가와 저가에 대한 각각 행을 구하고,
K열에서 if함수를 활용하여 win/lose를 각각 계산해 본다.

<그림3-2> I열 4번째 행의 20분 동안 최대값은 범위 내에서는 20번째 나온다는 내용이며,
J열 4번째 행의 20분 동안 최소값은 범위 내에서 1번째로 나온다는 내용이다.
→ 이 경우, K열 4번째 셀에서 lose로 표기한다. (20>1일 때는 , lose로 판별)
(패턴에 따른 이상적인 수익/손실 타점을 설정하지 못해서, 이런 방법을 사용할 수 밖에 없다)

그림3-2. I열~J열까지 20분 내 최대값/최소값의 열을 구하고, K열에서 수익/손실을 win/lose로 나타내었다.


아래 <그림3-3>은 아래와 같은 함수를 활용하였다.

  • 패턴(H행)은 (고가-시가)&(저가-시가)&(종가-시가)로 만들었다.
  • 최대값의 열(row)은 match(max(범위), 범위, 0)으로 만들었다.
  • 최소값의 열(row)은 match(min(범위), 범위, 0)으로 만들었다.
  • 결과(K행)은 IF함수를 통해 수익이 먼저 나오면 win, 손실(최소값)이 먼저 나오면 lose

그림3-3. H열~K열까지 적용함수

 

4) 중복값을 없애고, 각 패턴의 출현 빈도는 countifs 함수로 계산한다.

M열~R열까지 패턴의 빈도수를 구한다.
→ countifs 함수의 활용방법은,
countifs(범위1 : 특정값1, 범위2 : 특정값2)를 하면 된다.

그림3-4. 엑셀의 전체 화면

 

그림3-5. 엑셀에 적용된 함수 설명


4. 주의사항

첨부한 엑셀의 365줄~384줄은 모수에서 제외하였다.
이유는 20개씩 선정하여 최대값, 최소값을 구하는데,
365줄은 19개 모수를 취하고,
366줄은 18개 모수를 취하는 점을 고려하여, 모수에서 제외함


5. 마치며

출현빈도가 높은 패턴이라고 해서,
그 패턴이 수익을 보장해 주지는 않는다.

위 엑셀에서 알고 싶은 것은 R열의 승률이다.
여기서 말하는 승률은 매수를 했을 경우,
고가(수익점)가 저가(손절점)보다 빨리 나와서, 매도하는 경우를 가정한 것이다.

승률이라고 표현하기는 그렇지만,
수많은 패턴 앞에서 어떤 패턴을 선택하고,
수익라인과 손절라인을 선정할지, 선택과 집중이 필요해 보여서
이런 테스트를 진행하였다.

첨부한 엑셀에서도 확인 가능하듯이,
2022년 10월 19일, 카카오 주식의 1분봉은 381개(15:30 포함)이다.

중복된 패턴을 없애니 38개의 1분봉이 나왔다.
38개 1분봉을 각각 분석하여 수익/손절 라인을 잡으면 좋겠지만,
승률 50% 이상(녹색)에 대해 먼저 분석해 보는 것도 좋은 방법일 것이다.

반응형