/* home.jsx — Site A homepage */
const STACK_ITEMS = [
{ num: '01', name: 'Push', desc: 'Short-term trend from the EMA ribbon. Up arrow = fast EMA above slow.', detail: 'This is your directional bias. Everything downstream — Score, Trigger, Bias — must agree with Push, or you have a stack disagreement.' },
{ num: '02', name: 'Score', desc: 'Multi-period Donchian agreement, 0/10 to 10/10.', detail: '≥ 6/10 needed for a valid setup. ≥ 8/10 is strong confluence. < 4/10 is auto-veto regardless of what else is on screen.' },
{ num: '03', name: 'Status', desc: 'TRENDING, CHOP, or 🔒 LOCKOUT. CHOP or LOCKOUT means take no new trades.', detail: 'A yellow box on the chart and CHOP in the dashboard means stand down. 🔒 LOCKOUT means a low-quality session window is active — every signal is suppressed at its source. Wait for the breakout or the lockout to end.work is biased toward fewer, higher-quality signals.' },
{ num: '04', name: 'Bias', desc: 'Structural confirmation: above demand for longs, below supply for shorts.', detail: 'Reads the Supply/Demand level arrays. Required for the Tutorial Bias row to evaluate. If the module is off, the row shows "—".' },
{ num: '05', name: 'Trigger', desc: 'The actual BUY / SELL label fired by an EMA cross.', detail: 'A clean BUY or SELL label is the entry trigger. A gray ✕ is auto-veto. A yellow ⚠ means a pullback setup is forming — wait for the cross.' },
];
function StackScroll() {
const [active, setActive] = useS(0);
const cur = STACK_ITEMS[active];
return (
{STACK_ITEMS.map((s, i) => (
setActive(i)}
onMouseEnter={() => setActive(i)}>
{s.num}
{s.name}
{s.desc}
))}
{cur.num}
{cur.name}
{cur.desc}
{cur.detail}
);
}
const SCENES = [
{ label: 'Bullish stack', push: 'UP', score: { value: 9, dir: 'UP' }, status: 'TRENDING', signal: 'BUY', caption: 'All five layers align — direction, score, status, bias, and trigger. Take the long.' },
{ label: 'Bearish stack', push: 'DOWN', score: { value: 8, dir: 'DOWN' }, status: 'TRENDING', signal: 'SELL', caption: 'Mirror of the bullish setup — same logic, opposite direction.' },
{ label: 'Chop / no trade',push: 'FLAT', score: { value: 4 }, status: 'CHOP', signal: 'NO_TRADE', caption: 'Push is flat, score is weak, chop box active. Stand down and wait for breakout.' },
{ label: 'Push / Score disagree', push: 'UP', score: { value: 7, dir: 'DOWN' }, status: 'TRENDING', signal: 'BUY', caption: 'Push says up, Score says down — directional disagreement is auto-veto.' },
];
function HomeDemo() {
const [i, setI] = useS(0);
const s = SCENES[i];
return (
Live Dashboard · Pick a Scenario
{s.caption}
{SCENES.map((sc, idx) => (
))}
);
}
const MODULES = [
{ meta: 'Module · default ON', name: 'Chop Zones', body: 'No-trade range filter. Detects compressed price action via ATR — when the recent N-bar range divided by ATR drops below threshold, GHOST draws a yellow translucent box. Combined with No-Trade ✕, signals fired inside chop become untradeable. Inside a lockout window, chop boxes recolor to the lockout color.' },
{ meta: 'Module · default ON', name: 'Supply / Demand', body: 'Marks recent swing highs (supply / sellside liquidity) and swing lows (demand / buyside liquidity) with horizontal lines and price tags. Multiple pivots within ATR-tolerance merge into a single stronger level (×N). Levels auto-delete when swept by price; levels inside lockout windows inherit the lockout color.' },
{ meta: 'Module · default OFF', name: 'Reversal Signals', body: 'Structure-classified swing markers — only when pivots qualify as a meaningful structure event (HH / LH / LL / HL). Auto-sensitivity by timeframe. Volume style sizes circles by ATR-normalized reversal magnitude (5 tiers); Tag style prints a small "R" label. Reversals inside a lockout window render in the lockout color.' },
{ meta: 'Module · default OFF', name: '👻 Ghost Signals', body: 'Independent Signal Generator. Renders B+ / S+ capsules on Bullish / Bearish entries. Three conditions must align: Ribbon Alignment, Confirmation Window & ATR Proximity. Independent of the confluence stack — does not consult Push, Score, CHOP, or No-Trade ✕. Inside a lockout window all Ghost Signal visuals inherit the lockout color.' },
{ meta: 'Module · default OFF', name: '🔒 Session Lockout', body: 'Hard signal suppression for low-quality session windows. Three Dead Zones (Asia, NY Lunch, London Lunch) and three Sweep Windows (London Open, London→NY Transition, NY Open) cover periods of thin tape or algorithmic liquidity hunts. Inside a window: BUY/SELL/TP/alerts go silent, the Status cell shows 🔒 LOCKOUT, candles overlay with a MACD-intensity gradient (dark→white).' },
{ meta: 'Module · default OFF', name: '🎓 Tutorial Mode', body: 'Optional secondary dashboard that walks you through the stack with live, contextual explanations. Reads each layer of the confluence stack and color-codes the result — green ✓, red ✕, yellow ⚠, gray —. Includes a Pattern row that detects 13 candle types and chart patterns (Doji, Hammer, Bull Flag, Head & Shoulders, etc.) and an optional Context Message with a 12-tier priority ladder.' },
{ meta: 'Module · default OFF', name: '🗺️ Chart Legend', body: 'Optional reference table pinned to a chart corner. Context-sensitive: only shows entries for modules currently enabled, including a dedicated Lockout section when Session Lockout is on. Adapts to your Reversal Style — shows Volume circles or Tag pills, never both.' },
];
function ModuleAccordion() {
const [open, setOpen] = useS(0);
return (
{MODULES.map((m, i) => (
{i === open && (
{m.body}
)}
))}
);
}
function Home() {
return (
<>
{/* HERO */}
GHOST · TradingView · Pine Script
Read the Chart. Wait for the Stack. Take the Trade.
GHOST is a confluence-based Trading Framework for TradingView. It reads the
chart top to bottom and tells you — at a glance — whether the conditions
you trade in are actually present. If the stack doesn't align, you don't
take the trade.
The live status panel pinned to a chart corner. Always renders so you can see at a glance whether the confluence stack is aligned. Click through the scenarios.
What It Answers
Push — short-term EMA direction
Score — Donchian agreement (0–10)
Status — Trending or Chop
Signal — BUY / SELL / Setup / ✕ NO TRADE
When all four agree and a fresh trigger fires, that's a green light. Anything else — auto-veto.
{/* STACK */}
·02 · The Confluence Stack
One Signal Is Noise. Alignment Means Everything.
Five layers, top to bottom. Hover or click each row to read what it does and how it gates the trade.
{/* MODULES */}
·03 · Modules
Seven Independent Modules. Combine What Helps; Turn Off What Clutters.
{/* PHILOSOPHY */}
·04 · Philosophy
Built Around Fewer, Higher-Quality Signals.
Read
Top to Bottom, Every Time
Push → Score → Status → Bias → Trigger. The stack is the order GHOST wants you to read in. Each layer is a different question about the market.
Wait
The Stack Must Align
Most of the time, it won't — and that's the indicator working as intended. The best edge is often the trade you didn't take.
Decide
You Make the Call
GHOST is decision-support, not a trading system. It gives you the signal. You decide whether to act, manage your stops, and take the trade.
Honest
No Backtest. No Win-Rate.
GHOST is a visual aid for discretionary traders. There's no built-in backtest, no win-rate statistic. You journal your own results.
{/* CTA STRIP */}
Learn the Framework Before You Trade It.
The Ghost Learning Edition — 7 chapters, 6 simulator drills, a 24-question certification exam.