Traadence's stock screener with technical indicators is a working Python application for traders who need one repeatable scan across price action, indicators, chart patterns, and company fundamentals. It ingests a user-defined watch list, calculates each rule from the same timestamped dataset, stores the evidence locally, and exports a ranked result that can later feed alerts or execution logic.
This product applies the same documented rules to every symbol, records why each ticker passed or failed, and returns a ranked CSV without manual edits.
One Rule Engine for Price Action and Valuation
Most screening gaps come from splitting technical signals and company data across unrelated tools. This application joins streaming or refreshed OHLCV data with earnings, revenue growth, P/E, dividend fields, and configurable thresholds. A technically driven screen can identify momentum or structure, while the combined ranker also rejects symbols that fail the supplied fundamental conditions.
Core Features
| Feature | Description |
|---|---|
| Provider-based data ingestion | Inconsistent source formats create silent comparison errors. Adapters normalize historical and latest candles from yfinance or the Alpha Vantage API, then recalculate when a new bar arrives; latency follows provider cadence and data entitlement. |
| Indicator calculation matrix | Hand-checking many charts makes rule application uneven. The engine calculates MA, RSI, MACD, ATR, ADR, VWAP, volume, Bollinger Bands, Stochastic, distance from the 52-week high, and Super Trend from aligned bars. |
| Price-structure rules | Visual judgement varies between reviewers. Deterministic functions test a close above the prior swing high and a breakout from a defined range, while storing the level, bar time, and boolean outcome. |
| Classic pattern recognition | Pattern labels are often assigned without measurable geometry. Double tops, head-and-shoulders formations, and triangles use pivot spacing, symmetry, tolerance, neckline or boundary tests, and confirmation requirements. |
| Fundamental threshold ranking | A strong chart can still violate the selected valuation policy. Earnings, revenue growth, P/E, dividends, and related fields are normalized, scored, and checked against editable minimum or maximum limits. |
| Local evidence store | Results are hard to audit when only the final shortlist survives. Raw responses, derived values, rule outcomes, run identifiers, and errors are written to SQLite and exportable CSV files. |
| Scheduled scans and clear logs | Repeated manual runs lead to missed windows and unclear failures. APScheduler triggers configured scans, while structured logs identify provider calls, calculations, exclusions, and export paths. |
Moving-Average Screening Without Formula Edits
The technical stock screener moving average rules are configuration-driven rather than buried in Python. Users can define short and long windows, price-above-average checks, crossover direction, minimum lookback, and missing-data behavior beside RSI, MACD, volatility, pattern, and valuation thresholds.
How the Ranking Pipeline Decides
- Validate the watch list, provider credentials, interval, lookback, schedule, and rule schema before requesting data.
- Normalize timestamps and corporate-action-adjusted price fields, then persist the raw snapshot with a unique
run_id. - Calculate derived columns with pandas, detect pivots and patterns, and evaluate every enabled technical and fundamental rule.
- Apply required-rule gates first, calculate weighted scores second, resolve ties deterministically, and export passes, failures, reasons, and source timestamps.
Python Components Chosen for Auditability
| Component | Why it is used |
|---|---|
| Python 3.11 | Keeps the application portable, testable, and easy to extend with additional providers, indicators, or alert publishers. |
| pandas data frames | Maintains aligned time-series columns so every indicator and pattern detector evaluates the same bars and index. |
| Provider adapters | Separates data retrieval from screening logic, allowing source changes without rewriting indicator or ranking modules. |
| SQLite and CSV | Provides a queryable local history plus a simple handoff format for spreadsheets, notebooks, dashboards, or later alert services. |
| YAML configuration | Keeps thresholds, weights, watch lists, pattern tolerances, and schedule settings editable without source-code changes. |
| Terminal dashboard | Shows run status, qualifying symbols, score components, exclusions, and export locations without requiring a full web deployment. |
Acceptance Benchmarks for Repeatable Screening
The packaged validation profile covers 13 technical rule families, five fundamental metric groups, and three required chart patterns. Tests compare indicator outputs against fixed fixtures, verify pattern geometry on labeled samples, and confirm that the same cached dataset and configuration produce the same ranking.
| Benchmark | Validation method |
|---|---|
| Indicator coverage | MA, RSI, MACD, ATR, ADR, VWAP, volume, Bollinger Bands, Stochastic, swing-high breaks, range breaks, 52-week distance, and Super Trend are asserted on known inputs. |
| Pattern acceptance | Double top, head-and-shoulders, and triangle fixtures must pass tolerance and confirmation tests; malformed or incomplete structures must fail. |
| Scheduled operation | The sample configuration runs every 900 seconds, prevents overlapping jobs, and writes one timestamped record for each attempted symbol. |
| Export integrity | Every ranked row includes score, pass state, failed rules, key indicator values, fundamental fields, provider timestamp, and run_id. |
| Benchmark context | S&P DJI SPIVA scorecards and the Nasdaq-100 methodology provide reference frameworks for evaluating rules-based universes without treating a screen as a forecast. |
Use Cases
- Reduce a large watch list to symbols that satisfy both a defined chart setup and minimum earnings or revenue-growth conditions.
- Run the same breakout, swing-high, volatility, and valuation rules on a schedule, then review only newly qualified or newly disqualified tickers.
- Compare moving-average and momentum setups without changing Python by switching YAML profiles for trend, mean-reversion, or volatility-focused research.
- Create an auditable signal input for later alerts by retaining source timestamps, calculated values, pass/fail reasons, and exported ranking history.
Project Directory
The packaged README covers dependency installation, provider configuration, the fixture-based example run, and the extension contract for adding indicators. Modules include comments and docstrings around data assumptions, formulas, pattern tolerances, and ranking behavior.
equity-rule-ranker/
├── README.md
├── requirements.txt
├── config/
│ ├── default.yaml
│ ├── watchlist.csv
│ └── logging.yaml
├── src/
│ ├── app.py
│ ├── cli.py
│ ├── data/
│ │ ├── base_provider.py
│ │ ├── yfinance_provider.py
│ │ ├── alpha_vantage_provider.py
│ │ └── fundamentals_provider.py
│ ├── indicators/
│ │ ├── trend.py
│ │ ├── momentum.py
│ │ ├── volatility.py
│ │ ├── volume.py
│ │ └── price_structure.py
│ ├── patterns/
│ │ ├── pivots.py
│ │ ├── double_top.py
│ │ ├── head_shoulders.py
│ │ └── triangle.py
│ ├── fundamentals/
│ │ ├── normalize.py
│ │ └── rules.py
│ ├── screening/
│ │ ├── evaluator.py
│ │ └── ranker.py
│ ├── storage/
│ │ ├── database.py
│ │ └── models.py
│ ├── reporting/
│ │ ├── csv_export.py
│ │ └── terminal_dashboard.py
│ └── scheduling/
│ └── jobs.py
├── tests/
│ ├── test_indicators.py
│ ├── test_patterns.py
│ ├── test_fundamentals.py
│ ├── test_end_to_end.py
│ └── fixtures/
│ ├── ohlcv_samples.csv
│ └── fundamentals.json
└── output/
├── ranked_results.csv
├── screening.db
└── runs.log
How to Rank Equities Using Traadence's stock screener with technical indicators
Download & Set Up the Project
Download, set up, and install Traadence's stock screener with technical indicators to get the project running. If you hit any difficulty, contact us here.
Open the Terminal Dashboard
Run python -m src.app, select the configured watch list, and confirm the displayed provider, interval, lookback, database path, and active rule profile.
Set the Screening Rules
Edit rsi.max, macd.crossover, pe.max, revenue_growth.min, patterns.enabled, rule weights, and the 900-second schedule in config/default.yaml.
Run and Export
Choose screen now; the application ranks qualifying symbols, prints exclusion reasons, writes output/ranked_results.csv, updates SQLite history, and records the run log.
Technical Stock Screener Software That Can Be Extended
The modular boundaries support technical stock screener software customization such as new indicators, alternate data adapters, dashboards, or alert publishers. Traadence also handles deployment, integration, monitoring, and ongoing maintenance when the application must connect to an existing research or trading stack.
Questions
How are chart patterns validated before a ticker is ranked?
Each detector converts price history into pivots, then applies pattern-specific geometry and confirmation rules. Double tops require comparable peaks and a neckline event; head-and-shoulders checks shoulder symmetry and head prominence; triangles test converging boundaries and a valid breakout or completion state.
Can I change technical and fundamental thresholds without editing Python?
Yes. Thresholds, weights, required rules, indicator windows, pattern tolerances, watch lists, and schedule intervals live in YAML configuration. The application validates that file before a run and logs invalid or missing fields instead of silently applying defaults.
Which market-data and fundamental-data sources can the screener use?
The included adapters support yfinance and Alpha Vantage for price history, latest bars, and common company fields. Because retrieval is isolated behind a provider interface, another public or licensed source can be added without changing the indicator, pattern, or ranking code.
