거래량 터진 캔들, 바로 따라가면 손해였다 — 비트코인 6개월 검증
유튜브에서 어떤 지표를 무료로 준다길래 신청했다. 트레이더냐고 묻길래 비슷하다고 답했더니 단톡방 초대는 안 된다고 했다. 단톡방은 관심 없었다. 지표만 기다렸는데 그대로 연락이 끊겼다.
그래서 만들었다.
만들고 나니 질문이 하나 더 생겼다. 그 지표, 되긴 되나? 준다던 사람도 안 알려준 부분이다. 6개월치를 돌렸다.
신호를 보고 그대로 따라 들어가는 방식은 PF 0.918이었다. 본전도 안 되는 숫자다. 62번을 기계적으로 다 먹었더니 계좌는 마이너스였다.
같은 신호에서 진입 시점만 바꿨다. 장대봉이 나와도 그 자리에서 안 들어가고, 그 봉의 한가운데까지 가격이 되돌아온 다음 방향을 확인하고 들어가게 했다. 73번 거래에서 PF 1.535가 됐다.
바뀐 건 신호가 아니라 어디서 들어가느냐 하나였다.
그리고 같은 규칙을 알트코인 30종목에 그대로 옮기자 PF 0.798로 손실이었다. 이 글에는 그것도 같은 비중으로 적는다.
어디서 나온 기법인가
받지 못한 지표가 어떤 원리였는지는 영상에 화면으로 나와 있었다. 개념 자체는 두 가지고 둘 다 수십 년 된 공개 기술적 분석이다.
- 매수 체결량과 매도 체결량을 나눠서 보고, 한쪽 압력이 평소보다 강한 순간을 신호로 삼는다
- 박스권에서는 범위 돌파와 돌파 후 재확인을 매매에 쓴다
여기서부터가 중요하다. 영상은 개념을 화면으로 보여줄 뿐 숫자를 주지 않는다. "평소보다 강한 압력", "큰 장대봉"을 백테스트가 가능한 조건으로 바꾸는 건 전부 내가 해야 했고, 그 과정에서 정한 숫자는 내가 고른 값이다. 그래서 이건 누군가의 지표를 복제한 물건이 아니다.
그래서 이 글에서는 규칙을 세 층으로 나눠서 적는다. 어디까지가 영상이고 어디부터가 내 선택인지 구분하지 않으면 나중에 결과를 해석할 수 없다.
| 층 | 내용 |
|---|---|
| 영상에서 본 개념 | 매수·매도 체결량 분리, 강한 한쪽 압력 + 큰 가격 움직임을 신호로 |
| 내가 정한 조건 | 1시간봉 기준, 장대봉 즉시 추격 금지, 0.5 되돌림 + 종가 확인, 손절은 신호봉 반대쪽 끝, 익절 1.5R 고정 |
| 코드용으로 수치화한 것 | 직전 20봉 몸통 중앙값의 1.5배, 몸통/전체범위 60% 이상 |
맨 아래 줄의 20, 1.5배, 60%는 영상에 없는 숫자다. 재현 가능하게 만들려고 내가 골랐다. 이 값들을 과거 데이터에 맞춰 계속 만지면 과최적화가 되므로, 한 번 정하고 끝까지 안 바꿨다.
규칙을 코드로 옮기면
"장대봉"을 숫자로 바꾸기
말로는 쉬운데 코드로는 애매하다. 이렇게 확정했다.
- 직전 20개 봉의 몸통 크기 중앙값을 구한다 (평균이 아니라 중앙값이다. 한두 개 큰 봉에 끌려가지 않게)
- 현재 몸통이 그 중앙값의 1.5배 이상
- 몸통이 전체 고가~저가 범위의 60% 이상 (꼬리만 길고 몸통이 짧은 봉을 거른다)
- 롱은 양봉, 숏은 음봉
- 같은 방향 체결량이 반대 방향보다 크고, 직전 20봉의 같은 방향 최고치를 넘는다
노란선은 피보나치가 아니다
이 부분이 제일 많이 오해받는다.
0.5 가격 = (신호봉 고가 + 신호봉 저가) / 2
스윙 저점에서 스윙 고점까지 그리는 그 피보나치 0.5가 아니다. 장대봉 한 개의 꼬리까지 포함한 전체 범위의 정확한 중간값이다. 봉 하나 안에서 계산된다.
신호와 진입은 다른 것이다
차트에 X-L이 뜨는 것과 실제로 들어가는 건 별개다.
| 표기 | 뜻 |
|---|---|
X-L / X-S | 조건을 만족한 장대봉을 발견했다. 아직 진입 아님 |
| 노란선 | 그 신호봉의 0.5. 여기까지 되돌아오길 기다린다 |
0.5 LONG / 0.5 SHORT | 되돌림 터치 + 종가 확인까지 끝난 실제 진입 |
진입 조건은 두 개를 다 만족해야 한다. 저가가 0.5에 닿을 것, 그리고 그 봉의 종가가 0.5 위에서 마감할 것(롱 기준). 닿기만 하고 아래에서 끝나면 진입하지 않는다.
이 "종가 확인"이 실제로 작동하는지 XRP 사례로 확인해봤다.
- 8월 7일 18:00 —
X-L신호봉 (고가 1.0369, 저가 1.0305 → 0.5는 1.0337) - 19:00 — 0.5 미접촉
- 20:00 — 0.5를 터치했지만 종가 1.0335로 아래 마감 → 진입 무효
- 21:00 — 저가 1.0332로 터치, 종가 1.0374로 위 마감 → 진입
차트만 보면 노란선이 짧게 지나가서 근거 없이 진입한 것처럼 보였는데, 봉 데이터로 짚어보니 한 번 걸렀다가 다음 봉에서 들어간 것이었다.
코드에서 막혔던 것
두 가지 버전을 만들었다. 트레이딩뷰 request.footprint()를 쓰는 정식 버전은 체결 방향이 정확하지만 상위 요금제가 필요하고, 1분봉을 모아 방향을 추정하는 대체 버전은 아무 플랜에서나 되지만 정확도가 떨어진다. 대체 버전 결과를 정식 버전 성과로 간주하면 안 된다.
컴파일 오류로 한참 헤맨 것도 적어둔다. if 블록 안에 실행문이 없어서 CE1044가 났는데, 고쳐서 컴파일에 성공한 뒤에도 차트에 오류가 계속 떴다. 차트에 남아 있던 구버전 인스턴스가 원인이었다. 새 버전을 추가하는 것만으로는 안 되고 옛 것을 지워야 했다.
결과 — 진입 방식 네 가지 비교
손익비 1:1.5로 고정하고 같은 기간, 같은 종목에서 네 가지를 돌렸다.
| 진입 방식 | 거래 | 승률 | 평균 손익 | PF | 1% 위험 모형 | 최대 낙폭 |
|---|---|---|---|---|---|---|
| X-RAY 즉시 추격 | 62 | 40.32% | −0.052R | 0.918 | −3.62% | −10.96% |
| 박스권 돌파 | 75 | 45.33% | +0.039R | 1.071 | +2.45% | −8.86% |
| 박스권 돌파 + 리테스트 | 65 | 44.62% | +0.066R | 1.121 | +3.87% | −6.15% |
| X-RAY + 0.5 리테스트 | 73 | 56.16% | +0.266R | 1.535 | +20.71% | −5.69% |
즉시 추격과 0.5 리테스트는 같은 신호를 쓴다. 다른 건 들어가는 자리뿐인데 PF가 0.918에서 1.535로, 최대 낙폭이 −10.96%에서 −5.69%로 바뀌었다.
방향별로 나눠보면 이렇다.
| 방향 | 거래 | 승률 | 평균 손익 | PF |
|---|---|---|---|---|
| 롱 | 39 | 58.97% | +0.318R | 1.667 |
| 숏 | 34 | 52.94% | +0.206R | 1.396 |
롱이 낫지만 둘 다 1을 넘었다. 표본이 39와 34라 이 차이로 숏을 빼기에는 이르다.
PF 1.535가 무슨 뜻인가
PF는 번 돈 전부 ÷ 잃은 돈 전부다.
잃은 게 100만 원일 때 번 게 약 153만 5천 원이었다는 뜻이다. 차액 53만 5천 원이 남는다. 승률이 153%라는 뜻도, 거래마다 53.5%씩 번다는 뜻도 아니다.
1R은 한 번 손절될 때 잃기로 정한 금액이다. 계좌 1,000만 원에 거래당 1%를 걸면 1R은 10만 원이고,
1.5R 목표는 15만 원이다. 평균 +0.266R은 거래당 평균 2만 6천 원 정도가 남았다는 뜻이다. 73회를 순서대로 복리로 굴린 결과가 +20.71%였다.
레버리지는 이 숫자를 못 바꾼다. 진입·손절·익절이 같으면 승률도 PF도 그대로다. 바뀌는 건 필요한 증거금과 계좌 변동폭, 그리고 청산 위험뿐이다.
언제 무너졌나
알트코인 30종목에 옮기자 손실이었다
BTC에서 나온 조건을 대형 알트코인 30개에 그대로 적용했다.
| 항목 | 결과 |
|---|---|
| 거래 | 931회 |
| 승률 | 38.35% |
| 평균 손익 | −0.136R |
| PF | 0.798 |
931회는 BTC 73회보다 훨씬 큰 표본이다. 표본이 큰 쪽이 손실이었다.
종목별로는 갈렸다. XRP는 35회에 승률 51.43%, 평균 +0.127R로 전체 평균보다 나았다. 하지만 35회짜리 한 종목이 잘 나온 걸로 "알트에서도 된다"고 말할 수는 없다.
체결량 구조도, 유동성도, 상장 기간도 종목마다 다르다. 종목별로 파라미터를 따로 맞추면 숫자는 좋아지겠지만 그게 바로 과최적화다.
지금 말할 수 있는 건 이 파라미터가 BTC에 맞춰져 있을 가능성이지, 알트에서 안 통한다는 결론이 아니다.
4시간봉 추세 필터는 도움이 안 됐다
1시간봉 진입 방향을 4시간봉 추세와 맞추는 조건을 중간에 넣어봤다.
| 기간 | 거래 | 승률 | 평균 손익 |
|---|---|---|---|
| 24개월 | 138 | 43.48% | −0.081R |
| 최근 6개월 | 38 | 39.47% | −0.181R |
둘 다 마이너스였다. 상위 시간봉 필터가 항상 좋은 게 아니고, 추세 정의가 늦으면 유효한 전환 신호를 오히려 잘라낸다.
다만 이 실험은 최종 버전과 데이터·세부 조건이 완전히 같지 않다. "4시간봉 필터는 나쁘다"로 일반화하면 안 된다.
이 검증의 한계
1. 데이터가 다르다. 백테스트는 바이낸스 체결 데이터 기반 근사치이고, 트레이딩뷰 바이비트 request.footprint()와 같지 않다. 같은 시각이라도 신호가 다르게 잡힐 수 있다.
2. 표본 73회. 유망한지 판단할 수는 있어도 장기 재현성을 확정하기에는 적다.
3. 한 국면만 봤다. 6개월이 상승·하락·횡보 중 어디에 몰려 있었는지에 따라 결과가 달라진다.
4. 봉 안에서 손절과 익절이 둘 다 닿으면 어느 쪽이 먼저인지 모른다. 1시간 OHLC만으로는 확정할 수 없다. 하위 시간봉을 보거나 보수적으로 가정해야 하는데 아직 안 했다.
5. 수수료와 슬리피지가 빠졌다. 무기한 선물은 왕복 수수료에 펀딩비까지 붙는다. PF 1.535는 비용을 넣으면 내려간다. 얼마나 내려가는지는 계산 안 했다.
6. 기간 끝에 열려 있던 포지션은 마지막 가격으로 강제 정산했다. 손절을 없앤 것도, 임의로 자른 것도 아니고 데이터가 끝나서다. 마지막에 큰 미실현 손익이 걸려 있으면 전체 숫자가 왜곡된다.
7. 1.5R 고정이라 큰 추세를 못 먹는다. 목표가에 닿으면 전량 정리하니 이후 3R, 5R로 가는 흐름을 버린다. 이건 신호의 문제가 아니라 내가 청산 규칙을 그렇게 정한 결과다.
숫자가 없는 부분 — 실제로는 이렇게 한다
위 백테스트는 1.5R에 닿으면 전량 익절로 돌렸다. 재현 가능한 조건이라 그렇게 고정했다.
그런데 차트를 볼 때는 창을 하나 더 띄워둔다. 스토캐스틱 RSI, 설정은 (1, 1, 100, 100)이다.
먼저 분명히 해둘 것. 이건 알람에도, 진입 조건에도 들어 있지 않다. 지표를 계산해서 신호를 쏘는 쪽은 이 값을 아예 모른다. 차트 아래에 따로 띄워놓고 내가 눈으로 보는 용도다. 그래서 백테스트에도 당연히 안 들어갔다.
설정이 특이한 편이다. 평활을 아예 없애고(K=1, D=1) 기간을 100으로 길게 잡았다. 흔히 쓰는 (3, 3, 14, 14)가 과매수·과매도를 빨리 잡아내는 값이라면, 이쪽은 지금 위치가 최근 100봉 범위의 어디쯤인지 재는 자에 가깝다. 1시간봉 100개면 나흘치다. 빨리 반응하라고 만든 게 아니라 천천히 기울어지는 걸 보라고 만든 값이다.
보는 방식은 두 가지인데 비중이 많이 다르다.
| 언제 | 무엇을 | 실제 비중 |
|---|---|---|
| 진입 직전 | 50 위인지 흘깃 본다 | 거의 없다. 이것 때문에 진입을 접거나 하지 않는다 |
| 수익을 끌고 갈 때 | 80 아래로 내려오면 정리 | 이걸 쓰려고 띄워둔다 |
두 번째가 전부다. 1.5R에서 전부 정리하지 않고 남긴 물량을 어디서 놓을지, 그걸 이 선으로 정한다. 가격이 얼마 빠졌는지가 아니라 위치가 꺾였는지를 기준으로 삼는 셈이다.
이 방식의 숫자는 아직 없다. 위의 PF 1.535는 1.5R 전량 익절로 나온 값이다. 눈으로 보는 걸 백테스트할 수는 없으니, 숫자를 내려면 이 규칙을 먼저 코드로 옮겨야 한다. 그래서 이 절은 규칙이 아니라 내가 지금 어떻게 하고 있는지에 대한 기록으로만 읽어야 한다. 섞어서 계산하면 둘 다 틀린 숫자가 된다.
정리
말할 수 있는 것
- 같은 신호에서 진입 위치를 바꾸는 것만으로 PF가 0.918에서 1.535로 갔다. 결과를 만든 건 화려한 신호가 아니라 ① 장대봉을 숫자로 정의한 것 ② 추격 대신 되돌림을 기다린 것 ③ 손절과 목표를 미리 고정한 것, 이 셋이었다.
- 알트코인 범용성은 확인되지 않았다. 931회에서 PF 0.798이었다.
- 상위 시간봉 필터를 얹는다고 좋아지지 않았다.
하나 더
지표를 못 받아서 만들었는데, 만들고 나니 받았어도 몰랐을 것을 알게 됐다. 그 신호는 그대로 쓰면 손실이었고, 알트코인에서는 지금도 손실이다. 완성된 지표를 받았다면 아마 그냥 썼을 것이다.
말할 수 없는 것
- 이 우위가 다음 6개월에도 남아 있을지
- 수수료를 넣어도 1을 넘을지
- 알트에서 안 되는 게 파라미터 탓인지 전략 탓인지
- 정식 Footprint 데이터로 돌려도 같은 숫자가 나올지
다음에 할 것은 정해져 있다. 모의로 신호 50~100개를 더 모아서 백테스트와 실제 진입가·시각이 얼마나 벌어지는지 보고, 수수료를 넣고, 1.5R 전량익절과 스토캐스틱 RSI 80 이탈로 끌고 가는 방식을 따로 돌려보는 것이다. 섞으면 어느 쪽 덕인지 알 수 없게 된다. 이 블로그에서 다음에 올릴 숫자가 그거다.
지금 단계의 정직한 결론은 이거다.
BTC 1시간봉에서는 더 검증해볼 만한 우위가 보였고, 알트코인 범용성은 확인되지 않았다.
같은 방식으로 눌림목 신호를 채점한 기록은 눌림목 신호 3,225건 채점에, 필터 하나로 결과가 뒤집힌 사례는 터틀 백테스트가 -40%였다에 있다.
⚠️ 본 글은 개인 검증 기록이며 투자 권유가 아닙니다. 과거 백테스트 결과는 미래 수익을 보장하지 않습니다. 모든 투자의 책임은 투자자 본인에게 있습니다.


댓글
댓글 쓰기