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.
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:
- Look for price levels where price has reversed multiple times
- Round numbers (BTC at $50,000, $60,000, $70,000 are psychological levels)
- Previous all-time highs/lows (price "remembers" these)
- Fibonacci retracement levels (0.618, 0.786 retracements)
Putting It Together
The simple framework:
- Identify the trend on a higher timeframe (daily chart)
- Find key support/resistance on that chart
- Look for reversal patterns on lower timeframes at those levels
- Confirm with volume
- 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
What is a Smart Contract? Explained in 5 Minutes
3 min read
GeneralCEX vs DEX: 5 Key Differences Every Crypto Trader Should Know
3 min read
GeneralPromoting Your AI Tools: How to Build an Audience and Get Users
5 min read
GeneralSEO for Developer Blogs: How to Rank for AI and Crypto Keywords
5 min read