📌 Doji(도지)란?

2025. 4. 1. 15:26PYTHON

반응형

**Doji(도지)**는 금융 차트에서 등장하는 캔들 패턴으로,
시가(Open)와 종가(Close)가 거의 같아 몸통이 짧거나 없는 캔들을 의미합니다.
즉, 매수세와 매도세가 팽팽하게 맞선 상태를 나타냅니다.


🔎 Doji 패턴을 판별하는 기본 조건

시가(Open)와 종가(Close)의 차이가 매우 작아야 함
위꼬리(High - max(Open, Close)) 또는 아래꼬리(min(Open, Close) - Low)가 길 수 있음
일반적으로 시가와 종가의 차이가 전체 캔들 길이 대비 5~10% 이내일 때 Doji로 판별


📌 Python에서 Doji 패턴 추출하는 방법

1️⃣ Pandas를 사용한 간단한 Doji 탐지

import pandas as pd

# 예제 데이터 생성
data = {
    'Open': [100, 105, 110, 108, 107],
    'High': [110, 112, 115, 112, 109],
    'Low': [95, 102, 105, 100, 106],
    'Close': [100.5, 105.2, 110.1, 108.2, 107.1]
}

df = pd.DataFrame(data)

# Doji 조건 설정 (종가와 시가 차이가 전체 캔들 길이의 5% 이하)
df['CandleLength'] = df['High'] - df['Low']
df['BodyLength'] = abs(df['Close'] - df['Open'])
df['Doji'] = df['BodyLength'] / df['CandleLength'] <= 0.05  # 몸통이 전체 캔들 길이의 5% 이하

# Doji 패턴이 있는 행 출력
print(df[df['Doji']])

 

결과: Doji가 발생한 날짜만 출력됩니다.

 

2️⃣ TA-Lib을 활용한 Doji 탐지

TA-Lib은 금융 데이터 분석을 위한 강력한 라이브러리입니다.

pip install ta-lib
import talib
import numpy as np

# 예제 데이터
open_prices = np.array([100, 105, 110, 108, 107], dtype=float)
high_prices = np.array([110, 112, 115, 112, 109], dtype=float)
low_prices = np.array([95, 102, 105, 100, 106], dtype=float)
close_prices = np.array([100.5, 105.2, 110.1, 108.2, 107.1], dtype=float)

# TA-Lib을 이용해 Doji 패턴 감지
doji_signals = talib.CDLDOJI(open_prices, high_prices, low_prices, close_prices)

# 결과 출력 (1이면 Doji 발생, 0이면 Doji 아님)
print(doji_signals)

결과: 1 값이 나오는 위치가 Doji 발생 지점입니다.

 

3️⃣ pandas_ta를 사용한 Doji 탐지

pandas_ta 라이브러리는 Pandas와 호환되는 기술적 분석 라이브러리입니다.
설치 방법:

pip install pandas_ta
import pandas as pd
import pandas_ta as ta

# 예제 데이터
data = {
    'open': [100, 105, 110, 108, 107],
    'high': [110, 112, 115, 112, 109],
    'low': [95, 102, 105, 100, 106],
    'close': [100.5, 105.2, 110.1, 108.2, 107.1]
}

df = pd.DataFrame(data)

# pandas_ta를 활용한 Doji 감지
df.ta.cdl_doji(append=True)

# Doji가 감지된 행 출력
print(df[df['CDL_DOJI'] != 0])

결과: CDL_DOJI 값이 0이 아닌 경우 Doji 발생!

 

결론

📌 Doji 패턴을 감지하는 방법은 여러 가지가 있으며,
Pandas, TA-Lib, pandas_ta 등의 라이브러리를 활용하면 쉽게 추출할 수 있습니다.

🚀 추천:

  • 초보자 → Pandas로 직접 계산
  • 빠른 분석 → TA-Lib
  • Pandas와 호환 → pandas_ta

👉 Doji 패턴을 활용해 매매 전략을 세워보세요! 📊🔥