Trading tables invite a common mistake: sorting noisy estimates and trusting the top row. When each entry is a sample mean, the “winner” often just captured upward noise and won’t repeat out of sample.
The article implements James–Stein shrinkage in MQL5 to reduce total squared estimation error when comparing 3+ means. Estimates are pulled toward a shared center using a data-driven shrink factor, with safeguards like the positive-part clamp and explicit diagnostics showing when theoretical dominance conditions hold (notably, shrink-to-mean requires k≥4).
Real trading data rarely has equal precision, so an empirical Bayes variant assigns per-coordinate weights using estimated between-group variance. This can reorder rankings by discounting high-variance “lucky” entries. For win rates, a variance-stabilizing transform is used so proportions can be shrunk...
👉 Read | AppStore | @mql5dev
The article implements James–Stein shrinkage in MQL5 to reduce total squared estimation error when comparing 3+ means. Estimates are pulled toward a shared center using a data-driven shrink factor, with safeguards like the positive-part clamp and explicit diagnostics showing when theoretical dominance conditions hold (notably, shrink-to-mean requires k≥4).
Real trading data rarely has equal precision, so an empirical Bayes variant assigns per-coordinate weights using estimated between-group variance. This can reorder rankings by discounting high-variance “lucky” entries. For win rates, a variance-stabilizing transform is used so proportions can be shrunk...
👉 Read | AppStore | @mql5dev
👍13❤8🤩6🔥3🎉2😈2
A MetaTrader 5 indicator was extended to plot activation functions and their derivatives side by side, focusing on why sigmoid becomes problematic in deeper networks due to derivative attenuation during backpropagation.
The update adds an enum for function selection and new inputs: equation id and Y-axis scale factor, alongside range and step. Output text now includes function name, f(x), and f’(x) at the cursor point, with minor UI cleanup for chart readability.
The core change is a switch-based dispatcher where each case assigns fx and dx. Adding a new activation function requires registering its enum name, then providing the function expression and its derivative in the corresponding case.
Default set includes sigmoid, tanh, ReLU, and eLU, highlighting practical differences in output range and gradient behavior.
👉 Read | CodeBase | @mql5dev
The update adds an enum for function selection and new inputs: equation id and Y-axis scale factor, alongside range and step. Output text now includes function name, f(x), and f’(x) at the cursor point, with minor UI cleanup for chart readability.
The core change is a switch-based dispatcher where each case assigns fx and dx. Adding a new activation function requires registering its enum name, then providing the function expression and its derivative in the corresponding case.
Default set includes sigmoid, tanh, ReLU, and eLU, highlighting practical differences in output range and gradient behavior.
👉 Read | CodeBase | @mql5dev
❤6👍6🔥5🤩2
Beluga Whale Optimization (BWO) is evaluated as a population-based optimizer for strategy parameter tuning under a shared, reproducible MT5-style test framework. It uses three operators with a time-varying balance factor that smoothly shifts the population from exploration to exploitation, plus a low-probability “whale fall” step to refresh diversity.
Exploration updates coordinates in sine/cosine pairs around a randomly chosen partner, improving space coverage without many tunable knobs. Exploitation combines attraction to the current best with Lévy-flight steps, where jump magnitude decays over iterations; whale fall injects early large relocations that rapidly shrink over time. Greedy selection prevents fitness degradation.
On the benchmark (30 agents, 10k evaluations), BWO scored 47.51%, but showed suspiciously better results at higher dimensio...
👉 Read | Signals | @mql5dev
Exploration updates coordinates in sine/cosine pairs around a randomly chosen partner, improving space coverage without many tunable knobs. Exploitation combines attraction to the current best with Lévy-flight steps, where jump magnitude decays over iterations; whale fall injects early large relocations that rapidly shrink over time. Greedy selection prevents fitness degradation.
On the benchmark (30 agents, 10k evaluations), BWO scored 47.51%, but showed suspiciously better results at higher dimensio...
👉 Read | Signals | @mql5dev
❤16👍13🤩7🔥3✍2👾1
Model drift detection for MQL5 can be handled with a lightweight PSI watchdog that compares a rolling live window against a captured reference, logs each refit, and posts a webhook only on state transitions.
Implementation uses one PSI monitor class plus a minimal WebRequest-based JSON sender, integrated into an EMA-cross demo EA with a companion indicator. Two monitors run in parallel: normalized RSI as a feature proxy, and a sigmoid-transformed EMA spread as a prediction proxy.
PSI is treated as distribution shift only, not model accuracy or trading performance. Alerts are investigation triggers, not auto-retrain signals. Quantile buckets, epsilon flooring, and a cooldown-controlled state machine reduce noise; thresholds still require per-symbol calibration.
👉 Read | Signals | @mql5dev
Implementation uses one PSI monitor class plus a minimal WebRequest-based JSON sender, integrated into an EMA-cross demo EA with a companion indicator. Two monitors run in parallel: normalized RSI as a feature proxy, and a sigmoid-transformed EMA spread as a prediction proxy.
PSI is treated as distribution shift only, not model accuracy or trading performance. Alerts are investigation triggers, not auto-retrain signals. Quantile buckets, epsilon flooring, and a cooldown-controlled state machine reduce noise; thresholds still require per-symbol calibration.
👉 Read | Signals | @mql5dev
❤6👍5🔥5🤩5
TradeMux splits quant work where it belongs: Python for research and decisions, MetaTrader 5 for broker execution. A Python execution service generates signals (e.g., CatBoost over causally L1-filtered features), runs pre-trade risk checks, then routes validated orders to MT5 without duplicating strategy logic in MQL5.
The MT5 side stays minimal: one EA that polls via WebRequest and calls native trade functions, with a zero-DLL design suited for VPS security. Python reads normalized account/position state, pulls OHLCV into pandas, monitors exposure, and can flatten everything with an atomic kill_switch().
Key benefit for multi-broker deployment: symbol suffixes, lot steps, and execution modes are normalized, so the same code runs across MT4/MT5 brokers; OANDA uses a compatible client class. Multi-account broadcasting and supervisor-style auto-restart c...
👉 Read | NeuroBook | @mql5dev
The MT5 side stays minimal: one EA that polls via WebRequest and calls native trade functions, with a zero-DLL design suited for VPS security. Python reads normalized account/position state, pulls OHLCV into pandas, monitors exposure, and can flatten everything with an atomic kill_switch().
Key benefit for multi-broker deployment: symbol suffixes, lot steps, and execution modes are normalized, so the same code runs across MT4/MT5 brokers; OANDA uses a compatible client class. Multi-account broadcasting and supervisor-style auto-restart c...
👉 Read | NeuroBook | @mql5dev
❤14🤩8🔥7👍3
Probabilistic Sharpe Ratio (PSR) and Minimum Track Record Length (MinTRL) address what a plain Strategy Tester Sharpe cannot: whether the observed Sharpe is statistically credible given finite samples and non-normal returns. The implementation includes skew/kurtosis corrections and clearly distinguishes whether MinTRL supports beating SR* or confidently failing it.
The article builds a per-trade return series directly from MT5 deal history by consolidating partial closes via DEAL_POSITION_ID and normalizing P/L by pre-close balance, with safeguards for balance operations. Annualization is fixed by computing trades-per-year from deal timestamps, avoiding the common “bars-per-year” mismatch.
A real MT5 pitfall is documented: iHighest/iLowest return bar indexes, not handles, so using CopyBuffer silently breaks signals. The corrected Donchian logic reads price array...
👉 Read | VPS | @mql5dev
The article builds a per-trade return series directly from MT5 deal history by consolidating partial closes via DEAL_POSITION_ID and normalizing P/L by pre-close balance, with safeguards for balance operations. Annualization is fixed by computing trades-per-year from deal timestamps, avoiding the common “bars-per-year” mismatch.
A real MT5 pitfall is documented: iHighest/iLowest return bar indexes, not handles, so using CopyBuffer silently breaks signals. The corrected Donchian logic reads price array...
👉 Read | VPS | @mql5dev
❤10🔥9👍7🤩5
This article ports a Python/Plotly 3D market view into native MetaTrader 5, replacing external exports and browser snapshots with an on-chart DirectX 11 scene built on CCanvas3D. Price maps to Y, time to Z, and tick volume to X, turning each candle into a lit rectangular prism with direction-based coloring.
The Expert Advisor builds all geometry manually (vertices, normals, indices) and merges axes plus bars into a single CDXMesh for one GPU draw call. Historical rates come from CopyRates, then prices and volumes are normalized into a fixed scene cube, with safeguards to keep low-range or zero-volume bars visible.
Interactivity is handled via an orbital camera (mouse drag + scroll), and rebuilds are deferred from click events to OnTimer to avoid blocking. Time labels are overlaid as standard chart objects, keeping the 3D view readable.
👉 Read | AlgoBook | @mql5dev
The Expert Advisor builds all geometry manually (vertices, normals, indices) and merges axes plus bars into a single CDXMesh for one GPU draw call. Historical rates come from CopyRates, then prices and volumes are normalized into a fixed scene cube, with safeguards to keep low-range or zero-volume bars visible.
Interactivity is handled via an orbital camera (mouse drag + scroll), and rebuilds are deferred from click events to OnTimer to avoid blocking. Time labels are overlaid as standard chart objects, keeping the 3D view readable.
👉 Read | AlgoBook | @mql5dev
❤13🔥7👍6🤩5
MQL5 model visualization can show layer topology but not the actual connectivity implied by dense weights. A dense layer’s weight tensor is a matrix where each cell is a single connection from an input index to a neuron index, with sign and magnitude affecting direction and strength.
The approach builds a second layout: rows of neurons (“bands”) and runs of connections (“webs”) keyed by exported value names. Dense ops open new rows and record their matrices; unary ops (activations, reshapes) are folded into the existing row label to avoid duplicating nodes.
Matrix orientation is resolved via the exporter attribute (e.g., transB), not heuristics, preventing plausible but incorrect wiring. Unsupported layers (conv, RNN, attention) are declined with a reason instead of drawn inaccurately.
Rendering draws one line per stored weight with per-layer normaliz...
👉 Read | Quotes | @mql5dev
The approach builds a second layout: rows of neurons (“bands”) and runs of connections (“webs”) keyed by exported value names. Dense ops open new rows and record their matrices; unary ops (activations, reshapes) are folded into the existing row label to avoid duplicating nodes.
Matrix orientation is resolved via the exporter attribute (e.g., transB), not heuristics, preventing plausible but incorrect wiring. Unsupported layers (conv, RNN, attention) are declined with a reason instead of drawn inaccurately.
Rendering draws one line per stored weight with per-layer normaliz...
👉 Read | Quotes | @mql5dev
❤10🤩9🔥8👍7
A tick scalper passed CodeBase validation on the fifth submission after multiple failed runs, but local Strategy Tester runs with execution delay still produced systematic trade-operation rejections. The surviving validator log referenced EURUSD H1 despite M1 design, while the actual issues were execution timing, freeze-level constraints, and position tracking under latency.
Key failures observed: forced closes rejected inside freeze level; SL/TP computed from stale price snapshots leading to INVALID_STOPS; two-step entry leaving positions temporarily unprotected and, on hedging accounts, sometimes modifying or closing the wrong position due to symbol-only selection. Near session close, modify and safety-close requests were rejected as MARKET_CLOSED, leaving trades unmanaged.
Result: validation success did not confirm correct behavior under delay. Requ...
👉 Read | Signals | @mql5dev
Key failures observed: forced closes rejected inside freeze level; SL/TP computed from stale price snapshots leading to INVALID_STOPS; two-step entry leaving positions temporarily unprotected and, on hedging accounts, sometimes modifying or closing the wrong position due to symbol-only selection. Near session close, modify and safety-close requests were rejected as MARKET_CLOSED, leaving trades unmanaged.
Result: validation success did not confirm correct behavior under delay. Requ...
👉 Read | Signals | @mql5dev
❤11🔥10🤩9👍6
Tick Scalper Helper is a manual trading utility for MetaTrader 5 focused on tick-level charting and fast order handling. It replaces time-based candles with a compact tick chart where each tick is rendered as a bar, with configurable aggregation (1, 2, 4, 8… ticks per bar), optional time-scaled mode, and light/dark themes. Live BID/ASK lines are updated on every tick with fixed, non-ambiguous colors.
The on-chart panel provides one-click buy/sell, optional SL/TP in points with automatic adjustment to broker stop constraints, and symbol-scoped close actions (buy, sell, profitable only, all). Orders are prebuilt for lower terminal-side processing overhead, with server rejects and constraint issues reported on-chart and in logs. Positions, pending orders, and SL/TP levels are drawn directly on the tick chart.
A built-in depth-of-market view can be shown on ...
👉 Read | NeuroBook | @mql5dev
The on-chart panel provides one-click buy/sell, optional SL/TP in points with automatic adjustment to broker stop constraints, and symbol-scoped close actions (buy, sell, profitable only, all). Orders are prebuilt for lower terminal-side processing overhead, with server rejects and constraint issues reported on-chart and in logs. Positions, pending orders, and SL/TP levels are drawn directly on the tick chart.
A built-in depth-of-market view can be shown on ...
👉 Read | NeuroBook | @mql5dev
👍11❤7🤩5🔥2😱2
An indicator tracks the Asian session range per day (default 00:00–07:00 UTC) and renders it as a rectangle. A breakout window then runs until 11:00 UTC, placing a BUY/SELL arrow on the first closed candle that exits the range with an added buffer (default 10% of the range).
Risk/return levels are calculated from the range: stop is either the midpoint or the opposite boundary; target is entry price ± (range × multiplier), with 1.5 used by default. Signals are generated on closed bars only and are not repainted.
Key inputs cover server UTC offset, Asian range start/end, breakout window end, buffer percentage, TP multiplier, stop mode, one-signal-per-day limit, alerts, and box color. Typical use is on M5–M15 for GBPUSD, EURUSD, and XAUUSD. This is a session breakout visual tool, not a profit guarantee.
👉 Read | Quotes | @mql5dev
Risk/return levels are calculated from the range: stop is either the midpoint or the opposite boundary; target is entry price ± (range × multiplier), with 1.5 used by default. Signals are generated on closed bars only and are not repainted.
Key inputs cover server UTC offset, Asian range start/end, breakout window end, buffer percentage, TP multiplier, stop mode, one-signal-per-day limit, alerts, and box color. Typical use is on M5–M15 for GBPUSD, EURUSD, and XAUUSD. This is a session breakout visual tool, not a profit guarantee.
👉 Read | Quotes | @mql5dev
❤9🔥4