왜 두 번째로 이동평균인가
지난 편(바입다운)이 조건 두 개짜리 규칙이었다면 이번 편은 조건 자체는 비슷한데 셈이 하나 더 들어간다. 트레이딩뷰 전략 목록에는 이동평균 교차를 다루는 내장 스크립트가 여러 개 있는데, 그중 이름 그대로 “두 줄짜리 이동평균"이라는 뜻의 MovingAvg2Line Cross를 오늘 뜯는다. 짧은 이동평균과 긴 이동평균, 두 선의 교차만으로 매매 방향을 정하는 전략이다.
이번 회차는 미리 고정해 둔 코인 순번표에서 체인링크 차례에 걸렸다. 체인링크는 그 자체로 값이 오르내리는 자산이라기보다 다른 스마트 컨트랙트에 바깥 세상의 데이터를 배달해 주는 오라클 네트워크의 토큰으로 더 널리 알려져 있다. 가격을 보지 않고 규칙만 뜯는 이 시리즈에서 체인링크의 성격이 이 규칙과 잘 붙는지를 사고 실험으로 짚어보려 한다.
먼저 밝혀둘 것이 있다. 이번 편은 시세를 받아 성과를 검증한 글이 아니라 규칙 자체를 해부한 글이다. 아래에 나오는 곡선은 전부 규칙을 설명하기 위해 손으로 그린 모식도이고 실제 체인링크 일봉이 아니다. 승률이나 수익률을 적지 않은 이유도 그래서다. 없는 숫자를 지어낼 생각은 없다. 투자 권유가 아니다.
규칙: 두 선이 만나면 자리를 바꾼다
바입다운은 봉 하나의 몸통 방향만 봤다. 이번 규칙은 그보다 한 겹 더 계산이 들어간다. 짧은 이동평균과 긴 이동평균을 각각 그려두고, 짧은 선이 긴 선을 아래에서 위로 뚫으면 롱, 위에서 아래로 뚫으면 숏이다.
# 빠른선 = SMA(종가, 9) 느린선 = SMA(종가, 18)
if fast[1] <= slow[1] and fast > slow: 기존 포지션 청산 + 롱 진입
if fast[1] >= slow[1] and fast < slow: 기존 포지션 청산 + 숏 진입
--------------------------------------------------
참조하는 값: 종가, 이동평균 두 개. 그게 전부다
고가·저가·거래량·변동성: 보지 않는다
파라미터: 빠른선 기간 9, 느린선 기간 18 (트레이딩뷰 기본값)여기서 바입다운과 결정적으로 다른 지점이 나온다. 바입다운은 반대 신호가 나도 그냥 청산일 뿐 새 포지션을 열지 않았다. 이 규칙은 반대 신호가 곧 반대 방향 진입이다. 청산이라는 별도 상태가 없다. 계좌는 늘 롱 아니면 숏이고, 가만히 현금으로 쉬는 구간이 원칙적으로 없다. “청산 규칙이 없다"는 말이 바입다운에서는 “그냥 안 판다"였다면 여기서는 “파는 대신 반대로 산다"는 뜻이 된다.

위 그림에서 데드크로스가 뜨는 자리와 골든크로스가 뜨는 자리를 봉 배열로 표시했다. 곡선이 방향을 튼 뒤 두 이동평균이 순서를 바꾸는 데 시간이 걸린다는 것도 같이 보인다. 이 지연이 다음 절의 주제다.
이 선이 반응하는 속도
이동평균의 지연은 정의로부터 바로 나온다. n기간 단순이동평균의 무게중심은 n봉의 한가운데에 있고, 이론적 지연은 대략 (n−1)/2봉이다. 빠른선(9)은 약 4봉, 느린선(18)은 약 9봉 늦게 방향 전환을 따라잡는다는 뜻이다. 교차는 이 두 지연선이 만나는 시점이므로, 가격이 실제로 방향을 튼 시점보다 항상 더 늦게 발생한다.
트레이딩뷰 예제 저장소의 기본값이며 시장과 무관하게 고정된 숫자다
9와 18은 2배 관계 — 짧은 선이 긴 선의 절반 기간
이 비율을 유지한 채 기간만 늘리면(예: 20/40) 지연은 커지고 휩쏘는 줄어든다
반대로 기간을 줄이면(예: 5/10) 반응은 빨라지지만 교차 빈도가 늘어난다
'최적의 기간'은 이론으로 안 나온다. 시장의 진동 주기에 달려 있다
빠른선과 느린선의 지연 차이가 곧 신호가 발생하는 시점이다. 두 선의 간격이 좁을수록(9와 18처럼 비율이 작을수록) 교차가 자주 뜨고, 간격이 넓을수록(예를 들어 9와 60) 교차는 드물지만 그만큼 늦게 뜬다. 이 둘 중 어느 쪽이 나은지는 시장이 얼마나 자주, 얼마나 크게 방향을 바꾸는지에 달려 있어서 규칙 자체만 보고는 답이 안 나온다.
추세와 횡보에서 완전히 다른 얼굴
교차 전략의 성격이 가장 극명하게 갈리는 지점이 여기다. 가격이 한 방향으로 매끈하게 이어지면 교차는 진입 시점에 한 번만 뜨고, 그 뒤로는 반대 신호가 나기 전까지 조용하다. 반대로 가격이 좁은 범위 안에서 오르내리면 두 이동평균이 서로 얽히면서 교차가 연달아 뜬다. 흔히 휩쏘라 부르는 현상이다.

왼쪽처럼 방향이 분명한 구간에서는 교차 한 번으로 추세 전체를 태운다. 오른쪽처럼 방향 없이 진동하는 구간에서는 교차가 짧은 간격으로 반복되고, 매번 반대 포지션을 새로 여는 구조라서 매매 한 번마다 수수료와 스프레드가 그대로 나간다. 업비트 현물 수수료는 왕복 0.1%인데, 이 규칙은 반대 신호마다 청산과 진입을 동시에 하므로 한 번의 교차가 곧 한 번의 왕복 비용이다. 방향이 하루에도 몇 번씩 바뀌는 구간에서 이 비용은 신호 빈도에 비례해 그대로 쌓인다. 방향을 얼마나 잘 맞히느냐와 무관하게, 교차 빈도 자체가 구조적 비용을 만든다는 점이 바입다운에는 없던 위험이다. 바입다운은 반대 신호가 나도 그냥 쉬면 그만이었지만, 이 규칙은 반대 신호가 곧 새 매매라서 쉬는 선택지가 없다.
코인 시장의 함정: 현물에서 “뒤집기"가 뜻하는 것
이 규칙의 정체성은 반전에 있다. 반대 신호가 뜨면 청산으로 끝나지 않고 곧바로 반대 포지션을 연다. 그런데 업비트를 비롯한 국내 현물 거래소에는 공매도가 없다. 숏을 진입으로 쓸 방법이 아예 없다는 뜻이다.
이게 단순히 “숏 신호를 못 쓴다” 수준에서 끝나지 않는다. 이 규칙은 설계상 항상 시장에 있는 것을 전제로 한다. 롱이 아니면 숏이고, 숏이 아니면 롱이다. 현금으로 쉬는 상태는 규칙 안에 없다. 그런데 현물 계좌에서 숏을 뺴면 남는 건 “롱 아니면 현금"이다. 데드크로스가 뜰 때 원래는 반대 포지션을 여는 게 규칙인데, 현물에서는 롱을 정리하는 것 말고 할 수 있는 게 없다. 결국 반은 죽고 반만 남는다. 골든크로스는 그대로 진입 신호로 쓸 수 있지만, 데드크로스는 진입이 아니라 청산으로 격하된다.
이렇게 되면 애초에 설계된 전략과 실제로 돌아가는 전략이 다른 것이 된다. 원래 규칙은 시장에 항상 발을 담그고 있는 전략인데, 현물에서 구현하면 “골든크로스에 사고 데드크로스에 파는” 전형적인 추세추종 전략으로 자동 변형된다. 이게 나쁘다는 뜻은 아니다. 다만 트레이딩뷰 전략 탭에서 이 스크립트를 그대로 돌려서 나온 성과 지표는 숏 구간의 손익까지 포함한 값이라서, 현물 계좌에 얹었을 때의 실제 성과와는 다른 숫자를 보게 된다는 점은 짚어야 한다. 백테스트 설정에서 매매 방향을 롱만으로 제한해야 실제 쓸 수 있는 규칙과 같은 조건이 된다.

체인링크라는 무대에 얹으면
체인링크는 자체 블록체인이 아니라 다른 스마트 컨트랙트 플랫폼 위에서 돌아가는 오라클 네트워크의 토큰이다. 탈중앙 애플리케이션이 거래소 시세나 날씨 같은 바깥 데이터를 계약 안으로 끌어오려면 이런 오라클을 거쳐야 하는 구조다. 그래서 체인링크의 가격 흐름은 코인 자체의 기술적 이슈보다, 이 오라클을 사용하는 디파이 프로토콜들이 얼마나 늘어나는지, 새로운 체인이나 서비스와 연동을 발표하는지 같은 소식에 더 민감하게 반응한다고 알려져 있다. 이런 통합·제휴 발표는 예고 없이 나오는 경우가 많다.
이 성격이 교차 전략과 만나면 문제가 하나 생긴다. 교차 전략은 방향 전환을 몇 봉에 걸쳐 서서히 확인하는 방식이다. 그런데 뉴스 한 건으로 가격이 순간적으로 튀었다가 되돌아오는 흐름에서는 이동평균이 그 튐을 따라가다가 미처 자리 잡기도 전에 가격이 원위치로 돌아온다. 그러면 교차가 뜨고 반대 신호가 곧이어 또 뜨는, 앞서 본 횡보 구간의 휩쏘와 비슷한 그림이 만들어진다. 다만 이번엔 원인이 좁은 박스권이 아니라 단발성 소식이라는 점이 다르다.
반대로 이 오라클 네트워크의 채택이 몇 달에 걸쳐 꾸준히 늘어나는 국면이라면 이야기가 달라진다. 그런 흐름은 방향이 한동안 유지되는 성질이 있어서, 느린 편에 속하는 이동평균 교차와 오히려 궁합이 맞을 수 있다. 다만 이건 확인된 사실이 아니라 성격만 놓고 따진 추정이라는 걸 분명히 해둔다. 체인링크의 최근 통합 발표나 채택 속도를 확신을 갖고 말할 근거가 지금 나한테는 없어서, 여기서 더 구체적으로 들어가지는 않는다.
게이트 열 개와 파라미터 두 개
내 봇의 진입 판정과 나란히 놓으면 설계 철학이 반대라는 게 보인다. 내 봇은 RSI·저점근접·거래량 같은 조건 여러 개를 동시에 만족해야만 진입한다. 조건이 많을수록 신호는 줄지만 걸러지는 것도 많다. 이 규칙은 조건이 이동평균 두 개뿐이고, 그마저도 항상 시장에 있는 것을 전제로 한다. 조건을 좁혀 진입을 아끼는 쪽과, 조건을 최소화해 늘 포지션을 쥐고 있는 쪽. 같은 “이동평균"이라는 재료를 놓고 정반대 그릇에 담은 셈이다.
그래서 이 규칙을 그대로 게이트에 넣을 생각은 없다. 항상 시장에 있어야 한다는 전제가 레짐 차단이나 슬롯 제한 같은 내 봇의 방어 장치와 정면으로 부딪힌다. 다만 버릴 것도 아니다. 빠른선과 느린선의 지연 차이라는 개념 자체는 쓸모가 있다. 지금 내 봇의 중기추세 게이트가 고점 대비 낙폭 하나로 판정하는데, 짧은 이동평균과 긴 이동평균의 괴리를 보조 신호로 얹으면 같은 판정을 다른 각도에서 한 번 더 확인하는 용도로 쓸 수 있을 것 같다. 다만 이것도 기존 게이트와 상관이 높을 가능성이 커서, 새 정보를 주는지부터 먼저 재봐야 한다.
남길 것
이 규칙을 통째로 들여올 생각은 없다. 항상 시장에 있어야 한다는 전제가 내 봇의 방어 철학과 어긋나고, 현물에서는 설계된 절반(숏)이 아예 작동하지 않아 실제로는 원래 규칙과 다른 전략이 되기 때문이다. 넣지 않기로 한 이유를 이렇게 적어두는 건, 나중에 마진 거래나 선물 계좌를 붙이게 될 때 이 판단을 다시 꺼내 보기 위해서다. 그때는 숏이 막혀 있다는 전제 자체가 사라지므로 오늘 내린 결론도 다시 따져봐야 한다.
지연 차이를 보조 신호로 실험해 볼 계획은 후보 목록에 올려둔다. 다만 우선순위가 높지는 않다. 기존 낙폭 게이트와 겹치는 정보일 가능성이 크다는 의심을 아직 풀지 못해서다. 이 글은 특정 자산의 매매를 권유하지 않는다. 기록은 전부 개인 개발 로그다.
약어 풀이
* 이 글에 나온 영어 약어를 풀어 둔다.
- LINK (Chainlink) — 체인링크. 스마트 컨트랙트에 외부 데이터를 연결하는 오라클 네트워크의 토큰.
- MA (Moving Average) — 이동평균. 일정 기간 가격의 평균을 이어 그린 선.
- SMA (Simple Moving Average) — 단순이동평균. 기간 안의 가격을 같은 가중치로 평균한 값.
- RSI (Relative Strength Index) — 상대강도지수. 일정 기간 평균 상승폭과 평균 하락폭의 비율을 0~100으로 나타내 과매수·과매도를 재는 모멘텀 오실레이터.