Dynamic Fair Value Gap (FVG) is a custom MQL5 indicator built to detect unmitigated price imbalances based on a 3-candle pattern. It flags bullish gaps between Candle 1 High and Candle 3 Low, and bearish gaps between Candle 1 Low and Candle 3 High.
Mitigated zones are removed automatically once touched by later price action, keeping only active FVG areas on the chart. While untouched, each zone extends forward by a configurable number of bars (default 18) and remains labeled for monitoring.
The tool also plots previous daily high and low as horizontal liquidity references, refreshed at each new trading day. Alerting supports terminal pop-ups, sounds, and push notifications on new FVG formation, with scan depth controlled via BarsToKeep (default 300).
π Read | AlgoBook | @mql5dev
Mitigated zones are removed automatically once touched by later price action, keeping only active FVG areas on the chart. While untouched, each zone extends forward by a configurable number of bars (default 18) and remains labeled for monitoring.
The tool also plots previous daily high and low as horizontal liquidity references, refreshed at each new trading day. Alerting supports terminal pop-ups, sounds, and push notifications on new FVG formation, with scan depth controlled via BarsToKeep (default 300).
π Read | AlgoBook | @mql5dev
β€32π9π2π2
Backtracking Search Algorithm (BSA) is an evolutionary optimizer for real-valued problems that adds a simple but effective idea: keep a historical population (oldP) alongside the current population (P), and use that βmemoryβ to guide exploration.
Each iteration optionally refreshes oldP from P with 50% probability, then shuffles it (FisherβYates) to avoid fixed pairings. Mutation generates one directional candidate per individual using M = P + F*(oldP - P), where F controls step amplitude. Crossover is driven by a binary mask: either mixed coordinates via mixrate or a minimal-change mode that alters only one coordinate.
A greedy second selection stage rolls back any trial that worsens fitness, making the method stable for tuning trading parameters. The MT5-style class design separates Init, Moving, and Revision, with explicit arrays for oldP/M/T, fitness snapsho...
π Read | VPS | @mql5dev
Each iteration optionally refreshes oldP from P with 50% probability, then shuffles it (FisherβYates) to avoid fixed pairings. Mutation generates one directional candidate per individual using M = P + F*(oldP - P), where F controls step amplitude. Crossover is driven by a binary mask: either mixed coordinates via mixrate or a minimal-change mode that alters only one coordinate.
A greedy second selection stage rolls back any trial that worsens fitness, making the method stable for tuning trading parameters. The MT5-style class design separates Init, Moving, and Revision, with explicit arrays for oldP/M/T, fitness snapsho...
π Read | VPS | @mql5dev
π16β€13π2
Seasonality can be quantified in MT5 by aggregating average returns across recurring time buckets: day-of-month (1β31), day-of-week (MonβSun), or hour-of-day (0β23). The output fits well in a separate indicator window to keep the main chart clean.
Implementation in MQL5 typically uses three buffers: a histogram for average returns per bucket, a line for the current/next periods, and arrow points for the next two expected values. Inputs control bucket type, lookback bars, percent vs points, positive-only filtering, and optional forecast rendering.
Core logic sits in OnCalculate: compute per-bar returns, map each bar time to a bucket via GetPeriodIndex, maintain sums and counts, then normalize to averages. Forecasting cycles buckets with modular arithmetic, and on-chart text can report lookback size, next periods, and best/worst buckets.
π Read | CodeBase | @mql5dev
Implementation in MQL5 typically uses three buffers: a histogram for average returns per bucket, a line for the current/next periods, and arrow points for the next two expected values. Inputs control bucket type, lookback bars, percent vs points, positive-only filtering, and optional forecast rendering.
Core logic sits in OnCalculate: compute per-bar returns, map each bar time to a bucket via GetPeriodIndex, maintain sums and counts, then normalize to averages. Forecasting cycles buckets with modular arithmetic, and on-chart text can report lookback size, next periods, and best/worst buckets.
π Read | CodeBase | @mql5dev
β€32π8π3π1
Wyckoff remains one of the clearer cause-and-effect models for institutional supply and demand, but automation usually fails on context. Single events are easy to detect; the difficulty is validating the sequence that gives those events meaning.
An MQL5 EA can enforce that sequence with a finite state machine on H4: range after a prior trend, then spring or upthrust on low relative tick volume, then SOS or SOW on high relative volume, then LPS or LPSY pullback entries with ATR-based stops.
Tick volume is usable as a proxy because the logic relies on ratios versus a rolling baseline computed from the detected range, not absolute volume.
π Read | Docs | @mql5dev
An MQL5 EA can enforce that sequence with a finite state machine on H4: range after a prior trend, then spring or upthrust on low relative tick volume, then SOS or SOW on high relative volume, then LPS or LPSY pullback entries with ATR-based stops.
Tick volume is usable as a proxy because the logic relies on ratios versus a rolling baseline computed from the detected range, not absolute volume.
π Read | Docs | @mql5dev
β€28π10π1
This piece connects Python-side model validation to tick-accurate execution testing in MetaTrader 5, so edge is judged after spread, slippage, commission, and swap. The workflow exports a trained ONNX pipeline, probability calibrator parameters, feature ordering, and CPCV metadata, then runs each combinatorial path as a separate Strategy Tester agent to produce real-fill equity curves.
Key engineering constraints are made explicit: the StandardScaler is embedded in the ONNX graph, so MQL5 must feed raw features only; feature order must exactly match the recorded input tensor layout; and features must be computed on the last closed bar to avoid look-ahead.
CPCV logic stays in Python: it precomputes one timestamp mask per path, while the EA does fast membership checks, runs OnnxRun with correct (1, n_features) shape, applies isotonic or Platt calibration...
π Read | Forum | @mql5dev
Key engineering constraints are made explicit: the StandardScaler is embedded in the ONNX graph, so MQL5 must feed raw features only; feature order must exactly match the recorded input tensor layout; and features must be computed on the last closed bar to avoid look-ahead.
CPCV logic stays in Python: it precomputes one timestamp mask per path, while the EA does fast membership checks, runs OnnxRun with correct (1, n_features) shape, applies isotonic or Platt calibration...
π Read | Forum | @mql5dev
π16β€13π1
MQL5 chart tools hit a ceiling when they rely on native objects. Placement is simple, but post-placement interaction is constrained: limited hit-testing, no custom handle drag, no rubber-band preview, and no precise deletion.
A canvas-based architecture replaces terminal-managed objects with a bitmap layer and an internal array of drawing structs. Redraw iterates the array and renders pixel-level primitives, enabling selection states, hover feedback, dragging, handle suppression during edits, and consistent styling.
Core components include ARGB opacity helpers, Porter-Duff pixel blending, anti-aliased thick lines with subpixel coverage, and scalable dash patterns. New circle primitives support filled handles and borders. Line tools render strokes first, then conditional handles with hover halos, while hit-testing covers segments and info panels.
π Read | Forum | @mql5dev
A canvas-based architecture replaces terminal-managed objects with a bitmap layer and an internal array of drawing structs. Redraw iterates the array and renders pixel-level primitives, enabling selection states, hover feedback, dragging, handle suppression during edits, and consistent styling.
Core components include ARGB opacity helpers, Porter-Duff pixel blending, anti-aliased thick lines with subpixel coverage, and scalable dash patterns. New circle primitives support filled handles and borders. Line tools render strokes first, then conditional handles with hover halos, while hit-testing covers segments and info panels.
π Read | Forum | @mql5dev
π12β€8π3π1
Value Charts and Price Action Profile, published in 2002 by Helweg and Stendhal, added volatility-adaptive context to traditional charts. In 2010, Abrams and Walker applied both to MR Swing, a mean-reversion swing system that reported strong equity results and portfolio-level drawdown reduction.
MR Swing is notable for asymmetric bull/bear logic and volatility-normalized signals. A 200-day SMA-based Hysteresis Channel classifies regime using a high/low buffer and increment-only updates to reduce whipsaws.
Bull entries use Value Charts on lows with a 5-bar floating axis and alpha 0.16, triggering at -7.5. Bear signals use DVO with Percent-Rank over 252 days as a Price Action Profile equivalent. Bull exits use SVAPO exhaustion with dynamic bands and limit orders.
π Read | Freelance | @mql5dev
MR Swing is notable for asymmetric bull/bear logic and volatility-normalized signals. A 200-day SMA-based Hysteresis Channel classifies regime using a high/low buffer and increment-only updates to reduce whipsaws.
Bull entries use Value Charts on lows with a 5-bar floating axis and alpha 0.16, triggering at -7.5. Bear signals use DVO with Percent-Rank over 252 days as a Price Action Profile equivalent. Bull exits use SVAPO exhaustion with dynamic bands and limit orders.
π Read | Freelance | @mql5dev
β€35π9π3β‘2π―2
An optimized ZigZag implementation is available as a drop-in replacement for the legacy Zigzag.mq4 used since MT3-era MQL2. The goal is to reduce overhead when EAs rely on ZigZag values during strategy testing and live tick processing.
On the first run, the indicator computes the full visible history. On subsequent updates, it avoids full recalculation by locating the third extremum from the current bar and restarting from that point. Recalculation depth can be adjusted via the level parameter; setting it to 2 forces a restart from the second extremum.
External input names are preserved for compatibility. Minute-timeframe βfloatingβ extremums have also been removed to stabilize plotted turning points.
π Read | Forum | @mql5dev
On the first run, the indicator computes the full visible history. On subsequent updates, it avoids full recalculation by locating the third extremum from the current bar and restarting from that point. Recalculation depth can be adjusted via the level parameter; setting it to 2 forces a restart from the second extremum.
External input names are preserved for compatibility. Minute-timeframe βfloatingβ extremums have also been removed to stabilize plotted turning points.
π Read | Forum | @mql5dev
β€15π9π1
SQL foreign keys often look βwrongβ until the result set logic is made explicit. A naive SELECT across tb_Quotes and tb_Symbols can produce a Cartesian product, multiplying rows (6 quotes x 4 symbols = 24), which is expected behavior.
A table diagram in tools like DBeaver helps confirm cardinality. The circle marker typically indicates one-to-many: tb_Symbols.id is referenced by tb_Quotes.fk_id, so one symbol can map to multiple quote rows.
Correct results require an explicit join condition. Using table aliases and a WHERE clause (or JOIN ... ON) constrains rows to fk_id = id, returning only matched quotes. Output can be tightened by selecting required columns, applying column aliases, and sorting with ORDER BY.
Updates become risky when fk_id is manually typed. A safer pattern is UPDATE with a subquery that resolves fk_id from symbol and date, avoiding har...
π Read | Signals | @mql5dev
A table diagram in tools like DBeaver helps confirm cardinality. The circle marker typically indicates one-to-many: tb_Symbols.id is referenced by tb_Quotes.fk_id, so one symbol can map to multiple quote rows.
Correct results require an explicit join condition. Using table aliases and a WHERE clause (or JOIN ... ON) constrains rows to fk_id = id, returning only matched quotes. Output can be tightened by selecting required columns, applying column aliases, and sorting with ORDER BY.
Updates become risky when fk_id is manually typed. A safer pattern is UPDATE with a subquery that resolves fk_id from symbol and date, avoiding har...
π Read | Signals | @mql5dev
β€19π8π1
MetaTrader 5 scripts cannot register OnChartEvent, so direct keyboard event handling is not available. A workable substitute is polling: filter key state inside a controlled loop and update chart objects between iterations.
A common pitfall is execution speed. A script can create, position, and delete objects before any interaction is visible. Keeping the script alive requires a loop with throttling to limit CPU use, plus explicit cleanup so objects do not persist after chart rebuilds (period change forces script removal).
The same pattern can be extended with function pointers in MQL5. Functions share a signature, a pointer type is declared, and an array of pointers enables selecting behavior without hardcoding function names.
π Read | Docs | @mql5dev
A common pitfall is execution speed. A script can create, position, and delete objects before any interaction is visible. Keeping the script alive requires a loop with throttling to limit CPU use, plus explicit cleanup so objects do not persist after chart rebuilds (period change forces script removal).
The same pattern can be extended with function pointers in MQL5. Functions share a signature, a pointer type is declared, and an array of pointers enables selecting behavior without hardcoding function names.
π Read | Docs | @mql5dev
π13β€8π1
This article builds a MetaTrader 5 heat map indicator that measures βtime-at-priceβ to rank support/resistance by where the market actually lingers, complementing earlier time-gap detection. Price is split into micro-zones, time spent in each zone is accumulated, then normalized to a 1β100% presence scale and mapped to a smooth red-to-blue gradient.
The implementation emphasizes reliability and speed: a modular PriceLevel structure, a sliding window over recent history, an adaptive grid (50β1000 levels, tick-size aware), and an overlap test that avoids O(nΒ²) scans. Updates run only on new bars, arrays are reused, and rectangles are efficiently managed on-chart.
For traders, blue zones act as βmagnetsβ for mean reversion and range boundaries; red zones flag fast-through areas prone to whipsaws. Developers get a framework that integrates well with volu...
π Read | Signals | @mql5dev
The implementation emphasizes reliability and speed: a modular PriceLevel structure, a sliding window over recent history, an adaptive grid (50β1000 levels, tick-size aware), and an overlap test that avoids O(nΒ²) scans. Updates run only on new bars, arrays are reused, and rectangles are efficiently managed on-chart.
For traders, blue zones act as βmagnetsβ for mean reversion and range boundaries; red zones flag fast-through areas prone to whipsaws. Developers get a framework that integrates well with volu...
π Read | Signals | @mql5dev
β€18π8β‘4π1
The article shows why βhaving an id column that looks like a foreign keyβ does not make a database relational. Without an actual foreign key constraint, deleting a symbol can leave orphaned quote rows, and later reusing the freed id can silently attach old quotes to a different symbol.
It then rebuilds the schema with a real primary key/foreign key relationship, which blocks unsafe deletes and forces correct deletion order (remove dependent quotes first, then the symbol) to preserve consistency.
Finally, it introduces SQLite triggers to automate multi-step maintenance: a delete trigger can cascade cleanup from one command, and an insert trigger can enforce normalization (e.g., auto-uppercasing symbols). The key takeaway for trading data pipelines is to prefer constraints and carefully designed triggers over manual assumptions.
π Read | Forum | @mql5dev
It then rebuilds the schema with a real primary key/foreign key relationship, which blocks unsafe deletes and forces correct deletion order (remove dependent quotes first, then the symbol) to preserve consistency.
Finally, it introduces SQLite triggers to automate multi-step maintenance: a delete trigger can cascade cleanup from one command, and an insert trigger can enforce normalization (e.g., auto-uppercasing symbols). The key takeaway for trading data pipelines is to prefer constraints and carefully designed triggers over manual assumptions.
π Read | Forum | @mql5dev
β€21π7π1
This article moves from βplacing objectsβ to actually controlling MQL5 chart objects through events, highlighting a common misconception: OnCalculate can fire even when price hasnβt changed. A simple indicator that draws the previous quote shows why relying on every recalculation as a price update leads to wasted work and performance loss.
It then drills into keyboard handling via OnChartEvent, demonstrating how to capture key codes and use them to drive object movement. A modified example uses arrow keys to shift a marker across bars, updates on-chart status text, and cleans up objects on removal to avoid chart clutter.
Finally, it addresses a frequent pitfall: object names must be unique. Reusing a name can silently prevent creation and cause confusing edits to the wrong object. A practical fix is generating unique names using ObjectsTotal and storing ...
π Read | Calendar | @mql5dev
It then drills into keyboard handling via OnChartEvent, demonstrating how to capture key codes and use them to drive object movement. A modified example uses arrow keys to shift a marker across bars, updates on-chart status text, and cleans up objects on removal to avoid chart clutter.
Finally, it addresses a frequent pitfall: object names must be unique. Reusing a name can silently prevent creation and cause confusing edits to the wrong object. A practical fix is generating unique names using ObjectsTotal and storing ...
π Read | Calendar | @mql5dev
β€21π9π1
MetaTrader 5 OBJ_RECTANGLE is a static chart primitive. It provides no state, no breakout confirmation, no aging, and no distinction between manual edits and automated updates. This pushes ongoing chart maintenance into OnTick workflows.
A managed zone model wraps each rectangle in a CZone class stored in CArrayObj. The object holds cached coordinates, ATR-scaled sizing, breakout counters, source flags, and a structural state machine (VIRGIN, BROKEN, INACTIVE). A blacklist prevents deleted auto-zones from being recreated.
Synchronization can poll rectangles each tick (SyncHybridObjects) to adopt user objects, capture drags, and remove missing items. Production designs typically move this to OnChartEvent for create/drag/delete events to reduce GUI API overhead.
π Read | Signals | @mql5dev
A managed zone model wraps each rectangle in a CZone class stored in CArrayObj. The object holds cached coordinates, ATR-scaled sizing, breakout counters, source flags, and a structural state machine (VIRGIN, BROKEN, INACTIVE). A blacklist prevents deleted auto-zones from being recreated.
Synchronization can poll rectangles each tick (SyncHybridObjects) to adopt user objects, capture drags, and remove missing items. Production designs typically move this to OnChartEvent for create/drag/delete events to reduce GUI API overhead.
π Read | Signals | @mql5dev
β€29π8π1
Dynamic Fair Value Gap (FVG) indicator for MetaTrader 4 focuses on identifying unmitigated price imbalances using a 3-candle pattern. Bullish gaps are calculated between Candle 1 high and Candle 3 low, while bearish gaps use Candle 1 low and Candle 3 high. Zones are plotted as rectangles with labels for quick validation.
Mitigated zones are removed automatically once price revisits the area, keeping charts limited to active FVG levels. Untouched zones extend forward by a configurable number of bars (default 18) to maintain visibility during live movement.
Additional context levels include previous daily high/low lines, refreshed at each day change. Alerting is supported via platform notifications when a new FVG forms. Key inputs include BarsToKeep (history scan), ForwardBars (projection length), and RectangleFill (filled vs outline).
π Read | NeuroBook | @mql5dev
Mitigated zones are removed automatically once price revisits the area, keeping charts limited to active FVG levels. Untouched zones extend forward by a configurable number of bars (default 18) to maintain visibility during live movement.
Additional context levels include previous daily high/low lines, refreshed at each day change. Alerting is supported via platform notifications when a new FVG forms. Key inputs include BarsToKeep (history scan), ForwardBars (projection length), and RectangleFill (filled vs outline).
π Read | NeuroBook | @mql5dev
β€20π4π2β1
Inside Bar pattern detection has been automated into a chart indicator focused on breakout setups and fixed signals after candle close.
The tool flags each Inside Bar, applies a directional bias from the small candleβs open/close (bullish, bearish, or neutral), and draws a projection rectangle based on the mother candleβs high/low with configurable forward extension. Optional chart labels are placed next to each zone.
Alerting is supported across common channels (popup and sound) with options to limit noise, including label-only-on-new-bar and filters that hide neutral signals. Chart clutter controls include keeping only the last N rectangles.
Configuration covers colors (auto by direction or manual), rectangle fill, forward bars, bars-to-keep, labels, alerts, and direction filtering. Works across symbols and timeframes, with an optimized loop targe...
π Read | Quotes | @mql5dev
The tool flags each Inside Bar, applies a directional bias from the small candleβs open/close (bullish, bearish, or neutral), and draws a projection rectangle based on the mother candleβs high/low with configurable forward extension. Optional chart labels are placed next to each zone.
Alerting is supported across common channels (popup and sound) with options to limit noise, including label-only-on-new-bar and filters that hide neutral signals. Chart clutter controls include keeping only the last N rectangles.
Configuration covers colors (auto by direction or manual), rectangle fill, forward bars, bars-to-keep, labels, alerts, and direction filtering. Works across symbols and timeframes, with an optimized loop targe...
π Read | Quotes | @mql5dev
β€17π5π3
Retail pattern recognition often collapses into the gamblerβs fallacy: after several bullish candles, a bearish reversal is treated as statistically βdueβ. This is intuition-driven and ignores conditional probabilities.
Quant desks typically model price as a stochastic process. Markov chains apply the memoryless assumption: the next state depends on the current state plus an empirically measured transition matrix, not on the full sequence that led there.
Implementation focuses on state classification (bullish vs bearish expansion), a rolling transition matrix computed over a localized window, and a real-time probability readout for the next bar. Output is typically two percentage lines that quantify continuation vs reversal odds.
Operationally, it works best as a trade filter. If a strategy produces a sell signal while the matrix shows a high bul...
π Read | Calendar | @mql5dev
Quant desks typically model price as a stochastic process. Markov chains apply the memoryless assumption: the next state depends on the current state plus an empirically measured transition matrix, not on the full sequence that led there.
Implementation focuses on state classification (bullish vs bearish expansion), a rolling transition matrix computed over a localized window, and a real-time probability readout for the next bar. Output is typically two percentage lines that quantify continuation vs reversal odds.
Operationally, it works best as a trade filter. If a strategy produces a sell signal while the matrix shows a high bul...
π Read | Calendar | @mql5dev
β€23π5π2β‘1
A new MT5 Expert Advisor replaces the native chart panel with an embedded TradingView chart rendered through a WebView2-based HTML container using the official widget.
Symbol selection, seasonality view, and dark/light theme switching are handled inside the terminal, reducing the need to run a separate browser window.
The package also includes date-based licensing. If the current date falls outside the authorized period, the EA disables operation until a valid license window is restored.
π Read | AppStore | @mql5dev
Symbol selection, seasonality view, and dark/light theme switching are handled inside the terminal, reducing the need to run a separate browser window.
The package also includes date-based licensing. If the current date falls outside the authorized period, the EA disables operation until a valid license window is restored.
π Read | AppStore | @mql5dev
β€29π11π3π1
This article replaces large indicator vectors with chart screenshots, letting a CNN learn directly from price context. Images are labeled Buy/Sell using trend-extreme events and daily highs/lows, then split into train/validation and a separate sequential βresponseβ set for later strategy work.
A compact CNN is built in Keras/TensorFlow (449x449 RGB input, 3 conv+pool blocks, 64-neuron dense layer, dropout, sigmoid output) and trained with binary cross-entropy. GPU support via Anaconda dramatically reduces iteration time, making architecture tuning practical.
Model outputs are exported to CSV, plotted in MT5 as an indicator, and converted into tradable signals (e.g., line crossover) for EA optimization. Feature-map visualization helps debug chart design; consistent, distinct colors improve what the CNN can separate.
π Read | AppStore | @mql5dev
A compact CNN is built in Keras/TensorFlow (449x449 RGB input, 3 conv+pool blocks, 64-neuron dense layer, dropout, sigmoid output) and trained with binary cross-entropy. GPU support via Anaconda dramatically reduces iteration time, making architecture tuning practical.
Model outputs are exported to CSV, plotted in MT5 as an indicator, and converted into tradable signals (e.g., line crossover) for EA optimization. Feature-map visualization helps debug chart design; consistent, distinct colors improve what the CNN can separate.
π Read | AppStore | @mql5dev
β€45π12π2π2
Stochastic of Moving Average indicator implemented as a reusable class for EA integration. Intended for use as a filter and can be combined with the free HLPeak_Trend indicator.
No iCustom() dependency. Runtime updates are handled through .Update(int shift), with shift=0 typically used in Expert Advisors. The design supports access to current and previous values via buffer indexing (0=current, 1=previous).
Input parameters cover period configuration and price source: parPeriod, parKPeriod, parDPeriod, parSlowingPeriod, and parPrice (ENUM_APPLIED_PRICE).
Outputs include bufStoc (stochastic), bufStoK (K line), bufStoD (D line), and bufStoDir for directional state mapping: 2 strong up, 1 weak up, -1 weak down, -2 strong down.
π Read | VPS | @mql5dev
No iCustom() dependency. Runtime updates are handled through .Update(int shift), with shift=0 typically used in Expert Advisors. The design supports access to current and previous values via buffer indexing (0=current, 1=previous).
Input parameters cover period configuration and price source: parPeriod, parKPeriod, parDPeriod, parSlowingPeriod, and parPrice (ENUM_APPLIED_PRICE).
Outputs include bufStoc (stochastic), bufStoK (K line), bufStoD (D line), and bufStoDir for directional state mapping: 2 strong up, 1 weak up, -1 weak down, -2 strong down.
π Read | VPS | @mql5dev
β€34π11π―2π1
Multi-Head Attention extends self-attention by running several parallel attention βheadsβ with independent weights, then concatenating their outputs and applying a final projection matrix to combine perspectives. This helps a model capture different dependencies in market sequences before producing a single decision tensor.
The article shows a practical MT5/OpenCL implementation that reduces computation by removing the explicit Keys tensor and training a single matrix where possible, while noting the trade-off when dimension reduction makes separate matrices cheaper.
For time-series, positional encoding is added to preserve distance information between candles using deterministic sine/cosine vectors, summed with inputs to avoid widening tensors.
Implementation details include a dedicated multi-head class, OpenCL kernels for concatenation/deconcatenation, and opt...
π Read | Docs | @mql5dev
The article shows a practical MT5/OpenCL implementation that reduces computation by removing the explicit Keys tensor and training a single matrix where possible, while noting the trade-off when dimension reduction makes separate matrices cheaper.
For time-series, positional encoding is added to preserve distance information between candles using deterministic sine/cosine vectors, summed with inputs to avoid widening tensors.
Implementation details include a dedicated multi-head class, OpenCL kernels for concatenation/deconcatenation, and opt...
π Read | Docs | @mql5dev
β€56π11β6π3β‘2