Appearance
Are you an LLM? You can read better optimized documentation at /safety-and-reliability/signal-sanitizer.md for this page in Markdown format
Signal Sanitizer
Telegram signals are typed by humans on phones, often copy-pasted from yesterday's chart in a hurry. The signal sanitizer is the very first check TTMT runs — before any other validation — and its whole job is to catch prices that are obviously wrong: a decimal in the wrong place, a level pasted from an old signal, a price that no longer makes sense. It does this by comparing every number in the signal against trusted reference points, so a "1.0850" typed as "10.85" never reaches your broker.
What It Catches
The sanitizer targets three failure modes:
- Decimal errors — a typist enters
1.085as10.85. Left alone, that order goes out roughly 900% away from market: a guaranteed broker rejection or, worse, a pending order that never fills. - Copy-paste artifacts — yesterday's level pasted into today's signal. Left alone, the stop or entry is positioned against a market that has since moved, producing an instant stop-out or a stuck order.
- Stale prices — a signal posted late, where the level no longer makes sense at the current market. Left alone, a pending order sits waiting for a price that will never come back.
The sanitizer runs first, before the stop-loss, take-profit, and entry-zone checks. Those later checks only ever see corrected numbers, never the raw ones.
How It Decides: Trusted Reference Points
The sanitizer gathers price reference points and trusts each one differently. The hierarchy is one-directional — what the market is doing right now outranks anything typed into a signal.
| Reference point | How much it is trusted |
|---|---|
| Live market price (current bid/ask) | Most — it is true right now |
| Existing positions or orders on the symbol | High |
| Other values from the same signal (cross-checked against each other) | Moderate |
| Your configured default stop and target distances | Least — a generic preference |
Live market price is most trusted because it is empirically true at this moment. Your default distances are least trusted because they are generic — a "30-pip default stop" is a preference, not a fact about this symbol right now, so it can never override real market data.
TTMT trusts the live market above the signal itself
The current market price outranks every number in the signal. Your generic default distances are the least-trusted reference precisely because they are generic.
How It Judges Each Number
Every price in the signal — entry, stop loss, and each take profit — is weighed against the trusted reference points along three lines of reasoning:
- How big is it? Is the value in the same ballpark as a trusted reference, or wildly larger or smaller?
- How far away is it? Measured in pips, how far does the value sit from where the market and your open trades say it should be?
- Does it fit the rest? Is the value consistent with the other numbers in the same signal?
A value is corrected when it is clearly out of line — either it fails one of these badly on its own, or several mild warning signs add up. Borderline numbers are left alone; only the ones that no plausible signal would contain are acted on.
Blatant Decimal Errors Are Rejected Outright
There is a bright line for the obvious cases. Any value that is off by roughly a factor of ten or more from a trusted reference is treated as a decimal error and rejected on the spot — there is no realistic legitimate signal where a price is ten times the current market. A value only slightly off is merely suspicious and feeds the weighing above; a value ten times off is simply a typo.
A value 10x off the market is a decimal typo
TTMT rejects it immediately. There is no legitimate signal where a price is ten times the current market price.
This decimal-error guard is a distinct check from the stop-loss "too far" rule on Signal Validation, which flags a stop that sits more than five times the distance to your farthest target. Different checks, different purposes — do not conflate them.
What Happens to a Flagged Value
What happens next depends on the field, and on which message the price arrived in.
On the signal that opens the trade, only the stop loss and the entry (or entry zone) can be replaced. A wildly wrong stop loss is swapped for one built from your own default stop distance. A wildly wrong entry usually rejects the whole signal, because there is nothing safe to put in its place. A flagged take profit is treated differently on this first message: it is never replaced. It goes out exactly as the channel posted it, and you are told it looked unusual.
On a follow-up — a later message from the same channel updating a trade it already sent — the rule widens. The stop loss, the entry zone, and every take profit can now be replaced, because a follow-up is the channel actively managing a position it already committed to, not a first guess at one.
One line survives every setting, on every message. A price more than ten times the market (or less than a tenth of it) is never traded as posted: Auto-Correct and Trust Signal Values swap it for a safe one, Reject Signal does not trade the signal. That is the bright line described above. Anything less extreme is judged by your Extreme Value Handling setting (Settings → Entries & Targets → Signal Quality & Safety, or per channel in a Config Profile): Auto-Correct replaces what it safely can and tells you, Reject Signal skips the signal entirely, Trust Signal Values takes the numbers as posted.
Either way, the corrected signal — not the raw one — is what the rest of the validation runs on.
What You'll See
Every price TTMT actually places for you — from this signal, or moved later by a follow-up — keeps a record of where it came from. Four things read that record.
- A chip beside the price. Open the trade and any value the dashboard changed carries a small "Changed by safety check" chip next to it, in the trade detail header and again in the Signal Tester. No chip next to a price means it went out exactly as your provider posted it.
- A card in the trade's Journey. Every correction — applied or only flagged — gets its own card in the trade's timeline, in the default "Key moments" view, never hidden behind "All events." The card always shows the provider's value, the value TTMT used, why in one sentence, and a link to the Extreme Value Handling setting for that channel. A flagged take profit that was left as posted gets a card too, worded to say so, with no "changed" chip beside the value because nothing changed.
- A notification, but only when a value actually changed. For example: "Stop loss changed on XAUUSD" — "Gold Signals posted 4442. TTMT used 4398 — your default stop distance (60 pips). Open the trade →." A take profit that was flagged and left as posted does not send one; there is nothing to act on.
- "Source not recorded" on older trades. TTMT did not always keep this record. A trade placed before it started shows "Source not recorded" beside every price instead of a chip — never the provider's value, because that would be a guess dressed up as a fact.
Why It Runs First
Order matters. If the stop-loss and take-profit checks ran on raw numbers, a 10.85 entry could confuse them into "correcting" it — building a 100-pip buffer around a nonsense price. Sanitize first, and the later checks receive sane inputs, so their corrections make sense.
A single un-sanitized decimal-slip trade hitting the market can cost more than every sanitizer check the system will ever run. The sanitizer takes milliseconds; the bad fill is real money.
You do not configure the sanitizer
It runs on every signal automatically, before any other check. There is nothing to turn on or tune.
Worked Examples
Decimal slip. A BUY EURUSD signal types the entry as 10.85 while the market is 1.0850. That is about 10x off the market, so it is rejected outright. Without the sanitizer, that order goes out roughly 900% away from market.
Copy-paste artifact. A gold channel pastes yesterday's 2670 stop into today's signal where price is 2840. The stop is clearly out of line with the live market, so it is either replaced with a stop derived from your default distance or rejected, depending on the field.
Stale price. A signal posted 40 minutes late lists an entry that price has already blown through. The live market — the most trusted reference — shows the level is no longer reachable, and the sanitizer flags it before a pending order gets stuck waiting forever.
Related Pages
- Signal Validation — the stop-loss, take-profit, and entry-zone checks that run after the sanitizer (and the separate 5x stop-distance rule)
- Typos & Bad Signals — the catalog of signal-quality issues this and the validators catch
- Signal Processing — the full signal lifecycle
- Entry Zone Resolution — how TTMT resolves the entry zone just before the sanitizer runs

