MQL5 Algo Trading
541K subscribers
3.87K photos
6 videos
3.88K 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
Forex intraday movement is driven by repeatable liquidity cycles tied to global trading sessions and scheduled events, not random chart noise. Session overlaps, especially London/New York, concentrate volume and volatility, while Asia and the Pacific tend to be quieter and range-bound.

The article focuses on intraday seasonality in spreads between symbols using the ISI ProSpread SMA indicator. It applies probability and basic statistics to detect hour-by-hour directional bias and strength that are hard to see visually.

ISI ProSpread SMA supports four calculation modes (spread/price SMA, price difference, volatility index, candle strength), configurable trading hours and history depth, plus a dashboard that reports hourly probabilities and bias. Practical uses include intraday timing, spread/arbitrage setups, seasonal pattern research, and signal conf...

πŸ‘‰ Read | VPS | @mql5dev
❀45πŸ‘6πŸ‘€3πŸ‘Œ1
Chart Navigator MT5 Light adds a compact mini-chart to the main price chart to speed up navigation across long history ranges. The visible area is highlighted with a frame, allowing fast repositioning without manual scrolling.

Clicking on the mini-chart moves the main chart to the selected point. Dragging the frame shifts the viewport quickly. Vertical lines placed on the main chart are mirrored on the mini-chart as time markers, enabling one-click jumps back to saved events such as signals, trades, news timestamps, or review zones.

The mini-chart supports dynamic date readout on hover, mouse-based resizing, and a low-height bottom bar mode to minimize screen usage. Start and optional end dates can limit the displayed range.

Implementation details: canvas rendering only. No trading logic, no trade requests, no DLL usage, no external services, and no...

πŸ‘‰ Read | NeuroBook | @mql5dev
❀33πŸ‘4πŸ‘Œ3πŸ‘2
Classic indicators such as RSI, MACD, and moving-average crossovers have lost statistical edge as markets adapted to widely shared signals. Reported win rates for simple MA crossover systems shifted from 65–70% in the 1990s to ~52% by 2010, nearing 50% in recent conditions.

Early neural nets improved nonlinearity but struggled with sequence context; RNN/LSTM designs faced vanishing gradients on long histories. Standard Transformers improved long-range handling but introduced O(NΒ²) attention cost and frequent overfitting on continuous market series.

PatchTST reframes time-series input into fixed patches (often 16 bars) and uses multi-channel features such as price change and log volume. This reduces compute, preserves local structure, and supports hierarchical attention across intraday and multi-session dependencies.

πŸ‘‰ Read | Calendar | @mql5dev
❀27πŸ‘3πŸ‘Œ2
This part extends candlestick encoding from single bars to ordered two-candle sequences, using an MQL5 script that builds overlapping pairs, counts occurrences, and ranks them by frequency across GBPUSD and XAUUSD on M5, M15, and H1.

A key finding is that the most common pairs often include an unclassified β€œ_” candle (especially β€œ__”), showing the classifier leaves many bars outside defined types. Filtering those out reveals the real structure: fully classified pairs are dominated by Marubozu transitions (A and a).

Across timeframes and both symbols, the top classified patterns are consistently Aa, aA, aa, and AA, with spinning-top transitions (G/g) appearing far less. The output is best used to shortlist candidate transitions for later return/testing, not as signals by itself.

πŸ‘‰ Read | VPS | @mql5dev
❀18πŸ‘3πŸ‘Œ3πŸ‘€2
This article replaces lagging indicator filters with a rule-driven β€œorder block” engine that detects imbalance zones: the last opposite candle before an impulse that breaks nearby structure (MSS), then keeps the zone valid until a retest mitigates it.

The logic validates zones via displacement intensity, a full close beyond the structural high/low, and mitigation on closed bars only (shift=1). Zones are tracked using the base candle’s OHLC and removed immediately after a wick retest on a completed candle.

Engineering focus: a reusable OrderBlock_Engine.mqh class shared by both an indicator and an EA, using heap allocation with pointer checks and safe deletion. Ind_OrderBlock visualizes zones efficiently with prev_calculated and EMPTY_VALUE handling; EA_OrderBlock adds a new-bar gate, CTrade execution, and notes netting vs hedging position selection.

πŸ‘‰ Read | NeuroBook | @mql5dev
❀21πŸ‘12πŸ‘¨β€πŸ’»2πŸ‘Œ1
The key new feature of MetaTrader 5 Beta Build 6030 is built-in support for the Model Context Protocol (MCP) and agentic AI.

The terminal and MetaEditor now include an integrated AI Assistant that can help analyze markets and trading activity, develop MQL5 applications, explain code, identify errors, and automate complex tasks.

Another important addition is Passkey support β€” a modern technology for securing trading accounts. Passkeys provide an additional authentication factor during sign-in, protecting users against phishing attacks and unauthorized access.

For developers, we've significantly enhanced MetaEditor. The editor now includes the long-awaited code folding and 'highlight all occurrences' features, making it much easier to work with large projects.

Learn more...
❀51πŸ‘11πŸ”₯9πŸ‘Œ7
FoxWave P/L Calendar converts closed-trade history into a monthly profit/loss calendar view, providing a daily breakdown without generating separate reports. The grid follows a Mon–Sun layout and scales to the exact number of weeks in each month, avoiding unused rows.

Daily cells are color-coded with intensity tied to magnitude, making larger gains and losses immediately visible. The current day is highlighted, and month navigation is handled via a single control for quick back/forward review.

The panel detects the account deposit currency and presents figures accordingly. A summary bar aggregates monthly P/L, counts profit and loss days, and identifies best and worst sessions. An optional single-symbol filter limits results to one instrument or keeps the view account-wide.

History is read on a periodic timer rather than per tick, keeping runtime ov...

πŸ‘‰ Read | AppStore | @mql5dev
❀30πŸ‘6πŸ‘€4πŸ‘Œ2πŸ”₯1
Local trade copier setup for MT5/MT4 uses a Go transport bridge and a C# WPF dashboard, with master/slave EAs attached per terminal. The dashboard provides a unified view of copied trades and bridge logs.

MT5 archived DLL-based routing uses a ZeroMQ bridge. Start T5Copier_Bridge.exe from C:\T5Copier\Go_bridge\ and confirm ports 5567 (master in), 5568 (slave out), 5569 (dashboard logs). Run CSharpDashboard.exe from C:\T5Copier\Dashboard\ and connect to MT5 on port 5569. Attach T5Copier_Master with DLL imports and Algo Trading enabled, address tcp://localhost:5567. Attach T5Copier_Slave with lot mode, multiplier, and optional reverse copy.

MT5 DLL-free mode uses native TCP sockets via T5Copier_Bridge.exe on port 5580. Dashboard connects to port 5580. Master/Slave EAs require Algo Trading only, with server 127.0.0.1 and port 5580.

MT4 mode uses a ZeroMQ bridg...

πŸ‘‰ Read | Signals | @mql5dev
❀25πŸ‘7⚑2πŸ€”2πŸ‘Œ1
The Expert Advisor uses an equity-based portfolio model, avoiding broker-side SL/TP and managing exits through internal equity thresholds per cycle.

Entry checks run once per bar using Close[1] and Open[0] against indicator buffers. Cycle 1 is MA-based: buys require both prices strictly above the MA, sells require both strictly below. Cycles 2 and 3 use Envelopes as breakout filters: buys require both prices above the upper band, sells require both below the lower band. Cycle 3 mirrors Cycle 2 with its own magic number and deviation.

Risk control snapshots Account Equity on the first trade of a cycle and computes monetary target and risk levels from percent inputs. On every tick, floating P/L plus swap and commission are aggregated per magic number; breaching either threshold closes all positions for that cycle and resets state. A noted anomaly applies /100...

πŸ‘‰ Read | Forum | @mql5dev
❀14✍4πŸ‘4πŸ‘Œ1
An Expert Advisor design based on four independent trading cycles (Cycle 1–4), each isolated by its own Magic Number, indicator stack, entry triggers, and money management rules.

Cycle 1 uses MA/RSI/WPR confluence with a binary c1_signal gate to invalidate conflicting signals. MA entries require prior close and current open on the same side of the MA. RSI and WPR use configurable overbought/oversold thresholds, with optional reverse-signal flipping and a one-trade-per-bar constraint via a stored bar open price.

Cycle 2 trades Envelopes breakouts (close and open beyond upper/lower band). Cycle 3 reuses Envelopes but executes the opposite side for mean reversion. Cycle 4 adds a point-distance filter versus Envelopes to enforce minimum displacement before acting.

Exits avoid per-trade SL/TP and instead track per-cycle equity baselines on the first position, t...

πŸ‘‰ Read | VPS | @mql5dev
❀23πŸ‘7⚑4πŸ‘Œ1
Part III tightens a MetaTrader 5 supply/demand framework into a consistent decision pipeline: quantitative zone admission, event-driven lifecycle monitoring, and deterministic interaction resolution. Logging stays observational, but records every state transition with enough metadata to reconstruct behavior later.

Automatic zones now enter the system only after AnalyzeZoneCandidate() assigns a normalized 0–100 score from three signals: relative tick-volume spike, ATR-normalized departure strength over a lookahead window, and local swing symmetry. The result drives tiering (Elite/High/Moderate/Low) and a MinZoneScore gate to keep weak pivots out.

After passing the gate, TryCreateAutoZone() performs integrity checks (wrong-side levels, duplicates, blacklists, clustering) then registers a fully initialized zone for MonitorZoneLifecycle(). Manual zones b...

πŸ‘‰ Read | Quotes | @mql5dev
❀22πŸ‘5πŸ‘Œ1
This MT5 project builds an implied-volatility surface indicator directly in the terminal. It loads an option chain from native MT5 option symbols or a CSV file, converts mid prices to implied vols, arranges them into a strike-by-expiry grid, then renders a shaded, rotatable 3D surface via the built-in DirectX layer.

The numerical core uses Black–Scholes plus a robust implied-vol solver: Newton-Raphson when vega is reliable, with bracketed bisection fallback to handle deep ITM/OTM quotes and ensure convergence. Invalid quotes (below intrinsic) are rejected.

Data handling turns scattered contracts into a regular mesh-ready grid, fills missing cells with conservative forward/backward carries, and tracks min/max IV for scaling and coloring. Practical result: live skew and term structure visualization from real quotes inside MT5.

πŸ‘‰ Read | AlgoBook | @mql5dev
❀32πŸ‘6⚑2πŸ‘Œ1
Many Forex EAs still execute trades using legacy indicators despite low signal-to-noise, long dependencies, and regime shifts that break stationarity assumptions.

An N-BEATS pipeline was implemented in MQL5 from scratch: matrix tensors with gradient storage, SiLU with stable exponent bounds, Adam, quantile loss for uncertainty, robust median/MAD normalization, anomaly handling, and hysteresis to prevent signal churn. Production concerns included caching on OnTick(), memory control, profiling, continuous training, and concept-drift monitoring with automated response.

Backtests on Jan–Aug 2025 did not produce stable profitability, unlike prior Mamba and PatchTST variants. Key gaps were market noise, missing microstructure effects, and unfavorable compute-to-edge ratio, while the engineering stack remains reusable for further research.

πŸ‘‰ Read | NeuroBook | @mql5dev
❀36πŸ‘5✍2πŸ€”2🀯2πŸ‘Œ1
KCI Volatility Distance is an adaptive quantitative engine designed to measure momentum and trend direction using a matrix-based calculation. It focuses on filtering market noise and outputting a standalone directional strength value suitable for systematic decision-making. The codebase uses an OOP core intended to stay lightweight on VPS deployments and stable across multi-asset workloads.

Core components include a Matrix Momentum Engine to evaluate internal price dynamics for early directional strength, a Dynamic Noise Filter that recalibrates to reduce consolidation spikes and false triggers, and a Directional Strength Output that can drive entries, continuation validation, or position sizing.

Integration into automated systems is supported via two paths: embedding the OOP class directly in an EA for lower overhead and easier data collection, o...

πŸ‘‰ Read | Docs | @mql5dev
❀21πŸ‘5πŸ‘¨β€πŸ’»5✍3πŸ‘Œ2
KCI-Directional Matrix (KCI-DX) is a quantitative directional indicator that models market β€œkinematics” via price path length variance and energy-weighted movement scoring. It applies dynamic Z-Score normalization plus Sigmoid scaling, keeping outputs bounded in a stable 0–100 range and avoiding distortion from historical extremes.

The matrix exposes three signals: KCI Main (trend/compression strength), +KDI (bullish directional dominance), and -KDI (bearish directional dominance). Typical zones: below 20 indicates compression/no-trade conditions, 20–80 signals trend expansion where direction follows +KDI vs -KDI, and above 80 flags exhaustion risk and potential correction.

For automation, entry logic is based on +KDI/-KDI crossovers gated by KCI Main > 20, with exit or tighter trailing behavior when KCI Main approaches 80. Parameters can be adjusted...

πŸ‘‰ Read | CodeBase | @mql5dev
❀20πŸ‘4πŸ‘¨β€πŸ’»4πŸ‘Œ1
Fixed-window correlation matrices in multi-symbol EAs lag regime shifts. With a 60-bar window, pre-shift data contaminates estimates for the full 60 bars, degrading hedges and risk budgets when covariance changes fastest.

Exponentially weighted covariance updates every bar, overweights recent returns, and uses constant memory. Each cell updates recursively with decay factor lambda and current return products, avoiding history buffers and re-scans.

MQL5 runtime sizing limits require storing an NΓ—N matrix as a flat 1D array. Production code needs warm-up gating, near-zero variance guards for correlation normalization, and clamping to [-1, 1]. A live heatmap renderer must pack colors as 0x00BBGGRR and skip correlation calls during cold start to avoid log storms.

πŸ‘‰ Read | NeuroBook | @mql5dev
❀16πŸ‘10πŸ‘Œ1
Multi-strategy MT5 accounts can hide strategy-level risk behind aggregate account metrics. Terminal reports remain account-wide and do not provide attribution, date filtering, or cross-strategy correlation.

A standalone EA, Portfolio Analyzer, reads deal history, reconstructs closed positions, attributes them by magic number or normalized comment, and renders a dashboard without modifying any trading EA.

Architecture centers on a self-contained CPortfolioAnalyzer class with explicit setters instead of direct access to global inputs. Closed positions are paired from DEAL_POSITION_ID, sorted by exit time for equity and drawdown, and filtered via tokenized comment normalization.

UI uses CCanvas with manual ARGB blending and DPI scaling. Analytics include portfolio stats, an equity curve, and a Pearson correlation matrix based on daily strategy returns.

πŸ‘‰ Read | CodeBase | @mql5dev
❀27πŸ‘5πŸ†4πŸŽ‰2πŸ‘Œ1
Part 4 moves from UT Bot Alerts signals to an MQL5 Expert Advisor that can execute trades reliably.

Execution is gated by new-bar detection. Signals are read only from buffer index 1 (last closed candle), using CopyBuffer() with timeseries arrays to avoid acting on unstable values from the forming bar and to prevent repeated triggers inside one candle.

Position control is single-direction. Opposite positions are closed before opening a new one, filtered by a magic number. Trade direction is configurable (buy, sell, both). Optional risk controls use ATR from the last closed bar for stop-loss, and take-profit is computed from risk via a reward-to-risk ratio. Trade actions are isolated into buy/sell functions for testable, modular logic.

πŸ‘‰ Read | Calendar | @mql5dev
❀34πŸ‘4⚑3πŸ‘Œ1
MetaTrader 5 file handling in MQL5 is constrained by the sandbox and by function choice. FileSave/FileLoad operate on whole-file buffers, which is safe for small data but unsuitable for random access and partial updates.

A common symptom is unexpected overwrite: two consecutive FileSave calls to the same name keep only the second payload. Another issue is unwanted NUL bytes when treating binary-style strings as plain text.

A practical pattern is read-modify-write: load the existing file into a buffer, append new lines, then save once. For repeated runs, either delete the file in a synchronized sandbox context, or use a static flag to clear on first write while appending afterward.

πŸ‘‰ Read | Signals | @mql5dev
❀18πŸ‘6πŸ‘Œ1
MetaTrader 5 replication/simulation stack moves to component integration: Expert Advisor, Mouse Study, Chart Trade, and a dedicated position indicator.

The position indicator is no longer user-attached. The EA dynamically adds and removes one indicator instance per open position, while keeping the indicator decoupled from EA code to allow shared updates without recompiling multiple EAs.

Indicator changes include parameters supplied by the EA and additional validation: confirm the position exists and prevent duplicate instances via object-name checks.

EA changes are minimal but highlight a common defect: attaching indicators for all open positions without filtering by the chart’s effective symbol. In multi-symbol setups, this can surface only in live trading. A safe fix should leverage existing terminal symbol resolution without breaking encapsulation in C...

πŸ‘‰ Read | Signals | @mql5dev
πŸ‘12❀8✍1πŸ‘Œ1
MetaTrader 5 charts remain symbol-centric, which limits visibility into correlated moves across related instruments. A practical workaround is a synthetic custom symbol built from multiple markets by averaging aligned OHLC bars.

An MQL5 Expert Advisor can load OHLCV for selected source symbols, match candles by timestamp, and compute per-bar averages for open, high, low, close, and optionally volume. Only bars present across all sources are included to avoid skew from missing sessions.

The EA then creates or reuses a custom symbol, copies formatting from a template symbol, disables trading mode, clears prior history, and writes the reconstructed series. Live synchronization is handled via a timer that recalculates only the most recent bars to keep updates lightweight.

πŸ‘‰ Read | Quotes | @mql5dev
❀20πŸ‘6⚑1πŸ‘Œ1