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
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
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π7π€©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
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
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
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
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
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
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
MQL5 class lifetime can differ sharply between implicit instances and pointer-managed instances.
Declaring a class variable lets the compiler decide constructor/destructor timing. In an indicator, the constructor may run before OnInit and the destructor after OnDeinit, which reduces control over chart objects.
Switching to a pointer and using new/delete moves lifecycle control into OnInit/OnDeinit. Logged output confirms constructor runs after the OnInit log line and destructor runs before the OnDeinit log line.
In scripts, local scope adds another constraint: passing class instances into routines requires pass-by-reference, otherwise compilation fails. This raises API design questions around mutability and unintended state changes.
π Read | CodeBase | @mql5dev
Declaring a class variable lets the compiler decide constructor/destructor timing. In an indicator, the constructor may run before OnInit and the destructor after OnDeinit, which reduces control over chart objects.
Switching to a pointer and using new/delete moves lifecycle control into OnInit/OnDeinit. Logged output confirms constructor runs after the OnInit log line and destructor runs before the OnDeinit log line.
In scripts, local scope adds another constraint: passing class instances into routines requires pass-by-reference, otherwise compilation fails. This raises API design questions around mutability and unintended state changes.
π Read | CodeBase | @mql5dev
β€9π7π₯2π2
Multi-timeframe Malaysian SNR can be automated without relying on lagging indicators. MSNR KeyLevels MultiTF scans closed candles and maintains four level types: A (bullish then bearish, close of bullish candle), V (bearish then bullish, close of bearish candle), plus SBR and RBS when a level is closed through and flips.
Levels are tracked from creation. A close through refreshes and changes the type. A touch without a break marks the level as tested and, by default, removes it so the chart keeps only untested zones. The unfinished candle is ignored to avoid repaint-style behavior.
A chart HUD controls six timeframes at once, with per-timeframe level counts and instant toggling. Line style encodes timeframe, color encodes type, and labels include timeframe and price. The design avoids tick-by-tick recalculation and rebuilds cleanly after timeframe ch...
π Read | AlgoBook | @mql5dev
Levels are tracked from creation. A close through refreshes and changes the type. A touch without a break marks the level as tested and, by default, removes it so the chart keeps only untested zones. The unfinished candle is ignored to avoid repaint-style behavior.
A chart HUD controls six timeframes at once, with per-timeframe level counts and instant toggling. Line style encodes timeframe, color encodes type, and labels include timeframe and price. The design avoids tick-by-tick recalculation and rebuilds cleanly after timeframe ch...
π Read | AlgoBook | @mql5dev
β€12π6π2
Update on the MT5 replay/simulation series focuses on why the system works: custom events are generated by indicators, routed through MetaTrader 5, and delivered to all apps on a chart via OnChartEvent.
Chart Trade, the Expert Advisor, the Position indicator, and Mouse Study remain decoupled. None of them require direct references to each other. Events are broadcast, and only modules implementing the corresponding handler react; others ignore them.
Two event categories are used: EA-originated update events after trade server replies, and UI-driven events from MT5/indicators (mouse move, click, ESC). Virtual SL/TP dragging is confirmed or canceled by subsequent events.
A requested extension is EA-controlled pause/play for the replay service. Since events are chart-scoped, the service must be reached via its control indicator by adding a custom even...
π Read | AlgoBook | @mql5dev
Chart Trade, the Expert Advisor, the Position indicator, and Mouse Study remain decoupled. None of them require direct references to each other. Events are broadcast, and only modules implementing the corresponding handler react; others ignore them.
Two event categories are used: EA-originated update events after trade server replies, and UI-driven events from MT5/indicators (mouse move, click, ESC). Virtual SL/TP dragging is confirmed or canceled by subsequent events.
A requested extension is EA-controlled pause/play for the replay service. Since events are chart-scoped, the service must be reached via its control indicator by adding a custom even...
π Read | AlgoBook | @mql5dev
β€16π6π¨βπ»3π2π₯1π€©1
Prop-firm risk limits add a second rulebook on top of the broker account: static and trailing drawdown from a fixed start, daily loss reset in the firmβs time zone, payout consistency, minimum trading days, news blackout, and weekend flat. Violations can void the account even when platform limits are not hit.
This library provides a reusable guard that compiles into any EA. It evaluates eight rules from one frozen account snapshot per pass and emits at most one directive, avoiding multiple reactions to the same event. It does not trade and can work alongside any EA, manual trading, or copied signals.
Archive contents: 24 .mqh headers, a facade class (CPropRulebook), and a demo EA (PropFirmDefense.mq5) with an on-chart panel. State is persisted across restarts, including trailing-floor anchoring and consumed budgets. Optional terminal Algo Trading switching ...
π Read | NeuroBook | @mql5dev
This library provides a reusable guard that compiles into any EA. It evaluates eight rules from one frozen account snapshot per pass and emits at most one directive, avoiding multiple reactions to the same event. It does not trade and can work alongside any EA, manual trading, or copied signals.
Archive contents: 24 .mqh headers, a facade class (CPropRulebook), and a demo EA (PropFirmDefense.mq5) with an on-chart panel. State is persisted across restarts, including trailing-floor anchoring and consumed budgets. Optional terminal Algo Trading switching ...
π Read | NeuroBook | @mql5dev
π8β€4π€©2π2
Colliding Bodies Optimization (CBO, 2014) is a population metaheuristic where candidate solutions are ranked, assigned normalized masses from inverse objective values, then split into stationary (best half) and moving (worst half) sets.
Each moving body pairs by rank with a stationary body. Velocities are computed from position differences, then updated with a restitution coefficient epsilon that decreases linearly from 1 to 0 across iterations to shift from broad search to refinement.
Enhanced CBO (ECBO) adds a Colliding Memory archive to reinsert elite solutions and an optional low-probability coordinate reset step to reduce stagnation. Per-iteration cost is dominated by sorting: O(n log n).
π Read | Freelance | @mql5dev
Each moving body pairs by rank with a stationary body. Velocities are computed from position differences, then updated with a restitution coefficient epsilon that decreases linearly from 1 to 0 across iterations to shift from broad search to refinement.
Enhanced CBO (ECBO) adds a Colliding Memory archive to reinsert elite solutions and an optional low-probability coordinate reset step to reduce stagnation. Per-iteration cost is dominated by sorting: O(n log n).
π Read | Freelance | @mql5dev
β€18π8π₯4π€©2π2β‘1
Range volatility can be measured beyond ADR% by using an empirical percentile rank. The metric compares the current periodβs range so far to the full ranges of the last N completed periods, reporting what percentage were smaller. This avoids mean-based distortion in instruments with occasional spike sessions.
Readings at or below the compression threshold (default 20) flag an unusually quiet period; readings at or above the expansion threshold (default 80) indicate a session already larger than most historical peers. A 12% value means the current range is smaller than 88% of the last 100 periods.
Key inputs include range timeframe (D1 by default), lookback (100), thresholds (20/80), and update mode (per bar or per tick). The panel includes a 0β100 gauge, uses only chart objects, and does not place or manage orders.
π Read | Signals | @mql5dev
Readings at or below the compression threshold (default 20) flag an unusually quiet period; readings at or above the expansion threshold (default 80) indicate a session already larger than most historical peers. A 12% value means the current range is smaller than 88% of the last 100 periods.
Key inputs include range timeframe (D1 by default), lookback (100), thresholds (20/80), and update mode (per bar or per tick). The panel includes a 0β100 gauge, uses only chart objects, and does not place or manage orders.
π Read | Signals | @mql5dev
β€15π11π₯2π€©2π2
EMTOrdersUtility.mq5 implements an on-chart trade monitor that replaces terminal scrolling with a symbol grid. Each symbol is rendered as a button plus up to three stacked label lines, refreshed via EventSetTimer at a user-defined interval.
Symbols can be loaded from Market Watch or a manual CSV list, capped by InpMaxSymbols. Display names can be abbreviated by stripping common broker suffixes, and button width can be fixed or auto-sized based on the longest label.
Runtime updates aggregate positions per symbol, split by BUY and SELL, with swap included in P&L. Pending orders are counted separately and can be highlighted via border settings. Button background reflects net P&L state (profit, loss, flat), with a selected-symbol color override.
Version notes mention alphabetical symbol ordering and removal of the hide/show toggle.
π Read | Signals | @mql5dev
Symbols can be loaded from Market Watch or a manual CSV list, capped by InpMaxSymbols. Display names can be abbreviated by stripping common broker suffixes, and button width can be fixed or auto-sized based on the longest label.
Runtime updates aggregate positions per symbol, split by BUY and SELL, with swap included in P&L. Pending orders are counted separately and can be highlighted via border settings. Button background reflects net P&L state (profit, loss, flat), with a selected-symbol color override.
Version notes mention alphabetical symbol ordering and removal of the hide/show toggle.
π Read | Signals | @mql5dev
β€18π10π€©3π2π¨βπ»2π1
PulseStrike is a tick-driven scalper built around burst detection, not candle close. It maintains a rolling baseline over a short window (default 4s) and treats a move as tradeable only when it is a statistical outlier versus that baseline (z-score, default 3.0). This replaced a fixed ATR-fraction trigger that over-traded normal tick noise.
Two execution modes are supported: momentum (with the burst) and reversion (against it). Symbol fit is not assumed; both modes should be tested.
Entries are gated by spread-aware TP sizing, ATR-scaled SL/TP, a max hold-time force close, plus daily trade and daily loss caps. Single-position operation is used to behave correctly on netting accounts, cycling trades with tick-level checks and a short cooldown.
Backtest (M1, every tick, random delay, 2026-01-01 to 2026-09-08, balance 10k): EURUSD PF 1.30 DD 10.33%; AUDUSD PF ...
π Read | NeuroBook | @mql5dev
Two execution modes are supported: momentum (with the burst) and reversion (against it). Symbol fit is not assumed; both modes should be tested.
Entries are gated by spread-aware TP sizing, ATR-scaled SL/TP, a max hold-time force close, plus daily trade and daily loss caps. Single-position operation is used to behave correctly on netting accounts, cycling trades with tick-level checks and a short cooldown.
Backtest (M1, every tick, random delay, 2026-01-01 to 2026-09-08, balance 10k): EURUSD PF 1.30 DD 10.33%; AUDUSD PF ...
π Read | NeuroBook | @mql5dev
β€23π19π€©9π₯7π2π€‘1
A new MQL5 signal class, CSignalIsotonicPNN, implements a two-stage confidence model for oscillator-based entries. Seven RSI/Stochastic plus price-context interpretations output a bounded directional score in [0,1], with 0.5 as neutral.
Isotonic regression calibrates the score into an ordered probability using a rolling calibration window and forecast horizon, with safeguards against lookahead. An optional PNN then blends a posterior based on similarity to historical bullish/bearish states, controlled by PNNSamples, PNNSigma, and PNNWeight.
The design keeps each mode independently testable and separates ranking quality from calibration. Invalid inputs and degenerate computations return 0.5 to avoid accidental directional bias.
π Read | Signals | @mql5dev
Isotonic regression calibrates the score into an ordered probability using a rolling calibration window and forecast horizon, with safeguards against lookahead. An optional PNN then blends a posterior based on similarity to historical bullish/bearish states, controlled by PNNSamples, PNNSigma, and PNNWeight.
The design keeps each mode independently testable and separates ranking quality from calibration. Invalid inputs and degenerate computations return 0.5 to avoid accidental directional bias.
π Read | Signals | @mql5dev
π18β€11π€©10π₯8π€3π1
This MQL5 script turns closed deal history into trade-level analytics that avoid the common win-rate trap. Deals are grouped by position into a single record per round trip, with explicit βdefinedβ flags so missing metrics never masquerade as zeros.
The core metric, Trade Quality Score, uses expectancy but substitutes the Wilson lower bound for win rate to penalize small samples. The conservative expectancy is normalized by average loss as a risk proxy, yielding a dimensionless score comparable across symbols and account sizes.
Architecture is modular: history reader, optional hour-of-day session filter (midnight-safe), pure calculator, and a CCanvas dashboard plus Experts-tab report. A dedicated test script validates pip conversion, edge cases, Wilson math, thresholds, and session boundaries with synthetic trades.
π Read | NeuroBook | @mql5dev
The core metric, Trade Quality Score, uses expectancy but substitutes the Wilson lower bound for win rate to penalize small samples. The conservative expectancy is normalized by average loss as a risk proxy, yielding a dimensionless score comparable across symbols and account sizes.
Architecture is modular: history reader, optional hour-of-day session filter (midnight-safe), pure calculator, and a CCanvas dashboard plus Experts-tab report. A dedicated test script validates pip conversion, edge cases, Wilson math, thresholds, and session boundaries with synthetic trades.
π Read | NeuroBook | @mql5dev
π20β€14π₯7π€©5π2π±1
Multi-chart EAs often act as if they are the only process in the account. The broker enforces margin, margin level, and liquidation at account scope, so individually well-sized trades can still combine into a full drawdown.
A shared PortfolioRisk.mqh moves portfolio measurement out of any single EA. It supports account-wide scope or a magic-number filter, scans positions plus pending orders, and builds currency-leg exposure without parsing symbol names.
Before opening a trade, CanOpenPosition() evaluates six limits on the βwould beβ state: total trades, per-symbol count, distinct symbols, margin use, floating loss, and per-currency net exposure. Pearson correlation is noted but intentionally excluded; currency decomposition is deterministic, history-free, and consistent across EAs.
π Read | AlgoBook | @mql5dev
A shared PortfolioRisk.mqh moves portfolio measurement out of any single EA. It supports account-wide scope or a magic-number filter, scans positions plus pending orders, and builds currency-leg exposure without parsing symbol names.
Before opening a trade, CanOpenPosition() evaluates six limits on the βwould beβ state: total trades, per-symbol count, distinct symbols, margin use, floating loss, and per-currency net exposure. Pearson correlation is noted but intentionally excluded; currency decomposition is deterministic, history-free, and consistent across EAs.
π Read | AlgoBook | @mql5dev
β€13π6π€©4π2π₯1π€―1
Portfolio eigenvalues describe how total variance is split across independent risk factors, but raw spectra donβt clearly indicate whether diversification is real or just cosmetic. This workflow turns the eigenvalue proportions into a single diversification score using spectral entropy (Shannon entropy normalized to [0,1]): high values mean variance is evenly distributed; low values indicate one dominant driver.
A reusable MQL5 script computes the covariance matrix, extracts and sorts eigenvalues safely (ArraySort over unreliable vector.Sort), converts them to variance shares, then outputs H_norm, dominant-factor percentage, an ASCII bar chart, and a thresholded concentration verdict for side-by-side portfolio comparison.
A key takeaway: diversification is governed by covariance structure, not instrument labels. Adding an uncorrelated but high-vola...
π Read | AppStore | @mql5dev
A reusable MQL5 script computes the covariance matrix, extracts and sorts eigenvalues safely (ArraySort over unreliable vector.Sort), converts them to variance shares, then outputs H_norm, dominant-factor percentage, an ASCII bar chart, and a thresholded concentration verdict for side-by-side portfolio comparison.
A key takeaway: diversification is governed by covariance structure, not instrument labels. Adding an uncorrelated but high-vola...
π Read | AppStore | @mql5dev
β€21π4β2π₯2π2π€©1