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

(파이썬) 주식 자동 매매를 위한 알고리즘 패턴 찾기 (2) 패턴 빈도 계산

봄이오네 2022. 10. 3. 08:12
반응형

1. 들어가며

1편(패턴 찾기, 엑셀 이용)에 이어 패턴 관련 내용을 설명한다.
이 글에서는 패턴만들기 및 익절/손절 타점 잡는 내용을 주로 다룰 것이다.

패턴을 이용하여 매수/매도 타점 확인 및 익절 타이밍 잡기
https://springcoming.tistory.com/32

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

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

springcoming.tistory.com


2. 패턴을 찾은 후 매수/매도 타이밍 판단

1) 패턴에 대한 익절/손절을 위한 진입 판단 근거


빈도수를 구해서 무엇을 하겠다는 것인지 질문이 있을 것이다.
위의 패턴이 나오면, 그 다음 20분 동안 익절/손절을 생각해 보자는 것이다.
즉, 진입시점은 특정 패턴이 나온 후그 다음봉의 시가(open)이다.
* 1분봉을 모으고 있는 이유는 특정 패턴 후의 흐름을 보기 위해서이다.

여기서는 엑셀의 max() 함수와 min()함수를 이용할 것이다.

  • 엑셀의 max(범위) 함수 : "범위"에 있는 숫자 중 가장 큰 숫자를 찾는다.
  • 엑셀의 min(범위) 함수 : "범위"에 있는 숫자 중 가장 작은 숫자를 찾는다.


2) 각 패턴별 익절 타이밍 잡기

빈도 숫자대로 특정 패턴이 나온 후,
그 다음 봉에서 진입할 때 수익/손실이 나는지 계산해 보자.

(예시1) G2의 "0-1000"패턴이 나오면,
그 다음 봉인 시가(C3)에 매수를 들어간다는 가정하에
20분 이내 고가/저가를 확인하기 위해
고가(J2)를 계산하기 위해 max(C3:F22)를 설정하고,
저가(K2)를 계산하기 위해 min(C3:F22)를 설정한다.


G2의 "0-1000" 패턴이 나와서, C3열의 시가(58600)으로 진입한다면,
3줄(13:06분) ~ 22줄(13:25분)까지 최고가는 58800원, 최저가는 58600원이다.


(예시2) G2의 "10000"패턴이 나오면,
그 다음 봉인 시가(C4)에 매수를 들어간다는 가정하에
20분 이내 고가/저가를 확인하기 위해

  • 고가(J3)를 계산하기 위해 max(C4:F23)를 설정하면, 진입가(C4) 58700원 대비 고가는 58800원이다.
  • 저가(K3)를 계산하기 위해 min(C4:F23)를 설정하면, 진입가(C4) 58700원 대비 저가는 58600원이다.


J열과 k열 아래로 복사해 준다.


3. 패턴별 고가/저가 계산하기


1) 삼성전자 같은 시가총액이 큰 종목은 움직임(변화)이 적은 편이다.

(샘플을 잘못 잡았다. ㅠㅠ)


2) 패턴별 반복 현황

빈도찾기(N열)는 1분봉 900개이며,
반복 빈도가 큰 상위 5개로 알고리즘을 만들어 본다.
다시 한번 말하면, 패턴은 (고가-시가)&(저가-시가)&(종가-시가)의 형태이다.

① 0-1000 패턴 : 321번 반복됨
② 1000100 패턴 : 209번 반복됨
③ 0-100-100 패턴 : 135번 반복됨
④ 10000 패턴 : 125번 반복됨
⑤ 100-1000 패턴 : 28번

※ 위의 5패턴으로 보건대, 8/31~9/1은 박스권에서 횡보한 듯 하다.


3) 가장 많이 나온 패턴에 대한 검토

가장 많이 나온 패턴이 끝나고,
그 다음 봉 시가로 들어갈 경우, 수입/손실을 계산해 본다.

M열은 G2 패턴이 나왔을 때, 그 다음봉(3줄)의 시가 58600원으로 진입한 경우
20분 이내의 최고점(58800원) 대비 진입가(C3, 58600)의 차이이다. → 200원 수익

N열은 G2 패턴이 나왔을 때, 그 다음봉(3줄)의 시가 58600원으로 진입한 경우
20분 이내의 최저점(58600원) 대비 진입가(C3, 58600)의 차이이다. → 0원 손실이다.

※ M. N열 아래를 복사해 준다.


4) 패턴별로 수익/손실 검토

F열에서 필터를 선택해하고, 0-1000 패턴을 클릭한다.


패턴의 수익/손실 빈도를 확인하기 위해, G열~N열을 복사하여
Sheet4에 복사한다. (불필요한 자료를 삭제, I열~L열 삭제)

5) 수익 빈도 보기

수익은 6가지로 된다 : 0원~500원
다시 한번 빈도수를 구해줄 것이다.
→ 여기서부터는 익절 타점은 본인이 판단하여야 한다.


6) 패턴의 수익에 대한 타점 빈도


7) 패턴의 손실에 대한 타점 빈도



4. 패턴의 수익/손실의 타점 정리

0-1000 패턴이 나오고, 그 다음 봉의 시가에 들어간다면,
아래 그림과 같은 수익과 손실이 나온다.

즉 검토해 보면,
수익부분(M열) : 100원 수익이 42.7%, 200원 수익이 20.6%, 횡보(0원)가 30.5% → 93.8%
손실부분(R열) : 100원 손실이 57.0%, 횡보가 22.7%, 200원 손실이 16.8% → 96.5%

정리를 해보면, 확률을 일괄적으로 정리할 수는 없겠지만,
0-1000 패턴이 나오면, 100원 수익이 42.7%이고 100원 손실이 57.0%라는 것이다.

→ 개인의 성향에 따라 다르겠지만,
필자같은 경우는 위의 경우에는, 익절 타점은 200원으로, 손절 타점도 200원으로 정한다.
* 다시 한번 말하지만... 삼성전자는.. 20분 동안 정말 안 움직인다;;



5. 다른 패턴

빈도수가 가장 높은 0-1000에 대해서 검토를 해보았다.

시트2에는 다른 패턴들도 들어있다.
위의 그림들이 설명을 위해 길어졌을 뿐이다.

다른 패턴들도 위와 같이 정리하면 되겠다.
단, 삼성전자와 같이 시가총액이 커서,
20분 이내 가격 변동이 적은 금액은 대상으로 검토하는 것은 미리 피하자.

아래 패턴들은 눈으로만 보아도, 20분 이내 -200원 ~ +200원 사이의 변화이다.
(시총이 크고, 변화가 별로 없는 종목은 수익이 별로 나지 않는다)


6. 마치며

왜 하필 20분으로 잡았을까?
구현하고자 하는 프로그램이 단타인지 스윙인지 먼저 구분할 필요가 있다.
필자가 구현하는 프로그램은 20분 이내 단타 프로그램을 만들고 싶다.

삼성전자의 3일치(8/31 ~ 9/1) 1분봉으로 패턴을 알아보았다.
패턴 자료의 업데이트는 한달치 모아서, 표 하나에 넣은 후,
위의 방법대로 중복항목 제거하고,
패턴대로 수익/손실 타점을 찾으면 되겠다.

또한, 패턴의 자료는 꾸준히 업데이트 해주어야 한다.
종목의 최신 패턴 파악을 1순위로 생각하되,
과거 빈도수가 높은 패턴도 파악해 두도록 하자.

표 해석 및 적용은 지극히 개인적인 생각이니, 사용자의 편의에 따라
달리 프로그램에 적용하면 되겠다.

다음 시간에는 위의 패턴을 파이썬에 적용해 보자.

반응형