TradingView Screener

v1.1.0

Screen markets across 6 asset classes using TradingView data. API pre-filters + pandas computed signals. YAML-driven strategies.

3· 2.4k·11 current·12 all-time
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
medium confidence
Purpose & Capability
The code imports and uses a 'tvscreener' library, pandas, and YAML-based signal configs exactly as the description promises (screen markets across asset classes, API pre-filters + post-fetch computed signals). No unrelated binaries, env vars, or hidden features are requested.
Instruction Scope
Runtime instructions are limited to creating a local venv and running the included Python scripts against local YAML signal files. The skill reads signal YAMLs from its state/signals directory and applies computed filters. It does evaluate pandas expressions provided in YAML (via df.eval) — these are meant for numeric/indicator logic, but expressions come from user-supplied YAML so untrusted signal files could cause unexpected local evaluation behavior. The SKILL.md does not instruct reading system files or sending data to external endpoints beyond what tvscreener/pypi packages do.
Install Mechanism
There is no platform install spec, but an included install.sh creates a .venv in the skill directory and runs pip install -r scripts/requirements.txt (tvscreener, pandas, pyyaml, pytest). This is a standard, moderate-risk install (downloading packages from PyPI). The installer does not fetch arbitrary scripts from personal servers or use URL shorteners.
Credentials
The skill declares no required environment variables, no credentials, and no config paths. That aligns with the stated 'Zero auth required' behavior. The only resources accessed are the local YAML files and network calls implicitly made by the tvscreener dependency (expected for a screener).
Persistence & Privilege
The skill does not request always:true or any elevated persistence. The install script writes a .venv under the skill directory (normal). It does not modify other skills or global agent settings.
Assessment
This skill is internally consistent with its description and is likely safe to inspect/try if you trust the included tvscreener package and the author. Before installing or running it: - Review any signal YAMLs you did not create yourself. Computed signals use pandas df.eval and user-supplied expressions are validated but validation is not bulletproof — treat untrusted YAMLs as potentially unsafe. - Install and run inside an isolated environment (VM or container) since install.sh will pip-install packages from PyPI into a .venv in the skill directory. - Verify the trustworthiness of the external dependency 'tvscreener' (it will be downloaded from PyPI) before use, especially if you plan to run it on sensitive systems. - If you want stricter safety, run the scripts in read-only mode against sample data first (or run tests) and avoid loading signal files from unknown sources. If you want, I can: (a) inspect any specific YAML signal file for risky expressions, (b) summarize the exact functions that call df.eval and how expressions are validated, or (c) outline a safe sandboxed workflow to run the skill.

Like a lobster shell, security has layers — review code before you run it.

latestvk9732kv15k9xjj6vk0th2h7bnx80vqaa
2.4kdownloads
3stars
2versions
Updated 1mo ago
v1.1.0
MIT-0

TradingView Screener

Screen stocks, crypto, forex, bonds, futures, and coins using TradingView's market data. Zero auth required.

Setup (Run Once)

Before first use, run the install script to create a venv and install dependencies:

bash skills/tradingview-screener/install.sh

This creates .venv/ inside the skill directory with all required packages.

Execution

All scripts use the skill's own venv:

skills/tradingview-screener/.venv/bin/python3 skills/tradingview-screener/scripts/<script>.py [args]

Windows:

skills/tradingview-screener/.venv/Scripts/python.exe skills/tradingview-screener/scripts/<script>.py [args]

Modes

ModeDescriptionScript
ScreenOne-time scan with filters, columns, sortscreen.py
SignalYAML-driven signal detection (pre-filters + computed signals)signal-engine.py

Quick Start

Screen Mode

skills/tradingview-screener/.venv/bin/python3 skills/tradingview-screener/scripts/screen.py \
  --asset-class stock --limit 20 \
  --filters '[{"field":"MARKET_CAPITALIZATION","op":">","value":1000000000}]' \
  --columns NAME,PRICE,CHANGE_PERCENT,VOLUME \
  --sort-by VOLUME --sort-order desc

Signal Mode

# List available signals
skills/tradingview-screener/.venv/bin/python3 skills/tradingview-screener/scripts/signal-engine.py --list

# Run a signal
skills/tradingview-screener/.venv/bin/python3 skills/tradingview-screener/scripts/signal-engine.py --signal golden-cross

Asset Classes

ClassScreenerField Enum
stockStockScreenerStockField
cryptoCryptoScreenerCryptoField
forexForexScreenerForexField
bondBondScreenerBondField
futuresFuturesScreenerFuturesField
coinCoinScreenerCoinField

Signal Types (Computed)

TypeDescriptionKey Params
crossoverFast field crosses slow fieldfast, slow, direction
thresholdField crosses a valuefield, op, value
expressionPandas expression on DataFrameexpr
rangeField between min/max boundsfield, min, max

Filter Operators

>, >=, <, <=, ==, !=, between (value: [min, max]), isin (value: [...])

Common Stock Fields

NAME, PRICE, CHANGE_PERCENT, VOLUME, MARKET_CAPITALIZATION, SECTOR, SIMPLE_MOVING_AVERAGE_50, SIMPLE_MOVING_AVERAGE_200, RELATIVE_STRENGTH_INDEX_14, MACD_LEVEL_12_26, AVERAGE_VOLUME_30_DAY

Use StockField.search("keyword") in Python to discover more fields (13,000+ available).

Pre-built Signals

SignalFileDescription
Golden Crossstate/signals/golden-cross.yamlSMA50 above SMA200 (bullish)
Oversold Bouncestate/signals/oversold-bounce.yamlRSI < 30 + price rising
Volume Breakoutstate/signals/volume-breakout.yamlVolume > 2x avg + momentum

Output Format

**Stock Screener** | 15 results | Sorted by VOLUME desc

| NAME | PRICE | CHANGE_PERCENT | VOLUME |
|------|-------|----------------|--------|
| AAPL | 185.50 | 2.3 | 80000000 |
...

Timeframes

1, 5, 15, 30, 60, 120, 240, 1D, 1W, 1M

Pass --timeframe 60 to apply hourly interval to technical indicators.

References

Comments

Loading comments...