AttachExpert.mqh enables attaching an Expert Advisor to a chart from MQL5 with specified inputs and an explicit βAllow Algo Tradingβ state. Since MQL5 lacks a native API for this, the library generates a chart template containing an <expert> block and applies it via ChartApplyTemplate().
Unset inputs remain at default values. Template application is asynchronous; AttachExpert() waits up to 10 seconds for CHART_EXPERT_NAME to report the EA is running, or returns immediately when waitMs = 0, which is suitable when called from another EA. Applying to the callerβs own chart is not supported because the template would replace it. Trade permission is also constrained by the terminal AutoTrading button.
A bundled example script opens a chart and attaches the standard Moving Average example EA with selected inputs. Validation across multiple timeframes confirmed correc...
π Read | Freelance | @mql5dev
Unset inputs remain at default values. Template application is asynchronous; AttachExpert() waits up to 10 seconds for CHART_EXPERT_NAME to report the EA is running, or returns immediately when waitMs = 0, which is suitable when called from another EA. Applying to the callerβs own chart is not supported because the template would replace it. Trade permission is also constrained by the terminal AutoTrading button.
A bundled example script opens a chart and attaches the standard Moving Average example EA with selected inputs. Validation across multiple timeframes confirmed correc...
π Read | Freelance | @mql5dev
β€8π6π€©4
Meta-labeling often treats heuristic win/loss labels as ground truth, even when fixed-horizon returns create systematic mislabels that a meta-filter will learn without warning. This article adds a label audit step using confident learning, implemented natively in MQL5 as CConfidentLabelAuditor.
The EA generates RSI/trend crossover candidates, builds a compact 4-feature vector (direction-normalized for shared long/short training), and labels each sample by the close N bars ahead. The auditor cross-fits logistic regression to get out-of-fold probabilities, builds a calibrated βconfident jointβ confusion matrix, then ranks and prunes likely mislabels by low self-confidence.
A single input toggles training on raw vs cleaned rows, enabling Strategy Tester A/B runs. The system re-audits and refits on a rolling window, logs CSVs, and includes a FlagView indicator to ins...
π Read | AppStore | @mql5dev
The EA generates RSI/trend crossover candidates, builds a compact 4-feature vector (direction-normalized for shared long/short training), and labels each sample by the close N bars ahead. The auditor cross-fits logistic regression to get out-of-fold probabilities, builds a calibrated βconfident jointβ confusion matrix, then ranks and prunes likely mislabels by low self-confidence.
A single input toggles training on raw vs cleaned rows, enabling Strategy Tester A/B runs. The system re-audits and refits on a rolling window, logs CSVs, and includes a FlagView indicator to ins...
π Read | AppStore | @mql5dev
β€12π6π₯3π€©3
MetaTrader 5 custom symbols let developers generate synthetic instruments with their own ticks and bar history, but still use standard charts: indicators, objects, and even EAs. The article shows how to build derivative symbols from broker data or external feeds to add analysis types MT5 does not provide natively.
Equal-volume and equal-range bars are generated by reading M1 history or tick history (CopyTicks/CopyTicksRange) and writing bars via CustomRatesUpdate; live updates can be driven with CustomTicksAdd. This enables tick-count, real-volume (where available), or fixed-range bar formation, with history reset and incremental building handled in code.
Tick charts are upgraded into full-featured charts by storing each tick as an M1 bar, optionally using a ring buffer to keep a stable window size. A key engineering point is routing trade execution ...
π Read | NeuroBook | @mql5dev
Equal-volume and equal-range bars are generated by reading M1 history or tick history (CopyTicks/CopyTicksRange) and writing bars via CustomRatesUpdate; live updates can be driven with CustomTicksAdd. This enables tick-count, real-volume (where available), or fixed-range bar formation, with history reset and incremental building handled in code.
Tick charts are upgraded into full-featured charts by storing each tick as an M1 bar, optionally using a ring buffer to keep a stable window size. A key engineering point is routing trade execution ...
π Read | NeuroBook | @mql5dev
β€7π6π₯3π€©3
A position manager for MT5 targets grid and martingale baskets on XAUUSD, forex, or indices by pairing one strong winner with one deep loser. It calculates profit plus swap and commission, then closes both when the combined result meets a configured minimum, closing the winner first to lock gains. No entries are opened.
Filtering can be limited to the chart symbol or applied across all symbols, and to a single magic number or all positions, including manual trades. Optional basket-level take profit and stop loss in account currency can flatten all managed positions.
Execution is defensive: each close checks the return code and retries after a pause. A minimal panel shows managed positions, floating result, best and worst tickets, pair sum versus the threshold, and controls for pair close, close all, and pause. Pair logic is isolated in XP_FindPair and XP_Clos...
π Read | AppStore | @mql5dev
Filtering can be limited to the chart symbol or applied across all symbols, and to a single magic number or all positions, including manual trades. Optional basket-level take profit and stop loss in account currency can flatten all managed positions.
Execution is defensive: each close checks the return code and retries after a pause. A minimal panel shows managed positions, floating result, best and worst tickets, pair sum versus the threshold, and controls for pair close, close all, and pause. Pair logic is isolated in XP_FindPair and XP_Clos...
π Read | AppStore | @mql5dev
β€14π7π€©4π₯2β‘1
Major LLM vendors are aligning on shared expectations for model interoperability and evaluation. Gemini, Mistral, Claude, and Perplexity are signaling interest in common interfaces, clearer capability reporting, and more consistent safety and reliability testing.
For engineering teams, this can reduce integration friction across providers, improve portability of prompt/tooling stacks, and make vendor comparisons less ambiguous. Focus areas likely include standardized tool-calling schemas, response formatting guarantees, and reproducible benchmark disclosure.
If this coordination continues, procurement and architecture decisions may shift from vendor-specific adapters toward simpler abstraction layers, with more attention on latency, cost, context limits, and compliance.
π Read | Calendar | @mql5dev
For engineering teams, this can reduce integration friction across providers, improve portability of prompt/tooling stacks, and make vendor comparisons less ambiguous. Focus areas likely include standardized tool-calling schemas, response formatting guarantees, and reproducible benchmark disclosure.
If this coordination continues, procurement and architecture decisions may shift from vendor-specific adapters toward simpler abstraction layers, with more attention on latency, cost, context limits, and compliance.
π Read | Calendar | @mql5dev
π9β€6π₯3
DataSnooping.mqh adds data-snooping controls to strategy and parameter optimizations, addressing whether the top result is statistically better than a benchmark or simply the best outcome among many trials.
It implements Hansenβs SPA test, Whiteβs Reality Check, the Romano-Wolf StepM procedure, and the Hansen-Lunde-Nason model confidence set. Resampling is done with a stationary bootstrap to preserve dependence in daily returns, with a configurable seed and no DLL requirement.
Components include CSuperiorAbility (SPA p-values, Reality Check, critical values, and StepM results), CModelConfidenceSet (per-strategy p-values and best-set selection using R or max statistics), and CStationaryBootstrap (bootstrap indices and efficient mean computation). A provided example generates 100 moving-average rules or reads CSV returns, illustrating how single-test...
π Read | Calendar | @mql5dev
It implements Hansenβs SPA test, Whiteβs Reality Check, the Romano-Wolf StepM procedure, and the Hansen-Lunde-Nason model confidence set. Resampling is done with a stationary bootstrap to preserve dependence in daily returns, with a configurable seed and no DLL requirement.
Components include CSuperiorAbility (SPA p-values, Reality Check, critical values, and StepM results), CModelConfidenceSet (per-strategy p-values and best-set selection using R or max statistics), and CStationaryBootstrap (bootstrap indices and efficient mean computation). A provided example generates 100 moving-average rules or reads CSV returns, illustrating how single-test...
π Read | Calendar | @mql5dev
β€13π6π€©3π₯2
Session Range Breakout displays the intraday high/low for up to three configurable sessions and keeps those levels visible after the session ends by extending them to the right.
Sessions are defined by start hour (inclusive) and end hour (exclusive) in server time. While a session is active, the running high and low are tracked. After the close, both levels are finalized and drawn as dotted lines, with optional βNAME H / NAME Lβ labels and an optional thin range rectangle. Values are not recalculated later, so the output does not repaint.
Configuration includes per-session enable/disable, name, hours, and color, plus history depth, extension length (bars), and line width. Optional features cover labels, the range rectangle, and alerts (popup, sound, push) when a bar closes outside a session range. An auto-zoom option can rescale the chart on load to ...
π Read | VPS | @mql5dev
Sessions are defined by start hour (inclusive) and end hour (exclusive) in server time. While a session is active, the running high and low are tracked. After the close, both levels are finalized and drawn as dotted lines, with optional βNAME H / NAME Lβ labels and an optional thin range rectangle. Values are not recalculated later, so the output does not repaint.
Configuration includes per-session enable/disable, name, hours, and color, plus history depth, extension length (bars), and line width. Optional features cover labels, the range rectangle, and alerts (popup, sound, push) when a bar closes outside a session range. An auto-zoom option can rescale the chart on load to ...
π Read | VPS | @mql5dev
β€8π6π€©4π₯1
Swap is presented as a single value in the terminal, but it consists of two components: carry (interest-rate differential) and broker markup (financing fee). Carry changes sign between long and short, while markup is paid in both directions.
Given long and short swaps for a symbol, markup and carry can be derived as:
markup = -(long + short) / 2
carry = (long - short) / 2
The script normalizes all swap calculation modes into one comparable metric: annual percentage of the position notional. This enables direct comparison across FX, metals, indices, and commodities.
This matters for multi-week holding strategies where daily markup compounds into a material drag. A 0.75% annual markup on FX or 2.5% on index CFDs can eliminate expected returns even when price-only backtests look acceptable.
Output includes an on-chart table with risk bands, a full ranked...
π Read | VPS | @mql5dev
Given long and short swaps for a symbol, markup and carry can be derived as:
markup = -(long + short) / 2
carry = (long - short) / 2
The script normalizes all swap calculation modes into one comparable metric: annual percentage of the position notional. This enables direct comparison across FX, metals, indices, and commodities.
This matters for multi-week holding strategies where daily markup compounds into a material drag. A 0.75% annual markup on FX or 2.5% on index CFDs can eliminate expected returns even when price-only backtests look acceptable.
Output includes an on-chart table with risk bands, a full ranked...
π Read | VPS | @mql5dev
β€14π7π€©4π₯3π1
A non-repainting three-bar Fair Value Gap detector for MT5 is available, based strictly on closed-bar data. Each imbalance is drawn as a rectangle with an optional 50% Consequent Encroachment line. Gap levels are derived from three closed candles (pre-impulse, impulse, and the candle that leaves the imbalance) and are persisted without later rewriting.
The gap lifecycle is implemented as an explicit state machine. In TRIM mode, a gap is anchored to the first closed bar that trades into it, preventing rectangles from extending into future bars after mitigation. Mitigation display is selectable: TRIM shortens, DELETE removes, DIM greys out, and NONE leaves full length. Open gaps can be forward-extended via a configurable bar count.
Processing is incremental, scanning only newly closed bars instead of rebuilding history on each tick. A self-audit can re...
π Read | Quotes | @mql5dev
The gap lifecycle is implemented as an explicit state machine. In TRIM mode, a gap is anchored to the first closed bar that trades into it, preventing rectangles from extending into future bars after mitigation. Mitigation display is selectable: TRIM shortens, DELETE removes, DIM greys out, and NONE leaves full length. Open gaps can be forward-extended via a configurable bar count.
Processing is incremental, scanning only newly closed bars instead of rebuilding history on each tick. A self-audit can re...
π Read | Quotes | @mql5dev
β€9π7π₯3π3π€©2
A trade manager for MetaTrader 5 that splits take profit into up to five levels (TP1βTP5) for any existing position on XAUUSD, FX pairs, indices, or crypto. Distances can be set in points or as multiples of stop loss (R), with per-level close percentages and optional βclose remainder on last active levelβ.
The tool monitors manual trades and positions opened by other experts, with filtering by symbol scope and magic number. It never opens trades and performs partial closes immediately on level hits, rounding volumes to broker lot step and closing the position fully if the remainder would fall below minimum lot. Taken levels are persisted via terminal global variables to avoid repeats after restarts.
Risk controls include optional automatic stop loss assignment, breakeven move after a selected TP level with offset, and trailing stop that activates only after...
π Read | Signals | @mql5dev
The tool monitors manual trades and positions opened by other experts, with filtering by symbol scope and magic number. It never opens trades and performs partial closes immediately on level hits, rounding volumes to broker lot step and closing the position fully if the remainder would fall below minimum lot. Taken levels are persisted via terminal global variables to avoid repeats after restarts.
Risk controls include optional automatic stop loss assignment, breakeven move after a selected TP level with offset, and trailing stop that activates only after...
π Read | Signals | @mql5dev
β€11π10π€©4π₯3
GM Matrix Monitor is a read-only dashboard for supervising multi-EA accounts without repeatedly opening the terminal. It aggregates per-magic net P/L by combining closed deals with current floating profit, and presents each EAβs running result in a single column.
Risk visibility is provided via real-time drawdown, calculated from current equity against a configurable reference balance. It also tracks realized losses since day start against a daily-loss cap, and signals proximity to freeze and liquidation thresholds using color states (green/amber/red) based on user-defined percentages.
Setup consists of attaching the panel to a chart, entering a comma-separated magic list, selecting a base equity (or current balance), and configuring freeze, liquidation, and daily-loss limits. The tool reads history and positions only; it does not send, modify, or close ord...
π Read | Forum | @mql5dev
Risk visibility is provided via real-time drawdown, calculated from current equity against a configurable reference balance. It also tracks realized losses since day start against a daily-loss cap, and signals proximity to freeze and liquidation thresholds using color states (green/amber/red) based on user-defined percentages.
Setup consists of attaching the panel to a chart, entering a comma-separated magic list, selecting a base equity (or current balance), and configuring freeze, liquidation, and daily-loss limits. The tool reads history and positions only; it does not send, modify, or close ord...
π Read | Forum | @mql5dev
β€7π7π₯6π€©6
EAs that trade New York hours need a reliable broker server offset to UTC. Many brokers run UTC+2 in winter and UTC+3 in summer, but apply either US or EU daylight rules, creating 1-hour errors during the spring and autumn gaps between clock changes.
TimeTradeServer() - TimeGMT() works on live charts but depends on the local PC clock and becomes unusable in Strategy Tester, where TimeGMT() mirrors simulated server time. BrokerClock.mqh instead infers the offset from H1 history by using the known weekend close for CME-linked symbols: the last H1 bar before the weekend ends at 17:00 New York, which maps to a specific UTC instant.
The library scores candidate offset rules (fixed, US DST, EU DST) across up to 60 weekends, prioritizing the last 8 weeks, then breaks ties with the full set. It provides current server offset, live cross-check offset, calendar-based NY/L...
π Read | Quotes | @mql5dev
TimeTradeServer() - TimeGMT() works on live charts but depends on the local PC clock and becomes unusable in Strategy Tester, where TimeGMT() mirrors simulated server time. BrokerClock.mqh instead infers the offset from H1 history by using the known weekend close for CME-linked symbols: the last H1 bar before the weekend ends at 17:00 New York, which maps to a specific UTC instant.
The library scores candidate offset rules (fixed, US DST, EU DST) across up to 60 weekends, prioritizing the last 8 weeks, then breaks ties with the full set. It provides current server offset, live cross-check offset, calendar-based NY/L...
π Read | Quotes | @mql5dev
π16β€10π₯7π€©5
An ADX-based indicator automates detection of consolidation ranges by tracking trend strength decay. It replaces discretionary price-action calls with a repeatable rule set that flags when a prior trend is losing momentum and price action becomes choppy, where risk typically increases for in-range trading.
Sensitivity is controlled by InpSlopeBars, comparing ADX[shift] to ADX[shift - InpSlopeBars]. Lower values react faster and add noise; higher values smooth readings and favor broader fades.
Confirmation uses InpDeclineBars to require multiple consecutive negative ADX slope samples before opening a range.
Range termination is managed by InpEndOnStrengthRise (optional close on strength recovery) or by price breakout only. Breakout validation uses InpBreakoutPercent, while InpMinRangeBars enforces a minimum range duration before drawing.
π Read | CodeBase | @mql5dev
Sensitivity is controlled by InpSlopeBars, comparing ADX[shift] to ADX[shift - InpSlopeBars]. Lower values react faster and add noise; higher values smooth readings and favor broader fades.
Confirmation uses InpDeclineBars to require multiple consecutive negative ADX slope samples before opening a range.
Range termination is managed by InpEndOnStrengthRise (optional close on strength recovery) or by price breakout only. Breakout validation uses InpBreakoutPercent, while InpMinRangeBars enforces a minimum range duration before drawing.
π Read | CodeBase | @mql5dev
β€12π₯8π6π€©6
The article builds an MT5 Expert Advisor that trains a fully connected CNet model to predict Bill Williams fractal pivots one bar earlier than the standard indicatorβs confirmation delay. It frames the task as supervised learning: feed the latest market context, then label the previous bar after the next candle closes.
Inputs combine normalized candle features (Close/High/Low relative to Open), time components (month, hour, weekday), volumes, and four standard oscillators (RCI, CCI, ATR, MACD), producing 12 values per bar across a configurable history window. The network uses 4 hidden layers starting at 1000 neurons and shrinking by 70% per layer with a floor of 20.
Two output designs are compared: a single tanh neuron encoding buy/sell/none, or a 3-neuron probability classifier. Implementation details include loading a saved trained network, tracking MSE and hit...
π Read | Docs | @mql5dev
Inputs combine normalized candle features (Close/High/Low relative to Open), time components (month, hour, weekday), volumes, and four standard oscillators (RCI, CCI, ATR, MACD), producing 12 values per bar across a configurable history window. The network uses 4 hidden layers starting at 1000 neurons and shrinking by 70% per layer with a floor of 20.
Two output designs are compared: a single tanh neuron encoding buy/sell/none, or a 3-neuron probability classifier. Implementation details include loading a saved trained network, tracking MSE and hit...
π Read | Docs | @mql5dev
β€13π9π€©2π₯1
This article refactors an MQL5 SQLite helper to make SQL script execution cleaner, testable, and future-proof. The original design is reworked into a single C_DB_SQL class with a constructor that opens the database (optionally in-memory) and a destructor that guarantees proper close, reducing lifecycle bugs.
Script execution is improved by returning status text instead of printing to the terminal, enabling UI-agnostic error reporting. Failures are traced back to the exact script line, while successful runs return null, keeping calling code simple.
The key upgrade is supporting SQL embedded as an MQL5 resource. The implementation converts resource text into a byte buffer, parses it into statements, and reuses one private ExecSQL pipeline for both files and resources. This encapsulation keeps the public API stable while allowing future backends (e.g., client-s...
π Read | Forum | @mql5dev
Script execution is improved by returning status text instead of printing to the terminal, enabling UI-agnostic error reporting. Failures are traced back to the exact script line, while successful runs return null, keeping calling code simple.
The key upgrade is supporting SQL embedded as an MQL5 resource. The implementation converts resource text into a byte buffer, parses it into statements, and reuses one private ExecSQL pipeline for both files and resources. This encapsulation keeps the public API stable while allowing future backends (e.g., client-s...
π Read | Forum | @mql5dev
β€4π3π€©2π₯1π1