I'll be upfront: most crypto TA on the internet is garbage. It's either too vague ("BTC is bullish above $80K") or too complex (20 indicators on one chart).
This post is the framework I actually use. Five setups, clear entry/exit rules, real examples.
Disclaimer: This is educational content — not financial advice. Trading involves significant risk. Never trade with money you can't afford to lose.
My Core Principles Before Any Setup
These rules override everything. If I violate them, the setup doesn't matter:
- Never risk more than 2% of total capital on a single trade
- Always set stop-loss before entry — not after
- No leveraged trades without tight stops — leverage amplifies both ways
- Trend is your friend — I only trade in the direction of the higher timeframe trend
- Cash is a position — not trading is valid
Setup 1: The Weekly 21 EMA Bounce
Timeframe: Weekly chart Success rate (my trades): ~68% over 4 years
Bitcoin has a deeply reliable relationship with the 21-week EMA. In every major bull market, BTC finds support at the 21 EMA multiple times before breaking below it definitively (which signals a bear market).
How to trade it:
Entry trigger:
- Weekly candle closes above 21 EMA after touching/piercing it
- RSI(14) on weekly > 50 (confirms momentum isn't dead)
Stop-loss:
- Weekly close below 21 EMA (not intraday wick)
Target:
- Previous swing high (3:1 minimum risk/reward required)
Position size:
- 2% risk rule → (Account × 0.02) / (Entry - Stop) = shares/units
Example:
- Account: $50,000
- Entry: $82,000
- Stop: $74,000 (weekly candle close)
- Risk per unit: $8,000
- Position size: ($50,000 × 0.02) / $8,000 = 0.125 BTC
- Dollar risk: $1,000 (2% of account)
This is how you stay in the game long-term. Consistent small bets, never blow up.
Setup 2: 4H Order Block Bounce
This is my highest probability intraday setup.
What is an order block? A candle (or cluster) where institutional buying/selling occurred — identified by a large move immediately following it. When price returns to that zone, institutions often defend it again.
How to identify:
- Find a strong impulse move on 4H chart (3%+ move in 1–2 candles)
- Look back at the last bullish candle before the impulse (for buys)
- That candle's high-to-low range = your order block zone
Entry rules:
- Price returns to order block zone
- Lower timeframe (15m) shows rejection candle (pin bar, engulfing)
- Volume on rejection > average
- Above 200 EMA on 4H
Entry: At rejection candle close
Stop: Below order block zone (5% buffer)
Target: Recent swing high
R/R: Minimum 2:1
Why this works for developers: Order blocks are essentially caching mechanisms — price "remembers" where big orders were filled and returns to that level. Think of it like a DNS cache — the system returns to known-good resolvers.
Setup 3: Bull Flag / Consolidation Breakout
After a strong impulse move (flag pole), BTC often consolidates in a tight range before continuing.
Pattern identification:
Flag pole: Strong move of 10–20%+ in <1 week
Consolidation: 5–15 day tight range, typically 30–50% retracement of pole
Volume: Decreasing during consolidation (accumulation, not distribution)
Breakout: Price closes above flag resistance + volume spike
Entry:
Entry: Close above flag resistance on 4H chart
Confirmation: Volume 1.5x average on breakout candle
Stop: Below flag structure (middle of the flag)
Target: Pole height projected from breakout point
Flag target calculation:
Pole height = 20%
Entry at flag resistance = $80,000
Target = $80,000 × 1.20 = $96,000
Setup 4: RSI Divergence (Reversal Warning)
This is my risk management tool more than a trade setup. When I see divergence, I reduce position size.
Bearish divergence (sell signal):
- Price makes higher high
- RSI(14) on 4H makes lower high
- Signal: Momentum weakening — reduce longs, look for short opportunities
Bullish divergence (buy signal):
- Price makes lower low
- RSI(14) makes higher low
- Signal: Selling momentum fading — look for long entries
Important caveat: Divergence is a warning, not a trade trigger alone. I combine it with a price action signal (e.g., bearish engulfing on the higher high, or bullish pin bar on the lower low).
Divergence alone = 55% win rate
Divergence + price action confirmation = 72% win rate
Setup 5: Weekly Close Above Key Level
The simplest, most powerful setup. No indicators needed.
Bitcoin has key psychological and technical levels: round numbers ($50K, $80K, $100K), previous all-time highs, and Fibonacci retracement levels.
Rule:
If BTC weekly candle CLOSES above a key level it previously failed at:
→ Go long at Sunday close
→ Stop: Weekly close back below that level
→ Target: Next major key level
The magic is in weekly close, not intraday price. Market makers routinely push price above levels intraday to trigger retail longs, then pull it back. Weekly closes don't lie.
My Trade Journal Template
Every trade I take gets logged:
Date: 2026-03-12
Setup: Weekly 21 EMA Bounce
Timeframe: Weekly
Entry: $82,400
Stop: $74,800
Target: $94,000
R/R: 1:1.5
Position: 0.12 BTC
Risk: $936 (1.9% of account)
Reasoning:
- Weekly closed above 21 EMA at $81,200
- RSI(14) weekly = 54 (above 50)
- HTF trend: Bullish (above 200W SMA)
- Catalyst: Fed signaling rate pause
Exit:
Result:
Notes:
Journaling is the difference between gamblers and traders. If you don't track your trades, you're gambling.
The Tools I Use
| Tool | Purpose | Cost | |---|---|---| | TradingView | Charting, alerts | $15/mo (Pro) | | Binance | Spot + futures | 0.1% fee | | Interactive Brokers | US equities | Low commissions | | Notion | Trade journal | Free | | Python scripts | Screeners, alerts | My own code |
The Python screener I use to scan for setups automatically:
import ccxt
import pandas as pd
import ta
exchange = ccxt.binance()
def check_ema_bounce(symbol='BTC/USDT', timeframe='1w'):
ohlcv = exchange.fetch_ohlcv(symbol, timeframe, limit=100)
df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
df['ema21'] = ta.trend.EMAIndicator(df['close'], window=21).ema_indicator()
df['rsi'] = ta.momentum.RSIIndicator(df['close'], window=14).rsi()
last = df.iloc[-1]
prev = df.iloc[-2]
# Bounce condition: prev candle touched EMA, current close above EMA
touched_ema = prev['low'] <= prev['ema21'] * 1.02
above_ema = last['close'] > last['ema21']
rsi_ok = last['rsi'] > 50
if touched_ema and above_ema and rsi_ok:
print(f"✅ EMA21 Bounce Setup: {symbol}")
print(f" Close: {last['close']:.0f} | EMA21: {last['ema21']:.0f} | RSI: {last['rsi']:.1f}")
check_ema_bounce()
Starting Point for Beginners
If you're new to TA, do this in order:
- Learn to read candlesticks (1 week) — Investopedia is fine
- Master one setup only (Setup 1: Weekly EMA Bounce)
- Paper trade for 3 months — no real money yet
- Journal every trade — track your win rate
- Start real trading with $1K max when paper trading shows >55% win rate
- Add setups only after mastering the first one
The most expensive lesson in trading is learning multiple setups simultaneously. Focus beats diversification in skills.
Next post: How I automated my trade alerts using Python + Telegram so I never miss a setup while at work.