diff --git a/src/lib/components/BullBearSay.svelte b/src/lib/components/BullBearSay.svelte index bd76a274..769a0b05 100644 --- a/src/lib/components/BullBearSay.svelte +++ b/src/lib/components/BullBearSay.svelte @@ -69,15 +69,22 @@ class="absolute inset-0 rounded-lg bg-purple-600" > {/if} + {#if data?.user?.tier !== 'Pro' && i === 1} + + {item.title} + + + {:else} - {item.title} + {item.title} + {/if} {/each} - + Updated {rawData?.date} @@ -90,6 +97,7 @@

{rawData?.bullSays}

{:else}

{rawData?.bearSays}

+ {/if}
diff --git a/src/routes/crypto/[tickerID]/+layout.svelte b/src/routes/crypto/[tickerID]/+layout.svelte index 93888aa4..e50e7fd4 100644 --- a/src/routes/crypto/[tickerID]/+layout.svelte +++ b/src/routes/crypto/[tickerID]/+layout.svelte @@ -874,63 +874,57 @@ $: { - - - - - - - - - + + diff --git a/src/routes/etf/[tickerID]/+layout.svelte b/src/routes/etf/[tickerID]/+layout.svelte index ea6f3bf4..cdcd0972 100644 --- a/src/routes/etf/[tickerID]/+layout.svelte +++ b/src/routes/etf/[tickerID]/+layout.svelte @@ -952,63 +952,57 @@ $: { - - - - - - - - - + + diff --git a/src/routes/etf/[tickerID]/options/+page.svelte b/src/routes/etf/[tickerID]/options/+page.svelte index 2badd177..e84e7f92 100644 --- a/src/routes/etf/[tickerID]/options/+page.svelte +++ b/src/routes/etf/[tickerID]/options/+page.svelte @@ -14,8 +14,12 @@ use([BarChart,LineChart, GridComponent, TooltipComponent, CanvasRenderer]) - export let data; - let isLoaded = false; +export let data; +let isLoaded = false; +let activeEX = 0; +let activeIdx = 0; + + const getDailyTransactions = async (transactionId) => { let output; const cachedData = getCache(transactionId, "getDailyTransactions"); @@ -51,7 +55,7 @@ let optionsPlotData = data?.getOptionsPlotData?.plot; let displayData = 'volume'; let options; - let optionsGEX; + let optionsEX; let rawData = data?.getOptionsHistoricalData; let optionList = rawData?.slice(0,30); @@ -132,7 +136,7 @@ function normalizer(value) { return formattedTimeString; } - + function changeTimePeriod(event) { displayTimePeriod = event.target.value; @@ -213,20 +217,20 @@ function plotData(callData, putData) { return options; } -function getGEXPlot() { +function getEXPlot(state) { let dates = []; - let gexList = []; + let valueList = []; let priceList = []; data?.getOptionsGexData?.forEach(item => { dates?.push(item?.date); - gexList?.push(item?.gex); + valueList?.push(item[state]); priceList?.push(item?.close) }); - const {unit, denominator } = normalizer(Math.max(...gexList) ?? 0) + const {unit, denominator } = normalizer(Math.max(...valueList) ?? 0) const option = { @@ -310,7 +314,7 @@ function getGEXPlot() { }, { name: 'GEX', - data: gexList, + data: valueList, type: 'bar', yAxisIndex: 1, itemStyle: { @@ -407,7 +411,7 @@ function processPlotData(filteredList: any[]) { onMount(async () => { if(data?.getOptionsGexData?.length !== 0) { - optionsGEX = getGEXPlot(); + optionsEX = getEXPlot('gex'); } @@ -477,14 +481,27 @@ function handleMode(i) { }, ]; - let activeIdx = 0; - function changeStatement(event) { optionChainList = (data?.getOptionsChainData?.filter(item => item?.date_expiration === event.target.value))?.at(0)?.chain || []; } + const tabEX = [ + { + title: "GEX", + }, + { + title: "DEX", + }, + ]; + + +function handleEXMode(i) { + activeEX = i; + optionsEX = getEXPlot(activeEX === 0 ? 'gex' : 'dex'); +} + $: { @@ -649,12 +666,33 @@ $: { {#if data?.getOptionsGexData?.length !== 0}

- Daily Gamma Exposure (GEX) + {activeEX === 0 ? 'Daily Gamma Exposure (GEX)' : 'Daily Delta Exposure (DEX)'}

+
+ {#each tabEX as item, i} + + {/each} +
+
- +
{/if} @@ -711,6 +749,7 @@ $: { % Change P/C Bear/Bull + Bid/Ask Vol % OTM Total Volume Total OI @@ -721,7 +760,7 @@ $: { {#each (data?.user?.tier === 'Pro' ? optionList : optionList?.slice(0,3)) as item, index} handleViewData(item?.date)} on:mouseover={() => getDailyTransactions($etfTicker+'+'+item?.date)} class="cursor-pointer sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-[#27272A] border-b-[#09090B] {index+1 === optionList?.slice(0,3)?.length && data?.user?.tier !== 'Pro' ? 'opacity-[0.1]' : ''}"> - + {formatDate(item?.date)} @@ -737,7 +776,7 @@ $: { {item?.c_vol !== 0 ? (item?.p_vol/item?.c_vol)?.toFixed(1) : '-'} - + {#if item?.bear_ratio > (item?.neutral_ratio ?? 0) && item?.bear_ratio > (item?.bull_ratio ?? 0)}
{item?.bear_ratio?.toFixed(0)}% Bearish @@ -769,6 +808,38 @@ $: { {/if} + + {#if item?.bid_ratio > (item?.midpoint_ratio ?? 0) && item?.bid_ratio > (item?.ask_ratio ?? 0)} +
+ {item?.bid_ratio?.toFixed(0)}% Bid +
+ {:else if item?.ask_ratio > (item?.midpoint_ratio ?? 0) && item?.ask_ratio > (item?.bid_ratio ?? 0)} +
+ {item?.ask_ratio?.toFixed(0)}% Ask +
+ {:else if item?.midpoint_ratio > (item?.ask_ratio ?? 0) && item?.midpoint_ratio > (item?.bid_ratio ?? 0)} +
+ {item?.midpoint_ratio?.toFixed(0)}% Midpoint +
+ {:else if item?.bid_ratio === item?.ask_ratio && item?.bid_ratio > (item?.midpoint_ratio ?? 0)} +
+ {item?.bid_ratio?.toFixed(0)}% Bid/Ask Tie +
+ {:else if item?.bid_ratio === item?.midpoint_ratio && item?.bid_ratio > (item?.ask_ratio ?? 0)} +
+ {item?.bid_ratio?.toFixed(0)}% Bid/Neutral Tie +
+ {:else if item?.ask_ratio === item?.midpoint_ratio && item?.ask_ratio > (item?.bid_ratio ?? 0)} +
+ {item?.ask_ratio?.toFixed(0)}% Ask/Neutral Tie +
+ {:else} +
+ Equal Distribution +
+ {/if} + + {item?.otm_ratio?.toFixed(0)}% @@ -924,6 +995,7 @@ $: { Strike C/P Sent. + Exec. Spot Price Prem. @@ -960,6 +1032,9 @@ $: { {item?.sentiment} + + {item?.execution_estimate} + {item?.underlying_price} diff --git a/src/routes/price-alert/+page.svelte b/src/routes/price-alert/+page.svelte index 8ee13afd..54fb853a 100644 --- a/src/routes/price-alert/+page.svelte +++ b/src/routes/price-alert/+page.svelte @@ -342,7 +342,7 @@ $: charNumber = $screenWidth < 640 ? 15 : 40; Symbol Company - Volume + Volume Price when Created Price Target Current Price @@ -363,7 +363,7 @@ $: charNumber = $screenWidth < 640 ? 15 : 40; {item?.name?.length > charNumber ? item?.name?.slice(0,charNumber) + "..." : item?.name} - + {new Intl.NumberFormat("en", { minimumFractionDigits: 2, maximumFractionDigits: 2 @@ -431,7 +431,7 @@ $: charNumber = $screenWidth < 640 ? 15 : 40;

- Pro Subscription + Pro Subscription 🔥

@@ -442,30 +442,30 @@ $: charNumber = $screenWidth < 640 ? 15 : 40;
{/if} -
goto('/analysts')} class="w-full bg-[#141417] duration-100 ease-out sm:hover:text-white text-gray-400 sm:hover:border-gray-700 border border-gray-800 rounded-lg h-fit pb-4 mt-4 cursor-pointer"> +
goto('/watchlist')} class="w-full bg-[#141417] duration-100 ease-out sm:hover:text-white text-gray-400 sm:hover:border-gray-700 border border-gray-800 rounded-lg h-fit pb-4 mt-4 cursor-pointer">

- Wallstreet Analyst + Watchlist ⭐

- Get the latest top Wall Street analyst ratings. + Build your watchlist to keep track of their performance.
-
goto('/politicians')} class="w-full bg-[#141417] duration-100 ease-out sm:hover:text-white text-gray-400 sm:hover:border-gray-700 border border-gray-800 rounded-lg h-fit pb-4 mt-4 cursor-pointer"> +
goto('/stock-screener')} class="w-full bg-[#141417] duration-100 ease-out sm:hover:text-white text-gray-400 sm:hover:border-gray-700 border border-gray-800 rounded-lg h-fit pb-4 mt-4 cursor-pointer">

- Congress Trading + Stock Screener 🔎

- Get the latest top Congress trading insights. + Build your Stock Screener to find profitable stocks.
diff --git a/src/routes/stocks/[tickerID]/+layout.svelte b/src/routes/stocks/[tickerID]/+layout.svelte index 72a1f3ca..2ac9a04b 100644 --- a/src/routes/stocks/[tickerID]/+layout.svelte +++ b/src/routes/stocks/[tickerID]/+layout.svelte @@ -840,16 +840,16 @@ $: { - - + + -