Two traders receive the same gold alert at 14:32. Same entry, same stop, same target. One is already long two correlated positions and is about to be sitting in front of a data release. The other is flat and has nothing on the calendar for four hours. The alert is identical. The trade is not, and pretending otherwise is how people end up blaming a signal service for a risk decision they made themselves.
A signal is a single input: a mechanical read of price that fires when its conditions are met. It carries entry, stop loss and take profit, and that is the entire contract. Everything else, account size, exposure, timing, whether you will actually be awake, belongs to you.
Decide your relationship with the system first
There are two honest positions and one dishonest one. The first honest position is full mechanical execution: you take every alert, at the stated levels, at a fixed risk per trade. The second is filtered execution: you take alerts that pass a written rule set and skip the rest. The dishonest one is the default most people fall into, which is taking the alerts that feel right on the day, then judging the service on a sample it never produced.
Mechanical execution has one enormous advantage. It is the only version whose outcome can be compared to the system's own record. The moment you filter, you are running a different strategy that happens to use someone else's entries, and the responsibility for the result moves to you. That is fine. It just has to be a decision, written down before the next alert arrives, rather than a reconstruction afterwards.
Build a filter, then leave it alone
If you are going to filter, the rule set should be short enough to check in twenty seconds and specific enough that two people applying it to the same alert reach the same answer. Four filters cover most of what actually matters:
- Higher-timeframe direction. Mark structure on the daily and four-hour chart at the start of the week. If the alert is a long and price is below a level you have marked as supply, that is a defined reason to skip. Not a feeling, a level you drew before the alert existed. The relationship between timeframes is the filter that changes results most.
- Calendar. Fix a blackout window around scheduled releases you consider high impact, and apply it every time. If you pick fifteen minutes either side, it is fifteen minutes either side for a slow Tuesday and for payrolls.
- Correlation. Long gold, short the dollar index and long a dollar-quoted commodity currency is close to one position wearing three costumes. Track exposure by underlying driver rather than by ticker, which is the practical point of understanding currency correlations.
- Availability. An engine that fires around the clock will fire while you are asleep or in a meeting. Decide in advance whether an alert you see forty minutes late is dead. Usually it is.
Notice what is missing from that list: any filter that says "the chart looks weak" or "I do not like this one". Those are not filters. They are the reason your record and the system's record will diverge in ways you can never explain.
Do not touch the levels
The most common way traders wreck a signal is by keeping the entry and target while moving the stop. It feels like risk management. It is the opposite: it lifts the loss on the losing trades while leaving the winners exactly where they were, which turns a defined risk to reward profile into a worse one. If the stop feels too tight for you, skip the trade. Skipping is measurable. Widening is not.
Engines that carry a stop-loss cap already do a version of this filtering for you. GoldAlgo, for example, runs an M15 engine on XAUUSD and skips setups whose stop would sit wider than its pip cap, so the alerts that reach the channel already share a family resemblance in risk. If you then widen those stops by hand, you have removed the constraint the engine was built around. There is more on how that pipeline works in our overview of GoldAlgo.
Signals are information, not financial advice, and no engine changes that. Whether a set of alerts produces anything worth having depends entirely on the execution and risk control of the person receiving them. Leveraged trading carries a high risk of loss, and the possibility that a period of following any system ends in a loss is real.
Size is where your opinion belongs
The useful place to express disagreement with a signal is not the stop, it is the size. Pick a base risk per trade as a percentage of the account. Alerts that agree with your higher-timeframe read get base size. Alerts that conflict with it get either half size or nothing, decided by rule. The distances stay untouched, so the risk to reward on each trade stays intact, and the only variable you moved is how much the trade matters.
This also keeps the arithmetic honest when a cluster of alerts arrives on the same instrument in an hour. Three gold longs at base risk is three times the intended exposure to one move. Cap total open risk per underlying and let the cap refuse the third alert for you rather than deciding in the moment.
Log the trades you did not take
Most journals record what happened. The valuable column is what did not. Every alert goes in the log, taken or skipped, with the reason. After thirty or forty alerts you can ask a question you otherwise cannot answer: did the filter remove more losers than winners, or did it just remove the uncomfortable ones? In my experience the second is more common in the first month, and the filter that survives contact with that record is usually much smaller than the one people start with. A structured trading journal makes this a five-minute weekly job instead of a memory exercise.
The other thing the log exposes is volume of alerts you are not really processing. When the skip reasons start reading "missed it" and "was not looking", the problem has moved from strategy to attention, and the fix is fewer channels rather than better filters. We wrote separately about how alert fatigue quietly destroys execution quality.
One last practical point. Keep the signal channel and the execution platform separate in your head. The channel tells you a condition was met. The platform is where you check spread, session, open exposure and the actual fill you are likely to get. A signal at a price you cannot get is not a signal you took.
"A signal you cannot explain to yourself in one sentence is a signal you will abandon at the worst possible moment, usually about two minutes before it would have worked."
— Alex Onta, Executive Director, SINGUARD
Key Takeaways
- Choose full mechanical execution or a written filter set before the next alert arrives. Deciding trade by trade produces a record nobody can interpret.
- Keep filters objective: higher-timeframe levels drawn in advance, a fixed calendar blackout, exposure grouped by underlying driver, and a rule for late alerts.
- Never widen a signal's stop. Express disagreement through position size, so the risk to reward distances stay exactly as the system defined them.
- Log skipped alerts with the reason. It is the only way to find out whether your filter is removing losers or just removing the trades that felt uncomfortable.
Frequently Asked Questions
Should I take every signal a service sends?
That is one valid approach, and it is the only one whose results can be compared to the service's own record. If you filter instead, define the filter in writing before you start and apply it the same way every time, otherwise you are simply trading on mood. Signals are information, never financial advice, and trading carries a high risk of loss.
Can I widen the stop loss on a signal if I disagree with it?
Widening the stop changes the risk to reward profile of the trade while keeping the same target, so the result no longer belongs to the system you are following. If the stop looks wrong to you, skip the setup instead. Skipping is a decision you can measure later; widening is not.
How do I know whether my filtering helps or hurts?
Log every alert you receive, including the ones you skip, with the reason for skipping. After a few dozen alerts you can compare the outcome of the trades you took against the outcome the skipped setups would have had. Without that record the question cannot be answered.