왜 코인 봇 블로그에서 주식 차트를 보나
이 랩은 업비트 크립토 트레이딩 봇 기록이다. 그런데 차트 패턴은 자산을 안 가린다. 사람이 모여서 값을 매기는 곳이면 비슷한 모양이 반복된다 — 문제는 그 모양을 코드로 옮길 수 있느냐다.
그동안 RSI, 볼린저, 아룬 같은 수식으로 계산되는 지표를 다뤘다. 이번엔 성격이 다른 걸 해본다. 헤드 앤 숄더, 플래그, 이중 천장 같은 눈으로 보는 패턴이다. 이런 건 사람이 차트를 보면 “아 저거네” 하는데, 봇에게 시키려면 어깨가 뭔지 넥라인이 어딘지를 숫자로 정의해야 한다.
그 간극을 확인하기에 2026년 6~8월 삼성전자만 한 표본이 없다. 50거래일 만에 고점 대비 반토막이 났다가 45% 되돌아왔다. 교과서 패턴이 성립하기도 하고 처참하게 깨지기도 한 구간이다.
종목 삼성전자 (005930)
구간 2026-06-05 ~ 2026-08-14 · 50 거래일
출처 stockanalysis.com 일봉 (2026-08-14 조회)
--------------------------------------------------
기간 최고 374,500원 (6/19 고가)
기간 최저 189,200원 (7/29 저가)
최종 종가 274,500원 (8/14)
--------------------------------------------------
고점 → 저점 −49.48%
저점 → 현재 +45.08%
고점 대비 현재 −26.70%숫자부터 밝혀둔다. 이 글의 모든 가격은 위 출처의 일봉이고, 내가 만들어낸 값은 하나도 없다. 계산식이 들어간 곳은 식을 같이 적었다.
이 글은 차트 패턴을 코드로 옮기는 방법을 다루는 학습 기록이다. 특정 종목의 매수·매도 권유가 아니다.
1. 먼저 무슨 일이 있었나
패턴 얘기를 하기 전에 배경을 짚어야 한다. 이 구간의 모양은 개별 종목 사정이 아니라 시장 전체 사건에서 나왔다.

7월 말에 국내 증시가 이틀 만에 무너졌다. 공개된 지수 수치는 이렇다.
7/27 6,755.75
7/28 6,023.66 −10.84%
7/29 5,663.24 −5.98%
--------------------------------------------------
이틀 누적 약 −16.2% · 서킷브레이커 발동
--------------------------------------------------
8/14 6,923.87 +1.62% (출처: stockinfo7)
외국인 순매수 10,992억 · 개인 순매도 6,816억원인으로 지목된 건 하나가 아니라 다섯 가지가 얽힌 구조였다 — 지수 내 반도체 대형주 쏠림, AI 투자의 순환 출자 구조에 대한 의심, SK하이닉스가 사상 최대 실적을 냈는데도 눈높이에 못 미친 것, ADR 전환 일정에 따른 유동성 불확실성, 그리고 반대매매와 레버리지 ETF 리밸런싱이 만든 기계적 매도.
마지막 항목이 차트 관점에서 중요하다. 반대매매는 가격을 안 본다. 담보 비율이 깨지면 시장가로 던진다. 이때 만들어지는 캔들은 수급이 아니라 강제 청산의 흔적이고, 그래서 교과서 패턴이 잘 안 먹는다.
최대 하락일 7/28 −13.39% 종가 220,000
최저가 7/29 189,200 거래량 61,720,190주 (기간 최대)
최대 상승일 7/31 +26.81% 종가 262,500
--------------------------------------------------
이틀 만에 −13% → 다음날 저가 −9% → 그 이틀 뒤 +27%
이런 구간에서 "종가 기준 진입" 은 사실상 무의미하다7월 29일 거래량 6,172만 주는 기간 평균의 두 배가 넘는다. 그리고 그날이 저점이었다. 이걸 뭐라고 부르느냐가 이 글의 출발점이다.
2. 캡처한 아홉 개 패턴, 하나씩 대본다
받은 패턴 목록은 이렇다. 각각을 삼성전자 실제 데이터에 대보고, 성립하면 근거를, 안 되면 왜 안 되는지를 적는다. 억지로 끼워맞추면 그 순간 이 글은 쓸모가 없어진다.
✔ 약세 플래그 7/20~7/23 교과서적으로 성립
✔ 역 헤드 앤 숄더 7/20~8/13 넥라인 돌파까지 완성
△ 강세 플래그 7/31~8/12 성립하나 되돌림이 깊다
✘ 이중 바닥 두 저점이 20% 차이 — 아님
✘ 이중 천장 봉우리가 하나뿐
✘ 헤드 앤 숄더(정방향) 왼쪽 어깨에 해당하는 고점 없음
✘ 컵 앤 핸들 바닥이 U자가 아니라 V자
✘ 인버티드 컵 앤 핸들 해당 구간 없음
△ 엘리어트 파동 셀 수는 있으나 사후 해석 — 뒤에서 따로아홉 개 중 확실히 성립하는 건 둘, 조건부가 둘, 나머지 다섯은 없다. 이 비율이 정상이다. 패턴 책을 펴놓고 차트를 보면 다 보이는 것 같지만, 기준을 숫자로 고정하는 순간 대부분 탈락한다.
3. 약세 플래그 — 이 구간에서 가장 깨끗했던 패턴
먼저 성립한 것부터. 7월 중순 하락 구간에 약세 플래그가 하나 있다.

깃대(flagpole)
7/15 고가 284,500 → 7/20 저가 240,000
3 거래일 만에 −15.6%
깃발(flag)
7/21 종가 259,000 → 7/22 260,500 → 7/23 270,000
완만한 우상향 · 낙폭의 약 2/3 되돌림
이탈
7/24 종가 249,500 → 7/28 220,000 → 7/29 저가 189,200
--------------------------------------------------
급락 → 좁은 되돌림 → 같은 방향 재이탈. 정의 그대로다약세 플래그의 논리는 단순하다. 급락 뒤 반등은 매수세가 아니라 숏 커버링과 저가 매수의 일시적 균형이고, 그 균형이 풀리면 원래 방향으로 간다는 것. 되돌림 구간의 거래량이 깃대보다 적으면 신뢰도가 올라간다고들 한다.
여기서 실제로 확인해보자.
깃대 구간 7/15 24,247,740
7/16 26,605,500
7/20 24,304,800 평균 25,052,680
깃발 구간 7/21 20,353,870
7/22 21,248,990
7/23 15,996,110 평균 19,199,657
--------------------------------------------------
깃발 거래량이 깃대의 76.6% — 교과서가 말하는 "감소" 조건 충족
특히 7/23은 기간 최저 거래량. 되돌림의 힘이 빠진 자리였다7월 23일 거래량 1,599만 주는 이 50거래일 중 가장 적다. 가격은 3일째 오르는데 거래량은 바닥이었다. 그 다음날부터 무너졌다.
이걸 코드로 옮기면
문제는 여기서 시작된다. 사람 눈에는 명확한데, 봇에게 시키려면 이렇게 정의해야 한다.
1. 깃대: 최근 N봉 안에 X% 이상 하락 N? X?
2. 깃발: 이후 M봉이 좁은 상승 채널 M? 채널 폭 허용치?
3. 거래량: 깃발 평균 < 깃대 평균 이건 명확
4. 진입: 깃발 하단 이탈 시 숏 "이탈" 을 종가로? 장중으로?
--------------------------------------------------
자유 파라미터 5개. 각각을 정하는 순간 과최적화가 시작된다
RSI 는 파라미터가 기간 1개, 문턱 1개였다내 봇의 RSI 게이트는 조절할 값이 둘이다. 기간과 문턱. 그래서 8.9일치 매매기록을 전수로 훑어 45라는 숫자를 뽑을 수 있었다. 플래그는 자유도가 다섯이다. 같은 데이터로 다섯 개를 동시에 맞추면, 그건 최적화가 아니라 과거에 곡선을 그려 넣는 일이다.
3시대 모놀리스 시절에 이걸 몸으로 배웠다. 지표를 늘리면 판단이 좋아지는 게 아니라 설정의 복잡도가 먼저 는다.
4. 역 헤드 앤 숄더 — 이 구간의 주인공
이 글에서 가장 흥미로운 발견이다. 7월 말 폭락과 8월 반등이 완성된 역 헤드 앤 숄더를 만들었다.

왼쪽 어깨 7/20 저가 240,000
머리 7/29 저가 189,200 ← 기간 최저 · 최대 거래량
오른쪽 어깨 8/11 저가 227,500
넥라인 7/31 고가 267,000
--------------------------------------------------
돌파 8/13 종가 268,000 넥라인 위 마감
8/14 종가 274,500 추가 상승 확인
--------------------------------------------------
어깨 비대칭 왼쪽 240,000 vs 오른쪽 227,500 (5.2% 차이)
시간 간격 어깨→머리 6봉 · 머리→어깨 8봉 (비교적 대칭)교과서적으로 꽤 잘 맞는다. 어깨 높이가 5.2% 차이 나는 건 허용 범위로 보는 게 일반적이고, 시간 간격도 6봉 대 8봉이면 균형이 나쁘지 않다. 머리 자리에서 거래량이 기간 최대였다는 것도 정석이다 — 항복 매물이 나온 자리가 머리라는 게 이 패턴의 논리니까.
계측 목표라는 것
이 패턴에는 목표가를 뽑는 공식이 붙어 있다.
머리 깊이 = 넥라인 − 머리
= 267,000 − 189,200
= 77,800
목표 = 넥라인 + 머리 깊이
= 267,000 + 77,800
= 344,800
--------------------------------------------------
8/14 종가 274,500 기준 +25.6% 지점
기간 최고 374,500 대비로는 아직 −7.9% 자리
--------------------------------------------------
※ 이건 예측이 아니라 패턴의 산술이다. 맞을 이유가 없다이 숫자를 어떻게 대해야 하는지가 중요하다. 344,800은 전망이 아니다. 그냥 패턴 정의에 딸린 산술일 뿐이고, 도달할 근거는 어디에도 없다. 다음 글에서 SK하이닉스 사례를 보면 이 목표치가 정확히 맞았다가 곧바로 크게 깨지는 장면이 나온다.
내가 이런 숫자를 다룰 때 쓰는 기준은 하나다. 검증할 수 있느냐. 손절 −2.5%는 실측 58건을 다시 계산해서 기대값 +0.209%를 확인하고 채택했다. 344,800은 그런 검증이 불가능하다. 표본이 1건이니까.
코드로 옮길 때의 진짜 난관
역 헤드 앤 숄더를 봇에 넣으려면 어깨를 찾아야 한다. 어깨는 스윙 저점이고, 스윙 저점은 이렇게 정의한다.
정의: 좌우 k봉보다 저가가 낮으면 스윙 저점
--------------------------------------------------
k=3 6/11 · 6/23 · 7/02 · 7/20 · 7/29 · 8/11 6개
→ 7/20, 7/29, 8/11 이 잡힌다 (어깨·머리·어깨)
k를 키우면 어깨가 사라진다
k를 줄이면 노이즈 저점이 어깨로 잡힌다
--------------------------------------------------
즉 "패턴이 있다" 는 결론 자체가 k에 종속된다
k=3 을 고른 근거? 없다. 그게 예쁘게 나와서다이게 시각적 패턴의 근본 문제다. 패턴을 찾는 파라미터를 내가 고르고, 그 파라미터가 패턴의 존재 여부를 결정한다. RSI는 안 그렇다. 기간 14로 계산한 RSI 값은 누가 계산해도 같다. 문턱을 어디 두느냐는 다툴 수 있지만 값 자체는 객관적이다.
5시대에 앵커드 VWAP을 봇에서 뺀 이유와 정확히 같은 문제다. 사람이 앵커를 찍으면 강력한데, 앵커 선택 규칙을 만드는 순간 그 규칙이 또 하나의 튜닝 대상이 된다. 좋은 지표와 자동화하기 좋은 지표는 다르다.
5. 강세 플래그 — 성립하지만 교과서보다 깊다
8월 반등 구간에도 플래그가 있다. 다만 정직하게 말하면 교과서보다 헐겁다.

깃대 7/30 종가 207,000 → 7/31 종가 262,500 (+26.81%)
깃대 폭 = 55,500
깃발 8/03 종가 239,500 → 8/11 종가 230,000
8/11 저가 227,500
--------------------------------------------------
되돌림 = (262,500 − 227,500) ÷ 55,500 = 63.1%
--------------------------------------------------
교과서는 보통 38~50% 되돌림을 플래그로 본다
63%면 "깃발" 보다 "조정" 에 가깝다 — 나는 △로 판정했다
돌파 8/12 종가 255,500 → 8/13 268,000 → 8/14 274,500결과만 보면 돌파했으니 맞은 패턴이다. 그런데 결과로 패턴을 판정하면 아무것도 못 배운다. 되돌림이 63%까지 갔다는 건, 그 시점에 실시간으로 보고 있었다면 “플래그가 깨졌다"고 판단했을 가능성이 높다는 뜻이다.
이게 사후 판정의 함정이다. 차트를 다 그려놓고 보면 8월 3~11일이 예쁜 눌림으로 보이는데, 8월 11일 장중에는 그냥 계속 흘러내리는 차트였다.
8/03 239,500 전일 262,500 대비 −8.8%
8/04 240,000
8/05 246,000 반등하나?
8/06 230,500 −6.3%
8/07 231,000
8/10 230,000 7/31 급등분의 절반 반납
8/11 239,500 장중 저가 227,500 찍고 마감은 +4.1%
--------------------------------------------------
6거래일 연속 하락 압박. "깃발" 이라고 부를 배짱이 있었을까
8/11 의 아래꼬리(227,500 → 239,500)가 사실상 유일한 신호였다6. 성립하지 않는 것들 — 여기가 더 중요하다
패턴 글은 대개 맞은 것만 보여준다. 안 맞은 걸 적어야 기준이 생긴다.
이중 바닥이 아니다
7월 29일 저점과 8월 11일 저점을 보고 이중 바닥이라 부르고 싶어진다. 숫자를 보면 아니다.
첫 저점 7/29 189,200
둘째 저점 8/11 227,500
--------------------------------------------------
차이 = (227,500 − 189,200) ÷ 189,200 = +20.2%
--------------------------------------------------
이중 바닥은 두 저점이 대체로 3% 이내여야 한다는 게 통설
20%면 같은 바닥이 아니라 그냥 "더 높은 저점" 이다
→ 이건 이중 바닥이 아니라 역 H&S 의 오른쪽 어깨다
같은 두 점을 놓고 “이중 바닥"이라 부르면 틀리고 “오른쪽 어깨"라 부르면 맞다. 패턴 이름은 데이터가 정하는 게 아니라 내가 고르는 것이라는 게 여기서 드러난다. 위험한 성질이다.
컵 앤 핸들도 아니다
컵 앤 핸들은 완만한 U자 바닥 뒤에 작은 손잡이가 붙는 모양이다. 이 구간의 바닥은 U가 아니다.
7/27 254,000
7/28 220,000 −13.39%
7/29 208,500 저가 189,200
7/30 207,000
7/31 262,500 +26.81%
--------------------------------------------------
바닥 체류 3거래일. 낙하 2일 · 반등 1일
U자가 아니라 완벽한 V자다 → 컵 앤 핸들 불성립
V자 바닥은 "축적" 이 없다는 뜻 — 컵의 논리와 정반대컵 앤 핸들의 논리는 긴 바닥에서 매물이 소화된다는 것이다. 3일 만에 튀어 오른 바닥에는 소화할 시간이 없었다. 모양이 안 맞으면 논리도 안 맞는다.
정방향 헤드 앤 숄더와 이중 천장도 없다
고점 쪽을 보면 6월 19일 374,500이 유일한 봉우리다. 왼쪽 어깨에 해당할 만한 직전 고점이 이 구간 안에 없고, 6월 25일 362,500은 봉우리라기보다 하락 과정의 반등이다. 두 번째 봉우리가 없으니 이중 천장도 성립하지 않는다.
참고로 다음 글의 SK하이닉스는 여기가 완전히 다르다. 같은 시장, 같은 기간인데 하이닉스에는 교과서적인 이중 천장이 있다. 종목마다 모양이 다르다는 게 패턴 분석의 재미이자 함정이다.
7. 엘리어트 파동 — 셀 수는 있는데
받은 목록에 엘리어트가 있으니 짚고 넘어간다. 이 랩에는 이미 엘리어트를 다룬 글이 있고, 결론은 “봇에 넣을 수 없다"였다. 이번 데이터로 다시 확인해보자.
① 6/19 374,500 → 7/02 종가 286,000
② 7/02 → 7/06 종가 318,000 되돌림
③ 7/06 → 7/20 종가 244,000 가장 긴 파동
④ 7/20 → 7/23 종가 270,000 되돌림
⑤ 7/23 → 7/29 저가 189,200 최종 하락
--------------------------------------------------
그럴듯하다. ③이 가장 길다는 규칙도 지켜진다
문제: 이 파동 구분을 7/29 이전에 할 수 있었나?
⑤가 끝났는지 ⑤ 안의 소파동인지는 끝나야 안다파동 카운팅의 문제는 끝나야 셀 수 있다는 것이다. ⑤파가 189,200에서 끝났다는 건 지금 뒤돌아보니까 아는 것이고, 7월 30일 시점에는 ⑤파가 더 이어질지 ⑥파는 없으니 반등할지 알 수 없었다.
그래서 이 랩의 판정은 여전히 같다. 엘리어트는 해석 도구지 신호 도구가 아니다. 봇에게 시킬 수 있는 건 “지금이 몇 파인가"가 아니라 “지금 RSI가 45 이하인가” 같은 질문뿐이다.
8. 낙폭·회복 곡선과 항복의 흔적
패턴에서 잠깐 떨어져서, 이 구간의 성격을 두 장으로 보자.

기간 최고가를 0%로 놓고 종가를 환산한 그림이다. 삼성전자는 −47.9%까지 갔다가 −26.7%로 올라왔고, SK하이닉스는 더 깊이 갔다가 덜 올라왔다. 같은 사이클인데 진폭이 다르다.

이 산점도가 개인적으로는 가장 실용적이다. 가로축이 거래량, 세로축이 등락률인데 평균 거래량 오른쪽에 큰 하락과 큰 반등이 몰려 있다.
7/29 61,720,190주 −5.23% 저가 189,200 (기간 최저)
7/31 57,878,850주 +26.81% 최대 상승일
7/30 46,149,140주 −0.72%
6/24 47,809,959주 +9.84%
--------------------------------------------------
기간 평균 거래량 30,236,517주
--------------------------------------------------
바닥과 최대 반등이 거래량 1·2위 날에 함께 있었다
다만 이건 사후 관찰이다 — 7/29 당시엔 그냥 폭락일이었다“거래량 터진 날이 바닥"이라는 말은 맞기도 하고 틀리기도 하다. 여기서는 맞았다. 그런데 7월 28일에도 4,035만 주가 터졌고 그날은 바닥이 아니었다. 거래량 급증은 전환의 필요조건일 수는 있어도 충분조건이 아니다.
내 봇이 거래량을 게이트로 쓰는 방식도 이래서 소극적이다. “거래량이 터지면 산다"가 아니라 **“거래량이 너무 없으면 안 산다”**로 쓴다. 사도 못 파는 종목을 거르는 용도지 신호가 아니다.
9. 그래서 봇에 넣을 것인가
정리하면 이렇다.
차트 패턴 계산 지표(RSI 등)
값의 객관성 탐지 파라미터 종속 누가 계산해도 동일
자유 파라미터 4~6개 1~2개
실시간 판정 완성돼야 안다 매 봉 계산 가능
검증 가능성 표본이 극히 적다 전 구간 재계산 가능
사후 편향 매우 큼 작음
--------------------------------------------------
결론: 패턴은 읽는 데 쓰고, 규칙은 계산 지표로 만든다안 넣는다. 다만 버리지도 않는다.
차트 패턴이 쓸모없다는 게 아니다. 이 구간을 패턴 언어로 읽으니 “7월 말에 항복이 나왔고 8월에 어깨를 만들며 넥라인을 넘었다"는 서술이 가능해졌다. 이건 “RSI가 30 아래로 갔다가 50을 회복했다"보다 훨씬 많은 걸 담는다.
문제는 그 서술을 사전에 할 수 있느냐다. 못 한다. 그래서 패턴은 사후 복기와 시장 이해에 쓰고, 진입 규칙은 계산 가능한 지표로 만든다. 역할을 나누는 것이다.
4시대 병렬 실험기에서 배운 게 이거였다. 좋은 아이디어 두 개를 한 계좌에 넣으면 둘 다 나빠질 수 있다. 한 봇은 한 성격만. 패턴 인식과 게이트 판정은 성격이 다른 일이고, 섞으면 어느 쪽이 틀렸는지 알 수 없게 된다.
10. 남기고 싶은 세 문장
첫째, 안 맞는 패턴을 세는 게 맞는 패턴을 찾는 것보다 유용하다. 아홉 개 중 다섯은 없었다. 이 비율을 알고 나면 “차트에 패턴이 보인다"는 말이 얼마나 헐거운지 감이 온다.
둘째, 패턴의 존재 여부가 탐지 파라미터에 종속된다면 그건 관찰이 아니라 선택이다. k=3으로 스윙을 잡으니 어깨가 셋 나왔다. k를 바꾸면 결론이 바뀐다. 값 자체가 객관적인 지표와는 다른 종류의 물건이다.
셋째, 계측 목표는 예측이 아니라 산술이다. 344,800이라는 숫자에 근거가 있다고 믿는 순간 위험해진다. 다음 글에서 이 숫자가 정확히 맞았다가 곧바로 크게 깨지는 실제 사례를 보게 된다.
시장이 틀린 게 아니라 사람이 틀린 거라는 제시 리버모어의 말을 차트 패턴에 옮기면 이렇게 바꿔 말하고 싶다 — 패턴이 틀린 게 아니라, 패턴을 찾는 기준을 내가 정했다는 걸 잊은 게 틀린 거다.
이 글은 개인의 학습 기록이며 투자 권유가 아닙니다. 모든 가격은 stockanalysis.com 일봉(2026-08-14 조회) 기준이며, 지수 수치의 출처는 본문에 표기했습니다.