Stock Screener

{filteredData?.length} Matches Found
Popular Strategies popularStrategy("dividendGrowth")} class="cursor-pointer sm:hover:bg-gray-300 dark:sm:hover:bg-primary" > Dividend Growth popularStrategy("topGainers1Y")} class="cursor-pointer sm:hover:bg-gray-300 dark:sm:hover:bg-primary" > Top Gainers 1Y popularStrategy("topShortedStocks")} class="cursor-pointer sm:hover:bg-gray-300 dark:sm:hover:bg-primary" > Top Shorted Stocks popularStrategy("momentumTAStocks")} class="cursor-pointer sm:hover:bg-gray-300 dark:sm:hover:bg-primary" > Momentum TA Stocks popularStrategy("underValuedStocks")} class="cursor-pointer sm:hover:bg-gray-300 dark:sm:hover:bg-primary" > Undervalued Stocks popularStrategy("strongCashFlow")} class="cursor-pointer sm:hover:bg-gray-300 dark:sm:hover:bg-primary" > Strong Cash Flow
{#each strategyList as item} switchStrategy(item)} class="{item?.id === selectedStrategy ? 'bg-gray-300 dark:bg-primary' : ''} cursor-pointer sm:hover:bg-gray-300 dark:sm:hover:bg-primary" > {item?.title} ({item?.rules?.length}) {/each}
{#if showFilters}
{#if data?.user && selectedStrategy?.length !== 0} {/if} {#if ruleOfList?.length !== 0} {/if}
{#each displayRules as row (row?.rule)}
{row?.label?.length > 20 ? row?.label?.slice(0, 20)?.replace("[%]", "") + "..." : row?.label?.replace("[%]", "")}
(ruleName = row?.rule)}> {#if !["sma20", "sma50", "sma100", "sma200", "ema20", "ema50", "ema100", "ema200", "grahamNumber", "analystRating", "topAnalystRating", "halalStocks", "score", "sector", "industry", "country"]?.includes(row?.rule)}
{#each ["Over", "Under", "Between", "Exactly"] as item} changeRuleCondition( row?.rule, item, )} class="cursor-pointer text-[1rem] font-normal" >{item} {/each}
{#if ruleCondition[row?.rule] === "between"}
handleValueInput(e, row?.rule, 0)} class="ios-zoom-fix block max-w-[3.5rem] rounded-sm placeholder:text-gray-200 font-normal p-1 text-sm shadow-sm focus:border-blue-500 focus:ring-blue-500 bg-secondary" /> & handleValueInput(e, row?.rule, 1)} class="ios-zoom-fix block max-w-[3.5rem] rounded-sm placeholder:text-gray-200 font-normal p-1 text-sm shadow-sm focus:border-blue-500 focus:ring-blue-500 bg-secondary" />
{:else} handleValueInput(e, row?.rule)} class="ios-zoom-fix block max-w-[4.8rem] rounded-sm placeholder:text-gray-200 font-normal p-1 text-sm shadow-sm focus:border-blue-500 focus:ring-blue-500 bg-secondary" /> {/if} {#if ["over", "under", "exactly"]?.includes(ruleCondition[ruleName]?.toLowerCase())}
{/if}
{:else} {/if} {#if !["sma20", "sma50", "sma100", "sma200", "ema20", "ema50", "ema100", "ema200", "grahamNumber", "analystRating", "topAnalystRating", "halalStocks", "score", "sector", "industry", "country"]?.includes(row?.rule)} {#each row?.step as newValue, index} {#if ruleCondition[row?.rule] === "between"} {#if newValue && row?.step[index + 1]} {/if} {:else} {/if} {/each} {:else if ["sma20", "sma50", "sma100", "sma200", "ema20", "ema50", "ema100", "ema200", "grahamNumber"]?.includes(row?.rule)} {#each row?.step as item}
event.preventDefault()} >
{/each} {:else} {#each testList.length > 0 && searchQuery?.length > 0 ? testList : searchQuery?.length > 0 && testList?.length === 0 ? [] : row?.rule === "country" ? listOfRelevantCountries : row?.rule === "sector" ? sectorList : row?.rule === "industry" ? industryList : ["analystRating", "topAnalystRating", "score"]?.includes(ruleName) ? ["Strong Buy", "Buy", "Hold", "Sell", "Strong Sell"] : ["Compliant", "Non-Compliant"] as item}
event.preventDefault()} >
{/each} {/if}
{/each}
{/if}

{filteredData?.length} Stocks

{#if isLoaded} {#if filteredData?.length !== 0} {#if displayTableTab === "general"}
{#each displayResults as item} {/each}
{item?.symbol} {item?.name?.length > charNumber ? item?.name?.slice(0, charNumber) + "..." : item?.name} {item?.marketCap < 100 ? "< 100" : abbreviateNumber(item?.marketCap)} {item?.price < 0.01 ? "< 0.01" : item?.price?.toFixed(2)} {#if item?.changesPercentage >= 0} +{item?.changesPercentage >= 1000 ? abbreviateNumber(item?.changesPercentage) : item?.changesPercentage?.toFixed(2)}% {:else} {item?.changesPercentage <= -1000 ? abbreviateNumber(item?.changesPercentage) : item?.changesPercentage?.toFixed(2)}% {/if} {item?.volume === 0 ? "-" : abbreviateNumber(item?.volume)} {item?.pe}
{:else if displayTableTab === "filters"}
{#each displayResults as item (item?.symbol)} {#each displayRules as row (row?.rule)} {#if row?.rule !== "marketCap"} {/if} {/each} {/each}
{item?.symbol} {item?.name?.length > charNumber ? item?.name?.slice(0, charNumber) + "..." : item?.name} {abbreviateNumber(item?.marketCap)} {#if ["ema20", "ema50", "ema100", "ema200", "analystRating", "topAnalystRating", "halalStocks", "score", "sector", "industry", "country"]?.includes(row?.rule)} {item[row?.rule]} {:else} {abbreviateNumber(item[row?.rule])} {/if}
{:else if displayTableTab === "performance"}
{#each displayResults as item (item?.symbol)} {#each tabRuleList as row (row?.rule)} {/each} {/each}
{item?.symbol} {item?.name?.length > charNumber ? item?.name?.slice(0, charNumber) + "..." : item?.name} {#if row?.rule === "marketCap"} {abbreviateNumber(item[row?.rule])} {:else if item[row?.rule] > 0} +{abbreviateNumber( item[row?.rule]?.toFixed(2), )}% {:else if item[row?.rule] < 0} {abbreviateNumber( item[row?.rule]?.toFixed(2), )}% {:else} - {/if}
{:else if displayTableTab === "analysts"}
{#each displayResults as item (item?.symbol)} {#each tabRuleList as row (row?.rule)} {/each} {/each}
{item?.symbol} {item?.name?.length > charNumber ? item?.name?.slice(0, charNumber) + "..." : item?.name} {#if row?.rule === "marketCap"} {abbreviateNumber(item[row?.rule])} {:else if ["analystCounter", "priceTarget"]?.includes(row?.rule)} {abbreviateNumber(item[row?.rule])} {:else if row?.rule === "upside"} {#if item[row?.rule] > 0} +{item[row?.rule]?.toFixed(2)}% {:else if item[row?.rule] < 0} {item[row?.rule]?.toFixed(2)}% {:else} n/a {/if} {:else if ["analystRating", "topAnalystRating"]?.includes(row?.rule)} {#if ["Strong Buy", "Buy"].includes(item[row?.rule])} {item[row?.rule]} {:else if ["Strong Sell", "Sell"].includes(item[row?.rule])} {item[row?.rule]} {:else if item[row?.rule] === "Hold"} {item[row?.rule]} {:else} - {/if} {/if}
{/if} {:else} {/if} {:else}
{/if}
{#if LoginPopup} {/if}