How it works
Three layers. Each one testable on its own.
Rules find candidate zones, a trained model scores them, and an AI explains them. The AI never invents a level; it only talks about numbers the first two layers produced. Everything is computed once per symbol and timeframe and served to every client.
Layer 1 · Detection
Rules, no AI.
Deterministic and fast. The same candles always give the same candidates, so this layer can be unit-tested and replayed on history.
- 1
Find swing highs and lows
A fractal method sized to each timeframe's volatility (ATR), so a swing on M15 and a swing on D1 are judged on their own scale.
- 2
Cluster swings into zones
Nearby swings merge into a band. Zone width is a fraction of ATR, so zones adapt to quiet and volatile markets instead of using a fixed pip count.
- 3
Add other level sources
Round numbers (1.1000, 2,400), previous day, week and month highs and lows, session opens, and volume profile nodes on crypto.
- 4
Merge and prune
Overlapping zones merge; weak candidates drop. What remains goes to the scorer.
Layer 2 · Scoring
A strength from 0 to 100: the estimated chance price reacts.
Gradient boosting (LightGBM or XGBoost) trained on years of history. Labels come from outcomes: did price react at least X ATR within N candles of touching the zone? Retrained monthly as new outcomes and community data arrive.
Model inputs
- Number of touches and how clean each rejection was
- Reaction size after each touch, in ATR
- How recent the touches are
- Whether the zone appears on higher timeframes (confluence)
- Role reversal: old resistance now support
- Round number or previous high/low overlap
- Volume at the zone (crypto only)
- Validation by community contributors
Validation before launch: the scores are backtested on at least 3 years of data per symbol. The hit rate by strength band is published only after it has been measured; see the track record.
Layer 3 · Explanation
An AI that explains, and never invents.
After each candle close an LLM receives the zone data and writes the text you read. It only explains numbers produced by layers 1 and 2, which keeps the output consistent and verifiable.
Per symbol
A short summary: “Gold is trading between 2,385 support and 2,415 resistance…”
Per zone
Why it matters, how many touches, alignment with higher timeframes, what a break would mean.
Outlooks (Elite)
A daily and weekly market outlook across the symbols you follow.
Ask the AI (Pro, Elite)
Questions answered against the current zones, with rate limits by plan.
Rule: the LLM never invents levels or prices. Analysis is regenerated only when a zone changes, not on every candle, so cost grows with symbols, not users.
Signal setups
Zones become trades only through fixed rules.
Two setups at launch. Two more ship once each has a measured track record of its own.
Filters on every signal
- Minimum reward-to-risk of 1.5.
- No signals during high-impact news. The window is yours to set; default is 15 minutes before and after.
- Spread filter: skipped if the spread is above a set share of the stop size. M1 uses a stricter filter because spread is a large share of a 1-minute stop.
- Higher-timeframe trend shown as context: with or against the trend.
Outcome model
Every result in the record is computed the same way. 50% of the position closes at TP1 (1R). The stop moves to entry. The rest runs to TP2 at the next opposite zone. A signal that never fills by its expiry is marked expired. Every published result is computed from these rules and from the levels as sent.
Each signal is stored with its outcome: TP hit, SL hit, expired or cancelled. The public track record is built from this table, nothing else.
Signal format
One structure everywhere.
The app, every notification, the outgoing webhooks and the EA all receive the same object. If you build on the webhook, this is the payload.
{
"id": "sig_8f2k",
"symbol": "XAUUSD",
"timeframe": "H1",
"setup": "zone_bounce",
"direction": "buy",
"zone": { "low": 2384.2, "high": 2386.9, "strength": 82 },
"entry": 2387.5,
"stop_loss": 2381.0,
"take_profit": [2394.0, 2412.5],
"confidence": 78,
"expires_at": "2026-10-05T14:30:00Z",
"analysis": "H1 bounce from a 4-touch support zone that lines up with H4 support..."
}Execution
The platform publishes. Your settings decide.
Three modes, set per symbol. Mix them: full auto on gold, tap to execute on forex, alert only on crypto.
Alert only
Starter+Full details by push, Telegram, email and the in-app inbox. You trade manually.
Tap to execute
Pro+Execute and Skip buttons on the message. The EA takes only the signals you approve. Approvals expire after a set time, 5 minutes by default.
Full auto
Pro+The EA takes every signal that passes your filters: risk %, sessions, news windows, max trades, daily loss stop. A notification confirms each opened and closed trade.
Leverage is set by your broker account. Position size comes from risk % of balance (0.1 to 5%, hard cap at 5%) or a fixed lot, so leverage never needs configuring in the app. Risk acknowledgement is required before tap to execute or full auto can be switched on.
Architecture
Compute once, serve many.
One backend computes zones, signals and analysis once per symbol and timeframe. The web app, mobile app, MT5 EA and alert channels all read the same API, so plan limits live in one place.
Compute once, serve many
Zones and analysis are cached per symbol and timeframe. Cost grows with symbols, not users.
Server-side limits
The API decides what each user receives, on every request including EA polls. The app and EA only display and act.
EA polls, the server never pushes to MT5
Simpler, works behind any firewall or VPS, and no broker credentials are ever stored.
Everything logged
Every signal, approval, fill and outcome is stored for the track record, the journal and model training.
Plan config in the database
Limits and prices change without a new release.
Engine after each candle close
Python workers run detection, scoring, signal creation and outcome tracking on a schedule; an AI worker adds explanations.
Zonelytix provides educational analysis and software tools, not financial advice. Trading involves a substantial risk of loss. Hypothetical results do not guarantee future results. You decide what to trade and how much to risk. Full disclaimer