MQL5 Algo Trading
580K subscribers
4.68K photos
7 videos
4.69K 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
ClockDiagnostic.mq5 samples TimeCurrent() and TimeLocal() every few seconds over a fixed observation window to detect server clock failure modes relevant to MT5 scripts and EAs.

Two cases are reported: TimeCurrent() freezing when no ticks arrive, and TimeCurrent() stepping backwards after symbol changes, reconnections, or cross-instrument ticks. Inputs include InpSeconds=60 for observation length and InpStep=2 for the sampling interval.

Output includes both clocks, the initial offset in seconds and hours, a β€œ>>> STEP BACK” line on each backward move, and a window summary: number of readings, seconds advanced by each clock, longest freeze, and step-back count, followed by a verdict. Documented rule: use TimeLocal() for timestamps, date/day transitions, and expiry; use TimeCurrent() for session hours and alignment with market data. The measurement is lim...

πŸ‘‰ Read | Forum | @mql5dev
πŸ‘22❀11🀩3πŸ‘Œ3πŸ”₯1
SafeLogger.mqh provides serialized CSV logging for multiple concurrent EAs without missing lines. It appends a single record per call by opening the file with exclusive access (no FILE_SHARE_WRITE) and retrying up to 8 times with 40 ms backoff, for 320 ms total wait while another writer holds the handle. If all attempts fail, it emits an explicit error and prints the dropped line content.

SafeLogWrite(file, fields) prefixes TimeLocal() and the current symbol and writes time;symbol;fields. SafeLogHeader(file, header) writes the header once when the file does not yet exist.

A demo script supports InpFile, InpLines, and InpSafeMode. It reports mode, successful writes, line counts before/after, elapsed time, and flags >>> N LINE(S) LOST when contention causes missing records. Data loss is only reproducible with concurrent writers; running on four charts with InpS...

πŸ‘‰ Read | VPS | @mql5dev
❀21πŸ‘8πŸ”₯8🀩3⚑1
ContractSizer.mqh provides balance-based contract sizing with three independent protections: a ladder, a floor, and a breaker. The ladder assigns one contract per balance factor with a hard cap. The floor blocks trading below a minimum capital threshold. The breaker halts sizing after drawdown exceeds a defined fraction of the balance peak and does not rearm automatically.

Deposits and withdrawals are taken from deal history via DEAL_TYPE_BALANCE and applied to the stored peak by the same delta. This prevents deposits during drawdown from masking the drawdown state. Peak is persisted under MQL5\Files and survives terminal restarts.

Usage calls ContractsToday(TimeLocal()) on each tick, recalculating only on day change. CapByBalance() enforces limits even with manual lots; Rearm() remains a manual action. Demo inputs simulate a 12-day path including a deposit...

πŸ‘‰ Read | AppStore | @mql5dev
πŸ‘13❀12πŸ”₯11🀩6😐2
A diagnostic Expert Advisor for MetaTrader 5 has been released as a non-trading utility focused on runtime environment auditing. After being attached to a chart, it collects broker and terminal specifications and presents them via an on-chart panel with live updates, the terminal Experts log, and an exported CSV stored under MQL5/Files.

Captured data is grouped by operational category. Time zone metrics calculate broker server time, local PC time, and the precise offset versus UTC. Trading cost fields include swap calculation method, long and short swap values per 1 lot in account currency, and current spread.

Symbol rules cover digits, contract size, min/max/step volume, Stop Levels, and Freeze Level. Execution and connectivity reporting includes ping latency, connection state, supported filling modes (FOK, IOC), and margin calculation method. Account deta...

πŸ‘‰ Read | AlgoBook | @mql5dev
❀17πŸ‘16🀩6πŸ”₯5
RiskPilot Pro reduces trade setup friction by keeping entry, stop loss, and take profit as draggable chart objects. Position size is recalculated on mouse release, using a fixed risk percentage of account balance rather than a fixed lot size, keeping exposure consistent across different stop distances.

Cross-pair sizing is handled via broker-provided currency conversion instead of assuming the account currency matches the symbol profit currency, improving accuracy on pairs such as USDCHF and USDJPY.

Functions include one-click order placement, ATR-based RESET for volatility stops, optional break-even and trailing stop automation, and account-level guards. Daily loss and max-drawdown limits can close tool-opened positions and block new trades until the next day. A basket-risk readout shows projected combined exposure before adding another position.

πŸ‘‰ Read | AlgoBook | @mql5dev
❀13πŸ‘12πŸ”₯5🀩5πŸ†2
SMC Liquidity Sweep Scalper is an EA for MetaTrader built around liquidity sweeps: price wicks beyond a recent swing high/low, then closes back through the level. The sweep candle is treated as an order block, and entry is taken only after a configurable confirmation break of structure through that zone.

Swing levels are tracked using closed bars to avoid repainting. Risk is managed with SL beyond the sweep extreme and TP set by fixed R:R, sized by risk % of balance. Parameters are normalized with ATR so the same configuration behaves consistently across symbols.

A higher-timeframe EMA trend filter can restrict trades to the broader bias. Additional gates reject weak setups based on ATR, spread, and confirmation momentum. The EA also maintains an on-chart scorecard: each setup is labeled with its own historical win rate and updated to WIN/LOSS after close.

...

πŸ‘‰ Read | VPS | @mql5dev
πŸ‘14❀13πŸ‘¨β€πŸ’»3πŸ‘Œ2
S.M.A.R.T. ICT/SMC V3.0 Session Manipulation & Algorithmic Reaction Tracker is a free MT5 analytical indicator that scans three configurable symbols (defaults: EURUSD, GBPUSD, USDJPY). Internal analysis is M5 by default, while the indicator can run on any chart timeframe. All logic is based on closed bars and it never opens, modifies, or closes positions.

Validation is a strict sequence: sweep of a completed Asia or London range, close through a pre-sweep swing to form an MSS, minimum displacement on the MSS candle, a three-candle directional FVG, then a later bar retest that closes beyond the FVG midpoint. Breaching the frozen sweep extreme after MSS invalidates the sequence.

A Quality Score (80–100) is produced only after completion and represents confluence within this model, not win probability. Projections define entry at the FVG-retest close, S...

πŸ‘‰ Read | Calendar | @mql5dev
❀22πŸ‘7πŸŽ‰3πŸ‘Œ3✍2🀩1
MetaTrader 5 can run ONNX models, but treats them as opaque binaries, making it hard to validate inputs, outputs, and saved weights when predictions look wrong. The article solves this by decoding ONNX directly inside MT5 with pure MQL5, avoiding external libraries.

It builds a two-layer approach: a Protocol Buffers wire reader that can parse varints, fixed-width values, and length-prefixed blocks, plus an ONNX-aware parser that reconstructs the computation graph by matching shared tensor names between node outputs and inputs.

A Python script generates a known test model with branches, mixed tensor storage formats, and type conversions, then Netron provides ground truth. The MQL5 tool can list nodes, operators, connections, and inspect weight tensor shapes, types, and ranges before risking live trades.

πŸ‘‰ Read | AlgoBook | @mql5dev
❀22πŸ‘10
VSA_Candles.mq5 adds native candlestick bar coloring on the main chart using volume confirmation. Green marks confirmed strength signals (Down Thrust/Spring, Selling Climax, Bag Holder, No Supply). Red marks confirmed weakness signals (Up Thrust, Buying Climax, Bag Seller, No Demand). Blue highlights dojis and spinning tops for balance zones. Yellow flags classic price-action shapes without volume extremes.

A SAR-style dot trail provides a dynamic trend/stop overlay that flips and tightens based on buy/sell exhaustion. Closed-bar hover tooltips show bar time, volume vs MA multiplier, spread, and expected reaction. A left-side on-chart glossary lists pattern short and full names.

VSA_Glossary.mq5 adds a dual-direction subwindow: upward color-graded volume columns with high/ultra background clouds, and inverted spread bars with auto-scaling fill. Zero-...

πŸ‘‰ Read | NeuroBook | @mql5dev
❀21πŸ‘14πŸ‘¨β€πŸ’»3✍2πŸ”₯2πŸ‘€1
Setup requires compiling the source and attaching the EA to a clean chart with no indicators or objects. Operation is intended for live charts only, not Strategy Tester. Configure historical start time, session duration, and Renko brick size in price units. Use LOAD, then PLAY or NEXT BRICK. Submit BUY or SELL and advance the replay to execute a virtual entry. END closes the session, NEW starts a fresh run, and EXPORT writes the current summary.

With start set to zero, the default anchor is 09:00 on the previous weekday in broker server time, with a six-hour duration. The interval must be fully historical with broker tick data available. The panel reports balance, equity, max drawdown, closed trades, win rate, profit factor, and R results. CSV trades and summaries are saved to MQL5/Files/GDS_Renko_Trainer.

Limits include one symbol, one virtual position, and f...

πŸ‘‰ Read | Quotes | @mql5dev
❀17πŸ‘7🀩3πŸ”₯2
SSCNN targets noisy, unstable market time series by working with segments instead of single points, after decomposing data into trend, seasonality, short-term moves, and residual noise. Forecasts are built by aggregating specialized models per component, improving interpretability.

This part focuses on AttnNorm: attention-weighted normalization that learns where to focus inside each segment, stabilizing mean/variance estimates during spikes. The implementation emphasizes GPU execution via OpenCL kernels, with careful CPU↔GPU buffer setup, kernel parameterization, synchronization, and data integrity checks.

Two MT5/OpenCL layer objects are detailed. CNeuronAttentNorm computes trainable attention weights, normalizes them with SoftMax, then runs AttentNorm and AttentNormGrad kernels for forward/backward passes, delegating weight updates to the attention modul...

πŸ‘‰ Read | NeuroBook | @mql5dev
❀21πŸ‘10πŸ†3
CRiskCalculator is an object-oriented MQL5 header library for risk management and volume sizing in EAs and trading utilities. It computes monetary pip value and lot size from a defined cash risk and Stop Loss distance in pips.

Position sizing on cross-currency symbols is handled with a dual-engine approach. The primary path uses terminal symbol properties such as SYMBOL_TRADE_TICK_VALUE and SYMBOL_TRADE_TICK_SIZE. When broker data is missing or uninitialized, it switches to manual base/quote parsing with conversion-rate queries to produce account-currency results.

Volume output is normalized to broker constraints by clamping to SYMBOL_VOLUME_MIN and SYMBOL_VOLUME_MAX and snapping to SYMBOL_VOLUME_STEP to reduce invalid volume rejections.

The class is encapsulated as CRiskCalculator, avoids global scope noise, and auto-detects ACCOUNT_CURRENCY on initializa...

πŸ‘‰ Read | Freelance | @mql5dev
❀11πŸ‘7
Finite Volume Elements (FVE) refines classic volume analysis by weighting volume with price location inside the bar and typical-price change, then applying a CutOff threshold to ignore small fluctuations. The result is a cleaner read of accumulation vs distribution, with support for both real and tick volume in MetaTrader 5.

An extended variant, FinVolEleLinRegSl, adds linear-regression slopes for both FVE and Close, making it easier to spot when price and volume momentum align or diverge. This turns FVE from a static pressure gauge into a tool for tracking acceleration, weakening trends, and early divergence cues.

The article also shows a practical EA integration: classify each slope line as rising, falling, or turning, combine both into a discrete β€œstate,” and use that state as a direction filter for existing signals (e.g., WPR + Bollinger), ignori...

πŸ‘‰ Read | VPS | @mql5dev
❀16πŸ‘6πŸ”₯1😁1πŸ‘¨β€πŸ’»1
Cricket Algorithm (CA) is a 2015 metaheuristic by Canayaz and Karci, combining update mechanics from Bat Algorithm, global-best guidance from PSO, and pairwise attraction from Firefly. Agent interaction is computed via acoustic propagation and atmospheric absorption, with chirp rate mapped to temperature using Dolbear’s law.

Each iteration samples chirps N, derives temperature and speed of sound, then sets frequency from distance to global best. Velocity/position updates add a sound-speed term, then a strategy switch uses an absorption-derived coefficient: either sequential attraction toward all better agents with decaying noise alpha, or a local random walk around the best.

Implementation notes highlight normalization of distance, speed, frequency, and absorption to keep values bounded. A class design uses a per-agent velocity structure, parameter...

πŸ‘‰ Read | AlgoBook | @mql5dev
❀32πŸ‘6🀩3πŸ”₯2πŸ‘€1
This article finalizes an SSCNN-based market forecaster by assembling previously built modules into a single MQL5/OpenCL Encoder designed for noisy, regime-shifting price series.

The Encoder splits input into four parallel branches: long-term trend, seasonality (phase-aligned via cycle transposition), short-term dynamics, and cross-feature β€œspatial” structure. Each branch applies normalization (including attention-based normalization where useful), then extrapolates both residuals and their statistics into the forecast horizon.

Several engineering choices stand out: replacing a trainable extrapolation matrix with a linear convolution for shared weights and GPU efficiency; using tensor transposition to separate mean/variance streams without copying; zeroing gradient buffers to avoid variance-gradient contamination; and generating horizon-wide mean ...

πŸ‘‰ Read | NeuroBook | @mql5dev
❀19πŸ‘11πŸ”₯7πŸŽ‰1🀩1πŸ‘Œ1πŸ‘€1
PropFirm account monitoring EAs often fail in three areas: inputs get reset across restarts, identical logins on different servers cause rule collisions, and invalid percentages or threshold ordering reach drawdown math.

Part 1 establishes a strict foundation before any compliance logic runs. Runtime account state is separated from persistent rule configuration, inputs are validated during OnInit with fail-fast errors, and SQLite persistence is keyed by account login plus trading server.

Implementation covers the EA lifecycle, shared enumerations, grouped Inputs, SAccountState and SAccountSettings, UpdateAccountState(), and ValidateComplianceInputs(). It then adds database globals, OpenDatabase()/CloseDatabase(), schema creation with a composite primary key, and prepared-statement helpers.

Startup order becomes: validate, read account identity, open DB, ensu...

πŸ‘‰ Read | NeuroBook | @mql5dev
❀21πŸ‘11πŸ”₯7🀩3✍1πŸ‘Œ1🀑1
MetaTrader 5’s dataanalysis.mqh turns ALGLIB into a practical, in-terminal research stack: preprocessing, PCA, decision forests, clustering, and more, all usable directly from MQL5.

The workflow builds a supervised dataset from bars: five numeric features per bar, then a label based on the next bar’s close-to-close return (bearish/neutral/bullish with a threshold). CBdSS standardizes only the inputs and keeps training statistics for consistent live normalization, avoiding data leakage.

PCA (CPCAnalysis) is used as a structural diagnostic to detect redundant features, not as a predictor. A random forest (CDForest) is trained via the builder API, producing OOB error for sanity checks and permutation importance to rank which measurements actually drive class separation.

The script is positioned as a template for an EA pipeline (features β†’ model β†’ decis...

πŸ‘‰ Read | AppStore | @mql5dev
🀩17❀13πŸ‘10πŸ”₯5🀑3πŸŽ‰2πŸ‘Œ1
Replay/simulation series update: position visualization is being moved out of Expert Advisors into a dedicated indicator, with a strict separation between server linkage and chart rendering.

A stability fix is added to EA initialization: on restart, stale position objects are purged to avoid mismatches after crashes or configuration changes such as contract type switches.

Interaction is implemented via custom chart events. OnTradeTransaction in the EA emits EventChartCustom on volume changes, SL/TP updates, and closures (NETTING), while initial position creation still triggers indicator placement.

The position indicator receives and filters these events in OnChartEvent, updating or deleting HLINE objects based on current position state, keeping logic testable and minimizing duplicated code across EAs.

πŸ‘‰ Read | Quotes | @mql5dev
❀23πŸ‘8πŸ”₯6🀩2
Reinforcement learning in trading remains unstable due to non-stationary regimes, sparse rewards, high-dimensional states, and costly exploration. Classical DQN can overfit to historical volatility, then fail when markets shift, with retraining downtime not viable.

A hybrid stack is proposed: quantum state encoding + Double DQN + an LLM adapted via MIT SEAL. Quantum circuits compress 6 market inputs into 6 distribution statistics; entropy is used as a regime-instability signal.

The LLM produces direction and confidence; SEAL keeps only top-reward forecasts for periodic fine-tuning, asynchronously. A minimal Q-table agent then filters signals with 27 discretized states and 3 actions: USE, SKIP, REDUCE, enabling low-risk integration into existing trading logic.

πŸ‘‰ Read | Docs | @mql5dev
❀16πŸ‘8🀩4πŸ”₯2
Index CFD backtests can look stable while quietly bleeding overnight financing. In MT5, swap modeling is hard to audit: brokers use POINTS (fixed points/night) or INTEREST (annual % of price), the optimizer cache doesn’t store swap per pass, and the tester applies today’s swap snapshot across the entire history.

A read-only MT5 script converts each symbol’s swap into an annualized % of position notional, making financing comparable across brokers and instruments. Real scans showed the same indices costing roughly -4.7% to -9.9% per year long, while shorts could be credited or charged depending on broker and symbol.

Deal-level analysis matters: in a multi-year swing test, swap consumed 44% of gross profit overall, and fully erased one index’s gains. Practical workflow: re-run best optimizer passes as single tests, inspect deals per symbol, distrust ...

πŸ‘‰ Read | NeuroBook | @mql5dev
❀12πŸ‘5πŸ”₯2⚑1πŸ†1