General

How to Read Crypto Candlestick Charts (Beginner to Intermediate)

Candlestick charts tell you everything about price action. This guide teaches you to read them and spot the most profitable patterns that crypto traders use daily.

A
AI Agents Hubยท2026-02-14ยท4 min readยท733 words

Builder of AI agents, crypto trading bots, and open-source automation tools. Sharing practical guides on how to build, deploy, and profit from AI and DeFi technology.

Every serious crypto trader reads candlestick charts. They pack more information than line charts and reveal market psychology โ€” who's winning between buyers and sellers. Here's how to read them.

Anatomy of a Candlestick

Each candle represents a time period (5 minutes, 1 hour, 1 day) and shows:

         โ”‚  โ† Upper shadow/wick
        โ”Œโ”€โ” โ† Open (if red/bearish) or Close (if green/bullish)
        โ”‚ โ”‚ โ† Body
        โ””โ”€โ”˜ โ† Close (if red) or Open (if green)
         โ”‚  โ† Lower shadow/wick

Green (bullish) candle: Close > Open. Buyers won this period. Red (bearish) candle: Close < Open. Sellers won this period.

Body: Distance between open and close. Large body = strong move. Wick: Shows how far price extended before reversing. Long wicks = rejection.

The 6 Most Important Patterns

1. Doji

Near-identical open and close. Small body, long wicks. Meaning: Indecision. Buyers and sellers are equal. Often signals reversal after a trend.

2. Hammer (Bullish)

Small body at top, long lower wick. Meaning: Price dropped sharply but buyers pushed it back up. Bullish reversal signal at bottoms.

3. Shooting Star (Bearish)

Small body at bottom, long upper wick. Meaning: Price spiked up but sellers pushed it back down. Bearish reversal signal at tops.

4. Engulfing Candle

Current candle completely "engulfs" the previous candle's body.

  • Bullish engulfing (green engulfs red): Strong buy signal at support
  • Bearish engulfing (red engulfs green): Strong sell signal at resistance

5. Morning Star / Evening Star

Three-candle pattern:

  • Morning Star: Large red โ†’ small body โ†’ large green (bullish reversal)
  • Evening Star: Large green โ†’ small body โ†’ large red (bearish reversal)

6. Marubozu

Candle with very small or no wicks. Pure conviction โ€” either all buyers or all sellers.

Reading Multiple Candles Together

One candle tells you little. The context of multiple candles tells you a story:

Strong uptrend: Series of large green candles, each closing higher, small wicks Trend weakening: Smaller candles, more wicks, occasional red candles Distribution (smart money selling): High volume, large wicks, no net progress upward Reversal: Pattern like hammer or engulfing at key support/resistance level

Using Volume to Confirm

A pattern without volume is unreliable. Confirm candlestick patterns with volume:

import pandas as pd
import pandas_ta as ta

def identify_patterns(df: pd.DataFrame) -> pd.DataFrame:
    """Identify key candlestick patterns."""
    df = df.copy()
    
    body = abs(df['close'] - df['open'])
    upper_wick = df['high'] - df[['open', 'close']].max(axis=1)
    lower_wick = df[['open', 'close']].min(axis=1) - df['low']
    total_range = df['high'] - df['low']
    
    # Doji: body < 10% of total range
    df['doji'] = body < (total_range * 0.1)
    
    # Hammer: lower wick > 2x body, upper wick < body, bullish context
    df['hammer'] = (
        (lower_wick > body * 2) & 
        (upper_wick < body) & 
        (df['close'] > df['open'])  # Green candle
    )
    
    # Shooting star: upper wick > 2x body, lower wick < body, bearish
    df['shooting_star'] = (
        (upper_wick > body * 2) & 
        (lower_wick < body) & 
        (df['close'] < df['open'])  # Red candle
    )
    
    # Bullish engulfing: current green engulfs previous red
    prev_red = df['close'].shift(1) < df['open'].shift(1)
    curr_green = df['close'] > df['open']
    curr_engulfs = (df['open'] < df['close'].shift(1)) & (df['close'] > df['open'].shift(1))
    df['bullish_engulfing'] = prev_red & curr_green & curr_engulfs
    
    # Volume confirmation
    avg_volume = df['volume'].rolling(20).mean()
    df['high_volume'] = df['volume'] > avg_volume * 1.5
    
    # Confirmed signals (pattern + high volume)
    df['confirmed_hammer'] = df['hammer'] & df['high_volume']
    df['confirmed_engulfing'] = df['bullish_engulfing'] & df['high_volume']
    
    return df

# Usage
# df = get_ohlcv('BTC/USDT', '4h', 200)
# signals = identify_patterns(df)
# recent_signals = signals[signals['confirmed_hammer'] | signals['confirmed_engulfing']].tail(5)

Key Support and Resistance Levels

Candlestick patterns only matter at significant price levels. A hammer at random means nothing. A hammer at major support after a downtrend? Very significant.

How to find support/resistance:

  1. Look for price levels where price has reversed multiple times
  2. Round numbers (BTC at $50,000, $60,000, $70,000 are psychological levels)
  3. Previous all-time highs/lows (price "remembers" these)
  4. Fibonacci retracement levels (0.618, 0.786 retracements)

Putting It Together

The simple framework:

  1. Identify the trend on a higher timeframe (daily chart)
  2. Find key support/resistance on that chart
  3. Look for reversal patterns on lower timeframes at those levels
  4. Confirm with volume
  5. Enter with tight stop-loss just beyond the pattern low/high

Candlestick reading takes months to internalize. The best practice is to look at hundreds of historical charts and identify patterns retrospectively โ€” then slowly you'll start seeing them in real-time.

Related Articles