XAUUSD LLM Scalping Analysis
Skill for small account scalping with tight stop losses (~5 points / $5).
Philosophy
You ARE the analyst. Your PRIMARY decision tool is price structure — where price is relative to support, resistance, swing points, and key levels.
Indicators (RSI, MACD, Stoch, etc.) are context only — they confirm or deny what structure is telling you. Never take a trade purely because an indicator says so. Structure first, indicators second, TradingView rating last.
Your priority stack:
- Price structure (where is price relative to levels?)
- Candle patterns (rejection wicks, engulfing, momentum)
- Indicator confluence (do RSI/MACD/Stoch agree with structure?)
- TradingView signal rating (treat as a secondary opinion, not gospel)
Quick Start - Fetch Data
1. Real-time price + indicators (TradingView - NO DELAY)
bash /home/hazeruno/.config/opencode/skill/xauusd-trading/scripts/fetch_price.sh
Returns live price, current candle OHLC, RSI, MACD, Stoch, ADX, CCI, EMA, BB, ATR on 5m/15m/1h timeframes. Use for current snapshot and indicator context.
2. Real-time candle history (Twelve Data - NO DELAY)
# Requires: export TWELVE_DATA_API_KEY="your_key"
# Get free key: https://twelvedata.com (800 requests/day, free forever)
# 5-minute candles (primary for scalping)
bash /home/hazeruno/.config/opencode/skill/xauusd-trading/scripts/fetch_candles.sh 5min 30
# 15-minute candles (for trend/structure)
bash /home/hazeruno/.config/opencode/skill/xauusd-trading/scripts/fetch_candles.sh 15min 20
# 1-minute candles (for micro entries)
bash /home/hazeruno/.config/opencode/skill/xauusd-trading/scripts/fetch_candles.sh 1min 40
Returns last N candles with OHLC — real-time, no delay. Use for structure analysis: swing highs/lows, support/resistance, patterns.
Intervals: 1min, 5min, 15min, 30min, 1h, 4h, 1day
3. Fallback candle history (Yahoo Finance - ~15-20min delay, NO key needed)
bash /home/hazeruno/.config/opencode/skill/xauusd-trading/scripts/fetch_gold.sh 5m 1d 50
Only use if Twelve Data key is not set. Data is delayed ~15-20 minutes.
Analysis Workflow
- Run
fetch_price.sh→ get live price + indicators snapshot - Run
fetch_candles.sh 5min 30→ get real-time candle structure (swing points, patterns) - Optionally run
fetch_candles.sh 15min 20→ for higher timeframe trend - Analyze → structure first, indicators as context
- Output signal → with checklist, levels, and probabilities
Scalping Analysis Framework (5-Point Stop Loss)
1. IDENTIFY MICRO STRUCTURE
With only 5 points of risk, you need PRECISE entries:
- Find the immediate swing high/low (last 5-10 candles)
- Identify micro support/resistance levels
- Look for tight consolidation ranges (< 10 points)
2. ENTRY TIMING CRITERIA
Only signal when:
- Price is AT a clear level (not in the middle of a range)
- Recent candle shows rejection wick or engulfing pattern
- Stop loss placement is LOGICAL (behind structure, not arbitrary)
3. CALCULATE EXACT LEVELS
For every signal, specify:
Entry: [exact price]
Stop Loss: [entry ± 5 points]
Take Profit: [minimum 1:1.5 R:R = 7.5 points]
4. MOMENTUM CHECK
On 5m chart, confirm:
- Last 3-5 candles show directional bias
- No major wick rejections against your direction
- Volume/candle size increasing in your direction
5. EXTREME INDICATOR READINGS (High-Probability Triggers)
These extreme readings often precede reversals — use them as entry confirmations:
| Indicator | Extreme LONG Zone | Extreme SHORT Zone |
|---|---|---|
| Stochastic K | < 10 | > 90 |
| CCI | < -100 | > +100 |
| RSI | < 30 | > 70 |
When multiple indicators are extreme simultaneously, bounce probability increases significantly.
Example from real session: Stoch K hit 7.2 with CCI at -92 → price bounced 12+ points.
Hard "NO TRADE" Gates
Before generating any signal, check these. Gates marked HARD = must skip. Gates marked SOFT = warn but can still trade.
HARD Gate 1: Volatility Filter
- If 5m ATR > 8 points → SKIP (your 5-point SL is noise in this volatility)
- If 15m ATR > 20 points → SKIP (market too wild for scalping)
HARD Gate 2: News Event Filter
Do NOT trade during or 15 minutes before/after these events:
- US: CPI, NFP (Non-Farm Payrolls), FOMC rate decisions, PCE, PPI
- Global: ECB/BOE/BOJ rate decisions, geopolitical shocks
- Gold can move 30-50+ points in seconds during these events. A 5-point SL is meaningless.
If you're unsure whether a news event is happening, add a warning: "Check economic calendar before entering."
HARD Gate 3: Script Failure
- If
fetch_price.shreturns an error or "Market may be closed" → NO TRADE - If data looks stale (price hasn't changed in multiple fetches) → NO TRADE
SOFT Gate 4: Spread/Slippage Cost Awareness
Gold spread is typically 2-3 points, plus ~1 point slippage on entries.
Your REAL risk per trade:
Effective SL = 5 (your SL) + 2-3 (spread) + 1 (slippage) = 8-9 points total cost
Effective TP1 = 5 (your TP) - 2-3 (spread) = 2-3 points net gain
Effective TP2 = 10 (your TP) - 2-3 (spread) = 7-8 points net gain
Always mention this in your analysis, but still suggest the trade if structure looks good.
HARD Gate 5: Rollover Period (21:00-22:00 UTC)
- DO NOT TRADE during 21:00-22:00 UTC (daily rollover/swap time)
- Stop hunts are extremely common during this window — market makers sweep liquidity before the new session
- If you must trade during rollover, use minimum 8-point SL (not 5) to survive the wicks
- This gate was upgraded from SOFT to HARD based on real session experience where two consecutive 5-pt SLs were hunted during rollover
SOFT Gate 6: Session Timing
- Best: London-NY overlap (13:00-17:00 UTC) — tightest spreads, best liquidity
- OK: London session (08:00-12:00 UTC), NY session (13:00-21:00 UTC)
- Warn but allow: Asian session (wider spreads, note it)
Signal Output Format
## XAUUSD SCALP SIGNAL
**Action**: 🟢 BUY (Long) / 🔴 SELL (Short) / ⚪ NO TRADE
**Confidence**: [High / Medium / Low]
### Levels
- Current Price: $XXXX.XX
- Entry Zone: $XXXX.XX - $XXXX.XX
- Stop Loss: $XXXX.XX (5 points risk)
- Take Profit 1: $XXXX.XX (+5 points)
- Take Profit 2: $XXXX.XX (+10 points)
### Win Probability & Scenarios
**IMPORTANT**: These probabilities are HEURISTIC — educated guesses based on structure, not statistical models. Be honest but not paralyzed.
**Probability guidelines**:
- Use ranges: "35-45%", not "42%"
- Cap at 70% max for any single outcome
- If SL probability > TP1 probability by a wide margin → SKIP
- If everything is 33/33/33 → lean toward the direction momentum supports
Estimate how likely each outcome is based on the current structure:
| Scenario | Target | Gross Pts | Net After Spread (~3pts) | Est. Probability |
|----------|--------|-----------|--------------------------|-----------------|
| SL Hit | $XXXX | -5 | -8 (SL + spread + slip) | XX-XX% |
| TP1 Hit | $XXXX | +5 | +2 to +3 | XX-XX% |
| TP2 Hit | $XXXX | +10 | +7 to +8 | XX-XX% |
**Expected Value (cost-adjusted)**:
- TP1 play: (TP1% x net_TP1) - (SL% x net_SL) = $X.XX
- TP2 play: (TP2% x net_TP2) - (SL% x net_SL) = $X.XX
**Verdict**: [WORTH TAKING / MARGINAL / SKIP]
The goal is to help the user DECIDE, not to block all trades. If a setup has any structural edge at all, present it with honest probabilities and let the user judge.
### Pre-Signal Checklist
Answer these. Flag any "No" items as risks, but still suggest the trade if the overall picture has an edge.
| # | Check | Answer |
|---|-------|--------|
| 1 | Is price near a clear level? | Yes/No |
| 2 | Is 5m ATR reasonable (≤ 8)? | Yes/No |
| 3 | Is there a candle pattern or momentum confirming? | Yes/No |
| 4 | Does higher timeframe direction agree? | Yes/No |
| 5 | Is SL behind some structure? | Yes/No |
| 6 | No major news event right now? | Yes/No |
**Trade if**: Majority are "Yes" and #2 + #6 pass. Flag any "No" as a risk factor.
### Structure Analysis
[What micro structure you see - support/resistance, swing points]
### Entry Trigger
[Specific condition to enter - e.g., "break above 5032", "rejection candle at 5025"]
### Reasoning
[2-3 sentences on why this setup works]
### Risk Warning
This is LLM-based analysis for testing only. Not financial advice.
What to Look For (5m Chart)
🟢 BUY (Long) Setups
- Support Bounce: Price touches recent low, forms rejection wick up
- Breakout Pullback: Breaks resistance, pulls back to retest, holds
- Higher Low: Creates higher low after swing up, momentum continuing
- Stop Hunt Reversal (High Probability): Price makes a sharp wick that sweeps previous lows by 3-5+ pts, then V-recovers. Enter LONG after candle closes back above the swept level. SL below wick (6-8 pts). Key signal: Stochastic K < 10 during wick = extreme oversold, high bounce probability.
🔴 SELL (Short) Setups
- Resistance Rejection: Price hits recent high, rejection wick down
- Breakdown Retest: Breaks support, pulls back to retest, rejected
- Lower High: Creates lower high after swing down, momentum continuing
- Stop Hunt Reversal (High Probability): Price makes a sharp wick that sweeps previous highs by 3-5+ pts, then V-reverses down. Enter SHORT after candle closes back below the swept level. SL above wick (6-8 pts). Key signal: Stochastic K > 90 during wick = extreme overbought.
⚪ NO TRADE Conditions
- Price in middle of range (no clear level nearby)
- Choppy/whipsaw action (alternating direction candles)
- Wide spread candles (volatility too high)
- Near session open/close (unpredictable)
Example Analysis Process
- Fetch real-time indicators:
bash /home/hazeruno/.config/opencode/skill/xauusd-trading/scripts/fetch_price.sh
- Fetch real-time candle history (for structure):
bash /home/hazeruno/.config/opencode/skill/xauusd-trading/scripts/fetch_candles.sh 5min 30
-
Analyze: Use candles to find swing points, support/resistance. Use indicators to confirm direction. Apply the Analysis Framework.
-
Generate signal with exact levels based on live price
Multi-Timeframe (Optional)
For higher confidence, fetch multiple timeframes:
bash /home/hazeruno/.config/opencode/skill/xauusd-trading/scripts/fetch_price.sh
bash /home/hazeruno/.config/opencode/skill/xauusd-trading/scripts/fetch_candles.sh 15min 20
bash /home/hazeruno/.config/opencode/skill/xauusd-trading/scripts/fetch_candles.sh 5min 30
Rule: Only take 5m signals that ALIGN with 15m direction.
Important Notes
- LLM is NOT predictive - You are doing opinionated pattern reading, not forecasting. Scalping with tight SLs has high failure rates even among experienced human traders.
- Small account = strict risk - Never risk more than 1-2% of account per trade
- 5 points is TIGHT - After spread+slippage, your real risk is ~8 points. Be extremely selective — most of the time the correct signal is NO TRADE.
- Spread eats your edge - With ~3pt spread, your TP1 of +5pts nets only +2-3pts. You need high win rates or bigger TP2 plays.
- Session timing - Best: London-NY overlap (13:00-17:00 UTC). Avoid Asian session and rollover.
- News kills scalpers - A single CPI print can move gold 40 points in 1 second. Check calendar.
- This is experimental - For paper trading and learning ONLY until you have evidence it works.
Trade Management (Once in a Position)
Breakeven Rule
- When trade reaches +2.5 to +3 pts profit, move SL to breakeven (entry price)
- This creates a "risk-free" trade — worst case you exit at 0, not -5
- Especially important after experiencing stop hunts earlier in the session
Trailing Stop Option
- After hitting +5 pts, consider trailing SL to +2 pts (lock in some profit)
- Or hold for TP2 with breakeven SL if momentum is strong
Session Loss Limit
- After 2 consecutive losses (-10 pts total), STOP trading for the session
- Emotional state after losses leads to revenge trading and poor decisions
- Exception: If you identify a clear stop hunt reversal pattern, one more attempt is acceptable with WIDER SL (6-8 pts instead of 5)
Recovery After Losses
- If you continue after losses, widen your SL to 6-8 pts
- Stop hunts often come in clusters during low-liquidity periods
- Accept that you're trading with worse R:R but better survival odds
Trading Experience Log
Use this section as a running journal. Each time the user asks, append a new entry based on the actual trade outcome.
How to log each trade
For every completed trade, add one block using this template:
### Trade #N - YYYY-MM-DD HH:MM UTC
- Session: [London / NY / Overlap / Asian]
- Direction: [BUY / SELL]
- Setup Type: [Support Bounce / Resistance Rejection / Breakout Pullback / Stop Hunt Reversal / Other]
- Entry: [price]
- Stop Loss: [price] (5 points)
- TP1 / TP2: [price] / [price]
- Outcome: [TP1 / TP2 / SL / Manual Exit]
- Net Result (points): [+X / -X]
- Key Context: [ATR, spread estimate, news status, market condition]
- What Worked: [1-2 bullets]
- What Failed: [1-2 bullets]
- Lesson: [single sentence]
Weekly review (every 10-20 trades)
After enough entries, add a summary block:
### Weekly Review - YYYY-MM-DD
- Total Trades: X
- Wins: X | Losses: X | Win Rate: XX%
- Avg Win (pts): X.X | Avg Loss (pts): X.X
- Best Setup Type: [name + stats]
- Worst Setup Type: [name + stats]
- Most Common Mistake: [one line]
- Rule Adjustment: [one concrete rule to keep/change]
Rule: Experience log is for factual outcomes and lessons only. Do not rewrite past entries.
Setup
- Get a free Twelve Data API key: https://twelvedata.com/pricing (10 seconds, free forever, 800 req/day)
- Set it:
export TWELVE_DATA_API_KEY="your_key" - Test:
bash /home/hazeruno/.config/opencode/skill/xauusd-trading/scripts/fetch_candles.sh 5min 10
File Structure
xauusd-trading/
├── SKILL.md # This file
└── scripts/
├── fetch_price.sh # REAL-TIME price + indicators (TradingView, no key)
├── fetch_candles.sh # REAL-TIME candle history (Twelve Data, free key)
└── fetch_gold.sh # Fallback candles (Yahoo Finance, delayed, no key)
Continuous Monitoring Mode
When asked to monitor XAUUSD for scalping opportunities, use this workflow:
Monitor Loop Execution Rules (CRITICAL)
This is an INFINITE loop. You MUST continue until user explicitly says "stop", "exit", or "pause".
| State | Action After Analysis |
|---|---|
NEUTRAL | sleep 120 → fetch again → DO NOT STOP |
WATCHING | sleep 60 → fetch again → DO NOT STOP |
CONSOLIDATING | sleep 90 → fetch again → DO NOT STOP |
SIGNAL | Output signal → STOP and wait for user |
HARD RULES:
- After
NEUTRAL,WATCHING, orCONSOLIDATING→ execute sleep → immediately fetch new data - Do NOT say "let me know if you want me to continue" — just continue
- Do NOT rationalize stopping ("market seems quiet", "no setup forming") — keep monitoring
- Only stop on:
SIGNALstate, user command, or HARD gate failure (market closed, script error)
After user responds to SIGNAL:
- User enters → switch to 30-second active trade monitoring
- User skips → resume normal monitoring loop with sleep
Monitor Loop
- Load this skill for all analysis
- Fetch data — you MUST run BOTH scripts every cycle:
# REQUIRED: Run these in parallel every monitoring cycle bash /home/hazeruno/.config/opencode/skill/xauusd-trading/scripts/fetch_price.sh bash /home/hazeruno/.config/opencode/skill/xauusd-trading/scripts/fetch_candles.sh 5min 15fetch_price.sh→ indicators (RSI, MACD, Stoch, ATR, etc.)fetch_candles.sh→ structure (swing highs/lows, support/resistance, patterns)- DO NOT skip candles — indicators alone cannot identify structure levels
- Every 3-5 cycles, also fetch 15m candles for trend context:
bash /home/hazeruno/.config/opencode/skill/xauusd-trading/scripts/fetch_candles.sh 15min 10
- Analyze and determine state (structure first, indicators as confirmation)
- Wait based on state, then repeat
Wait Discipline (Important)
When monitoring continuously, you MUST actually pause between cycles using sleep.
WATCHING(1 minute):sleep 60NEUTRAL(2 minutes):sleep 120CONSOLIDATING(3 minutes):# Some tool environments time out at 120s. # If so, split into two waits: sleep 90 # run fetch scripts sleep 90
Rule: Do not run back-to-back fetches without waiting unless the user explicitly says "check now" or "new candle now".
Adaptive Intervals
| State | Description | Wait Time |
|---|---|---|
NEUTRAL | Price mid-range, no clear level nearby | 2 minutes |
WATCHING | Price near key level, overbought/oversold, rejection forming | 1 minute |
CONSOLIDATING | Price stuck in tight range (<5 pts), low momentum, no breakout | 3 minutes |
SIGNAL | Entry opportunity confirmed per skill criteria | Ask user |
Detecting CONSOLIDATING State
Switch to CONSOLIDATING when ALL of these are true:
- Tight range: Last 3-5 candles have total range < 5 points (highs and lows compressed)
- Flat MACD: Histogram near zero (between -0.10 and +0.10)
- No breakout: Price not testing key support/resistance (stuck in middle)
- Low momentum: CCI between -30 and +30, or Mom indicator flat
Why this matters: Checking every minute during consolidation wastes API calls and adds no value. Wait for the range to break, then switch back to WATCHING.
Exit CONSOLIDATING: When price breaks out of the range OR volatility expands (ATR increases, MACD histogram expands)
State Transitions
NEUTRAL→WATCHING: Price approaches support/resistance, or indicators reach extreme zonesNEUTRAL→CONSOLIDATING: Price enters tight range with no momentumWATCHING→SIGNAL: Entry trigger confirmed (rejection wick, breakout, stop hunt reversal)WATCHING→NEUTRAL: Price moves away from level without triggeringWATCHING→CONSOLIDATING: Price stalls at level, forms tight range instead of breakingCONSOLIDATING→WATCHING: Range breaks, price moves toward key levelCONSOLIDATING→SIGNAL: Breakout with momentum confirms entrySIGNAL→ User decides to enter or skip
On SIGNAL
Output the full signal format (see Signal Output Format above) and ask user whether to enter.
On Active Trade
When user enters a position:
- Switch to 30-second monitoring intervals
- Track P&L, distance to SL/TP
- Alert on key levels (+2.5 pts for breakeven move, approaching TP, approaching SL)
- Continue until trade closes