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
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
❀19πŸ‘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
❀22πŸ‘2πŸŽ‰2πŸ‘Œ1
Static retest-bar limits don’t scale across symbols and timeframes: volatility shifts can make a fixed range either miss valid pullbacks or accept noisy confirmations. The solution is an adaptive retest range selected from historical behavior, not manual tuning.

Each Malaysian Engulfing setup is stored with formation time, zone bounds, retest time, and retestBars, then evaluated from a consistent entry rule (open of the bar after the retest). A forward scan computes MFE and MAE in points, enabling objective comparison across setups.

A single-parameter constrained brute-force search groups setups by retestBars, computes avgMFE and avgMAE per group, and scores them using avgMFE βˆ’ avgMAE. In MQL5, optimization runs in OnInit over a clamped date window, outputs separate bullish/bearish optimal ranges, and applies them in OnCalculate with a runtime summar...

πŸ‘‰ Read | Quotes | @mql5dev

#MQL5 #MT5 #Indicator
❀28πŸ‘8😱5πŸ‘Œ1
An interactive MT4 script consolidates per-symbol trading parameters into a single view, combining MarketInfo and validated SymbolInfo data. It targets operational fields such as margin requirements, contract size, currency conversion rates, and leverage, reducing reliance on broker documentation for day-to-day checks.

Symbol selection is driven by the Market Watch list with support for β€œSelect”, which is relevant on servers carrying large symbol catalogs. Output is organized with MarketInfo values in the left column, and SymbolInfoInteger/String/Double values in the center and right columns.

A MODE_LEVERAGE line is included, derived per symbol as:
Leverage = Bid * ContractSize * Rate(profit currency to account currency) / MarginRequired.

πŸ‘‰ Read | Forum | @mql5dev

#MQL4 #MT4 #script
❀23πŸ‘5πŸ‘Œ2😁1
An MT5 Tools Palette can render cleanly and still be non-functional without an interaction layer. Production behavior requires bitmap-label hit-testing, a single OnChartEvent handler for CHARTEVENT_* inputs, and a deterministic state machine that maps input to tool selection, panel manipulation, and object placement.

The implementation targets flyout tool menus with scrolling, drag-and-snap panel positioning, bottom-edge resize, and live theme switching. Tool placement is defined by an interaction contract: activeTool, required click count, and a fixed placement sequence supporting 1/2/3-click objects.

Architecture is expanded into cooperating classes: tool registry, multi-layer canvases including HR flyout surfaces, layout + hit-tests, flyout manager, renderer, event router, and a drawing engine. Data structures add a 35-item TOOL_TYPE enum, per-...

πŸ‘‰ Read | CodeBase | @mql5dev

#MQL5 #MT5 #AlgoTrading
❀49πŸ‘7πŸ‘Œ6
Aura Heiken Ashi is a trend-following indicator built to reduce noise and focus on higher-probability entries. It extends classic Heiken Ashi with multiple confirmation layers intended to keep signals aligned with the prevailing market direction.

Core logic combines dual smoothing (SMMA plus EMA), dynamic supply and demand lines from recent imbalances, and a 200 EMA trend gate that permits bullish signals only above the line and bearish signals only below it. Momentum checks are validated with CCI and MACD, while ADX suppresses low-quality periods by switching candles to gray in low-volatility ranges. Tick volume is compared to local averages to confirm participation.

Operational rules: green candles favor longs above the 200 EMA, ideally near demand. Red candles favor shorts below the 200 EMA, ideally near supply. Gray candles indicate no trade. Con...

πŸ‘‰ Read | Freelance | @mql5dev

#MQL4 #MT4 #Indicator
❀27πŸ”₯4πŸ‘Œ4😱1πŸ†1
Tick series are consolidated into a single collection to support multi-symbol workflows in MQL5. The implementation is based on a sorted CListObj storing pointers to CTickSeries instances, one per symbol, aligned with existing DoEasy collection patterns.

Core methods cover lookup by symbol, accessors for ticks by list index or timestamp (including millisecond resolution), and batch operations: setting β€œused” flags, configuring history day depth, creating series, and producing short/full journal dumps. New-tick and refresh hooks are present but marked for later completion in CTickSeries.

Engine.mqh is extended to build the tick series collection alongside the existing timeseries collection via SetUsedSymbols(days). A test EA removes direct tick-series ownership and queries the library collection to find per-symbol max Ask and min Bid ticks; sample initializa...

πŸ‘‰ Read | AppStore | @mql5dev

#MQL5 #MT5 #EA
❀55πŸ‘Œ8πŸ‘6✍2
RSI histogram bars based on two periods can be implemented by calculating separate RSI values, applying smoothing to each series, then plotting the resulting delta or combined signal as a histogram. The approach typically uses a fast RSI for responsiveness and a slower RSI to reduce noise, with smoothing applied via SMA, EMA, or Wilder-style averaging.

Visualization is handled by converting the final series into positive and negative bars, allowing trend shifts and momentum changes to appear without relying on line crossings. Common additions include zero-line filtering, configurable smoothing length, and optional color changes by slope to avoid false flips during consolidation.

πŸ‘‰ Read | Docs | @mql5dev

#MQL4 #MT4 Please paste the post text (or upload an image/screenshot of it), and I’ll generate 2 compliant hashtags.
❀19πŸ‘Œ1
IMF SDMX-JSON releases provide standardized macro datasets across ~190 countries, suitable for cross-country comparison beyond local statistical quirks. Practical value starts after building a pipeline for multi-level JSON parsing, frequency alignment, revision handling, and data-quality flags.

Key signals often come from external balances and fiscal stress. Current account deficit thresholds (for example, below -5% of GDP) have preceded sharp FX repricing in past episodes. Composite scores can be built from GDP, CPI, unemployment, trade flows, debt, and budget balance, with non-linear interactions and rolling correlations.

Operational requirements include caching to respect API limits, robust missing-data treatment, and an integration layer from Python analytics to MT5/MQL5 for signal delivery and backtests.

πŸ‘‰ Read | NeuroBook | @mql5dev

#MQL5 #MT5 #AlgoTrading
❀14😁1πŸ‘Œ1
CPyramidEngine is a plug-in MQL5 class that adds disciplined pyramiding to any EA with minimal integration. The EA keeps ownership of entry signals; the engine manages add-on triggers, decreasing lot sizing, a single unified stop across all layers, broker-level stop validation, restart recovery, and detection of manual/external closes.

The core design targets two common failure modes: equal-sized add-ons that multiply exposure, and independent stop losses that make worst-case risk unknowable and fragile when modifications fail. By enforcing strictly smaller add-ons and advancing one shared stop after each addition, total worst-case account risk can mathematically shrink as the pyramid grows.

Risk is computed in account currency using tick value/tick size, avoiding pip-based errors across gold, indices, crypto, and non-USD accounts. The engine requires he...

πŸ‘‰ Read | Freelance | @mql5dev

#MQL5 #MT5 #AlgoTrading
❀22πŸ‘Œ1
GARCH remains a fast, well-understood baseline for volatility forecasting, but its core assumptions break in real markets: return tails are too thin, volatility persistence decays too quickly, and behavior does not transfer cleanly across timeframes.

MMAR reframes the problem as a price process driven by fractional Brownian motion evaluated on β€œtrading time,” a non-uniform clock that accelerates during high-activity periods and slows in quiet regimes. This single structure generates fat tails, long memory, volatility clustering, and scale consistency without bolting on separate fixes.

The implementation follows Zhang (2017) as a reproducible Python pipeline using the MetaTrader5 API: load 5-minute EURUSD data, then validate multifractal scaling via a partition-function test to confirm the data is fractal before forecasting.

πŸ‘‰ Read | NeuroBook | @mql5dev

#MQL5 #MT5 #AlgoTrading
❀10πŸ‘Œ1