What every filter, label and number means — and how to combine them to find what you are looking for.
The 4 hours / 1 day / 3 days / 1 week selector drives absolutely everything on display: the cards, the filters, the states, the dots, the counters at the top. The same coin can be a “valid setup” in 4 hours and “below the short EMAs” in 1 week — that is not a contradiction, they are two different scales of time.
The selector appears in two places — at the top of the page and just above the table — but it is the same setting: the two stay in agreement.
The current candle is included, as on TradingView. A setup in 3 days can therefore still invalidate before its candle closes.
Every filter has three states, cycling with each click:
| Click | Appearance | Effect |
|---|---|---|
| 1st | Above EMA 200 | Keeps only the contracts meeting this criterion. |
| 2nd | ✕ Above EMA 200 | Excludes the contracts meeting this criterion. |
| 3rd | Above EMA 200 | Filter off. |
That is why there is no “below” filter: excluding “Above MA 100” is exactly the same as asking for what is not above it. One button per criterion, always worded positively.
Filters stack (logical AND). Three useful examples:
Above EMA 13·25·32 ✕ Overstretched ✕ Overbought
Your valid setups, stripped of whatever has already run too far and whatever is overbought. The most useful everyday combination.
Full alignment Strength ≥ 80
The cleanest trends on the market, among the strongest. Very selective — often a handful of contracts, sometimes none.
Strength ≥ 80 Rebound zone
Strong coins that have just paused: the zone where trend resumptions happen, rather than mid-frenzy.
The Clear all button appears as soon as one filter is active.
Below the filters, the Presets row saves you from rebuilding your settings every morning:
kinexis-selection.txt file
containing only the contracts on screen, in TradingView format. You import a
dozen symbols rather than all 511.Presets are saved in this browser, on this device.
The 📝 button at the bottom right opens a free-form notebook: alts to watch, your ideas, your levels. It saves itself, and the small number shows the line count. From a coin's detail card, + Add to notes writes its symbol there (no duplicates). Like the presets, the notebook stays in this browser, on this device.
Where price sits relative to your averages, in the chosen timeframe.
| Above EMA 13·25·32 | Price is above all three short EMAs at once. This is the main entry criterion. |
| Aligned on 3 timeframes or more | The criterion above is met in at least 3 of the 4 timeframes. The breakout is carried by the larger scales, not only by the shortest one. See the “timeframes” column. |
| Above EMA 200 | Price is above its long average: the underlying trend is up. |
| Above MA 100 | Same with the 100-period simple average. |
| Above MA 300 | Same with the 300-period simple average — the slowest, and so the most rarely crossed. |
Three ways of being above the short EMAs, from the freshest to the most established. These three filters match exactly the labels in the “state” column.
| valid setup | Above the EMAs 13·25·32, without being either a recent crossing or a full alignment. The ordinary case. |
| crossing | Just crossed back above the three EMAs, 3 candles ago or less. The freshest entry — and the least confirmed. |
| full alignment | The most demanding: price > EMA 13 > EMA 25 > EMA 32 >
EMA 200. Detailed below. |
Not what to buy, but when — or rather when to stand aside.
| overstretched | Price has travelled far and fast above its average. A poor place to enter. Calculation detailed below. |
| overbought | Stoch RSI ≥ 80: the move is mature. |
| oversold | Stoch RSI ≤ 20: the move down is exhausted. |
| rebound zone | Strength ≥ 60, Stoch RSI below 30 and turning up: the coin is solid but has just paused. |
| Strength ≥ 80 | The top 20 % of the market on the relative-strength score. |
| Beats BTC | Outperforms Bitcoin over 30 days and that outperformance is accelerating (ratio above its 50-day average). |
Three conditions checked together:
In other words price > EMA 13 > EMA 25 > EMA 32 > EMA 200.
Each average summarises a period: the 13 says where we are over the last few days,
the 200 says where the market stands. When they line up in that order, every scale
of time tells the same story and no average acts as resistance above price.
That is the difference between “it is going up right now” and “it is in an established uptrend”. The MA 100 and 300 play no part in this calculation.
The Above EMA 13·25·32 filter is the total. It breaks down into three states that do not overlap:
Above EMA 13·25·32 = valid setup + crossing + full alignment
If you want only the ordinary setups, use the Valid setup filter, not the global one.
| Column | What it shows |
|---|---|
| # | Market-cap rank (CoinGecko), with the token logo. A dash is rare (a handful of contracts): it means CoinGecko itself gives the token no rank, or does not know it yet. |
| price, 24 h, 7 d, 30 d | Price and performance. These performances are always in days, whatever timeframe you choose. |
| strength | Relative-strength score out of 100, with a proportional bar. Green from 80, red below 35. |
| vs btc 30 d | Performance gap against Bitcoin over 30 days. |
| trend vs btc | Distance of the coin/BTC ratio from its 50-day average. Positive = the outperformance is accelerating. |
| averages | The six dots, in the chosen timeframe. |
| timeframes | Four dots — 4h, 1d, 3d, 1w — green when price is above the short EMAs there, followed by the total out of 4. The only column that does not depend on the selected timeframe: that is the point, it summarises them all. |
| state | The labels. One row can carry several. |
132532200100300
The order is always the same: EMA 13, 25, 32, 200, then MA 100 and 300. In the example above: above the three short EMAs, below the EMA 200 and the MA 100, and not yet enough history for the MA 300.
Click any row to open its detail card: the exact values of the six averages, the Stoch RSI and the stretch across the four timeframes, plus a direct link to the TradingView chart.
This is not a performance, it is a rank. A strength of 90 means “better than 90 % of the contracts tracked”, not “+90 %”.
The calculation, redone at every update: all contracts are ranked on their 7, 30 and 90-day performance — three separate rankings — then combined into a weighted average of 25 % / 45 % / 30 %. The 30-day carries the most weight, the 7-day brings responsiveness, the 90-day checks it is not a flash in the pan.
How many average candles price sits above its EMA 32.
A plain percentage gap would not be comparable from one coin to another: a memecoin permanently lives at +40 % from its average, while Bitcoin at +12 % is already very tense. By dividing the gap by each contract's own volatility, the number means the same thing everywhere.
The threshold was calibrated on the universe: 95 % of contracts live below 3. Beyond 4, the move has gone far and fast — label overstretched, and the Overstretched filter to exclude with a double click.
The measure is recalculated in every timeframe. A coin can be massively stretched in 3 days and perfectly normal in 4 hours: that means it has consolidated on the short scale. That is information in itself.
Standard TradingView setting. Below 20 = oversold, above 80 = overbought.
It is not a buy signal on its own: crossed with relative strength and the averages, it helps spot when to enter a coin that is already strong. A coin can stay overbought through weeks of trend.
The coin's price is divided by Bitcoin's, and we look at where that ratio sits relative to its 50-day average. Positive = the outperformance is accelerating; negative = it is fading, even if the coin is still rising.
The universe tracked is the list of active USDT perpetual contracts on Bybit. It is re-read at every update, so it always reflects new listings and delistings.
Bybit also carries tokenised equities (AAPL, TSLA, SPY…) and commodities on that same feed: they are discarded automatically using Bybit's own classification. Stablecoins and tokenised gold are discarded too.
CoinGecko only enriches the display: full name, market-cap rank and logo. No price comes from it.
Matching the two is not automatic: Bybit sometimes names a token differently from
CoinGecko (RAYDIUM against RAY, VELODROME
against VELO, PUMPFUN against PUMP). And above
all, one ticker often designates several tokens: Bybit's SAFE is
“Safe”, not “Safecoin”. The screener decides by comparing the CoinGecko price with
the contract's — if the gap exceeds 35 %, it is a namesake and it looks elsewhere.
Averages are computed on closes, with up to 1000 candles of history so that the EMA 200 and the MA 300 are reliable.
STRETCH_MAX in index.html, the averages and the Stoch RSI at
the top of screener.py.