Appearance
Are you an LLM? You can read better optimized documentation at /safety-and-reliability/signal-validation.md for this page in Markdown format
Signal Validation
A signal that was read correctly is not trusted yet — its numbers still have to make sense. After the signal sanitizer has caught any decimal slips, the signal runs a sequence of plausibility checks: is the stop loss on the right side and a sane distance, are the take profits ordered and reachable, is the entry zone well-formed, and is this not a repeat of a signal you already traded. Only after every check passes — and a final real-time gate confirms your account is actually ready — does an order go out.
A failure at any stage rejects or corrects the signal with a logged reason — it never reaches your broker silently.
Before Validation: The Signal Sanitizer
The sanitizer runs first, before any of the checks below. Its job is to catch extremity values — decimal slips, stale prices, copy-pasted levels from yesterday — by comparing every number against trusted reference points and a 10x magnitude floor. Because it runs first, the checks below only ever see corrected numbers.
The full mechanism lives on its own page: Signal Sanitizer.
Stop-Loss Validation
The stop-loss checks are deliberately generous: if a signal provider set the SL, TTMT trusts it unless it is obviously broken.
Wrong-Side Detection
The most common SL typo is a stop on the wrong side of entry:
| Direction | Valid SL | Invalid SL |
|---|---|---|
| BUY | Below entry | Above entry |
| SELL | Above entry | Below entry |
A BUY at 1.1000 with an SL at 1.1050 is wrong — the stop is above entry, so the trade would stop out the instant price moved as intended.
Too-Far Detection
An SL that sits absurdly far from the targets is almost certainly a typo. TTMT flags any stop where the distance from entry is more than five times the distance to the farthest take profit.
For example: entry at 1.1000, TP1 at 1.1050 (50 pips), SL at 1.0500 (500 pips). The 500-pip stop is more than 5× the 50-pip farthest target, so it is flagged as a likely typo. A legitimate stop is rarely more than five times the distance to your furthest target.
Zone Plausibility
When a signal carries an entry zone, TTMT also sanity-checks the zone itself. If the zone's width is more than five times your default stop distance, the zone is treated as a typo (for example, [5143, 4140] typed instead of [5143, 5140]) and ignored — legitimate zones are a fraction of the stop distance, not multiples of it. This is a width-vs-stop-distance relationship, not a percentage of price.
Correction Modes
When an SL is invalid, what happens depends on your configured behavior:
| Mode | What Happens |
|---|---|
| Use Signal | The signal's SL is kept as-is, even though it was flagged |
| Use Default | A safe SL is recomputed from your configured default stop distance |
Corrected stops are re-checked
When TTMT recomputes an SL from your default distance, it sanity-caps the result. If the recomputed stop still lands implausibly far, TTMT falls back to a stop measured from the current market price instead.
Take-Profit Validation
Take-profit targets get the most scrutiny, because TP errors are both common and consequential. The checks run in sequence.
Wrong-Side TPs — measured against the entry zone, not live price
Just like stops, targets can end up on the wrong side of entry. The critical detail: TTMT validates TPs against the entry zone, not the current market price. In a fast market the live price may have already moved past a valid target.
TTMT uses the most conservative (deepest) fill as the reference:
| Direction | Reference Point |
|---|---|
| BUY | The lower of the zone-low and entry — the deepest possible fill |
| SELL | The higher of the zone-high and entry — the deepest possible fill |
Why the entry zone, not the live price?
A BUY on XAUUSD has zone [2377, 2387] and the live price has spiked to 2391.90. A TP at 2391 is perfectly valid — it is above the zone. But compared to the live price (2391.90) it looks like a wrong-side TP and would be dropped. Measuring against the zone-low (2377) keeps the valid target.
Even when the entry zone has been simplified for a single-layer setup, TTMT still references the signal's original zone, so valid TPs are not wrongly dropped.
Duplicate TPs
If two targets land on the same price (for example TP2 and TP3 are both 1.1050), the duplicate is nudged to a sensible spacing so two orders are not stacked on the exact same level.
Ordering
Targets must run in the right direction — ascending for BUY (TP1 < TP2 < …), descending for SELL (TP1 > TP2 > …). Out-of-order targets are re-sorted by distance from entry, so the nearest becomes TP1.
Distance and Count
Targets too close together are spaced out to a minimum, and the trade is held to your configured number of take-profit levels — extras beyond your limit are trimmed. If no valid target survives the checks, the signal is rejected.
Entry-Zone Validation
TTMT compares the live market price to the signal's entry zone and decides how to act. The point is to protect you from stale signals — ones where the market has long since moved past the zone.
| Where the price is | What TTMT does |
|---|---|
| Inside the zone | Execute normally |
| Just outside (within a tight threshold) | Execute normally — close enough |
| Moved in your favor | Execute — you are getting a better entry than the signal asked for |
| Moved against you, past the zone | Place the entries as limit orders at the zone prices, waiting for price to come back |
| Moved far past the zone | Reject — the signal is almost certainly stale |
That last "far past" check is a staleness guard, measured as how far the live price has drifted from the signal: more than 3% past the zone when the move favored you, or more than 5% against you, and the signal is treated as stale and rejected. These are limits on price drift, not on how wide a zone may be.
Inverted zones are common
Signal providers sometimes list a zone as "1.1050 - 1.1000" for a BUY, where the first number is actually the high. TTMT normalizes the boundaries silently — it is not treated as an error.
Duplicate Detection
TTMT prevents the same signal from trading twice. This happens when a channel edits and reposts a signal, a signal is forwarded from another channel, or the same message is processed twice on a retry.
A fingerprint is built from the signal's core fields — symbol, direction, entry, stop loss, and the take profits. If a matching fingerprint has been seen recently, the signal is skipped, not rejected.
Skipped vs Rejected
A rejected signal failed a check — something was wrong with it. A skipped signal was valid but had already been traded. Your signal log distinguishes the two, so you can see exactly why a signal did not trade.
Pre-Trade Validation (the final gate)
The last gate before placing orders checks real-time conditions the signal alone cannot tell you about.
| Check | What it verifies | If it fails |
|---|---|---|
| Risk Limits halt | Your account is not halted by Risk Limits | Blocked — new trades are paused |
| Connection health | Your broker connection is fully healthy | Held — retried when healthy |
| Symbol availability | The symbol is tradeable on your broker | Rejected |
| Volume limits | The calculated size is within your caps and the broker's limits | Rejected or sub-order skipped |
| Margin sufficiency | You have enough free margin for the trade | Rejected |
| Automatic safety pause | The per-account safety pause is not active | Queued for later |
Risk Limits halt. If your account is halted by Risk Limits, new signal-driven trades are blocked here. This is the single most common reason a perfectly valid signal does not trade.
Check your halt before assuming a signal failed
If your account is halted by Risk Limits, valid signals are blocked — they are not validation failures. Check your daily-loss halt first. See Risk Limits.
Connection health. TTMT confirms the broker connection is fully healthy — not just connected, but receiving live prices and in sync. A connection that shows "connected" while prices stopped streaming 90 seconds ago is not healthy, and the signal is held rather than traded on stale data.
Symbol availability. Using the symbol mapping system, TTMT confirms the signal's symbol resolves to a tradeable instrument on your broker — catching mismatches between channel terms ("GOLD") and broker symbols ("XAUUSD.m").
Volume limits. The calculated lot size is checked against the broker's minimum and maximum and against TTMT's own hard caps. Each sub-order must clear the broker minimum or it is skipped. The hard caps are documented on Execution Safety.
Margin sufficiency. TTMT confirms you have enough free margin before placing the trade, so an order is not sent only to bounce off the broker.
Automatic safety pause. If the per-account automatic safety pause has activated after repeated failures, the trade is queued rather than rejected — it is attempted once the pause finishes its recovery test.
Validation Summary
| Check | What it catches |
|---|---|
| Signal Sanitizer (separate page) | Decimal slips, stale or pasted prices |
| Stop-loss | Wrong-side SL, extreme SL distance, implausible zone width |
| Take-profit | Wrong-side TPs, duplicates, mis-ordered targets, count |
| Entry-zone | Stale signals where price has drifted far past the zone |
| Duplicate | Reposts, forwards, and retries of an already-traded signal |
| Pre-trade gate | Risk Limits halt, connection health, symbol, volume, margin, safety pause |
How often signals fail varies by channel. High-quality channels with consistent formatting rarely trip these checks; casual channels with frequent typos trip them more often.
Related Pages
- Signal Sanitizer — the extremity and decimal-slip detector that runs first
- Execution Safety — what happens after validation passes (safety pause, volume caps, error handling)
- Risk Limits — the halt that blocks valid signals
- Typos & Bad Signals — the catalog of signal-quality issues
- Symbol Mapping — how the symbol-availability check resolves channel terms to broker symbols

