Files
AutoCoinTrader/docs/current_trading_strategy_analysis.md

7.6 KiB

현재 매수 전략 분석

날짜: 2025-12-09 파일: src/signals.py 함수: _evaluate_buy_conditions()


📊 현재 구현된 매수 전략

전략 개요

현재 시스템은 단일 지표가 아닌 복합 조건을 사용하여 신뢰도 높은 매수 신호를 생성합니다.

매수 신호 = (MACD + SMA + ADX) 복합 조건
           (3가지 조건 중 1개 이상 충족 시)

🎯 3가지 매수 조건

매수조건 1: MACD 상향 돌파 + 추세 확인

if macd_cross_ok and sma_condition and adx_ok:
    matches.append("매수조건1")

세부 조건:

  1. MACD 골든 크로스:
    • MACD > Signal 돌파 OR
    • MACD > 0 돌파 (0선 상향 돌파)
  2. SMA 정배열: SMA5 > SMA200 (상승 추세)
  3. ADX 강세: ADX > 25 (강한 추세)

트레이딩 의미:

  • MACD 골든 크로스 = 단기 모멘텀 전환
  • SMA 정배열 = 중장기 상승 추세
  • ADX 강세 = 추세가 강함 (약한 반등 필터링)

강점: 추세 전환 초기 포착


매수조건 2: SMA 골든 크로스 + 모멘텀 확인

if cross_sma and macd_above_signal and adx_ok:
    matches.append("매수조건2")

세부 조건:

  1. SMA 골든 크로스: SMA5SMA200을 상향 돌파
  2. MACD 강세: MACD > Signal (상승 모멘텀 유지)
  3. ADX 강세: ADX > 25

트레이딩 의미:

  • SMA 골든 크로스 = 장기 추세 전환 시그널
  • MACD 강세 = 모멘텀 뒷받침
  • ADX 강세 = 추세 지속 가능성

강점: 중장기 추세 전환 포착


매수조건 3: ADX 돌파 + 추세/모멘텀 확인

if cross_adx and sma_condition and macd_above_signal:
    matches.append("매수조건3")

세부 조건:

  1. ADX 상향 돌파: ADX가 25를 상향 돌파 (추세 강화)
  2. SMA 정배열: SMA5 > SMA200
  3. MACD 강세: MACD > Signal

트레이딩 의미:

  • ADX 돌파 = 약세 → 강세 전환
  • SMA 정배열 + MACD 강세 = 상승 추세 확정

강점: 추세 강화 시점 포착


현재 전략의 강점

1. 높은 신뢰도

  • 3가지 지표를 복합 사용 → 가짜 신호(False Signal) 감소
  • 단일 지표의 한계 보완 (MACD만, RSI만 사용 시 오작동 위험)

2. 추세 확인

  • SMA200 사용 → 장기 추세 확인
  • ADX 사용 → 약한 반등/횡보장 필터링
  • 약세장 함정 회피: 단순 과매도 신호와 달리 추세 확인 필수

3. 다양한 진입 시점

  • 조건1: MACD 전환 (빠른 진입)
  • 조건2: SMA 전환 (중기 진입)
  • 조건3: ADX 전환 (추세 강화 진입)

4. 코드 품질

  • 명확한 조건 분리
  • 테스트 용이
  • 유지보수 편리

⚠️ 현재 전략의 한계

1. 과매도 구간 저가 매수 불가

  • 문제: RSI < 30 같은 과매도 신호 미사용
  • 영향: 급락 후 반등 초기 진입 기회 놓칠 수 있음
  • 예시:
    비트코인이 60,000 → 40,000으로 급락 (RSI 20)
    → 현재 전략: MACD/SMA 조건 충족 시까지 대기
    → 놓친 기회: 40,000 → 45,000 반등 (12.5% 수익)
    

2. MACD 히스토그램 미확인

  • 문제: MACD > Signal 조건만 확인, 히스토그램 증가 확인 안 함
  • 영향: 모멘텀 약화 구간에서 매수 가능
  • 예시:
    MACD: 10 → 8 → 6 (하락 중)
    Signal: 5 (변동 없음)
    → MACD > Signal 충족하지만 모멘텀 약화 중 → 매수 신호 발생 ❌
    

3. 지연 신호 (Lagging Indicator)

  • 문제: MACD, SMA200 모두 후행 지표
  • 영향: 추세 전환 초기가 아닌 중후반에 진입 가능
  • 해결책: 선행 지표(RSI, Stochastic) 추가 검토

💡 개선 제안 (선택사항)

제안 1: MACD 히스토그램 확인 추가

# 현재
macd_cross_ok = (cross_macd_signal or cross_macd_zero)

# 개선안
macd_hist = macd[f"MACDh_{fast}_{slow}_{signal}"]
curr_hist = macd_hist.iloc[-1]
prev_hist = macd_hist.iloc[-2]

# 히스토그램이 증가 중일 때만 매수 (모멘텀 강화)
macd_cross_ok = (cross_macd_signal or cross_macd_zero) and (curr_hist > prev_hist)

효과: 모멘텀 약화 구간 매수 방지


제안 2: RSI 과매도 조건 추가 (선택)

# 매수조건4: RSI 과매도 + 반등 (급락 후 저가 매수)
def check_rsi_oversold_bounce(df, period=14, threshold=30):
    rsi = df.ta.rsi(length=period, append=False)
    if len(rsi) < 3:
        return False

    curr_rsi = rsi.iloc[-1]
    prev_rsi = rsi.iloc[-2]

    # RSI 30 이하에서 반등 시작
    return (curr_rsi < threshold) and (curr_rsi > prev_rsi)

# _evaluate_buy_conditions()에 추가
if check_rsi_oversold_bounce(df):
    # 추가 확인: ADX나 SMA 정배열로 신뢰도 보강
    if adx_ok or sma_condition:
        matches.append("매수조건4")

효과:

  • 급락 후 저가 매수 기회 포착
  • ADX/SMA 조건으로 가짜 신호 필터링
  • ⚠️ 주의: 약세장에서는 추가 하락 위험 (백테스팅 필수)

제안 3: 볼린저 밴드 추가 (선택)

# 매수조건5: 볼린저 밴드 하단 반등
def check_bollinger_bounce(df, period=20, std=2):
    bb = df.ta.bbands(length=period, std=std, append=False)
    if len(df) < 3:
        return False

    curr_close = df["close"].iloc[-1]
    prev_close = df["close"].iloc[-2]
    lower_band = bb[f"BBL_{period}_{std}.0"].iloc[-1]

    # 하단 밴드 터치 후 반등
    touched = (prev_close <= lower_band)
    bouncing = (curr_close > prev_close)

    return touched and bouncing

# _evaluate_buy_conditions()에 추가
if check_bollinger_bounce(df):
    if macd_above_signal:  # MACD 강세 확인으로 신뢰도 보강
        matches.append("매수조건5")

효과:

  • 변동성 확대 구간 저가 매수
  • MACD 조건으로 추세 확인
  • ⚠️ 주의: 하락 추세에서는 하단 밴드도 계속 하락 (백테스팅 필수)

📈 백테스팅 권장 사항

개선안을 적용하기 전 반드시 과거 데이터로 백테스팅 수행:

테스트 기간

  • 최소 1년 (불장, 횡보장, 약세장 포함)
  • 권장 3년 (다양한 시장 상황)

측정 지표

  1. 수익률: 누적 수익률, 연평균 수익률
  2. 승률: 수익 거래 / 전체 거래
  3. 손익비: 평균 수익 / 평균 손실
  4. MDD: 최대 낙폭 (Maximum Drawdown)
  5. 샤프 비율: 위험 대비 수익

비교 대상

  • 현재 전략 (MACD + SMA + ADX)
  • 개선안 1 (히스토그램 추가)
  • 개선안 2 (RSI 추가)
  • 개선안 3 (볼린저 밴드 추가)
  • Buy & Hold (벤치마크)

🎯 결론

현재 전략 평가

항목 평가 설명
신뢰도 복합 조건으로 가짜 신호 최소화
수익률 추세 추종으로 안정적 수익
진입 타이밍 후행 지표로 다소 늦은 진입
위험 관리 ADX로 약세장 필터링 우수
코드 품질 명확하고 유지보수 용이

권장 사항

  1. 현재 전략 유지: 안정성과 신뢰도가 우수
  2. 백테스팅 수행: 현재 전략의 실제 성과 측정
  3. 선택적 개선: 백테스팅 결과에 따라 히스토그램 확인 추가 검토
  4. RSI/볼린저 밴드: 급락 매수 전략이 필요하면 추가 고려 (리스크 높음)

작성자: GitHub Copilot (Claude Sonnet 4.5) 작성일: 2025-12-09 참고:

  • src/signals.py:370-470 (_evaluate_buy_conditions)
  • docs/code_review_report_v1.md (CRITICAL-004, HIGH-004 분석)