The article reframes βtrendβ as a measurable deviation from a memoryless random walk, not a visual chart interpretation. Profitability is tied to breaking the 50/50 equilibrium where direction accuracy is 50% and average win equals average loss, yielding zero expected payoff.
To reduce candle noise, price is discretized into fixed-size point blocks, treating each block as one step. This enables estimating how far price travels vertically over N steps and building a reference distribution for a true random walk using combinatorics.
Comparing real market data (GBPUSD) to the reference shows a wider, flatter distribution: price crosses zero less often and continues direction slightly more than 50%. That small edge implies a trend-following strategy (buy after an up block / sell after a down block) can produce positive expectancy; if reversal probability...
π Read | AlgoBook | @mql5dev
To reduce candle noise, price is discretized into fixed-size point blocks, treating each block as one step. This enables estimating how far price travels vertically over N steps and building a reference distribution for a true random walk using combinatorics.
Comparing real market data (GBPUSD) to the reference shows a wider, flatter distribution: price crosses zero less often and continues direction slightly more than 50%. That small edge implies a trend-following strategy (buy after an up block / sell after a down block) can produce positive expectancy; if reversal probability...
π Read | AlgoBook | @mql5dev
π₯20β€14π€©14π8β2π¨βπ»2π€‘1
Expert Advisor descriptions are unverified claims. Trading history is verifiable. EA Auditor analyzes the account deal history and outputs a short note on how trading was actually executed, including entry timing, SL/TP presence and movement, lot sizing behavior, concurrent positions, trading hours, and average holding time. Output is shown in the Experts tab, on-chart, and saved to a text file in English or Russian.
Martingale detection is based on post-loss lot growth, typically 1.5x or more and clearly higher than after wins. Averaging is detected when additional trades are opened at worse prices while an earlier same-direction trade remains open, reported only when frequent enough to avoid false positives. It also flags unprotected trades that open without stops, trailing or break-even behavior, and skewed SL/TP where win rate requirements matter.
Install...
π Read | Signals | @mql5dev
Martingale detection is based on post-loss lot growth, typically 1.5x or more and clearly higher than after wins. Averaging is detected when additional trades are opened at worse prices while an earlier same-direction trade remains open, reported only when frequent enough to avoid false positives. It also flags unprotected trades that open without stops, trailing or break-even behavior, and skewed SL/TP where win rate requirements matter.
Install...
π Read | Signals | @mql5dev
π25π₯19β€15π€©14π¨βπ»2
Stop manager for MetaTrader 5 that applies breakeven and trailing stop logic to existing positions, including manual trades and positions opened by other EAs. No trade entries are generated.
Breakeven triggers at a configured profit in points and moves SL to entry plus an offset. Trailing can start only after breakeven completes or run independently. Trailing distance is either fixed points or an ATR multiple, and updates are rate-limited by a minimum improvement step to reduce modification traffic.
Positions can be filtered by magic number (0 includes all, including manual), direction, and scope (chart symbol or all symbols). If a position has no SL, an initial SL can be placed at a specified distance.
Operates on ticks and a 1-second timer to cover off-chart symbols. Every SL change is validated against broker stop levels before sending. Works on hedging...
π Read | Calendar | @mql5dev
Breakeven triggers at a configured profit in points and moves SL to entry plus an offset. Trailing can start only after breakeven completes or run independently. Trailing distance is either fixed points or an ATR multiple, and updates are rate-limited by a minimum improvement step to reduce modification traffic.
Positions can be filtered by magic number (0 includes all, including manual), direction, and scope (chart symbol or all symbols). If a position has no SL, an initial SL can be placed at a specified distance.
Operates on ticks and a 1-second timer to cover off-chart symbols. Every SL change is validated against broker stop levels before sending. Works on hedging...
π Read | Calendar | @mql5dev
β€27π22π€©19π₯18
MetaTrader 5 integration work increasingly depends on modern networking. A WebSocket client can be implemented in MQL5 without using a DLL, enabling direct connectivity to external services while staying inside the terminal runtime.
WebSockets provide full-duplex communication over a single TCP connection. Compared with polling, long polling, streaming, and AJAX-style request patterns, the protocol reduces repetitive HTTP headers and avoids keeping wasteful server-side connections.
RFC 6455 defines the HTTP upgrade handshake, then a frame-based format with opcodes (text, binary, continuation, close, ping, pong). Client-to-server frames must be masked using a fresh random 4-byte key per frame.
A practical MQL5 design splits into three classes: CSocket (TCP/TLS, timeouts, send/receive, certificate info), CFrame (frame parsing, size, final flag, type), a...
π Read | NeuroBook | @mql5dev
WebSockets provide full-duplex communication over a single TCP connection. Compared with polling, long polling, streaming, and AJAX-style request patterns, the protocol reduces repetitive HTTP headers and avoids keeping wasteful server-side connections.
RFC 6455 defines the HTTP upgrade handshake, then a frame-based format with opcodes (text, binary, continuation, close, ping, pong). Client-to-server frames must be masked using a fresh random 4-byte key per frame.
A practical MQL5 design splits into three classes: CSocket (TCP/TLS, timeouts, send/receive, certificate info), CFrame (frame parsing, size, final flag, type), a...
π Read | NeuroBook | @mql5dev
β€52π27π₯24π€©14π¨βπ»5π4π1
Risk Lot Panel is an on-chart tool that calculates position size from a specified risk amount and stop-loss distance. It addresses lot sizing before entry and supports forex, metals, indices, and crypto.
The calculation is based on the brokerβs contract parameters, including tick size and loss-side tick value, aligning results with symbol specifications and the account currency. Risk can be set as a percentage of balance, percentage of equity, or a fixed amount.
Output volume is rounded down to the brokerβs volume step and constrained by minimum and maximum lot limits. The panel displays the effective monetary risk after rounding and flags cases where the minimum lot already exceeds the configured risk. Current spread is also shown.
The indicator is display-only, reading data and drawing labels without trading functions or buffers. Example: 100 USD ...
π Read | Calendar | @mql5dev
The calculation is based on the brokerβs contract parameters, including tick size and loss-side tick value, aligning results with symbol specifications and the account currency. Risk can be set as a percentage of balance, percentage of equity, or a fixed amount.
Output volume is rounded down to the brokerβs volume step and constrained by minimum and maximum lot limits. The panel displays the effective monetary risk after rounding and flags cases where the minimum lot already exceeds the configured risk. Current spread is also shown.
The indicator is display-only, reading data and drawing labels without trading functions or buffers. Example: 100 USD ...
π Read | Calendar | @mql5dev
β€14π₯7π5π€©2π¨βπ»2
Spread ATR Monitor quantifies current trading cost by comparing the live spread to ATR, rather than using an absolute point value. This normalizes spread impact across symbols, where the same spread can be negligible on XAUUSD and material on EURUSD.
The panel shows current spread, plus average and maximum spread over the last N ticks. It also reports ATR for the last closed bar on the current timeframe, in points, and calculates spread as a percentage of ATR.
A configurable threshold (10% default) triggers a warning color when spread/ATR becomes excessive. Typical usage includes manual trade checks around session opens or news, and setting a realistic max-spread filter for automated strategies.
The indicator is read-only: it consumes price data and draws labels. Inputs cover tick window size, ATR period, warning threshold, panel position and offset...
π Read | AlgoBook | @mql5dev
The panel shows current spread, plus average and maximum spread over the last N ticks. It also reports ATR for the last closed bar on the current timeframe, in points, and calculates spread as a percentage of ATR.
A configurable threshold (10% default) triggers a warning color when spread/ATR becomes excessive. Typical usage includes manual trade checks around session opens or news, and setting a realistic max-spread filter for automated strategies.
The indicator is read-only: it consumes price data and draws labels. Inputs cover tick window size, ATR period, warning threshold, panel position and offset...
π Read | AlgoBook | @mql5dev
β€19π₯6π€©4π3π2β1
Restart-Safe EA Template provides an Expert Advisor skeleton focused on execution reliability and restart persistence. A common failure mode is duplicate trades after a terminal or VPS restart when the same signal is reprocessed.
Signals are evaluated on closed bars and only once per bar. The last processed bar timestamp is stored in a terminal global variable, preventing repeat execution across restarts. Position state is re-identified after restart with a one-position-per-symbol-and-magic constraint.
Risk and broker-constraint checks include a spread filter, stop-level validation, and volume normalization. Operational transparency is emphasized: entries, skipped signals with reasons, and broker retcodes are written to the Experts log.
A moving-average cross is included only as a placeholder. The GetSignal() function is intended for replacement. Inputs co...
π Read | NeuroBook | @mql5dev
Signals are evaluated on closed bars and only once per bar. The last processed bar timestamp is stored in a terminal global variable, preventing repeat execution across restarts. Position state is re-identified after restart with a one-position-per-symbol-and-magic constraint.
Risk and broker-constraint checks include a spread filter, stop-level validation, and volume normalization. Operational transparency is emphasized: entries, skipped signals with reasons, and broker retcodes are written to the Experts log.
A moving-average cross is included only as a placeholder. The GetSignal() function is intended for replacement. Inputs co...
π Read | NeuroBook | @mql5dev
β€17π€©9π7π₯4π2
Prop-firm evaluations most often fail on risk rules tied to daily loss and max drawdown. Prop-firm Guard is a utility EA for MT5 that enforces those limits with a buffer before the firmβs threshold is reached.
Attached to a single chart, it monitors the entire account across symbols, magic numbers, and manual orders on every tick and once per second. When equity reaches a configured share of a limit (default 90%), it cancels pendings, closes positions, and blocks further trading. While blocked, any new trade is closed immediately. Daily-loss blocks reset at the next trading day; max-DD and profit-target blocks persist until manually cleared.
Supported modes include daily loss based on initial balance or day-start value, configurable day reset hour, static or trailing drawdown (equity or balance high), optional profit target stop, and optional scheduled flat...
π Read | AlgoBook | @mql5dev
Attached to a single chart, it monitors the entire account across symbols, magic numbers, and manual orders on every tick and once per second. When equity reaches a configured share of a limit (default 90%), it cancels pendings, closes positions, and blocks further trading. While blocked, any new trade is closed immediately. Daily-loss blocks reset at the next trading day; max-DD and profit-target blocks persist until manually cleared.
Supported modes include daily loss based on initial balance or day-start value, configurable day reset hour, static or trailing drawdown (equity or balance high), optional profit target stop, and optional scheduled flat...
π Read | AlgoBook | @mql5dev
β€30π₯19π€©8π3π3
Account leverage settings such as 1:500 do not describe the effective leverage per instrument. Many brokers apply instrument-specific margin rates and reduce leverage as position size increases via margin tiers.
Leverage Monitor aggregates per-symbol margin, effective leverage, tiers, swaps, commissions, and spreads for all Market Watch instruments into a single on-chart panel. It is informational only and does not place, modify, or close orders.
The panel shows symbol type, effective leverage with change highlighting, tier breakpoints by volume, swap long/short, commission rules, current spread versus 1-hour average, and a per-minute history view that can switch between leverage and spread. Values are read from instrument specifications and sampled terminal margin calculations; leverage history persists between sessions.
Runs on MetaTrader 5 as an Expert ...
π Read | VPS | @mql5dev
Leverage Monitor aggregates per-symbol margin, effective leverage, tiers, swaps, commissions, and spreads for all Market Watch instruments into a single on-chart panel. It is informational only and does not place, modify, or close orders.
The panel shows symbol type, effective leverage with change highlighting, tier breakpoints by volume, swap long/short, commission rules, current spread versus 1-hour average, and a per-minute history view that can switch between leverage and spread. Values are read from instrument specifications and sampled terminal margin calculations; leverage history persists between sessions.
Runs on MetaTrader 5 as an Expert ...
π Read | VPS | @mql5dev
β€20π€©14π₯7π6
Prop Firm Live Daily Breach Line is a lightweight MT5 chart indicator for prop firm evaluations and funded accounts. It tracks the remaining daily drawdown buffer in account currency and plots a dynamic Daily Breach Level on the active symbol, showing the exact price where current net exposure reaches the daily loss limit.
Accuracy is maintained by reconstructing the 00:00 server-time baseline from todayβs deal history, reversing realized P/L, swaps, fees, and commissions for both entry and exit deals. A short history cache reduces load during rapid ticks. The reset rule supports Balance Only or the higher of Balance/Equity at 00:00, with a single GlobalVariable snapshot to prevent post-rollover equity spikes from shifting the daily floor.
The breach price uses net open volume on the chart symbol, then validates the estimate with a two-step OrderC...
π Read | Docs | @mql5dev
Accuracy is maintained by reconstructing the 00:00 server-time baseline from todayβs deal history, reversing realized P/L, swaps, fees, and commissions for both entry and exit deals. A short history cache reduces load during rapid ticks. The reset rule supports Balance Only or the higher of Balance/Equity at 00:00, with a single GlobalVariable snapshot to prevent post-rollover equity spikes from shifting the daily floor.
The breach price uses net open volume on the chart symbol, then validates the estimate with a two-step OrderC...
π Read | Docs | @mql5dev
β€13π13π€©8π₯4
An MT4 indicator identifies bullish and bearish fair value gaps using three closed candles only, preventing repaint. Detection excludes bar 0 for both creation and mitigation, and each zone is tracked until mitigation.
A bullish gap forms when candle 1 high is below candle 3 low; bearish is the inverse. Zones are drawn as rectangles extending right until mitigated, with optional retention and recoloring after mitigation. Mitigation supports touch-based or full-fill rules; βtouchedβ is only used under full-fill mode.
Zone state and prices are exposed via iCustom buffers, written on the candle 3 bar: state (0β3), top, bottom, and direction (+1/-1). Gaps can be filtered by minimum size in points or ATR fraction, with configurable history scan and maximum tracked zones. No alerts, trading logic, DLL, or WebRequest are included.
π Read | AlgoBook | @mql5dev
A bullish gap forms when candle 1 high is below candle 3 low; bearish is the inverse. Zones are drawn as rectangles extending right until mitigated, with optional retention and recoloring after mitigation. Mitigation supports touch-based or full-fill rules; βtouchedβ is only used under full-fill mode.
Zone state and prices are exposed via iCustom buffers, written on the candle 3 bar: state (0β3), top, bottom, and direction (+1/-1). Gaps can be filtered by minimum size in points or ATR fraction, with configurable history scan and maximum tracked zones. No alerts, trading logic, DLL, or WebRequest are included.
π Read | AlgoBook | @mql5dev
β€21π10π€©7π₯5
EMA trend-following system for XAUUSD on M30, built around a 20/50 EMA crossover filtered by a 200 EMA trend line. Signals are evaluated once per new bar using only closed candles via indicator buffer shifts 1 and 2, preventing repainting. Execution uses market orders at current bid/ask.
Trade management is single-position only: any open position or pending order blocks new entries. Trading is limited to a server-time window (default 07:00β19:00). Stop-loss is fixed as a percentage of entry (default 1%), with no take-profit and no signal-based exit. A daily schedule closes all strategy positions and deletes pending orders at a configured time (default 20:00).
Risk control uses balance-based sizing (default 1% risk per trade), deriving volume from SL distance with tick size/value and lot step, clamped to broker limits. Every order is routed through a ...
π Read | CodeBase | @mql5dev
Trade management is single-position only: any open position or pending order blocks new entries. Trading is limited to a server-time window (default 07:00β19:00). Stop-loss is fixed as a percentage of entry (default 1%), with no take-profit and no signal-based exit. A daily schedule closes all strategy positions and deletes pending orders at a configured time (default 20:00).
Risk control uses balance-based sizing (default 1% risk per trade), deriving volume from SL distance with tick size/value and lot step, clamped to broker limits. Every order is routed through a ...
π Read | CodeBase | @mql5dev
β€12π8π₯8π€©7β‘2π€―2
A post-exit trade analysis script extends reporting beyond the close. For each position closed in the selected period, it scans subsequent M1 bars from the exit price and calculates the best move in the trade direction, the worst move against it, and whether the take-profit level was hit later, including minutes to reach it.
Stop-loss exits are summarized by how often price later reached TP, median time to do so, and median move after the stop. Take-profit exits report how far price continued after TP and how often it ran another 1R or more. Other exit types show median post-exit move and how often the original target was still reached. Values are expressed in R when SL exists, otherwise in points.
Output includes an on-chart summary panel, a per-position table in Experts (newest first), and an optional CSV (AfterExit_<login>.csv). The script reads hist...
π Read | Signals | @mql5dev
Stop-loss exits are summarized by how often price later reached TP, median time to do so, and median move after the stop. Take-profit exits report how far price continued after TP and how often it ran another 1R or more. Other exit types show median post-exit move and how often the original target was still reached. Values are expressed in R when SL exists, otherwise in points.
Output includes an on-chart summary panel, a per-position table in Experts (newest first), and an optional CSV (AfterExit_<login>.csv). The script reads hist...
π Read | Signals | @mql5dev
π₯9π8π€©3β2β€2
A regime indicator classifies every closed bar as trend up, trend down, or sideways, and shows the answer directly on the price chart. Each regime is drawn as a colored box spanning from the first bar of the stretch to the next regime change, and from the lowest low to the highest high in that interval. Blue marks up, red down, gray ranging; fills are blended with the chart background and user-defined colors.
A minimum of 3 bars is required before a box is printed, avoiding one- or two-bar noise. Short flips still appear in the lower window as ADX-based columns: up and sideways values plot above zero, down values below, with optional reference levels (25 by default). A status line reports regime, bar count, and ADX; ranging can also report weak ADX or quiet ATR.
Closed-bar history is stable: boxes and values do not repaint after a bar closes. For automati...
π Read | Forum | @mql5dev
A minimum of 3 bars is required before a box is printed, avoiding one- or two-bar noise. Short flips still appear in the lower window as ADX-based columns: up and sideways values plot above zero, down values below, with optional reference levels (25 by default). A status line reports regime, bar count, and ADX; ranging can also report weak ADX or quiet ATR.
Closed-bar history is stable: boxes and values do not repaint after a bar closes. For automati...
π Read | Forum | @mql5dev
β€10π9π₯5π€©4
Fixed-interval models force tick data into uniform time buckets, which removes microstructure transitions and compresses liquidity shifts into averages. Event-driven pipelines treat each tick as a first-class signal and only react on change.
SDformerFlow applies spiking dynamics and window-based attention to sparse event streams, aiming to recover price microvelocity and short-lived liquidity regimes. The design targets short-horizon forecasting, noise filtering, and order-flow feature extraction.
The architecture follows an encoderβdecoder layout. A Spiking Feature Generator and Shortcut Patch Embedding convert sparse ticks into dense spatiotemporal tokens. STSF encoders stack spiking Swin-style blocks with 3D window attention plus patch merging for multiscale context, while preserving the time axis.
Training stability is addressed via membrane-...
π Read | Signals | @mql5dev
SDformerFlow applies spiking dynamics and window-based attention to sparse event streams, aiming to recover price microvelocity and short-lived liquidity regimes. The design targets short-horizon forecasting, noise filtering, and order-flow feature extraction.
The architecture follows an encoderβdecoder layout. A Spiking Feature Generator and Shortcut Patch Embedding convert sparse ticks into dense spatiotemporal tokens. STSF encoders stack spiking Swin-style blocks with 3D window attention plus patch merging for multiscale context, while preserving the time axis.
Training stability is addressed via membrane-...
π Read | Signals | @mql5dev
β€8π5π₯4π€©1
MetaTrader 5 subwindows behave differently from the main chart regarding indicator instance de-duplication.
Setting indicator_chart_window to a subwindow can allow multiple instances, creating cascaded subwindows. MT5βs usual βsame settings, block duplicatesβ logic often does not apply when a new subwindow is generated.
A practical control is to set a unique indicator short name (IndicatorSetString with INDICATOR_SHORTNAME) and then scan chart windows/indicators via MQL5 to detect whether an instance already exists before creating another.
Subwindow management is scriptable: MQL5 can enumerate chart windows, list indicators per window, and enforce fixed subwindow height via indicator properties to prevent user resizing.
π Read | Signals | @mql5dev
Setting indicator_chart_window to a subwindow can allow multiple instances, creating cascaded subwindows. MT5βs usual βsame settings, block duplicatesβ logic often does not apply when a new subwindow is generated.
A practical control is to set a unique indicator short name (IndicatorSetString with INDICATOR_SHORTNAME) and then scan chart windows/indicators via MQL5 to detect whether an instance already exists before creating another.
Subwindow management is scriptable: MQL5 can enumerate chart windows, list indicators per window, and enforce fixed subwindow height via indicator properties to prevent user resizing.
π Read | Signals | @mql5dev
β€6π3π€©2β1π₯1
An indicator is implemented to run exclusively via OnChartEvent, avoiding periodic recalculation through OnTick or OnCalculate.
Chart zoom is controlled through mouse wheel input, enabling zoom in and zoom out actions without additional UI elements.
The codebase is kept minimal, focusing on event handling and basic chart state updates for responsive interaction and low overhead.
π Read | AlgoBook | @mql5dev
Chart zoom is controlled through mouse wheel input, enabling zoom in and zoom out actions without additional UI elements.
The codebase is kept minimal, focusing on event handling and basic chart state updates for responsive interaction and low overhead.
π Read | AlgoBook | @mql5dev
π€©2π₯1
Work continues on a minimal neuron class intended for building small neural network layouts without external ML libraries. Current implementation supports variable input counts and basic convergence tests, but lacks activation functions and chaining across layers.
Activation functions are framed as a practical constraint on gradient-based learning, with emphasis on how derivatives during backprop can stall training if the function is mismatched. ReLU is used as the first case: it zeroes negative values, while the derivative at x=0 is undefined and typically handled with an explicit convention in code.
An MQL5 indicator is outlined to plot activation curves on a chart. The implementation relies on CCanvas and chart change events to recreate a bitmap with correct dimensions, plus simple keyboard input to shift the view. Only a few offset parameters are int...
π Read | Docs | @mql5dev
Activation functions are framed as a practical constraint on gradient-based learning, with emphasis on how derivatives during backprop can stall training if the function is mismatched. ReLU is used as the first case: it zeroes negative values, while the derivative at x=0 is undefined and typically handled with an explicit convention in code.
An MQL5 indicator is outlined to plot activation curves on a chart. The implementation relies on CCanvas and chart change events to recreate a bitmap with correct dimensions, plus simple keyboard input to shift the view. Only a few offset parameters are int...
π Read | Docs | @mql5dev
π€©4β€3π1π1
Prop Firm Guard Panel is an on-chart monitor for prop firm challenges and funded accounts. It tracks rule headroom in real time: daily loss limit, maximum loss limit, and profit target. The tool is display-only and does not place, modify, or close orders.
The panel shows equity and balance, daily loss used vs limit with remaining room (based on start-of-day balance), max loss usage with remaining room and the equity floor, plus profit target progress. It also displays the server-time day start and the reconstructed start-of-day balance using todayβs closed deals, keeping values consistent after terminal restarts.
Colors transition from green to orange to red as limits approach. Optional popup and push alerts trigger once when a configurable warning threshold is reached. Inputs cover initial balance, limit percentages, reset hour, warning level, layou...
π Read | Calendar | @mql5dev
The panel shows equity and balance, daily loss used vs limit with remaining room (based on start-of-day balance), max loss usage with remaining room and the equity floor, plus profit target progress. It also displays the server-time day start and the reconstructed start-of-day balance using todayβs closed deals, keeping values consistent after terminal restarts.
Colors transition from green to orange to red as limits approach. Optional popup and push alerts trigger once when a configurable warning threshold is reached. Inputs cover initial balance, limit percentages, reset hour, warning level, layou...
π Read | Calendar | @mql5dev
This EA adds a clean measurement layer to M1-confirmed signals by separating what was known at confirmation from what happened afterward, eliminating look-ahead bias in scoring.
At the confirming M1 close, it freezes three normalized features scaled by candle Cβs range (body fraction, breakout magnitude with a saturation cap, and elapsed time within D), then stores an equal-weight descriptive score with an explicit availability time and a validity flag.
Post-confirmation behavior is tracked independently: MFE/MAE are computed only from later M1 bars, excluding the signal candle itself to avoid counting pre-close movement as βafterβ information.
CSV exports distinguish snapshot vs completed records via a record_kind field, enabling reliable filtering (completed + Triggered + score_valid) for hypothesis tests. The design also documents practical pitfalls: hi...
π Read | NeuroBook | @mql5dev
At the confirming M1 close, it freezes three normalized features scaled by candle Cβs range (body fraction, breakout magnitude with a saturation cap, and elapsed time within D), then stores an equal-weight descriptive score with an explicit availability time and a validity flag.
Post-confirmation behavior is tracked independently: MFE/MAE are computed only from later M1 bars, excluding the signal candle itself to avoid counting pre-close movement as βafterβ information.
CSV exports distinguish snapshot vs completed records via a record_kind field, enabling reliable filtering (completed + Triggered + score_valid) for hypothesis tests. The design also documents practical pitfalls: hi...
π Read | NeuroBook | @mql5dev