Cross-pair confirmation adds conditions to a primary signal. This teaching model trades an EURUSD channel breakout only when closed GBPUSD and USDJPY changes agree with its direction. Those pairs supply data, not additional trades or guaranteed validation.
Keep the entry pair, the filter pairs and the account's currency exposure distinct. The fixed rules and values are authored hypotheses to test, not validated performance or recommended settings. Shared USD exposure can make agreement redundant; more confirming charts do not establish a higher win probability.
1. Fix the roles and the account scope
Use H1 from one broker: EURUSD is the only entry pair; GBPUSD and USDJPY are filters only. Resolve actual symbol suffixes and keep quote orientations fixed. Use a dedicated account with at most one market position and no pending entry orders. Any other manual or EA position blocks entry; do not automatically close an unidentified position.
A tested coordinator or account lock must reserve the slot, persist consumed decision timestamps and reconcile restart state. Separate chart copies must not each reserve their own position. The first multi-pair strategy ranks breakouts and the second rotates by momentum; this version never substitutes the filter pairs for EURUSD.
2. Align one hourly snapshot
Use actual broker H1 boundaries, not an assumed UTC offset. After the hour closes, allow up to 60 seconds for all pairs to show the same new bar 0 and matching completed bars 1–21. Require at least 200 completed H1 bars per pair, positive valid prices and ATR. Missing or misaligned data skip the hour; they are not a failed directional vote.
The first complete snapshot consumes the decision, even without a signal or after a failed gate. Freeze its closed-bar inputs. Do not recalculate filters or retry later within that hour. A position present at decision start means manage and skip entry even if it closes immediately. Preserve that state through restart; manage existing exits without waiting for the other pairs' data.
3. Define the EURUSD closed-bar breakout
Bar 0 is forming; bar 1 is the completed signal. On EURUSD, U is the highest Bid high and L the lowest Bid low of the 20 previous bars, indices 2–21. Exclude the signal bar. BUY requires C1 > U; SELL requires C1 < L. Equality and intrabar touches do not qualify. The Donchian guide explains the channel.
All pairs use C1 = iClose(symbol, PERIOD_H1, 1), C4 = iClose(symbol, PERIOD_H1, 4) and A = iATR(symbol, PERIOD_H1, 14, 1), in price units. The normalized closed-price change over 3 completed intervals is m = (C1 − C4) / A. Round signed m to 6 decimals, exact halfway away from zero, before testing filters. EURUSD m is displayed for context; it adds no separate entry threshold.
4. Require both direction-aware filters
For an EURUSD BUY, require m_GBPUSD ≥ 0.50 and m_USDJPY ≤ −0.50. For SELL, require m_GBPUSD ≤ −0.50 and m_USDJPY ≥ 0.50. Equality passes. Both must pass; no majority vote, ranking or fallback pair applies.
For reading the table, u equals m on EURUSD and GBPUSD; on USDJPY, u = −m. Positive u supports the BUY direction and negative u the SELL direction in this authored filter. This sign convention is not a calculated inverse-pair return or independent USD-strength index. Values are ATR units, not percentages or directly comparable pip counts. The table displays 2 decimals; decisions use 6.
| Symbol | Role | C4 | C1 | ATR(14) | m | u |
|---|---|---|---|---|---|---|
| EURUSD | Entry pair | 1.0990 | 1.1014 | 0.0020 | +1.20 | +1.20 |
| GBPUSD | Filter only | 1.2500 | 1.2515 | 0.0030 | +0.50 | +0.50 |
| USDJPY | Filter only | 150.00 | 149.80 | 0.40 | −0.50 | +0.50 |
All inputs are invented, not a historical bar sample or a reconstructed ATR series. Assume EURUSD U = 1.1000 and L = 1.0900: C1 = 1.1014 gives a BUY breakout. Both filters pass exactly at their thresholds. This permits execution checks, not automatic entry. Any missing filter, wrong sign or insufficient magnitude skips the decision; the filter pairs receive no orders.
6. Check execution and planned loss
Only EURUSD is eligible for an order. Require broker-clock quote age from 0 to 5 seconds, nonnegative spread no greater than 0.10 × A, and Bid drift from the frozen signal close limited by abs(Bid − C1) ≤ 0.25 × A. BUY current Bid must still exceed U; SELL current Ask must remain below L. Boundary equality fails this breakout gate.
- The account is confirmed flat, with no pending orders or unresolved requests, and the shared slot is reserved.
- The 60-second entry window, quote freshness, spread, drift and current breakout condition pass.
- A tested order procedure can place and verify initial protection.
- Rounded prices satisfy the real tick grid and broker stop distances; volume and margin are permitted.
- Modeled loss including the assumed costs fits the account budget.
From intended executable entry, place the fixed stop 1.5 A away and target 3 A away: below/above for BUY, above/below for SELL. Round toward entry on the actual tick grid: BUY stop up, target down; SELL stop down, target up. Reject crossed, zero-distance or invalid levels and recalculate distances. Rounding can change the nominal gross reward/risk ratio of 2.
Set this test's planned-loss budget to 0.50% of current equity. Model stop loss in account currency plus commission, extra adverse execution and whole-holding financing assumptions. Floor volume to the lot step; skip if the minimum cannot fit. Reconcile actual fill, volume and protection. Missing protection or modeled loss above budget invokes a pretested immediate-exit/reconciliation procedure and blocks entries. Check symbol specifications; no working controller is supplied here.
7. Calculate the invented EURUSD BUY
Assume $10,000 USD equity, a 100,000-unit contract per lot, 0.01-lot minimum and step, and price tick 0.00001. The table's signal and both filters pass. With A = 0.0020, assume fresh Bid 1.1014 and Ask 1.1016. Spread 0.0002 equals the allowed 0.10 A, Bid remains above U 1.1000 and Bid drift from C1 is zero. Assume an exact Ask fill 1.1016. Stop 1.0986 is below entry; target 1.1076 is above.
The 30-pip stop models $300 per lot before added costs. Assume per lot: $7 round-trip commission, $10 total extra adverse-execution allowance and $3 financing charge for the entire modeled holding period, all proportional to volume. Budget $50 divided by $320 gives 0.15625 lot; floor to 0.15. Modeled loss is $48.00, leaving $2.00 unused. The next 0.16 lot would model $51.20 and fail. These cost assumptions are sensitivities, not ceilings.
| Alternative outcome | Gross P/L | Commission | Extra execution | Financing | Modeled net P/L |
|---|---|---|---|---|---|
| Stop scenario | −$45.00 | −$1.05 | −$1.50 | −$0.45 | −$48.00 |
| Target sensitivity | +$90.00 | −$1.05 | −$1.50 | −$0.45 | +$87.00 |
The target uses the same deductions for comparable cost stress; it does not assert universal adverse slippage on Take Profit. Spread is already in the Ask entry and Bid exits, so do not deduct it twice. Actual financing depends on holding time, swaps and rollover schedules and can include credits. Time exits have other unknown outcomes. See the cost guide; modeled net amounts are neither expected profit nor a guaranteed loss limit.
Optional: reproduce prices, volume and modeled money outcomes
1.1016 − 1.5 × 0.0020 = 1.0986; 1.1016 + 3 × 0.0020 = 1.1076. Gross stop loss: 0.0030 × 100,000 × 0.15 = $45.00; gross target profit: 0.0060 × 100,000 × 0.15 = $90.00. Planned loss per lot: 300 + 7 + 10 + 3 = $320; volume: 50 / 320 = 0.15625 → 0.15. Alternative net outcomes: −45 − 1.05 − 1.50 − 0.45 = −$48.00 or 90 − 1.05 − 1.50 − 0.45 = +$87.00. Decimal points and thousands commas follow English numeric notation.
8. Manage fixed exits independently
Keep the initial stop and target fixed: no trailing, averaging, pyramiding or automatic reversal. Later filter changes do not themselves trigger an exit in this version. If still open after 4 completed EURUSD H1 bars, request market close; the entry bar counts first when it closes. This age exit does not wait for filter data. BUY exits at Bid and SELL at Ask, using the first fresh executable quote when due.
Outages, gaps or closed markets may delay actual exit; the rule guarantees neither holding time nor fill. Failed or uncertain close requests require reconciliation and monitoring without another position. After confirmed exit, wait for the next eligible hourly decision and new data. Do not reopen a consumed hour or turn a filter reversal into an untested exit rule.
9. Skip and reconcile rather than add exposure
Skip incomplete data, no primary breakout, a failed filter, occupied account or failed execution gate. Do not queue a later confirmation or substitute GBPUSD or USDJPY. Preserve consumed timestamps, position identity and unresolved requests. A timeout does not prove failure: reconcile the broker's actual state before resending and prevent duplicate exposure. The monitoring guide explains operational evidence.
No trend, session or news filter is hidden here. Changing the primary pair, confirmer list, lookback, threshold or quote orientation creates another version to validate. Do not infer low risk from a three-chart agreement. Record all skipped and rejected decisions, not just executed trades.
10. Validate the timed filter data and EURUSD trades
MT4's native tester does not execute trades on symbols other than the tested one. This strategy trades only EURUSD, so that restriction is consistent with its order scope; it does not prove that cross-pair history is synchronized. Test EURUSD execution together with GBPUSD and USDJPY data supplied as of each simulated decision time, using a verified test harness or synchronized event replay, then controlled forward observation.
Check bar timestamps and available history explicitly; never let a confirmer read future data from terminal history. Freeze rules before chronological holdout testing and reproduce rounding, boundary equality, missing data, quotes, costs, protection, time exits and recovery. Unknown tick paths touching both stop and target must not silently favor a win. The backtesting guide explains evidence limits; no historical performance is supplied.
- Are all pairs aligned to the same completed interval without future data?
- Are channel indices, the closed-price lookback and the USDJPY sign handled correctly?
- Do both exact filter thresholds pass while a wrong sign or smaller magnitude skips?
- Can only EURUSD receive an order, with account-wide duplicate prevention?
- Do costs, volume floors, currency notionals and every exit path reconcile with their stated units?
11. Questions about cross-pair confirmation
Does agreement across pairs prove independent confirmation?
No. The pairs share USD and may react to the same event. The filter is an authored condition to test, not proof of diversification or a higher win probability.
May I accept just one filter or trade a confirmer instead?
No. Both specified filters must pass and only EURUSD is traded. Majority voting, substitute pairs or a basket of orders would be different strategies.
Can a filter that improves later rescue the same hour?
No. The first complete snapshot consumes the decision. A later change cannot revive it. Existing positions use their defined exits, not improvised filter-based closes.
Must the tester trade all the pairs to verify this model?
No. It must reproduce EURUSD trades and the correctly timed data used by both filters. Testing trade execution alone or reading unsynchronized history does not validate the complete decision process.
12. Sources and scope
Official references: MQL4 iClose and historical-data access, MQL4 symbol and contract properties, and native MQL4 Strategy Tester limits. Sources checked on 2026-10-18. Platform facts do not validate the authored channel, filter thresholds, coefficients or budget.
All inputs, quotes, currency notionals and outcome amounts are invented teaching values. Diagrams illustrate these assumptions precisely, not original tester reports or verified performance. No profitability, suitable risk level or future result is claimed. Implementation, cost modeling and time-consistent validation remain necessary.