자동매매에서 언제 진입하느냐보다 더 중요한 건 언제 나오느냐입니다. 손절을 너무 좁게 잡으면 시장 노이즈에 쉽게 털리고, 너무 넓게 잡으면 한 번 손실이 계좌를 크게 깎아먹습니다. 오늘은 ATR(Average True Range)을 활용해서 시장 변동성에 맞는 손절/익절 라인을 자동으로 계산하는 방법을 알려드리겠습니다.

ATR이란?
ATR은 일정 기간 동안의 평균 가격 변동 폭을 나타내는 지표입니다. 변동성이 크면 ATR 값이 높고, 조용한 장에서는 ATR 값이 낮습니다.
예를 들어 비트코인의 14일 ATR이 1,500달러라면, 최근 14일간 하루 평균 1,500달러 정도 움직였다는 뜻입니다.
ATR 기반 손절/익절 설정법
가장 많이 쓰이는 방식은 이렇습니다.
손절(Stop Loss) = 진입가 - (ATR × 1.5)
익절(Take Profit) = 진입가 + (ATR × 2.0)
이렇게 하면 리스크 대비 보상 비율(Risk-Reward Ratio)이 1:1.33 이상이 됩니다. ATR에 곱하는 배수는 전략과 타임프레임에 따라 조정할 수 있습니다.
파이썬 코드
import pandas as pd
def calculate_atr(df, period=14):
"""ATR 계산"""
df['high'] = df['high'].astype(float)
df['low'] = df['low'].astype(float)
df['close'] = df['close'].astype(float)
df['tr1'] = df['high'] - df['low']
df['tr2'] = abs(df['high'] - df['close'].shift(1))
df['tr3'] = abs(df['low'] - df['close'].shift(1))
df['true_range'] = df[['tr1', 'tr2', 'tr3']].max(axis=1)
df['atr'] = df['true_range'].ewm(span=period, adjust=False).mean()
return df
def get_sl_tp(entry_price, atr_value, direction="LONG"):
"""손절/익절 라인 계산"""
sl_multiplier = 1.5
tp_multiplier = 2.0
if direction == "LONG":
stop_loss = entry_price - (atr_value * sl_multiplier)
take_profit = entry_price + (atr_value * tp_multiplier)
else: # SHORT
stop_loss = entry_price + (atr_value * sl_multiplier)
take_profit = entry_price - (atr_value * tp_multiplier)
return round(stop_loss, 2), round(take_profit, 2)
# 사용 예시
entry = 67000 # 진입가
atr = 1200 # 현재 ATR 값
sl, tp = get_sl_tp(entry, atr, "LONG")
print(f"진입가: {entry}")
print(f"손절: {sl} (손실 제한: ${entry - sl})")
print(f"익절: {tp} (목표 수익: ${tp - entry})")
포지션 사이즈 계산
ATR과 함께 포지션 사이즈(얼마나 살 것인가)도 자동으로 계산해야 합니다. 핵심 공식은 이것입니다.
def calculate_position_size(balance, risk_pct, entry, stop_loss):
"""포지션 크기 계산"""
risk_amount = balance * risk_pct # 잃어도 되는 금액
price_risk = abs(entry - stop_loss) # 가격 리스크
position_size = risk_amount / price_risk
return round(position_size, 4)
# 예시: 잔고 1000 USDT, 리스크 2%
size = calculate_position_size(1000, 0.02, 67000, 65200)
print(f"포지션 크기: {size} BTC")
이 방식을 쓰면 한 번 거래에 전체 자금의 2%만 리스크로 걸 수 있어서, 연속 10번 손절을 당해도 자금의 80%가 남습니다.
마무리
ATR 기반 리스크 관리는 자동매매의 생명보험과 같습니다. 아무리 좋은 전략이라도 리스크 관리 없이는 언젠가 계좌가 날아갑니다. 다음 글에서는 백테스트로 전략을 검증하는 방법을 다루겠습니다.
※ 이 글은 투자 권유가 아닙니다. 암호화폐 투자는 원금 손실 위험이 있으며, 모든 투자 판단과 책임은 투자자 본인에게 있습니다.
'투자 재테크' 카테고리의 다른 글
| 바이비트 테스트넷으로 자동매매 봇 안전하게 테스트하기 (0) | 2026.04.14 |
|---|---|
| 백테스트로 전략 검증하기 — 과거 데이터로 수익률 미리 확인하는 법 (1) | 2026.04.14 |
| EMA 크로스 전략으로 매매 신호 만들기 — 바이비트 자동매매 실전 코드 (0) | 2026.04.13 |
| 파이썬 pybit 설치부터 첫 API 호출까지 — 바이비트 자동매매 기초 (0) | 2026.04.13 |
| 바이비트 API 키 발급 방법 — 자동매매 봇의 첫 번째 단계 (2026) (0) | 2026.04.13 |