/* Only complements native navigation; native search and Woo actions stay unchanged. */ (()=>{ const key='cfHeaderDraft40435'; window[key]?.dispose?.(); const abort=new AbortController(),media=matchMedia('(max-width:1024px)'); const header=()=>document.querySelector('.elementor-40435.elementor-location-header'); const toggle=()=>header()?.querySelector('.cf-header-nav .elementor-menu-toggle'); const expanded=t=>t&&(t.getAttribute('aria-expanded')==='true'||t.classList.contains('elementor-active')); const close=focus=>{const t=toggle();if(expanded(t)){t.click();if(focus)t.focus();}}; document.addEventListener('keydown',event=>{ if(event.key==='Escape'&&expanded(toggle())){close(true);event.preventDefault();} },{signal:abort.signal}); document.addEventListener('pointerdown',event=>{ const nav=header()?.querySelector('.cf-header-nav'); if(media.matches&&expanded(toggle())&&nav&&!nav.contains(event.target))close(false); },{signal:abort.signal}); const change=()=>close(false);media.addEventListener('change',change); const disposeCart=cfEnhanceDraftCart(header()); window[key]={dispose(){abort.abort();media.removeEventListener('change',change);disposeCart();}}; /* Proposal only. Call inside the draft header's existing behaviour IIFE: * const disposeCart = cfEnhanceDraftCart(header()); * Include disposeCart() in that IIFE's existing dispose method. * Native cart toggling, fragments and checkout links remain untouched. */ function cfEnhanceDraftCart(header) { if (!header || header.getAttribute('data-elementor-id') === '353') return () => {}; const abort = new AbortController(), owned = new Map(); let wasOpen = false, closing = false, frame = 0; const refs = () => { const widget = header.querySelector('.cf-header-cart'); return {widget, pane:widget?.querySelector('.elementor-menu-cart__main'), trigger:widget?.querySelector('.elementor-menu-cart__toggle_button'), close:widget?.querySelector('.elementor-menu-cart__close-button, .elementor-menu-cart__close-button-custom')}; }; const open = r => !!r.widget?.classList.contains('elementor-menu-cart--shown'); const attribute = (el, name, value) => { if (!el || el.getAttribute(name) === value) return; if (!owned.has(el)) owned.set(el, new Map()); const values = owned.get(el), old = values.has(name) ? values.get(name).old : el.getAttribute(name); values.set(name, {old, value}); el.setAttribute(name, value); }; const prepare = r => { if (!r.pane) return; if (!r.pane.id) attribute(r.pane, 'id', 'cf-cart-dialog-' + header.getAttribute('data-elementor-id')); attribute(r.pane, 'role', 'dialog'); attribute(r.pane, 'aria-modal', 'true'); if (!r.pane.hasAttribute('aria-label') && !r.pane.hasAttribute('aria-labelledby')) attribute(r.pane, 'aria-label', 'Shopping cart'); attribute(r.pane, 'tabindex', '-1'); attribute(r.trigger, 'aria-haspopup', 'dialog'); attribute(r.trigger, 'aria-controls', r.pane.id); if (r.close) { if (!r.close.matches('button, input[type="button"]')) attribute(r.close, 'role', 'button'); attribute(r.close, 'tabindex', '0'); if (!r.close.hasAttribute('aria-label') && !r.close.hasAttribute('aria-labelledby')) attribute(r.close, 'aria-label', 'Close shopping cart'); } }; const focusable = pane => [...pane.querySelectorAll('a[href],button,input,select,textarea,summary,[tabindex],[contenteditable="true"]')] .filter(el => el.tabIndex >= 0 && !el.matches(':disabled') && !el.closest('[hidden],[inert],[aria-hidden="true"]') && el.getClientRects().length && getComputedStyle(el).visibility === 'visible'); const focusInside = () => { const r = refs(); if (!open(r) || closing || !r.pane) return; (focusable(r.pane)[0] || r.pane).focus({preventScroll:true}); }; const returnFocus = () => { const t = refs().trigger; if (t?.isConnected) t.focus(); }; const sync = () => { const r = refs(); prepare(r); const now = open(r); if (now && !wasOpen) { closing = false; cancelAnimationFrame(frame); frame = requestAnimationFrame(focusInside); } else if (!now && wasOpen) { closing = true; cancelAnimationFrame(frame); returnFocus(); closing = false; } else if (now && r.pane && !r.pane.contains(document.activeElement) && !closing) { cancelAnimationFrame(frame); frame = requestAnimationFrame(focusInside); } wasOpen = now; }; const closeNative = () => { const r = refs(); if (!open(r)) return; closing = true; returnFocus(); // Invoke the existing handler; never change its internal isCartOpen state. (r.close || r.trigger)?.click(); if (open(refs())) { closing = false; focusInside(); } }; document.addEventListener('keydown', event => { const r = refs(); if (!open(r) || !r.pane) return; if (event.key === 'Escape') { event.preventDefault(); event.stopPropagation(); closeNative(); return; } if ((event.key === 'Enter' || event.key === ' ') && r.close?.contains(event.target) && !r.close.matches('button, input[type="button"]')) { event.preventDefault(); closeNative(); return; } if (event.key !== 'Tab') return; const list = focusable(r.pane), first = list[0], last = list[list.length - 1], current = document.activeElement; if (!first) { event.preventDefault(); r.pane.focus({preventScroll:true}); } else if (!r.pane.contains(current) || (event.shiftKey && (current === first || current === r.pane))) { event.preventDefault(); (event.shiftKey ? last : first).focus({preventScroll:true}); } else if (!event.shiftKey && current === last) { event.preventDefault(); first.focus({preventScroll:true}); } }, {capture:true, signal:abort.signal}); // Move focus before native click handlers apply aria-hidden to the pane. document.addEventListener('click', event => { const r = refs(); if (!open(r) || !r.pane) return; if (r.close?.contains(event.target) || !r.pane.contains(event.target)) { closing = true; returnFocus(); queueMicrotask(() => { if (open(refs())) { closing = false; focusInside(); } }); } }, {capture:true, signal:abort.signal}); document.addEventListener('focusin', event => { const r = refs(); if (!closing && open(r) && r.pane && !r.pane.contains(event.target)) focusInside(); }, {capture:true, signal:abort.signal}); const observer = new MutationObserver(sync); observer.observe(header, {subtree:true, childList:true, attributes:true, attributeFilter:['class','aria-hidden']}); sync(); return () => { observer.disconnect(); abort.abort(); cancelAnimationFrame(frame); for (const [el, attrs] of owned) for (const [name, {old, value}] of attrs) { if (el.getAttribute(name) !== value) continue; if (old === null) el.removeAttribute(name); else el.setAttribute(name, old); } }; } })();

TheYenMaster EA MT5 Review: USDJPY Breakouts and Risk Controls

By 7 min read

TheYenMaster EA MT5 concentrates twelve breakout strategies on USDJPY. Its appeal is the combination of separate entry and exit designs with straightforward activity selection and account-level stops. The main considerations are shared exposure to one currency pair, lot sizes that do not fall after losses, and a public signal with only a short history.

Ready to Buy The Yen Master EA MT5?

$159.96 with crypto · $199.95 by card

Official version · Instant download · Future updates included · 7-day money-back guarantee

View The Yen Master pricing

The Yen Master EA MT5 red and gold samurai product cover
CheaperForex promotional artwork based on the original Yen Master identity; not a software or performance screenshot.

Sources checked 26 September 2026. We inspected BKapital Holding B.V.’s listing, original gallery, public comments section and linked MQL5 signal. We have not traded the software or independently reproduced its tests. This review evaluates the documented design and available evidence.

What the twelve-strategy portfolio actually changes

The EA locates unbroken swing highs and lows on H1 and H4, then uses pending stop orders to enter a breakout. Each component has separate levels, stops, targets and management. The Low, Moderate and High settings activate six, nine or twelve strategies, respectively. Low selects one variant from each design family, rather than merely slowing a single entry algorithm.

That offers variation in timing and exits, but every strategy still trades USDJPY. Several entries can therefore respond to the same yen or dollar move. Twelve strategies do not mean twelve independent markets, and increasing activity can increase simultaneous exposure. A hedging account is required for the documented multi-position design; the listing’s no-grid/no-martingale description does not mean one position at a time.

The sizing rule that needs particular attention

Fixed-lot mode uses the selected volume for each strategy. Risk-per-trade mode uses stop distance to calculate volume. Automatic mode instead weights each component from its own historical maximum drawdown, aiming to give strategies a comparable share of risk. These choices answer different questions: the risk on the next stopped trade is not the same as a strategy’s allocation across a historical losing sequence.

The developer explicitly states that Automatic and Risk % modes increase lots at new balance highs but do not reduce them after a loss. As an illustration, an unchanged cash risk of 100 on an account falling from 10,000 to 8,000 rises from 1% to 1.25% of the remaining balance. This arithmetic illustrates the consequence; it is not a recommended setting or a reconstruction of the EA’s internal code.

Pending orders are resized after a 5% balance change, insufficient free margin can prevent an order, and a maximum lot size can cap individual orders. None of those controls automatically caps the sum of all open strategy risks. Inspect concurrent volume as well as per-trade sizing on demo.

Account stops, news windows and persistent halts

The daily-loss control includes closed and floating results. Total loss is referenced to a starting balance, with an override available; equity stop and target use fixed equity levels. A triggered halt closes exposure and stops trading, and the halted state survives a chart reload or terminal restart until reset from the panel. The daily-loss setting has a next-day resumption rule.

The source’s parameter list describes the daily-loss percentage relative to an equity peak, while the overview describes the day’s combined closed and floating result. Buyers with a strict daily-loss rule should verify the exact calculation and reset time in practice instead of treating those descriptions as interchangeable. A prop firm’s reset clock, trailing threshold and treatment of floating profit may differ.

The NFP filter can block new orders and optionally close positions or delete pending orders. A separate USD/JPY economic-calendar filter applies only in live trading. Monday start and Friday closure can use server time or GMT. Test the broker’s summer/winter offsets and understand which actions each filter enables: pausing entries and flattening existing exposure are different choices.

Reading the original backtests without mixing their numbers

The Yen Master developer backtest statistics and monthly returns
Original developer simulation report, retrieved 26 September 2026. Its 4.15% drawdown and 1.49 profit factor belong to this report, not the separate MT5 sizing example or the public signal.

The developer’s portfolio statistics image reports 40,801 trades, a 1.49 profit factor and 4.15% drawdown. Its monthly table contains losing periods, including a negative annual result in 2011. Those details are more informative than simply presenting an upward curve as a promise of consistent monthly gains.

The Yen Master MT5 Strategy Tester curve and drawdown report
Original developer MT5 simulation labelled 0.1 Risk per Trade, retrieved 26 September 2026. It reports 46.40% relative equity drawdown; historical simulation, not live performance.

The separate MT5 report, labelled “0.1 Risk per Trade”, shows 40,890 trades and a 1.73 profit factor. Its relative equity drawdown is 46.40%, with 42.48% relative balance drawdown. The 8.31% shown beside maximal equity drawdown is a different field; it should not replace the larger relative figure when describing this test’s risk. The first image’s 4.15% is not an appropriate summary of this second run.

Different sizing, compounding and test configurations can substantially change the account experience. The supplied images alone do not reconcile all differences, and we have not reproduced their data or costs. The listing also describes a separate 6,575-trade code-verification run; that is a developer claim about a verification run, not the trade count of either displayed portfolio report.

The Yen Master developer in-sample and out-of-sample backtest curve
Original developer chart marking in-sample and out-of-sample periods, retrieved 26 September 2026. The separation is a developer claim; the underlying research process has not been independently audited.

The third chart labels a middle development interval and earlier/later out-of-sample sections. That is useful context to request when assessing optimisation. A label by itself does not establish that parameters were fixed before each evaluation period or that no later research used those periods. Treat all three images as historical simulations, separate from monitored trading.

What the public signal shows so far

YenMaster EA MQL5 signal overview captured 26 September 2026
Genuine MQL5 signal 2391870 overview excerpt, captured 26 September 2026. The account showed 7.28% growth and 36.36 USD profit in a very short history; these are dated observations, not projected returns.

On 26 September 2026, signal 2391870 showed 7.28% growth, 36.36 USD profit, a 536.36 USD balance and 542.05 USD equity from a 500 USD initial deposit. MQL5 marked the CapitalPointTrading-MT5-4 account as real, with leverage of 1:500. This identifies how the platform labels the account; it is not an independent assessment of the broker or a guarantee that a buyer will obtain the same execution.

The displayed history was two weeks, with monitoring starting on 18 September. All 69 completed trades in the statistics were USDJPY buys and shown as profitable. That short, one-directional sample cannot establish how the system behaves through sustained adverse conditions or short trades. MQL5 also displayed a warning that frequent deals can harm copying results.

The statistics reported 0.12% maximal balance drawdown and 0.00% relative equity drawdown at this snapshot. The page’s approximately 0.1% headline is not evidence that the EA’s future risk is limited to that level. The monitored period is far shorter than the tests, and the displayed 98% algorithmic-trading share does not prove every transaction came from an unchanged retail configuration.

Customer feedback and available setup material

The product was published on 24 September 2026 and had no customer reviews or substantive public comments at our check. There is therefore no customer-review screenshot or rating evidence to present. The listing contains a detailed parameter reference, but no separately linked public manual or downloadable preset pack. Its twelve strategies are built in, so no separate SET files are required.

The gallery also contains an older external-account screenshot without a corresponding public account link in the overview. We have not used it as verified current evidence. The linked MQL5 account is the identifiable source readers can revisit.

Our assessment

The Yen Master is a clear candidate for someone specifically seeking a USDJPY breakout portfolio with explicit stops, frequency selection and an integrated control panel. The built-in strategies simplify deployment, while persistent halts and news options provide meaningful operating controls. The unresolved question is sustained forward behaviour: the current public history is too young to answer it.

Before committing real funds, check the hedging account, USDJPY suffix, minimum volume, broker clock and combined position risk. Examine how lot sizing behaves after a losing sequence, and confirm that a triggered account limit and its reset match your intended rules. If your requirement is a mature live record or automatic reduction of cash exposure after losses, those requirements need particular attention here.

Verify it yourself

View The Yen Master EA MT5 and current pricing

More reviews

All reviews