Add GTL price-traffic chart diagnostic
This commit is contained in:
@@ -92,7 +92,7 @@ function RadarSetupRow({ setup, rank, reason, name, selected, onSelect }: RadarR
|
||||
className={`grid cursor-pointer grid-cols-[20px_minmax(92px,116px)_44px_1fr_auto] items-center gap-2.5 rounded-lg px-2 py-2.5 transition-colors ${
|
||||
selected ? 'bg-blue-400/[0.08]' : 'hover:bg-white/[0.03]'
|
||||
} ${qualified ? '' : 'opacity-60'}`}
|
||||
title={`gate: R:R ${setup.rr_ratio.toFixed(1)}:1${prob != null ? ` · touch odds ${Math.round(prob)}%` : ''} (screening, not an exit) · click to focus`}
|
||||
title={`gate: R:R ${setup.rr_ratio.toFixed(1)}:1${prob != null ? ` · reach probability ${Math.round(prob)}%` : ''} (screening, not an exit) · click to focus`}
|
||||
>
|
||||
<span className="num text-[11px] text-gray-500">{rank}</span>
|
||||
<span className="min-w-0">
|
||||
@@ -168,8 +168,8 @@ function FocusCard({ setup, name, badge, badgeTone, footNote, onReset }: {
|
||||
</div>
|
||||
</div>
|
||||
{/* The headline stat is the signal that actually selected this ticker.
|
||||
R:R and touch odds are gate inputs computed from an S/R level the
|
||||
trade never exits at — they get quiet, labelled treatment. */}
|
||||
R:R and reach probability are gate inputs computed from a GTL
|
||||
proposal the trade never exits at — they get quiet treatment. */}
|
||||
<div className="flex items-start gap-10 text-right">
|
||||
{setup.momentum_percentile != null && (
|
||||
<div title="Residual 12-1 month momentum percentile across the universe. This is why the ticker was selected.">
|
||||
@@ -188,12 +188,12 @@ function FocusCard({ setup, name, badge, badgeTone, footNote, onReset }: {
|
||||
)}
|
||||
<div
|
||||
className="max-w-[13rem]"
|
||||
title="Gate metrics. The reward/risk and touch odds of the nearest S/R level are what admitted this setup through the activation gate. The trade does NOT exit at that level — it exits on the trailing stop."
|
||||
title="Gate metrics. The reward/risk and reach probability of the headline Gate Target Ladder proposal are what admitted this setup. The trade does NOT exit there — it exits on the trailing stop."
|
||||
>
|
||||
<p className="section-index">gate metrics</p>
|
||||
<p className="num mt-1.5 text-sm text-gray-300">
|
||||
R:R {setup.rr_ratio.toFixed(1)}:1
|
||||
{prob != null && <> · touch {Math.round(prob)}%</>}
|
||||
{prob != null && <> · reach {Math.round(prob)}%</>}
|
||||
</p>
|
||||
<p className="mt-1 text-[10.5px] leading-relaxed text-gray-500">
|
||||
screening only — exits on the trailing stop, not at the level
|
||||
|
||||
@@ -120,8 +120,17 @@ function DataFreshnessBar({
|
||||
|
||||
export default function TickerDetailPage() {
|
||||
const { symbol = '' } = useParams<{ symbol: string }>();
|
||||
const [showGateTraffic, setShowGateTraffic] = useState(false);
|
||||
const companyName = useTickerNames().get(symbol.toUpperCase());
|
||||
const { ohlcv, scores, srLevels, sentiment, fundamentals, trades } = useTickerDetail(symbol);
|
||||
const {
|
||||
ohlcv,
|
||||
scores,
|
||||
srLevels,
|
||||
gateTargetLadder,
|
||||
sentiment,
|
||||
fundamentals,
|
||||
trades,
|
||||
} = useTickerDetail(symbol, showGateTraffic);
|
||||
const ingestion = useFetchSymbolData();
|
||||
const watchlist = useWatchlist();
|
||||
const addToWatchlist = useAddToWatchlist();
|
||||
@@ -438,12 +447,19 @@ export default function TickerDetailPage() {
|
||||
data={ohlcv.data}
|
||||
srLevels={srLevels.data?.levels}
|
||||
zones={srLevels.data?.zones}
|
||||
gateTargetLevels={gateTargetLadder.data?.levels}
|
||||
gateTargetLookbackBars={gateTargetLadder.data?.lookback_bars}
|
||||
gateTargetLoading={gateTargetLadder.isLoading && showGateTraffic}
|
||||
gateTargetError={gateTargetLadder.isError}
|
||||
showGateTraffic={showGateTraffic}
|
||||
onShowGateTrafficChange={setShowGateTraffic}
|
||||
tradeSetup={overlayWithTarget}
|
||||
currentPrice={priceInfo?.price}
|
||||
/>
|
||||
<p className="mt-2 text-[11px] text-gray-500">
|
||||
Only the nearest support & resistance are drawn. Full list in the S/R Levels tab.
|
||||
{srLevels.isError && ' S/R levels unavailable.'}
|
||||
{gateTargetLadder.isError && ' GTL diagnostic unavailable.'}
|
||||
</p>
|
||||
</>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user