1. 감으로 매매하던 시절에 생긴 문제
저는 2023년 3월부터 트레이딩뷰를 사용했지만, 처음에는 파인스크립트를 매매 도구로 생각하지 않았습니다. 장도강 스타일 강의에서 거래량이 실린 기준봉과 그 이후의 가격 반응을 기록하는 방식을 접한 뒤 생각이 바뀌었죠. 당시 제 매매는 장중에 급등한 캔들을 보면 바로 따라 들어가고, 조금만 밀려도 손절하는 식이었습니다. 2023년 5월 한 달 동안 27번 진입해 16번 손실을 기록했고, 손실 금액보다 같은 실수를 반복한다는 점이 더 답답했습니다.
특히 직장 업무가 바쁜 날에는 문제가 더 크게 드러났습니다. 2023년 6월 14일에는 오전 회의 중에 거래량이 갑자기 늘어난 종목을 발견했지만, 진입 기준을 적어둔 메모가 없어서 점심시간에 이미 고점 부근을 매수했습니다. 그날 종가는 제 진입가보다 4.8% 낮았습니다. 그 뒤부터 저는 “좋아 보인다”라는 느낌을 조건문으로 바꾸지 않으면 같은 장면을 계속 반복하겠다고 판단했습니다. 파인스크립트 공부를 시작한 이유도 수익률을 높이려는 욕심보다, 제 판단 과정을 숨김없이 기록하려는 목적에 가까웠습니다.
2. 장도강 스타일에서 제가 먼저 바꾼 기준
제가 강의 내용을 참고하며 처음 만든 규칙은 최근 20개 봉 안에서 평소보다 거래량이 크게 늘어난 양봉을 기준봉으로 잡는 방식이었습니다. 처음에는 거래량이 가장 큰 봉이면 모두 기준봉으로 표시했는데, 장대 음봉까지 기준으로 잡히면서 신호가 엉망이 됐습니다. 그래서 종가가 시가보다 높고, 몸통 길이가 최근 5개 봉 몸통 평균의 1.5배 이상인 조건을 추가했습니다. 이 기준을 넣고 나니 차트에 표시되는 기준봉이 하루 평균 8개에서 1~2개로 줄었습니다.
처음부터 조건을 많이 넣은 건 제 실수였습니다. 거래량, RSI, MACD, 이동평균선, OBV를 한꺼번에 결합한 버전을 2023년 7월에 만들었는데, 2021년부터 2023년 6월까지의 백테스트 결과가 지나치게 좋아 보였습니다. 그런데 2023년 7월 이후 구간으로 따로 시험하자 승률이 68%에서 41%로 떨어졌습니다. 조건을 열두 개나 넣은 탓에 과거 차트에만 맞춘 흔적이 뚜렷했습니다. 이후 저는 기준봉의 거래량, 고가 돌파, 손절 위치처럼 눈으로 설명 가능한 규칙부터 남기기로 했습니다.
3. 제가 작성한 첫 번째 파인스크립트
아래 코드는 제가 가장 먼저 사용한 단순한 기준봉 돌파 전략의 뼈대입니다. 최근 20개 봉 중 거래량이 가장 큰 양봉을 찾고, 그 기준봉의 고가를 다음 봉 이후에 넘을 때 진입하도록 구성했습니다. 처음 코드에서는 기준봉 고가를 매 봉 새로 계산해 버려서, 돌파 직전에 기준 가격이 계속 움직이는 문제가 생겼습니다. ta.valuewhen()으로 마지막 기준봉의 고가를 고정한 뒤에야 제가 차트에서 보던 조건과 전략 테스트 결과가 비슷해졌습니다.
//@version=5
strategy("My Base Bar Test", overlay=true, commission_type=strategy.commission.percent, commission_value=0.05)
lookback = input.int(20, "거래량 탐색 봉 수", minval=5)
stopPct = input.float(3.0, "손절 비율", step=0.1) / 100
base = volume == ta.highest(volume, lookback) and close > open
baseHigh = ta.valuewhen(base, high, 0)
entry = not na(baseHigh) and ta.crossover(close, baseHigh)
if entry
strategy.entry("Long", strategy.long)
if strategy.position_size > 0
strategy.exit("Stop", "Long", stop=strategy.position_avg_price * (1 - stopPct))이 코드를 2023년 8월 3일 코스닥 ETF와 비트코인 일봉 차트에 각각 적용했습니다. 처음 결과만 보면 코스닥 ETF는 승률 46%, 손익비 1.31, 최대 낙폭 12.4%가 나왔고 비트코인은 승률 39%, 최대 낙폭 28.7%였습니다. 저는 비트코인 결과가 낮다고 코드를 바로 고치지 않았습니다. 수수료와 슬리피지를 넣지 않은 상태였고, 거래소마다 체결 환경도 달랐기 때문입니다. 먼저 테스트 조건을 실제 거래에 가깝게 바꾸는 일이 우선이었습니다.
4. 백테스트에서 제가 놓쳤던 함정
가장 크게 당황한 부분은 차트에 보이는 신호와 실제 체결 시점이 달랐다는 점입니다. 처음에는 봉이 완성되기 전에 고가를 돌파하면 바로 진입한다고 생각했지만, 전략 테스터는 설정에 따라 봉 마감 뒤 주문을 처리했습니다. 2023년 8월 18일 15분봉에서 기준봉 고가를 장중에 잠깐 넘은 뒤 종가에는 다시 내려온 사례가 있었는데, 차트에는 진입 표시가 보이고 실제 알림 기록에는 신호가 남지 않았습니다. 이후 저는 봉 마감 기준인지 실시간 틱 기준인지 따로 구분해 기록했습니다.
또 다른 실패는 손절 비율을 모든 종목에 3%로 고정한 일이었습니다. 가격 변동이 작은 ETF에서는 손절이 거의 발생하지 않았지만, 변동성이 큰 코인에서는 기준봉 저점을 건드리기도 전에 3% 손절이 반복됐습니다. 2023년 9월 한 달 동안 코인 15분봉 전략은 22회 거래 중 14회가 손절이었고, 그중 9회는 손절 후 다시 기준봉 고가를 회복했습니다. 그래서 손절을 단순한 퍼센트 하나로만 두지 않고, 기준봉 저가와 진입가의 거리 중 더 넓은 쪽을 사용하는 방식도 별도로 비교했습니다.
5. 제가 지금 지키는 운영 원칙
현재 저는 전략을 만들 때 먼저 종목과 시간봉을 고정합니다. 예전에는 주식 일봉에서 괜찮은 설정을 찾은 뒤 같은 값을 코인 5분봉에 적용했는데, 결과가 달라지는 이유를 설명하지 못했습니다. 지금은 2021년 1월부터 2023년 12월까지를 개발 구간으로, 2024년 1월부터 6월까지를 검증 구간으로 나누고 수수료 0.05%, 슬리피지 2틱을 입력합니다. 검증 구간에서 거래 수가 지나치게 줄거나 손익곡선이 급격히 무너지면 설정을 예쁘게 다듬기보다 전략을 다시 의심합니다.
리스크 관리도 코드 밖의 규칙으로 남겨두지 않았습니다. 한 번의 거래에서 계좌의 0.5%만 잃도록 주문 수량을 계산하고, 하루 손실이 1.5%에 도달하면 알림이 더 와도 진입하지 않습니다. 2024년 2월 7일에는 세 번 연속 손절한 뒤 네 번째 신호가 나왔지만, 이 제한 덕분에 충동 진입을 막았습니다. 그 신호가 이후 상승했는지는 제 규칙과 무관한 일입니다. 제가 통제할 수 있는 범위를 정해 두니, 수익을 놓쳤다는 감정보다 다음 거래의 품질을 확인하는 데 집중하게 됐습니다.
제가 파인스크립트에서 얻은 가장 현실적인 배움은 코드를 짠다고 매매가 자동으로 나아지지 않는다는 사실입니다. 코드는 제 판단을 빠르게 실행할 뿐이고, 애매한 판단을 넣으면 애매한 결과를 반복해서 보여줍니다. 기준봉을 어떤 봉으로 볼지, 신호가 봉 마감에서 유효한지, 손절 뒤 재진입을 허용할지부터 종이에 적어야 했습니다. 독자분도 처음부터 복잡한 지표를 붙이기보다 한 종목과 한 시간봉을 정한 뒤, 거래량 조건 하나와 손절 규칙 하나만 코드로 옮겨 보시길 권합니다. 그 결과를 최소 30회 거래 기록과 함께 직접 대조하는 과정이 자신에게 맞는 시스템을 찾는 현실적인 출발점입니다.
'IT & 비즈니스' 카테고리의 다른 글
| 엣지 컴퓨팅(Edge Computing): 클라우드의 한계를 넘어 분산 인프라의 새로운 패러다임 (0) | 2026.08.23 |
|---|---|
| 제1차 세계대전으로 배우는 트레이딩 전략: 거대 자본의 충돌과 리스크 관리 (0) | 2026.08.23 |
| 예스트레이더 코인(YesTrader Coin)으로 구축하는 지능형 자동매매 시스템 (0) | 2026.08.23 |
| 오픈소스 라이선스, 복사해서 쓰기 전에 꼭 알아야 할 것 (0) | 2026.08.21 |
| 개발자 면접에서 떨어지고 나서야 알게 된 것들 (0) | 2026.08.19 |