No overhead levels detected.
; } return (| Band | Level | Distance | Gate R:R | Touch odds |
|---|---|---|---|---|
| {target.is_primary && ★} {target.classification} | {formatPrice(target.price)} | {formatPercent((target.distance_from_entry / setup.entry_price) * 100)} | {target.rr_ratio.toFixed(2)} | {target.probability.toFixed(1)}% |
The last {dir} setup is invalidated — price ({formatPrice(currentPrice!)}) has passed the stop ({formatPrice(setup.stop_loss)}). No fresh {dir} setup right now; the scanner surfaces a new one when it forms.
Alternative setup — the ticker bias currently favors the opposite direction.
)} {counterTrend && regime && (⚠ Counter-trend: {setup.direction.toUpperCase()} against a {regime.label} market ({regime.benchmark ?? 'SPY'}). Lower odds — size down or wait for confirmation.
)} {/* No 'invalidated' branch here: that state returns the "no current setup" card above, so it can never reach this block. */} {drift && drift.status === 'extended' && drift.r != null && ({drift.r >= 1 ? `⚠ Price has run ${drift.r.toFixed(1)}R past the scan entry (${drift.pct >= 0 ? '+' : ''}${drift.pct.toFixed(1)}%). Entering now means chasing — your stop sits further away, so the same dollar risk buys fewer shares.` : `⚠ Price has drifted ${Math.abs(drift.r).toFixed(1)}R toward the stop (${drift.pct.toFixed(1)}%) — the entry is stale.`}
)}stop {formatPrice(setup.stop_loss)} {honorsTarget && <> · take profit {formatPrice(takeTarget)}>} {sizing && <> · suggested {sizing.shares} sh, max loss {formatPrice(sizing.dollarRisk)}>}
{/* The exit is the trailing stop, not a target. Say so here, where the user is actually committing — this dialog used to offer a target dropdown whose value the exit never reads. */} {exitPlan && !honorsTarget && (exits on{' '} {exitPlan.headline}. No take-profit — the {formatPrice(setup.target)} level is recorded for reference only and will not close this trade.
)}Resistance levels the scanner found. Their R:R and touch odds are what got this setup through the gate — but the trade exits on the trailing stop, so price reaching one of these is not a sell signal. Clicking only moves the marker.
)}{setup.conflict_flags.join(' • ')}
)}{head} Risk: {summary?.risk_level ?? '—'}
{tail &&{tail}
} > ); })()}⚠ Earnings in {earningsDays} day{earningsDays === 1 ? '' : 's'} ({nextEarningsDate}) — inside the ~30-day max hold. A report can gap price straight through your stop; consider waiting or sizing down.
) : (Next earnings: {nextEarningsDate} ({earningsDays} days).
) )} {preferredDirection !== 'neutral' && preferredSetup ? (Recommendation · {symbol.toUpperCase()}
{body}