MQL5 Algo Trading
555K subscribers
4.06K photos
6 videos
4.06K 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
A lightweight approach to customizing the MetaTrader 5 AI Assistant is shown via a prompt file generated by an MQL5 script. The assistant’s language, persona, menu structure, and response behavior can be adjusted by editing a plain text prompt, without using an AI API, DLL, or external service.

The AI_Prompt_Writer.mq5 script writes AI_Prompt.txt into the terminal’s MQL5\Files folder. Users select one of 11 response languages and a predefined persona, optionally set the output filename, and choose whether to overwrite an existing file. After loading the prompt in the assistant, a custom numbered menu becomes available for actions such as news checks, chart analysis, and trade review.

The sample is positioned as a template rather than a complete solution. It also enforces strict safety limits: no order placement or modification, no position management, no para...

πŸ‘‰ Read | Quotes | @mql5dev
❀24πŸ‘8πŸ‘Œ4🀑2πŸ”₯1🀩1
Gold intraday range is session-driven. For XAUUSD, most of the daily move typically forms between 13:00 and 16:00 GMT during the London/New York overlap, while Sydney and Tokyo often stay confined. The 22:00 GMT rollover hour frequently prints the widest spread.

An indicator can visualize this with one high/low box per session (Sydney, Tokyo, London, New York), plus a thicker outline for the 13:00–16:00 overlap and a shaded rollover band across the day’s high/low. Each box is labeled with the current session range and the average of the last N completed sessions.

Session inputs are defined in GMT. Server offset is computed via TimeTradeServer() minus TimeGMT(), rounded to 15 minutes, and refreshed on every new bar to stay aligned through DST changes.

Implementation uses chart objects only (no buffers), exact ranges via CopyHigh/CopyLow, redraw on new ...

πŸ‘‰ Read | Docs | @mql5dev
❀25πŸ‘9🀩2🀑2πŸ‘¨β€πŸ’»2✍1πŸ”₯1
Completed Bar Trend Regime Dashboard is a lightweight MT5 indicator that summarizes market structure using completed candles only. The panel combines EMA structure and slope, ADX/DI strength, higher-timeframe confirmation, ATR-based volatility context, breakout position, and spread versus ATR.

Regime classification requires agreement between the signal timeframe and the higher timeframe. When alignment is missing, the output switches to range or transition rather than assigning a directional label.

Panel interpretation focuses on EMA stack and the close versus the filter EMA, fast EMA slope, ADX with DI+/DI- pressure, and higher-timeframe validation. ATR and body/ATR provide volatility context, breakout flags location versus the recent range, and spread/ATR highlights execution friction relative to volatility.

Suggested US500 configuration uses H4 a...

πŸ‘‰ Read | AlgoBook | @mql5dev
❀17πŸ‘9πŸ”₯2🀩2πŸ‘€2🀑1
Pending Order Inspector MT5 is a read-only indicator for pre-validating BUY_STOP and SELL_STOP inputs against the current symbol contract. It converts common server-side rejections into a client-side report before Send is pressed. No trading functions are used: no OrderSend, OrderCheck, CTrade, price suggestion, auto-normalization, or risk sizing in v1.00.

It reads Point, tick size, volume min/max/step, stops and freeze levels, Bid/Ask/spread, trade mode, order permissions, and quote age. Point and tick size are shown separately to catch prices that have valid digits but violate the tick grid.

Checks include order side vs Bid/Ask, tick-grid validity for entry/SL/TP, volume bounds and step, stops-level distances, permission for stop orders and SL/TP, and stale quotes. Results are PASS, INVALID, CHECK, UNKNOWN, or INFO, with adjacent grid values shown for of...

πŸ‘‰ Read | CodeBase | @mql5dev
πŸ‘14❀3🀑3🀩2
A SuperTrend port is only useful if it matches the reference numerically, not just visually. This implementation aligns with TradingView output bar-for-bar and includes a reproducible verifier based on exported OHLC plus indicator outputs.

Ports typically drift for three reasons. Pine’s ta.rma uses Wilder smoothing with alpha=1/n and specific seeding, not EMA with 2/(n+1). Platform ATR functions also differ in warm-up and true range handling, creating a permanent offset inside the recursion. A common logic error is ignoring β€œsticky” bands that only tighten and only flip after a close through the band, which can change the trend on roughly half the bars.

Validation compares MQL5 results against a Python recomputation from identical inputs and reports the first failing bar. Tests across EURUSD, USDJPY, XAUUSD, GER40, and BTCUSD show zero direction mi...

πŸ‘‰ Read | AlgoBook | @mql5dev
❀16πŸ‘8πŸ”₯4✍3
This part closes a common gap in MT5 EAs: risk-based position sizing can still generate lots the account cannot margin, especially when ATR stops get tight and computed volume rises. Risk (loss at stop) and margin (capital locked at entry) are independent constraints, and ignoring margin leads to rejected orders or trades that consume nearly all free margin.

The fix adds a margin-aware lot cap using OrderCalcMargin() to price 1 lot, then converts free margin into a broker-valid maximum volume with step-aware rounding. If even the minimum lot exceeds the cap, the trade is skipped; otherwise the risk-based lot is reduced.

An optional adaptive layer scales the cap by ACCOUNT_MARGIN_LEVEL, tightening exposure as margin level deteriorates and blocking new trades below a danger threshold.

Finally, checks are consolidated into a named pre-trade validation gate (pos...

πŸ‘‰ Read | CodeBase | @mql5dev
❀14πŸ‘9🀩2πŸ”₯1
LLM trading models can decay faster than they can be retrained: strong short-term accuracy collapses as regimes shift, and standard fine-tuning overwrites older behaviors that may return in cyclic markets.

SEAL (Self-Evolving Adaptive Learning) reframes the loop into continual learning from live outcomes. Each closed trade becomes feedback, but examples are weighted by move size and β€œconfident but wrong” cases to correct false pattern detection.

A prioritized ring-buffer memory blends freshness with retention of rare, high-value events, while retraining is triggered by quality/regime-change signals (volatility, volume, error distribution) and runs asynchronously to avoid blocking execution. Switching training data from raw JSON to narrative context improves indicator relationship learning.

Operational safeguards cover black swans (anomaly stop), overfitti...

πŸ‘‰ Read | Calendar | @mql5dev
❀18πŸ‘13πŸ‘5🀩4πŸ”₯2πŸ†1
Forum demand for indicator alerts and multi-timeframe signals remains constrained by a common limitation: many users only have compiled .ex5 files, not source, and maintaining custom edits across multiple indicators does not scale.

A standalone approach uses iCustom to load indicators by name and read their buffers without source. EXPLORE mode probes buffers, counts non-empty/zero/blank values across recent bars, and prints a per-bar table so the visible plot or sparse signal buffer can be identified reliably.

WATCH mode then applies triggers to the selected buffer: value appears, level cross, buffer-to-buffer cross, or value change. Closed bars are evaluated by default, with optional tick-by-tick evaluation on the forming bar, still limited to one alert per bar.

A separate change audit distinguishes late values (blank becomes populated later) from repain...

πŸ‘‰ Read | Quotes | @mql5dev
❀18πŸ‘7🀩4πŸ”₯2
An Expert Advisor built around a SuperTrend port where correctness is defined by matching TradingView output and by matching trades to signals, not by profit claims.

Execution is limited to closed bars to prevent transient intra-bar flips from generating trades that do not exist at bar close. The EA reads the SuperTrend direction via iCustom, trades one position at a time, tags orders with a magic number, and places the stop on the line with an optional points offset. On a flip, the position is closed and reversed.

A known edge case is handled: if the next-tick entry would place the stop on the wrong side (price already beyond the line), the signal is dropped and logged rather than forcing an invalid or near-instant stop-out.

An audit logs the indicator value on every closed bar, then a Python check verifies one entry per flip and zero mismatches (example:...

πŸ‘‰ Read | CodeBase | @mql5dev
❀24πŸ”₯8πŸ‘6🀩4
Trading-system costs are measurable, but commonly underestimated. A read-only Expert Advisor calculates one round-trip cost per broker and symbol using tick-sampled live spread, swap for long and short including the triple-charge day, and commission derived from closed deals. It also prints the spread value many tools rely on next to the measured one.

Bar β€œspread” fields are per-bar summaries, not the current quote. On XAUUSD, 60 live readings showed 20 points while the M1 field median was 6, which breaks spread filters and flatters backtests, especially with high trade counts.

Swap is often omitted in custom simulators. It is asymmetric and includes a triple weekday. Example on gold per 0.01 lot: βˆ’0.5842 long, +0.4098 short, Wednesday tripled.

Implementation details include counting distinct quotes, refusing closed-market sampling via TimeCurrent vs TimeTra...

πŸ‘‰ Read | AppStore | @mql5dev
❀28πŸ‘14πŸ”₯3🀩3πŸ‘Œ2πŸ†1
Prop Firm Rule Checker is a read-only diagnostic script that evaluates closed-trade history from a live/demo account or Strategy Tester runs against common prop-firm evaluation constraints. Results are printed as a PASS/FAIL report in the Experts/Journal log, reducing manual post-backtest calculations.

Checks include profit target versus starting balance, max daily loss by calendar day, peak-to-valley overall drawdown, a consistency limit to flag single-day profit concentration, and minimum distinct trading days.

Usage involves attaching the script to any chart or running it after a tester pass, then configuring inputs for balance, thresholds, and date range. It uses HistorySelect() only and does not open, modify, or close trades. Rules differ by firm and must be set from the official rule sheet.

πŸ‘‰ Read | VPS | @mql5dev
❀19πŸ‘12🀩6πŸ”₯5🀣2
Most position size calculators evaluate only the next trade and ignore existing exposure. That approach can overstate available risk when multiple symbols are correlated, such as stacking EURUSD and GBPUSD in the same direction and effectively increasing USD exposure.

This script estimates a standard risk-based lot size, then reviews all open positions across the account. It computes recent correlation between each open symbol and the target symbol using the last N bars on a selected timeframe, evaluates whether directions amplify or offset, and aggregates risk already allocated to correlated positions. If combined exposure approaches or exceeds a configurable basket limit, the recommended lot size is reduced.

Output is written to the Experts/Journal log with the positions flagged, correlation values, direction impact, and the adjusted lot size. If any ...

πŸ‘‰ Read | Signals | @mql5dev
❀16πŸ”₯9πŸ‘8🀩6πŸ€”3
Risk-Based Lot Size Calculator is a lightweight MQL5 script designed to standardize position sizing using fixed account risk.

Inputs are limited to InpRiskPercent (risk as a percent of balance, default 1.0) and InpStopLossPips (stop distance in pips, default 20). The script reads the current account balance and symbol trading properties including tick value, tick size, and volume limits (min, max, step).

Lot size is calculated so that a stop-out at the specified pip distance equals the configured risk amount. Output volume is rounded down to the nearest valid step and constrained to broker limits. The calculated lot size and a full breakdown are displayed on-chart and written to the Experts log. Live broker parameters are used, avoiding hard-coded pip assumptions across symbols and account types.

πŸ‘‰ Read | Docs | @mql5dev
πŸ‘13❀9πŸ”₯8🀩7✍1🀯1πŸ‘¨β€πŸ’»1
MQL5 datetime is an integer epoch (seconds since 1970), but broker server timestamps are the broker’s wall clock stored as if it were UTC. When exported as a raw epoch and parsed as β€œ1970 UTC” in Python or spreadsheets, timestamps shift by the server’s UTC offset. On a UTC-3 server, a daily bar at 00:00 becomes 21:00 of the prior day, and session boundaries move without any parsing errors.

A diagnostic script prints the available clocks and deltas: TimeTradeServer() (server wall clock, works without ticks), TimeCurrent() (last tick time, freezes when ticks stop), TimeGMT() (UTC from the PC), and TimeLocal() (PC local time). It reports server-GMT, local-GMT, server-local, tick lag, plus optional last bar time in server time and real UTC (InpShowLastBar=true).

Guidance: export server timestamps as wall-clock text, or export epoch together with the measured...

πŸ‘‰ Read | Calendar | @mql5dev
❀10πŸ‘5πŸ”₯5🀩2