Configure your Finviz filters in the Controls tab, then click ▶ Run Scan.
Fetching data from Finviz · Yahoo Finance.
This can take a few minutes.
Elapsed: 0s
{{ scan_error }}
| Ticker | Price | Change % | Volume | RSI | ATR | TD Signal | TD Trend | YF Signal | EMA Cross | Score | Latest News | Insider Action |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ s.Ticker }} | {# Price — sort on raw float #}{{ '$' ~ "%.2f"|format(s.Price|float) if s.Price is not none else '—' }} | {# Change % — sort on raw float (preserves negative) #}{% if s.Change is not none %} {% set chg = s.Change|float %} {{ '+' if chg >= 0 else '' }}{{ "%.2f"|format(chg) }}% {% else %}—{% endif %} | {# Volume — sort on raw float (comma-formatted display) #}{{ "{:,.0f}".format(s.Volume|float) if s.Volume is not none else '—' }} | {# RSI — sort on raw float #}{% if s.RSI is not none %} {% set rsi = s.RSI|float %} {{ "%.1f"|format(rsi) }} {% else %}—{% endif %} | {# ATR — sort on raw float #}{{ "%.2f"|format(s.ATR|float) if s.ATR is not none else '—' }} | {# TD Signal — sort on semantic weight (STRONG BUY=5 … SELL=1) #} {% set sig = s.TD_Signal|string if s.TD_Signal is not none else '—' %}{% if sig == 'STRONG BUY' %}{{ sig }} {% elif sig == 'BUY' %}{{ sig }} {% elif sig == 'SELL' %}{{ sig }} {% elif sig == 'WEAK - WAIT' %}{{ sig }} {% elif sig == 'NEUTRAL' %}{{ sig }} {% else %}{{ sig }} {% endif %} | {# TD Trend — sort on semantic weight (UPTREND=3 … DOWNTREND=1) #} {% set tr = s.TD_Trend|string if s.TD_Trend is not none else '—' %}{% if tr == 'UPTREND' %}▲ {{ tr }} {% elif tr == 'DOWNTREND' %}▼ {{ tr }} {% elif tr == 'SIDEWAYS' %}— {{ tr }} {% else %}{{ tr }} {% endif %} | {# YF Signal — sort on semantic weight #} {% set ys = s.YF_Signal|string if s.YF_Signal is not none else '—' %}{% if ys == 'STRONG BUY' %}{{ ys }} {% elif ys == 'BUY' %}{{ ys }} {% elif ys == 'SELL' %}{{ ys }} {% elif ys == 'WEAK - WAIT' %}{{ ys }} {% elif ys == 'NEUTRAL' %}{{ ys }} {% else %}{{ ys }} {% endif %} | {# EMA Cross — sort on semantic weight (CROSS UP=3, NO CROSS=2, CROSS DOWN=1) #} {% set xc = s.EMA_Cross|string if s.EMA_Cross is not none else '—' %}{% if xc == 'CROSS UP' %}↑ {{ xc }} {% elif xc == 'CROSS DOWN' %}↓ {{ xc }} {% else %}{{ xc }} {% endif %} | {# Score — sort on raw int #}{% if s.Score is not none %} {% set sc = s.Score|int %} {{ sc }} {% else %}—{% endif %} | {# Latest News — plain text, no sort weirdness #}{{ s.Latest_News|string if s.Latest_News is not none else '—' }} | {# Insider Action — coerce to string first to avoid float-NaN 'in' crash #}{% set ia = s.Insider_Action|string if s.Insider_Action is not none else '—' %} {% if 'Buy' in ia %}🔼 {{ ia }} {% elif 'Sale' in ia or 'Sell' in ia %}🔽 {{ ia }} {% else %}{{ ia }} {% endif %} |
Try loosening the filter criteria in Controls.
These map directly to Finviz screener filter keys and values. Browse available filters ↗
Scheduler checks every minute bucket and runs scans in the background based on this schedule. If an end time is earlier than its start time, that session continues past midnight into the next day.
Click ↺ Refresh to load logs.