트레이딩뷰 전략 목록에는 피벗이라는 단어가 붙은 게 몇 개 있는데, 그중 피벗 확장 전략은 이름이 뜻하는 그대로 움직인다. 최근 몇 봉 사이에서 국지적인 고점·저점을 찾고, 그 피벗이 확정되는 순간 반대 방향 포지션을 정리하며 새 방향으로 갈아탄다. 오늘은 이 규칙을 비트코인 캐시(BCH) 위에 얹어 뜯어본다.
한 가지는 시작하기 전에 짚어야겠다. 이 글은 성과를 잰 기록이 아니라 규칙의 구조를 뜯어보는 기록이다. BCH 시세를 한 번도 열어보지 않았으니 이 전략이 몇 번 이겼고 몇 번 졌는지는 아예 쓸 수 있는 재료가 없다. 대신 leftBars·rightBars처럼 규칙이 스스로 정의하는 숫자는 그대로 밝히고 왜 그 값인지를 따진다. 아래 나오는 봉 그림들도 실제로 관측된 가격이 아니라 규칙의 동작을 보여주려고 손으로 구성한 모식도다.
규칙: 피벗은 확정되기 전까지 피벗이 아니다
피벗 확장 전략의 뼈대는 트레이딩뷰의 피벗 고점·저점 판정 함수 두 개다. 어떤 봉을 피벗 저점으로 인정하려면, 그 봉의 저가가 왼쪽 leftBars개 봉과 오른쪽 rightBars개 봉을 통틀어 가장 낮아야 한다. 피벗 고점은 대칭이다. 왼쪽·오른쪽 모두를 통틀어 가장 높은 고가를 가진 봉이 피벗 고점이다.
피벗 저점 조건: low[i] 가 [i-leftBars, i+rightBars] 구간에서 최솟값
피벗 고점 조건: high[i] 가 [i-leftBars, i+rightBars] 구간에서 최댓값
피벗 저점 확정 → 롱 진입 (숏 보유 중이면 청산 후 전환)
피벗 고점 확정 → 숏 진입 (롱 보유 중이면 청산 후 전환)
여기서 트레이딩뷰가 예시로 붙여 둔 기본값은 leftBars 4, rightBars 2다. 이 숫자가 왜 눈여겨볼 만하냐면, 판정 구조 자체에 봉이 나온 순서와 다른 시차가 끼어 있기 때문이다. i번 봉이 피벗 저점인지 알려면 i+rightBars번 봉까지 봐야 한다. i번 봉이 지나가는 시점에는 아직 오른쪽 두 봉이 안 나왔으니 판정을 내릴 수가 없다. 아래 그림에 이 지연 구조를 풀어 뒀다. 저가가 가장 낮은 봉이 나온 뒤에도 두 봉이 더 지나야 비로소 그 봉이 피벗 저점으로 확정되고, 그때 가서야 롱 진입 신호가 뜬다.

판정 두 개, 전환 하나로 정리하면
이 전략을 조건문으로 옮기면 판정 함수 두 개와 포지션 전환 로직 하나로 끝난다.
if pivotlow(low, leftBars, rightBars) confirmed at i:
if position == short: close short
enter long at i+1
if pivothigh(high, leftBars, rightBars) confirmed at i:
if position == long: close long
enter short at i+1
종가와 시가의 대소만 비교하는 규칙이라면 손댈 손잡이가 아예 없어서 과최적화 자체가 성립하지 않는다. 피벗 확장 전략은 그 축복을 못 받는다. leftBars와 rightBars라는 손잡이가 각각 따로 움직이고, 둘을 어떻게 조합하느냐에 따라 신호가 나오는 자리와 확정까지 걸리는 시간이 통째로 바뀐다. 손잡이가 하나가 아니라 둘이라는 건 돌려볼 조합의 수가 곱으로 늘어난다는 뜻이라, 손잡이 하나짜리 규칙보다 과거 데이터에 끼워 맞출 여지가 오히려 넓다. 트레이딩뷰가 미리 잡아 둔 4와 2를 그대로 쓸지, 백테스트 성적을 보고 다른 조합으로 바꿀지는 결국 쓰는 사람이 정할 몫으로 남는다.
청산이 아니라 방향 전환
방금 옮긴 조건문을 다시 들여다보면 손절가도 목표가도 적을 자리가 없다는 게 눈에 들어온다. 포지션을 닫는 조건이 따로 있는 게 아니라, 반대 방향 피벗이 확정되는 사건이 청산과 재진입을 동시에 처리한다. 롱을 잡은 상태에서 피벗 고점이 확정되면 그 주문 하나로 롱이 닫히고 곧바로 숏이 열린다. 계좌는 사실상 쉬는 시간이 없다.

그림 3의 아래쪽 단은 이 계좌 상태를 계단 그래프로 그린 것이다. 무포지션에서 출발해 첫 피벗 저점이 확정되자마자 롱으로 올라서고, 다음 피벗 고점이 확정되기 전까지는 그 자리에서 안 내려온다. 문제는 그 사이 가격이 어디까지 밀려도 규칙에는 멈출 이유가 없다는 점이다. 롱으로 올라선 직후 가격이 반대로 무너져도 다음 피벗 고점이 뜨기 전까지는 계속 들고 가야 한다. 이 계좌를 실제로 운용하려면 진입 신호는 전략에서 받되 청산은 별도의 손절 규칙으로 감싸는 이중 구조가 필요하다는 뜻이고, 그러면 원래 전략의 반전 로직 절반은 이미 무력화된 셈이다.
파라미터 두 개가 만드는 차이
leftBars·rightBars를 짧게 두느냐 길게 두느냐는 신호 빈도와 확정 지연 둘 다를 바꾼다. 그림 2는 같은 가격 경로에 (4, 2)와 (10, 10)을 나란히 적용한 모식도다.

짧은 창은 사소한 굴곡에도 피벗 조건이 자주 채워지고, 확정까지 걸리는 지연도 rightBars가 2봉이라 짧다. 긴 창은 정반대다. 좌우로 훨씬 넓은 구간을 통틀어 최댓값·최솟값이어야 하니 조건 자체가 까다로워지고, 그림에서처럼 같은 구간 안에서 신호가 아예 하나도 안 나올 수도 있다. 대신 확정까지 10봉을 기다려야 하니 지연도 그만큼 커진다. 짧은 창은 반응이 빠른 대신 얕은 굴곡에도 반응하고, 긴 창은 굴곡을 걸러내는 대신 반응이 훨씬 늦다. 트레이딩뷰 기본값 (4, 2)가 어느 쪽에 무게를 둔 선택인지는 좌우 폭 자체가 말해준다. 빠른 반응 쪽이다.
이 규칙이 못 보는 것
피벗 저점·고점 조건은 좌우 구간의 최솟값·최댓값이라는 숫자 하나만 본다. 그 최솟값이 어떻게 만들어졌는지는 안 본다. 여러 봉에 걸쳐 완만하게 내려갔다가 다시 오르는 저점과, 봉 하나가 긴 꼬리로 순간적으로 찍고 올라온 저점이 규칙 안에서는 똑같이 “그 구간의 최솟값"이라는 값 하나로 수렴한다.

그림 4의 왼쪽은 여러 봉에 걸쳐 매도세가 잦아들며 만들어진 저점이고, 오른쪽은 거래 하나가 몰리며 봉 하나가 아래로 길게 튀었다가 바로 회복한 경우다. leftBars·rightBars 조건은 이 둘을 구분할 방법이 없다. 두 경우 모두 그 구간의 최저가라는 숫자 하나로 요약되는 순간 똑같이 피벗 저점이 되고 똑같이 롱 신호를 낸다. 거래량이 실렸는지, 그 저가가 몇 초 만에 찍혔는지는 애초에 함수 입력값(고가·저가 배열)에 들어 있지도 않다. 판정 대상을 고가·저가에서 거래량이나 몸통 크기까지 넓히지 않는 한, 이 구분은 규칙 안에서 영원히 불가능하다.
코인 시장에서 걸리는 함정
이 전략을 코인 시장에 얹으면 주식판에서는 잘 안 불거지는 함정이 두 가지 붙는다.
첫째는 봉을 끊는 기준 시각이 거래소마다 다르다는 점이다. 코인 시장은 주식과 달리 개장·폐장이 없어서, 하루짜리 봉을 어느 순간에 자를지가 거래소 설정값으로만 정해진다. 업비트 기준으로는 한국 표준시(KST) 자정이 그 경계고, 해외 거래소 다수는 협정 세계시(UTC) 자정을 쓴다. 두 기준 사이의 격차는 아홉 시간이다. 피벗 확장 전략은 몸통의 방향이 아니라 고가·저가라는 절댓값을 비교하므로 언뜻 경계 이동에 둔감해 보이지만, 실제로는 그렇지 않다. 같은 24시간 구간이라도 자르는 위치가 아홉 시간 어긋나면 그 구간의 최고가와 최저가가 완전히 다른 두 봉에 나뉘어 담길 수 있고, 그러면 leftBars·rightBars 창에 걸리는 봉의 구성 자체가 바뀌어 어느 봉이 피벗으로 확정되느냐가 뒤집힌다. 창이 짧을수록(4, 2) 봉 하나의 재배정이 창 전체에서 차지하는 비중이 크다는 점도 같이 따라온다.
둘째는 얇은 유동성이 만드는 꼬리다. 국내 현물 시장 기준으로 비트코인 캐시는 비트코인보다 시가총액과 거래대금이 작고, 그만큼 호가창이 얇다고 알려진 코인이다. 호가창이 얇으면 큰 매도 주문 하나가 순간적으로 가격을 눌렀다가 금방 되돌리는 긴 아래꼬리를 남기기 쉽다. 앞서 그림 4에서 본 “봉 하나짜리 꼬리"가 실제로 나올 확률이, 유동성이 두꺼운 자산보다 구조적으로 높다는 뜻이다. 피벗 확장 전략은 그 꼬리가 진짜 수급 반전인지 유동성 부족이 만든 잡음인지 구분하지 못한다.
비트코인 캐시라는 무대
굳이 비트코인 캐시를 골라 온 이유를 밝혀 둔다. 이 코인은 애초에 “블록을 얼마나 키울 것인가"라는 논쟁에서 태어났다. 2017년 비트코인 블록체인이 블록 용량 확장 방식을 두고 갈라섰을 때, 더 큰 블록으로 온체인 결제를 늘리자는 쪽이 떨어져 나와 BCH가 됐다. 갈라선 역사는 거기서 끝나지 않는다. BCH는 2018년에 다시 한번 쪼개져 비트코인 SV(BSV)를 낳았다. 시세를 보지 않는 이번 편에서는 이 분기들이 실제 가격에 어떤 자국을 남겼는지 판단할 근거가 없다. 다만 이렇게 여러 번 갈라진 자산일수록 거래소·커뮤니티별로 취급이 흩어지고, 그 결과 하나의 코인이 가질 수 있었던 유동성이 여러 갈래로 쪼개져 있다는 점은 일반적으로 알려진 사실이다. 앞서 짚은 얇은 호가창 이야기와도 이어지는 대목이다.
결론: 내 봇 게이트에 넣을 것인가
게이트 열한 번째 자리에는 안 넣기로 했다. 왜 뺐는지는 나중에 다시 판단할 수 있게 그대로 적어 둔다.
첫째, 확정 자체에 rightBars만큼의 구조적 지연이 박혀 있다. 지연이 있는 규칙 자체는 문제가 아니다. 이동평균도 지연이 있다. 문제는 이 지연이 진입 시점과 정확히 겹친다는 점이다. 신호가 뜨는 순간은 이미 저점에서 rightBars봉만큼 지나간 시점이고, 그 사이 가격이 어디로 갔는지는 규칙이 신경 쓰지 않는다. 반등이 얕게 끝나는 구간에서는 이미 오를 만큼 오른 다음에 들어가는 그림이 나온다.
둘째, 진입과 청산을 하나의 사건으로 묶어 처리하는 구조가 걸린다. 내 봇은 언제 살지와 언제 팔지를 서로 다른 모듈이 판단하도록 나눠 놨는데, 이 전략은 애초에 그 둘을 나눌 수 있게 설계돼 있지 않다. 반대 피벗이 뜨기 전까지 무조건 버티는 부분만 떼어내 별도 손절로 바꾸면, 남는 건 “진입만 있는” 절반짜리 규칙이다.
셋째, leftBars·rightBars라는 두 손잡이가 코인 시장 특유의 얇은 유동성과 만나면 어느 쪽으로 돌려도 걸리는 문제가 생긴다. 짧게 두면 꼬리 하나에도 반응하고, 길게 두면 지연이 더 늘어난다. 값을 손대지 않고 기본값 그대로만 놓고 보기로 한 이번 편의 규칙 안에서는, 이 트레이드오프를 피해 갈 구멍이 안 보인다.
그래도 통째로 버리기는 아깝다. 좌우를 동시에 확인해서 국지적 극값을 잡아낸다는 발상 자체는 여전히 쓸모가 있다. 진입 신호는 이 방식 그대로 받아 오고, 반대 피벗을 기다리는 대신 변동성 기반 트레일링 스톱으로 청산만 갈아 끼우면 둘째 문제는 풀린다. 다음에 스윙 계열 규칙을 다시 다룰 때 이 조합을 한 번 시험해 볼 만하다는 메모로 남긴다.
“시장은 당신이 옳은지 그른지 신경 쓰지 않는다. 신경 쓰는 건 당신이 옳을 때 얼마나 벌고 그를 때 얼마나 잃느냐다.” (마틴 슈워츠)
피벗 확장 전략에 없는 게 정확히 그거다. 반대 피벗이 뜰 때까지는 얼마를 잃든 버티라고만 말하는 규칙이라, 옳을 때와 그를 때의 손익 비율을 규칙 스스로는 관리하지 않는다. 그 관리는 결국 규칙 바깥에서 붙여야 한다는 걸 이번 편에서 다시 확인했다.
투자를 권하는 글이 아니라는 점을 다시 적어 둔다. 여기 실은 수식과 그림은 규칙이 어떻게 짜여 있는지 보여주려는 것이지, 지금 사거나 팔라는 신호가 아니다.
약어 풀이
- BCH (Bitcoin Cash) — 비트코인 캐시. 2017년 블록 용량 확장을 두고 비트코인에서 갈라져 나온 하드포크 코인.
- BSV (Bitcoin SV) — 비트코인 SV. 2018년 비트코인 캐시에서 다시 갈라져 나온 하드포크 코인.
- BTC (Bitcoin) — 비트코인. BCH가 갈라져 나온 원본 체인이며, 지금도 이 시리즈의 다른 편에서 기준 자산으로 자주 등장한다.
- KST (Korea Standard Time) — 한국이 쓰는 표준시. 협정 세계시보다 9시간 앞선다.
- UTC (Coordinated Universal Time) — 세계 여러 거래소가 공통 기준으로 삼는 협정 세계시.