Crypto Screener¶
Screen cryptocurrencies across major exchanges.
Quick Start¶
Field Count¶
The Crypto Screener has access to ~3,108 fields covering:
- Price & Volume data
- Market metrics (market cap, circulating supply)
- Technical indicators
- Performance metrics
Common Fields¶
Price & Volume¶
CryptoField.PRICE # Current price
CryptoField.OPEN # Day open
CryptoField.HIGH # Day high
CryptoField.LOW # Day low
CryptoField.VOLUME # 24h volume
CryptoField.CHANGE_PERCENT # 24h change
Market Data¶
CryptoField.MARKET_CAPITALIZATION # Market cap
CryptoField.CIRCULATING_SUPPLY # Circulating supply
CryptoField.TOTAL_SUPPLY # Total supply
Technical¶
CryptoField.RELATIVE_STRENGTH_INDEX_14 # RSI(14)
CryptoField.MACD_LEVEL_12_26 # MACD
CryptoField.SIMPLE_MOVING_AVERAGE_50 # SMA 50
CryptoField.SIMPLE_MOVING_AVERAGE_200 # SMA 200
CryptoField.AVERAGE_TRUE_RANGE_14 # ATR
CryptoField.VOLATILITY # Daily volatility
Performance¶
CryptoField.WEEKLY_PERFORMANCE # 7d change
CryptoField.MONTHLY_PERFORMANCE # 30d change
CryptoField.PERFORMANCE_3_MONTH # 90d change
CryptoField.PERFORMANCE_YTD # Year to date
CryptoField.PERFORMANCE_1_YEAR # 1 year
Example Screens¶
Top Market Cap¶
cs = CryptoScreener()
cs.sort_by(CryptoField.MARKET_CAPITALIZATION, ascending=False)
cs.set_range(0, 100)
cs.select(
CryptoField.NAME,
CryptoField.PRICE,
CryptoField.MARKET_CAPITALIZATION,
CryptoField.CHANGE_PERCENT
)
df = cs.get()
High Volume Gainers¶
cs = CryptoScreener()
cs.where(CryptoField.CHANGE_PERCENT > 10)
cs.where(CryptoField.VOLUME > 10_000_000)
cs.sort_by(CryptoField.CHANGE_PERCENT, ascending=False)
cs.set_range(0, 50)
df = cs.get()
Oversold RSI¶
cs = CryptoScreener()
cs.where(CryptoField.RELATIVE_STRENGTH_INDEX_14 < 30)
cs.where(CryptoField.MARKET_CAPITALIZATION > 100_000_000)
cs.sort_by(CryptoField.RELATIVE_STRENGTH_INDEX_14, ascending=True)
df = cs.get()
Large Cap with Low Volatility¶
cs = CryptoScreener()
cs.where(CryptoField.MARKET_CAPITALIZATION > 1e9)
cs.where(CryptoField.VOLATILITY < 5)
cs.sort_by(CryptoField.MARKET_CAPITALIZATION, ascending=False)
df = cs.get()
Weekly Momentum¶
cs = CryptoScreener()
cs.where(CryptoField.WEEKLY_PERFORMANCE > 20)
cs.where(CryptoField.VOLUME > 5_000_000)
cs.sort_by(CryptoField.WEEKLY_PERFORMANCE, ascending=False)
df = cs.get()
Multi-Timeframe Analysis¶
cs = CryptoScreener()
# Daily RSI oversold
cs.where(CryptoField.RELATIVE_STRENGTH_INDEX_14 < 35)
# 4-hour RSI also oversold
rsi_4h = CryptoField.RELATIVE_STRENGTH_INDEX_14.with_interval('240')
cs.where(rsi_4h < 30)
cs.select(
CryptoField.NAME,
CryptoField.PRICE,
CryptoField.RELATIVE_STRENGTH_INDEX_14,
rsi_4h
)
df = cs.get()
Specific Cryptos¶
Query specific cryptocurrencies:
cs = CryptoScreener()
cs.symbols = {
"query": {"types": []},
"tickers": ["BINANCE:BTCUSDT", "BINANCE:ETHUSDT", "BINANCE:SOLUSDT"]
}
cs.select_all()
df = cs.get()
All Fields¶
cs = CryptoScreener()
cs.select_all()
cs.set_range(0, 100)
df = cs.get()
print(f"Columns: {len(df.columns)}") # ~3,108
Notes¶
- Crypto markets trade 24/7 - volume is typically 24h volume
- Prices are quoted in various currencies depending on the exchange pair
- Use exchange prefix for specific pairs (e.g.,
BINANCE:BTCUSDT)