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
MetaTrader 5 object interactivity is extended from simple selection outlines to controlled resizing workflows.

Current implementation highlights a selected object but lacks usable grab handles because helper objects share a protected name prefix, making them non-selectable. Forcing initial selection on specific objects enables MT5 drag behavior, but default anchor handling creates inconsistent resizing visuals and disconnected outline segments.

The update adds dedicated corner points and uses switch fall-through to reuse creation logic while adjusting placement, producing two effective resize handles.

Event handling is then tightened: clicking should move objects without toggling their selected state. A small handler addition blocks selection-state changes while keeping drag operations active.

πŸ‘‰ Read | Forum | @mql5dev
❀19πŸ‘7πŸ‘Œ3✍2
Work continued on MT5 replay/simulation tooling to render position state directly on the chart, not in terminal text. Standard platform position visuals are insufficient under cross-order execution and replay models.

The update adds three HLINE objects per position: open price, stop-loss, and take-profit. Object naming uses the position ticket plus suffixes to keep uniqueness and support bulk cleanup on indicator removal.

A priority enumeration was introduced to reduce selection issues when objects overlap. C_Terminal and C_ChartFloatingRAD were adjusted to consume the shared priority list, keeping Chart Trade above most graphics while allowing order/position overlays to remain selectable.

Further refinements add OBJPROP_TEXT descriptions for each line so the Objects list remains self-explanatory without changing user chart settings.

πŸ‘‰ Read | CodeBase | @mql5dev
❀22πŸ‘7πŸ‘Œ2
MMAR is finalized as a native MQL5 library that packages multifractal analysis, spectrum fitting, simulation, and Monte Carlo forecasting behind a single CMMAR facade. An EA feeds returns, calls Fit(), then Forecast(); optional setters control moments, partitioning, cascade base, and RNG seeding for repeatable runs.

The pipeline extracts scaling exponents and Hurst diagnostics, then fits a singularity spectrum against multiple cascade distributions using bounded optimization. A status enum exposes partial results when spectrum fitting fails, so EAs can still use H and multifractality signals.

Forecasting runs many simulated MMAR paths to produce forward volatility plus a confidence interval, enabling risk-based position sizing and regime monitoring. The demo EA shows full portability: only MT5 Standard Library components (ALGLIB FFT/Cholesky, BLEIC, Math...

πŸ‘‰ Read | Freelance | @mql5dev
❀19πŸ‘6πŸ‘Œ5
Live EAs under news volatility routinely hit failure sequences: requotes, connection drops, spread spikes, and overlapping ticks. Immediate retries inside OnTick() can create duplicate submissions for the same signal, bypassing risk controls and producing untracked exposure.

Common patterns like Sleep(500), local retry loops, and uniform GetLastError() handling fail in three areas: no retcode classification, no cumulative failure state, and duplicated logic across the codebase. This increases missed entries, uncontrolled doubling, and cases where stop attachment fails without recovery or diagnostics.

A structured approach uses three layers: a retry executor with explicit retryable retcodes and exponential backoff; a circuit breaker tracking consecutive failures with OPEN/HALF-OPEN/CLOSED behavior; and a gateway that composes both behind a single, configured...

πŸ‘‰ Read | Quotes | @mql5dev
❀26πŸ‘10πŸ‘¨β€πŸ’»3πŸ‘Œ2✍1
New beta version 6006 is available at MetaQuotes-Demo.
πŸ‘13❀9πŸ‘2πŸ”₯1
MetaTrader 5 input parameters scale poorly: each chart instance freezes its settings at attach time, so changing lot size, stops, or filters means manually reopening properties and restarting every chart. That breaks down fast when the same EA runs across many symbols or risk profiles.

A shared JSON file becomes the single configuration source. All EA instances can read the same file (or per-symbol files) and refresh settings on a trigger, avoiding reattach cycles and enabling scripted updates outside the terminal.

The design uses a typed SStrategyConfig with safe defaults, plus a lightweight JSON tokenizer focused on a flat object (quoted keys, string/number values). It avoids DLL dependencies, handles commas inside quoted strings, and falls back cleanly when the file is missing or malformed.

πŸ‘‰ Read | AppStore | @mql5dev
❀45πŸ‘13πŸ‘Œ3
A common requirement after opening a position is automatic profit protection. The usual approach is a trailing stop that starts only after price reaches a defined profit threshold, then moves the stop to reduce downside while allowing continuation.

Key parameters are activation distance, trailing step, and update frequency to avoid excessive modifications. A break-even rule is often added: once the position is in profit by a set amount, the stop-loss is moved to entry price plus costs and a small offset.

Implementation details matter: handle bid/ask correctly by order type, respect minimum stop levels and freeze levels, and avoid repeated updates when the new stop is not better than the current one. Logging and throttling are recommended for stability under fast ticks.

πŸ‘‰ Read | Signals | @mql5dev
❀29πŸ‘8✍2πŸ‘Œ1
MetaTrader 5 file I/O in pure MQL5 runs inside a sandbox, with paths resolved to predefined roots rather than arbitrary disk locations. This becomes critical when moving from chart object handling to persistence and configuration storage.

Binary and text files can carry any payload, so format and encoding details matter. A simple string-to-char array write may include the terminator byte, which can appear as an extra character in external editors but usually does not break readback when converted correctly.

The FILE_COMMON flag switches the root from MQL5\Files to Terminal\Common\Files. Read and write calls must use the same storage scope, or the terminal may return errors or load the wrong file.

Relative paths allow subdirectories under the sandbox root, and MetaTrader 5 can create missing folders. Attempts to traverse outside the sandbox root using path t...

πŸ‘‰ Read | Forum | @mql5dev
❀18πŸ‘8πŸ‘Œ2πŸ’”2⚑1
This article digs into an underused MQL5 detail: ZOrder. It controls not just which chart object looks β€œon top”, but which one receives clicks and selection events, even when another object visually covers it. Small ZOrder differences can prevent confusing interactions after timeframe changes or when overlays are present.

That behavior becomes critical in a Position View indicator where SL/TP lines can overlap. If both share the same ZOrder, selection becomes ambiguous; assigning a higher ZOrder to one line makes event handling deterministic, but overlapping across multiple positions still exposes edge cases on hedging accounts.

To make iterative fixes safer, the indicator logic is refactored into a class, then moved into a header. Private creation methods hide implementation details, names are undefined to avoid global conflicts, and configuratio...

πŸ‘‰ Read | NeuroBook | @mql5dev
❀21πŸ‘10πŸ‘Œ4
Part 2 upgrades the earlier portfolio risk script from a single β€œrisk gap” number to full matrix inspection. A CCovarianceMatrix class wraps MQL5/OpenBLAS .Cov(), stores the [asset x asset] covariance matrix, guarantees the required layout (assets as rows, observations as columns), and keeps symbol labels attached to the data.

The script CovarianceMatrixPrinter.mq5 adds structural checks and diagnostics: it verifies symmetry with a numeric tolerance before decomposition, then prints a readable labeled grid with enough precision to expose small FX covariances and the sign of each relationship.

It then runs native .Eig() on the covariance matrix to extract eigenvalues and eigenvectors, turning total variance into independent risk factors. Traders get a clear view of which instruments share the same underlying driver; developers get a reusable compone...

πŸ‘‰ Read | CodeBase | @mql5dev
❀27πŸ‘4πŸ‘Œ2πŸ‘1
This part turns a chart-drawing toolkit into a durable workspace by persisting both drawings and UI state. It adds an SQLite layer (built into MT5) that restores objects, tool style memory, theme, panel geometry, pinned tools, and selection after timeframe changes or terminal restarts.

Drawn objects are serialized into a versioned text payload, including geometry, styling, and a timeframe-visibility mask. A small β€œsegment codec” flattens typed arrays into self-delimited text so complex tools (paths, Fibonacci levels, per-level styles) round-trip safely and can evolve without breaking old rows.

Persistence is wired into the session lifecycle using dirty tracking, transaction-based snapshots, and a simple settings key-value store. Objects are saved per symbol, IDs are re-synced on load, corrupt rows are skipped, and the tool is converted from EA to indic...

πŸ‘‰ Read | Calendar | @mql5dev
❀26πŸ‘Œ4πŸ‘3πŸ€”3πŸ‘¨β€πŸ’»3πŸ‘€2✍1
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