MQL5 Algo Trading
507K subscribers
3.36K photos
3 videos
3.36K links
The best publications of the largest community of algotraders.

Subscribe to stay up-to-date with modern technologies and trading programs development.
Download Telegram
Repeated trade utilities remain a common source of bugs and inconsistent behavior across MQL5 EAs. Centralizing them into include modules reduces duplication and makes maintenance and reviews more predictable.

A reusable positions layer typically covers position existence checks and counters with optional filters (symbol, magic, type, ticket), plus bulk close helpers including profitable/losing filters. Additional utilities return the newest or oldest position by open time for grid, pyramiding, and time-based logic.

A companion orders module mirrors the same patterns for pending orders: exists, count, recent/oldest selection, and cancel routines. Positions and orders stay separate to match MT5’s object model and execution differences.

A minimal SMA(10/20) crossover reversal EA demonstrates cleaner strategy code by delegating selection, counting, and clo...

πŸ‘‰ Read | CodeBase | @mql5dev
❀22πŸ‘6πŸ‘€3πŸ‘Œ2πŸ†2
Multi-symbol entry logic in MQL5 often ends up in hard-coded multidimensional arrays, with limited relational state management and increasing maintenance risk as strategies scale.

A proposed alternative is a Wizard-integrated signal class, CSignalBTreeBayesian, combining SQLite-style B-Tree indexing with a Bayesian neural network uncertainty filter. Parameters exposed to Wizard: BTreeMode (1–4), UseBayesian, MaxUncertainty.

BTreeMode supports direct lookup, range scan, depth discrepancy search, or a hybrid. The BNN runs repeatable Monte Carlo passes per bar (seeded by timestamp) to produce mean and variance, rejecting trades when variance exceeds MaxUncertainty. This shifts signals from deterministic execution toward confidence-gated execution in noisy regimes.

πŸ‘‰ Read | Quotes | @mql5dev
❀24πŸ‘11πŸ‘Œ2
This article connects AFML-style bet sizing to a safe pyramiding engine in MetaTrader 5 by inserting a small adapter layer, CPyramidBridge. The sizing module decides risk as a signed bet_size in [-1, 1]; the pyramid engine decides how to express that risk as multiple entries with strictly decreasing lots and a single stop that advances so total risk drops after each add-on.

Five integration points replace hardcoded engine parameters with live sizing outputs: probability-calibrated initial/add-on lots (with floor-to-step logic and trade skipping when ratios collapse), a budget-based entry gate using concurrent signal occupancy, a forecast-driven add-on trigger using BetSizeDynamic, a reserve-based adaptive trailing stop using EF3M CDF, and synchronization of the sizing signal arrays when the pyramid closes to prevent concurrency overcounts.

Implementation...

πŸ‘‰ Read | AlgoBook | @mql5dev
❀27πŸ‘6
Part II extends structured logs with two internal diagnostics: a lightweight profiler that writes CSV timing summaries, and a minimal unit-test harness for pure trading logic.

PerfMeter.mqh measures named sections, aggregates microseconds, and reports calls, total, min/max, average, and slow-call counts under a per-section threshold. The intent is stable, comparable reports across Strategy Tester runs, with clear section names and controlled sampling.

TestLite.mqh runs deterministic assertions, collects all failures, and writes a plain text report. TradeMathCore.mqh isolates testable helpers such as pip/point conversion, volume normalization, stop-distance checks, and MA crossover classification. ProfilerExampleEA.mq5 profiles event-driven paths without trading; UnitTestRunner.mq5 verifies rules before longer tester passes.

πŸ‘‰ Read | Docs | @mql5dev
❀18πŸ‘9
Many strategy failures in live trading come from execution, not signal logic. Spread expansion, erratic tick flow, quote gaps, and slippage can erase expected value, while remaining invisible on candlestick charts.

This EA is built as an execution-quality filter placed between strategy rules and the market. Per symbol, it maintains tick buffers, spread history, and volatility profiles, then blocks trading unless spread, tick velocity, quote gaps, micro-volatility, and execution stability stay within thresholds.

Only after conditions are stable does a liquidity sweep continuation module activate. It waits for a stop-hunt, requires noise settlement and a structure shift, then applies exposure caps, correlation limits, and equity-scaled sizing. Direction accuracy is not the objective; fill quality is.

πŸ‘‰ Read | CodeBase | @mql5dev
❀27πŸ‘11
MetaTrader 5 candles use fixed time widths, so high-activity and low-activity periods can look identical. The EquiVolume approach fixes this by encoding volume into candle width while keeping price range as height, making participation visible directly in the chart structure.

The indicator is built in MQL5 as a separate subwindow and draws everything with rectangle objects rather than plot buffers. It auto-selects real volume when available, otherwise falls back to tick volume, keeping it broker-agnostic.

Core logic: scan a lookback range to find max volume, normalize each bar’s volume to that reference, map it to a user-defined maximum width, then draw wick-range and body rectangles with bull/bear coloring. Performance is kept stable by updating existing objects, running once per new bar, and removing off-range rectangles.

πŸ‘‰ Read | NeuroBook | @mql5dev
❀26πŸ‘14
An on-chart XAUUSD/Gold dashboard for MetaTrader 5 focused on learning, observation, and fast market context. It does not open or close trades, manage positions, or send signals. All values should be treated as informational market data.

The panel aggregates standard platform indicators and symbol info into a compact view: live spread (points), H1 ATR volatility, H1 EMA trend bias, H4 EMA trend filter, H1 RSI state, daily range (D1 high-low), a basic session label, and optional standard/cent account text detection. Three visual themes and a configurable refresh timer are included.

Usage is limited to attaching the indicator to an XAUUSD chart; it can be viewed on any timeframe since it reads H1/H4 internally. Parameters cover panel placement, ATR/EMA/RSI periods, low/high ATR thresholds, and a spread warning level. Educational utility only; no forecast...

πŸ‘‰ Read | Freelance | @mql5dev
❀28πŸ‘21
A lightweight chart indicator displays a configurable info panel with spread statistics updated on every tick. The panel shows current spread in points and pips, plus session minimum, session maximum, and a running arithmetic mean since attachment.

Current spread output switches between two user-defined colors based on a wide-spread threshold in points. This supports quick identification of elevated execution costs during events such as session opens, scheduled news, or low-liquidity windows.

Configuration includes normal and wide colors, threshold level, font size, and X/Y offsets for placement. Implementation uses OBJ_LABEL only and does not draw indicator buffers, keeping the price chart unchanged. Statistics reset on reattach or terminal restart, and the tool works across all symbols and timeframes.

πŸ‘‰ Read | AlgoBook | @mql5dev
❀57πŸ‘5πŸ‘Œ2πŸ‘€1
A MetaTrader 4 release is available for the previously published MetaTrader 5 implementation of the Nadaraya-Watson estimator.

The MT4 version mirrors the MT5 logic, focusing on kernel-based smoothing for price series and producing the same type of output expected from the original indicator.

Recommendations remain unchanged from the MT5 release, including the same usage conditions, parameter considerations, and limits noted in the prior publication.

πŸ‘‰ Read | NeuroBook | @mql5dev
πŸ‘15❀13πŸ”₯3πŸ‘Œ3
The article contrasts β€œstatic” MT5 indicators built with compilation directives versus β€œdynamic” ones configured at runtime through standard library calls. Removing directive-based plot definitions compiles but produces no output until buffers, plots, and color palettes are explicitly set in OnInit.

A key takeaway: runtime configuration enables changing visual behavior without recompiling, but it can hide options in the indicator dialog until after the first attach, and user color changes may reset when the chart is rebuilt (e.g., timeframe change).

The approach becomes practical when an indicator must adapt to chart modes. By reading the current mode via ChartGetInteger (ENUM_CHART_MODE), the code can switch drawing logic so Inside Bar rendering matches candles, bars, or line charts, improving robustness across chart types.

πŸ‘‰ Read | Docs | @mql5dev
❀15πŸ‘9
This part of the market simulation series shifts from basic SELECT queries to the core of relational design: primary and foreign keys, used to preserve data integrity and prevent duplicate or inconsistent records.

It also recommends moving beyond MetaEditor’s minimal SQLite support when learning database concepts, using DB Browser for SQLite to edit, save, and run SQL scripts in a database-focused environment.

The article ties SQL back to algorithmic trading infrastructure: MT5 tools can reach databases over sockets, enabling scalable data flows between terminals, Excel, and server-hosted SQL. The key takeaway is to rely on SQL and proper schema constraints instead of reinventing database behavior in code, keeping systems reusable across applications.

πŸ‘‰ Read | Calendar | @mql5dev
❀22πŸ‘6πŸ”₯3
DEA (Dolphin Echolocation Algorithm) is a population-based optimizer aimed at trading-robot parameter tuning. Agents evaluate candidates, broadcast influence within an effective radius Re, and build an accumulated fitness (AF) prospectivity map. PP (predetermined probability) increases over epochs using Power to shift from wider sampling to stronger reuse of high-quality regions.

A key detail is AF reset for the current best location, which reduces early collapse into a single point and keeps neighborhood probing active. Re controls locality: small Re tightens search, mid values balance, large Re spreads influence but reduces precision.

Implementation notes cover S_Alternative and S_Coordinate storage, plus a DEA class with Init/Moving/Revision and internal routines for PP, AF, best-location reset, and next-location selection. Memory cost scales with...

πŸ‘‰ Read | Freelance | @mql5dev
❀35πŸ‘7πŸ’―3πŸ†3✍2