MQL5 Algo Trading
503K subscribers
3.28K photos
2 videos
3.28K 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
Weekend gap reversion is often treated as a certainty, but results depend on instrument-specific statistics. A Weekend Gap Statistics & Distribution Analyzer measures how frequently gaps close, expected favorable movement, and the adverse movement typically seen before closure.

The tool separates results into three windows: last 5 gaps, last 12 months, and full history. It tracks gap size plus MFE and MAE to quantify reward versus required drawdown. Percentile-based TP levels show how many points 95/70/50/25% of gaps reached, while SL survival percentiles show the heat tolerated by gaps that eventually closed.

Configuration includes a minimum gap size in points and a capped bar lookback for performance. Output is shown in a small lower-left dashboard with automatic light/dark text for chart readability.

πŸ‘‰ Read | Freelance | @mql5dev

#MQL5 #MT5 #Indicator
❀22πŸ‘4πŸ‘Œ1
Packing an MQL5 EA into OnTick scales into a fragile monolith where UI, filters, execution, and logging collide. MetaTrader 5 is event-based, so logic should follow the platform’s model: OnInit/OnDeinit for lifecycle hygiene, OnTick for market reactions, OnTimer for periodic background work, OnChartEvent for UI and inter-module messaging, OnTradeTransaction for order lifecycle tracking, and OnBookEvent for depth-driven strategies.

Custom events (EventChartCustom) act as an internal message bus across modules and even across charts, enabling multi-symbol systems without tight coupling. This improves responsiveness and testability by isolating behaviors per handler and avoiding long blocking routines.

Services extend the architecture beyond charts, running continuous background tasks in OnStart (data sync, custom symbol ticks, scheduled signals) and coordinating ...

πŸ‘‰ Read | AppStore | @mql5dev

#MQL5 #MT5 #EA
❀22⚑1πŸ‘1πŸ‘Œ1
Media is too big
VIEW IN TELEGRAM
We’ve released a new video on one-click trading in MetaTrader 5 β€” a feature that lets you open and manage trades instantly, without extra confirmations.

Execution speed plays a critical role in trading. In this video, you will see how the platform's built-in tools allow you to place market orders instantly, manage positions directly on the chart, and react quickly to market changes.

βœ“ Watch this short video to learn how to:
βœ“ Enable the feature and trade without additional confirmations
βœ“ Open trades in one click from the on-chart panel
βœ“ Use trading panels in the Market Watch window
βœ“ Set Stop Loss and Take Profit by simply dragging levels
βœ“ Instantly close positions and remove protective levels
βœ“ Place and modify pending orders directly on the chart
βœ“ Use Depth of Market for fast trades and order management

One-click trading in MetaTrader 5 means maximum speed, convenience, and full control over your positions.

Discuss the video:
πŸ‘‰ MQL5.community for traders
πŸ‘‰ MetaQuotes official YouTube channel
❀17πŸ‘8πŸ”₯4πŸ‘Œ2πŸ‘€1
Grid-searching PT/SL on historical Sharpe is statistically fragile. Two free parameters will often select a rule that fits path-specific noise rather than the underlying trade P&L process, matching the LΓ³pez de Prado overfitting criterion.

A process-based alternative estimates a discrete Ornstein–Uhlenbeck model on cost-adjusted per-trade P&L, then derives PT/SL via OTR on 100,000 synthetic paths. SL is bounded by risk constraints; PT is driven by the forecast assumption.

The forecast is the key modeling choice. forecast=0 implies mean-reversion. forecast=E[P&L] is conservative directional. forecast=E[win] is optimistic directional. Units (pips vs returns) are a linear rescale; phi/half-life is invariant. Numba makes the sweep practical on a single machine.

πŸ‘‰ Read | NeuroBook | @mql5dev

#MQL5 #MT5 #EA
❀25✍7πŸ”₯4πŸ‘1
A two-stage MQL5 indicator design uses ALGLIB matrix.mqh (CMatrixDouble) to compute a rolling Market Score from trend, momentum, and volatility.

Trend is linear-regression slope over a sliding price window. Momentum is end-to-start delta. Volatility is window standard deviation. Score = wTrend*trend + wMom*momentum - wVol*volatility, evaluated on closed bars to avoid future leakage.

Stage 1 is a separate-window oscillator to validate math and scaling. Stage 2 moves to the main chart with threshold-cross arrows, optional 200-EMA direction filter, MinBarsBetween cooldown, and one alert per bar with state tracking.

πŸ‘‰ Read | Calendar | @mql5dev

#MQL5 #MT5 #AlgoTrading
❀24
MetaTrader 5 time-based candles can mask true activity: a 1-minute bar built from hundreds of ticks looks like one built from a handful. The article implements tick bars where each candle closes after N ticks, making charts reflect trade intensity for scalping and tick-driven systems.

An EA creates a dedicated custom symbol (cloned from the source instrument) and configures key properties like digits, point, and tick size, then optionally opens a chart for that symbol and avoids duplicates by scanning existing charts.

On every OnTick, the EA reads live prices, aggregates ticks into OHLC, assigns monotonic timestamps, and pushes both the forming bar and completed bars to the terminal via CustomRatesUpdate for real-time rendering.

πŸ‘‰ Read | VPS | @mql5dev

#MQL5 #MT5 #AlgoTrading
❀47πŸ‘Œ6πŸŽ‰3πŸ†3✍2πŸ‘1
John Ehlers published an alternative RSI calculation as part of a broader indicator set, commonly referenced as MyRSI. Due to material differences versus the platform’s standard RSI, a standalone implementation is often justified for testing and integration in existing workflows.

Key differences are structural. Output is normalized to the -1 to 1 range rather than 0 to 100, making the zero line a practical reference for regime changes. Because the scaling and internal math differ, values are not directly comparable to standard RSI levels, and common thresholds such as 50 do not translate as equivalent signals.

Operationally, it can still be used in typical RSI-style setups, with thresholds and triggers recalibrated to the normalized range.

πŸ‘‰ Read | Docs | @mql5dev

#MQL5 #MT5 #Indicator
❀20πŸ‘7πŸ‘Œ2
Malaysian Engulfing is treated as a strict, code-friendly engulfing variant for MT5/MQL5, addressing two gaps: inconsistent real-time detection and lack of post-signal context.

The rule set is unambiguous. Bullish: a bearish candle followed by a bullish candle opening at or below the prior close and closing above the prior high. Bearish: a bullish candle followed by a bearish candle opening at or above the prior close and closing below the prior low.

The workflow is split into two indicators. A strict detector renders arrows only for β€œperfect” candidates. A retest validator runs a lightweight state machine (SEARCH β†’ FOUND β†’ reset/confirm), defines a high/low zone, enforces invalidation, limits retests via barsRetestRange, and confirms returns with a wickThreshold filter.

Output is deterministic: arrows, rectangles, and confirmation events suitable for bac...

πŸ‘‰ Read | NeuroBook | @mql5dev

#MQL5 #MT5 #Indicator
❀27⚑4πŸ‘2πŸ‘Œ1
MAPIE (Model Agnostic Prediction Interval Estimator) is an open-source Python library for uncertainty quantification via conformal prediction, using a dedicated calibration set. It supports prediction intervals for regression and prediction sets for classification and time series, with scikit-learn API compatibility and wrappers for TensorFlow and PyTorch models.

The core property is finite-sample, distribution-free coverage under exchangeability. This is relevant for financial data where heavy tails and non-stationarity make classical interval assumptions unreliable. Output shifts from point labels to set-valued decisions, enabling explicit β€œact / reduce / abstain” rules based on set size.

MAPIE exposes multiple conformity scores and modes, including LAC, APS, RAPS, and Mondrian variants for class-conditional coverage, addressing imbalance in buy/sell styl...

πŸ‘‰ Read | VPS | @mql5dev

#MQL5 #MT5 #AI
❀26πŸ‘2πŸ‘Œ2
Candlestick analysis often breaks in automation because terms like β€œlong body” or β€œsmall wick” are interpreted differently, producing inconsistent MT5 signals and unreliable backtests.

This article replaces subjective pattern naming with an alphabetical encoding driven by measurable body-to-wick ratios. Each bar is deterministically classified into symbols (A/a, H/h, E/e, G/g, plus Doji), with uppercase/lowercase pairing bullish and bearish equivalents.

In MQL5, a CandleType(shift) classifier converts OHLC into codes, then two-candle patterns are detected by concatenating symbols and matching valid permutations. A lookback parameter scans historical bars once per new candle, emitting reproducible logs and alerts.

The result is a stable, testable signal layer that’s easy to scan, filter, and evaluate statistically, while leaving risk and money manage...

πŸ‘‰ Read | VPS | @mql5dev

#MQL5 #MT5 #Indicator
❀46πŸ‘6πŸ‘Œ5⚑4
Constant exposure is a common failure mode in retail algorithmic trading. Many systems assume persistent exploitable structure and run 24/5, even when markets shift into near-random regimes where edge collapses. In those conditions, expected returns converge toward transaction costs, making spreads and commissions the dominant outcome.

Quant desks often gate execution with Information Theory rather than standard technical filters. A Shannon Entropy Index estimates the probability distribution of rolling log-returns and quantifies randomness via H(X) = -Ξ£ P(x) log2 P(x). High entropy implies higher efficiency and low predictability; low entropy suggests structural inefficiency where trend or mean-reversion systems have a higher probability of working.

Operationally, entropy can function as a portfolio-level master switch: allow strategies to trade onl...

πŸ‘‰ Read | CodeBase | @mql5dev

#MQL5 #MT5 #Indicator
❀27πŸ‘1πŸ‘Œ1πŸ‘€1
MetaTrader 5 forward-simulation logic can add context after an EMA crossover instead of leaving traders with an isolated signal.

A compact engine anchors on the crossover bar, freezes EMA slope at that point, then projects a fixed count of synthetic candles forward using a 0.91 decay so each step weakens. Controlled noise is applied to steps and wick sizes to avoid a rigid linear path.

Implementation details include EMA buffers/handles, a PredictedCandle OHLC struct, timer-driven refresh, and redraw avoidance via anchor tracking. Signal invalidation is handled with a pip-threshold rule. Rendering uses chart objects for bodies and wicks, plus a separator and state labels, with strict cleanup on updates and removal.

πŸ‘‰ Read | AppStore | @mql5dev

#MQL5 #MT5 #Indicator
❀17πŸ‘Œ3✍1
Most ML pipelines drop timestamps after building return and price features. That removes market structure encoded by the clock: session boundaries, overlap windows, and calendar-driven flows.

Raw integer time breaks cyclic topology. Hour 23 and hour 0 become far apart, linear models extrapolate, and trees split on meaningless distances. The standard fix is sin/cos cyclical encoding, extended with Fourier harmonics to represent asymmetric intraday patterns.

Forex time context is non-stationary across four UTC sessions (Sydney, Tokyo, London, New York). Overlap flags isolate the highest liquidity regime. Session-conditional rolling volatility must be masked, forward-filled, and shift(1) applied to avoid lookahead.

Calendar flags capture repeatable order-flow events: Friday NY close, Sunday open, month-end, quarter-end. A timeframe gate should drop ir...

πŸ‘‰ Read | CodeBase | @mql5dev

#MQL5 #MT5 #AlgoTrading
❀26πŸ‘4πŸ‘Œ4⚑1
Gaussian Process Regression (GPR) models a distribution over functions, not just a best-fit curve. That produces forecasts with calibrated uncertainty via posterior mean and covariance, letting trading systems reason about confidence intervals instead of relying on point signals.

Kernel choice defines behavior (smooth RBF, linear trend, periodic cycles) and kernels can be combined to capture mixed market structure. With Gaussian observation noise, the model smooths rather than interpolates, and distinguishes uncertainty of the latent function f* from uncertainty of future observations y*.

Accuracy depends on tuning kernel hyperparameters and noise variance by minimizing negative log marginal likelihood. The implementation avoids costly matrix inversion using Cholesky decomposition, and optimizes parameters with ALGLIB, making GPR practical to run from MQL5.

πŸ‘‰ Read | Forum | @mql5dev

#MQL5 #MT5 #AI
❀46πŸ‘Œ5
GlowTrend Pro is a trend-following indicator focused on visual state changes and reduced noise via a smoothed moving average. The plot switches color based on slope to flag momentum direction.

Blue line signals bullish momentum, while red line signals bearish momentum. β€œGlow” dots are printed at the moment the state flips and can be treated as timing markers for entry or exit review.

The indicator supports configurable period, averaging method (EMA, SMA, Smoothed, Linear Weighted), and price source (Close/Open/High/Low). Linked-buffer logic is used to keep transitions continuous and avoid broken segments on the chart. Default lookback is 20; higher values smooth output at the cost of latency.

Operational guidance typically pairs a color change with the corresponding dot. Common use cases include H1/H4 for swing setups and M5 during high-volatility s...

πŸ‘‰ Read | VPS | @mql5dev

#MQL4 #MT4 #Indicator
❀29πŸ‘3πŸ‘Œ2
ML in MetaTrader 5 becomes practical when the entire preprocessing pipeline is rebuilt inside MQL5, not split across Python and the terminal. Feature generation, scaling, redundancy removal, and model input formatting are linear-algebra steps that must match training exactly, or inference runs in a different data space and signals get distorted.

The article organizes features into an X matrix and uses MQL5 vectors/matrices for consistent normalization and PCA projection. Keeping these transforms in MQL5 makes them testable in the Strategy Tester and adjustable when symbol/timeframe distributions shift, without retraining the network.

Python is used only to train (LSTM with dropout, batched DataLoader, MSE/Adam), compute normalization/PCA parameters, then export to ONNX. In MQL5, initialization loads stats and PCA matrices once; the per-bar loop rebuilds the sam...

πŸ‘‰ Read | AppStore | @mql5dev

#MQL5 #MT5 #AI
❀49πŸ‘Œ10πŸ‘8πŸ†3
A symbol implementation viewer service runs in a separate window inside MT5 and can remain active while monitoring chart changes. The report language switches between RU/EN without recreating the window. The interface targets compact, readable output with scrolling and window resizing.

Setup and use: copy the service to MQL5\Services, compile in MetaEditor, then start it from Navigator. After launch, changing the observed chart symbol or timeframe triggers an automatic refresh. Controls include Left/Right for horizontal scroll, Up/Down for vertical scroll, RU/EN for language, and Close to terminate the service.

The report aggregates symbol details in one place: Bid/Ask, point/tick/digits/spread, daily high/low, trade modes and restrictions, volume limits, value of price movement in account currency, margin/leverage estimates, swaps, volatility/time par...

πŸ‘‰ Read | Calendar | @mql5dev

#MQL5 #MT5 #script
❀14πŸ‘4✍1😁1πŸ‘Œ1
Multi-timeframe EAs in MQL5 often fail in long runs for two reasons: indicator handles get created repeatedly and never released, and signals are calculated from the still-forming bar (shift 0). Short tests hide both issues, while live terminals show rising mt5.exe memory, β€œIndicatorCreate failed” journal lines, and unstable signal counts.

A structured fix is a small MTF engine that centralizes lifecycle and indexing. Handles are created once in OnInit(), tracked internally, and released via a single ReleaseAll() in OnDeinit(). Buffer reads default to bar_shift=1 to avoid phantom crossovers.

For HTF reads, readiness needs more than CopyBuffer() returning data. Checking iTime(symbol, timeframe, 1) prevents stale values when the higher timeframe has not recalculated yet.

πŸ‘‰ Read | Forum | @mql5dev

#MQL5 #MT5 #EA
❀18πŸ‘4πŸ†4πŸ”₯1πŸ‘Œ1
Biogeography-Based Optimization (BBO), proposed by Dan Simon in 2008, models optimization as migration between habitats. Each habitat is a candidate solution; HSI is fitness; species represent solution variables. High-fitness habitats have high emigration and low immigration, while low-fitness habitats show the opposite.

Core mechanics: rank-based species counts drive immigration/emigration rates, migration copies selected variables from high-emigration habitats into high-immigration ones, and elitism preserves the top N solutions. Mutation is applied to non-elite habitats with a rate inversely related to habitat existence probability, pushing both weak and extreme solutions to change more often.

A reference implementation uses a derived C_AO_BBO class with Init, Moving, and Revision, plus rate/probability calculation, roulette selection for migration so...

πŸ‘‰ Read | Forum | @mql5dev

#MQL5 #MT5 #AlgoTrading
❀20πŸ‘1πŸ‘Œ1
A lightweight MetaTrader 5 β€œchart replay” workflow can be built directly inside Strategy Tester Visual Mode by adding a simple UI layer to an EA. Using CButton for on-chart controls and CTrade for execution, BUY/SELL actions become one-click events handled in OnTick by checking button state, sending orders, then resetting the control.

Trade management is kept deterministic and fast: a CLOSE ALL button loops through open positions and closes only those owned by the EA via a Magic Number, using CPositionInfo for selection and filtering. Risk controls start as inputs (lot size, initial stop), then evolve into an automated trailing stop that updates SL only when price moves far enough in favor, reducing churn and locking in gains.

The practical payoff is rapid manual validation of strategy logic (entries, filters, failure cases) before spending time coding full...

πŸ‘‰ Read | Signals | @mql5dev

#MQL5 #MT5 #EA
❀26πŸ‘Œ3
MetaTrader 5 EA events are received by a Flask API and acknowledged, but persistence is missing. Successful responses without SQLite writes block pipeline verification and downstream analysis.

Backend behavior is extended to store each closed trade as a durable Trade row. POST /api/v1/trades accepts only valid JSON, validates required fields, converts numeric values, and parses open_time/close_time using YYYY.MM.DD HH:MM:SS. On success it commits the transaction and returns 201 with trade_id; on failure it rolls back and returns 4xx or 5xx.

API endpoints are completed for retrieval and inspection: list trades, fetch a single trade by id with 404 on miss, and a basic summary computing trade count and total profit. This enables end-to-end testing from MT5 to SQLite and back through the API.

πŸ‘‰ Read | Docs | @mql5dev

#MQL5 #MT5 #EA
❀21πŸ‘2πŸŽ‰2πŸ‘Œ1