History of MQL5.community development

The most popular trading robots and technical indicators, news signals, regular incoming ready-made MQL5 programs in CodeBase and the most discussed Forum topics.

10 new products are now available on the Market:

and 5 more...

More than 800 new charts published:

Chart EURUSD, H1, 2026.09.07 16:34 UTC, ProopCo FX Ltd., MetaTrader 5, Real
EURUSD, H1
Chart XAUUSD~, H1, 2026.09.07 11:50 UTC, Blackwell Global Investments Limited, MetaTrader 5, Real
XAUUSD~, H1
Gráfico XAUUSDm, H1, 2026.09.07 21:02 UTC, Exness Technologies Ltd, MetaTrader 5, Real
XAUUSDm, H1

New publications in CodeBase

14 new products are now available on the Market:

and 9 more...

Bestsellers in the Market:

There are more than 60,280 products available in Market

8 new signals now available for subscription:

MSRLab Darwinex Zero DGCM
61% 6198 trades
Growth:60.58%
Equity:158,812.26USD
Balance:160,588.12USD
and 7 more...

11 new products are now available on the Market:

and 6 more...

New publications in CodeBase

  • RiskPilot Pro — Drag-to-Trade Risk Panel with Break-Even, Trailing and a Daily Loss Guard Drag your stop loss where you actually want it, hit Buy or Sell, and the lot size is already correct — no calculator, no spreadsheet. Handles break-even, trailing, and shuts trading down for the day if you hit your loss limit.
  • Extract information from the MT5 broker This MT5 EA is a diagnostic tool that does not execute trades, but collects and displays technical specifications relating to the broker and the trading environment. The code is structured into four main blocks: Data Collection (CollectAll): Retrieves information on the account (leverage, currency), the symbol (digits, spread, swap, volumes, stop levels), latency (ping) and time zone (Server-UTC difference). Calculates the swap in real currency. Sampling (OnTick): Updates spread statistics (minimum, average, maximum) in real time. Output: Prints the data to the ‘Experts’ log, saves it to a CSV file and displays it on a graphical panel on the chart (UpdatePanel). Helper: Functions such as CalcSwapInCurrency and various *ToStr functions convert the broker’s raw numerical data into readable strings.
There are more than 12,400 codes published in Codebase

Bestsellers in the Market:

9 new signals now available for subscription:

Kingfisher
402% 347 trades
Growth:401.73%
Equity:991.12USD
Balance:991.12USD
Odyssey247
31% 45 trades
Growth:30.51%
Equity:768.03USD
Balance:763.48USD
Joker v5
0% 17 trades
Growth:0.01%
Equity:100,008.67USD
Balance:100,009.56USD
and 6 more...

4 new topics on forum:

and 1 more...

Published article "Machine Learning Under Constraint (Part 1): A Configurable Rule Set for Prop-Firm Position Sizing".

Machine Learning Under Constraint (Part 1): A Configurable Rule Set for Prop-Firm Position Sizing

Hardcoded prop-firm rules lock the sizer to one program. This article factors those rules into a PropFirmRuleSet and refactors PropFirmAccountState and the sizing modifiers to consume it, including dynamic versus fixed daily limits and the news-window profit-credit haircut. Parity against the original FundedNext behavior is validated on a simulated equity path, so you can retarget sizing by configuration instead of rewriting code.

New publications in CodeBase

  • Contract Sizer: ladder, floor and a breaker that survives a deposit Three position-sizing protections that do different things; confusing them is why so many accounts get wiped out: - ladder: one contract per X of balance, always applied as a CAP, even with manual lot sizing; - floor: below the minimum capital it does not trade; a new deposit is needed; - breaker: stops at X% below the peak, at any account size, and does not rearm by itself. What this library solves and almost none does: a deposit is not profit, and a withdrawal is not a loss. The breaker measures the drop against the balance peak. Untreated, a deposit made DURING a drawdown lifts balance and peak together, and the protection stops seeing the drop exactly when it would help. Here deposits and withdrawals shift the peak by the same amount. The peak is persisted to a file: a breaker that forgets the peak on a terminal restart is not a breaker. The demo simulates a deposit at the bottom of a drawdown. Run it with the deposit on and off and compare the "drop" column.
  • Safe Logger: why your log lines vanish while FileOpen keeps returning success Four EAs writing to the same file, all with FILE_SHARE_READ|FILE_SHARE_WRITE, FileSeek(SEEK_END), FileWrite, FileClose. Looks correct. Every FileOpen returns success. No error in the log. And the lines vanish. Reason: FILE_SHARE_WRITE lets all four open at the same time. All four call FileSeek(SEEK_END) and get THE SAME offset, because none has written yet. All four write at the same position. Whoever closes last wins. Three lines vanish silently. In my case: 12 events expected, 8 in the file. The fix is to open EXCLUSIVELY (no FILE_SHARE_WRITE) and retry while another EA holds the file. And to shout in the log when the retries run out: a log that fails silently is worse than no log at all, because you trust it. The demo script reproduces both modes. To see the loss, drag it onto four charts at the same time with safe mode off and count the lines in the CSV. On a single chart the defect does not show up - which is why it passes in testing and breaks in production.
  • Clock Diagnostic: TimeCurrent() freezes and steps backwards TimeCurrent() is not a clock. It is the stamp of the LAST TICK. Two consequences break robots in production: 1. It freezes. With no tick it does not move: illiquid instrument, end of session, unstable connection - and any rule based on it stops with it. 2. It steps backwards: on a symbol switch, a reconnection or a tick from another instrument, the value can go back. The case that cost me a whole protection: I compared the date of a daily decision with TimeCurrent() to reject an expired one. The server clock stepped back to the previous day, the comparison matched, and four EAs accepted YESTERDAY's decision as valid. The gate that should have failed closed failed open - without a single error in the log. Rule: TimeLocal() for timestamps, dates, day changes, expiry - all that must always move forward; TimeCurrent() for session hours and market data. The script measures the divergence in your environment and reports both symptoms live. Run it with the market closed.

New publications in CodeBase

The most downloaded free products:

16 new products are now available on the Market:

and 11 more...

Published article "Market Simulation: Position View (X)".

Market Simulation: Position View (X)

We need a way to handle the graphical objects we create. The approach presented in the previous article works very well for certain scenarios. In this case, we will need something more complex, given the specific nature of the problem at hand. Therefore, we will not attempt to replace the ZOrder management mechanisms already present in MetaTrader 5, nor, of course, will we check which object is in the foreground or covered by another object. We are going to do something completely different. Here, I will show you what changes need to be made to the code in order to use part of what MetaTrader 5 already does for us.

Published article "From Basic to Intermediate: Queues, Lists, and Trees (II)".

From Basic to Intermediate: Queues, Lists, and Trees (II)

This is an article that you, dear reader, should study carefully. That is due to the nature of the material presented here. Although we have tried to present the material as simply and informatively as possible, the information provided here can certainly seem quite complex to those who are just beginning to learn programming. Nevertheless, this is no reason to lose heart or ignore what is explained here, as this article will establish a link between two completely different, though closely related, topics.

Published article "Building a Bar Replay Tool in MQL5".

Building a Bar Replay Tool in MQL5

This article shows how to build an interactive bar replay tool in MQL5 for MetaTrader 5 that reveals historical candles one by one without exposing future data. You will implement custom candles with DRAW COLOR CANDLES, an event-driven engine with OnChartEvent and OnTimer, a dashboard with Play/Pause, a draggable replay anchor, and Buy/Sell paper trading with SL/TP lines, while keeping the active bar in view to practice discretionary analysis and execution.

Published article "Price Action Analysis Toolkit Development (Part 81): Adding Persistent Historical Bookmarks to an MQL5 Navigator".

Price Action Analysis Toolkit Development (Part 81): Adding Persistent Historical Bookmarks to an MQL5 Navigator

We introduce a persistent bookmark layer for the MetaTrader 5 History Navigator. Bookmarks capture a chart's symbol, timeframe, and historical position with a name and notes, write them to a CSV file, and reload them later without manual date entry. The implementation integrates bookmark management into the current navigation engine, enabling quick creation, selection, navigation, and deletion for efficient historical study.

There are more than 60,220 products available in Market

More than 700 new charts published:

Chart FUS30., M1, 2026.09.06 12:39 UTC, Dom Maklerski Banku Ochrony Srodowiska S.A., MetaTrader 4, Real
FUS30., M1
Chart XAUUSD, M15, 2026.09.07 02:03 UTC, Exness Technologies Ltd, MetaTrader 5, Real
XAUUSD, M15
Chart XAUUSD, H1, 2026.09.06 20:52 UTC, Vantage Trading Ltd, MetaTrader 5, Real
XAUUSD, H1

New publications in CodeBase

  • OHLC Reality Check - at what stop distance does your backtest start lying? Opens a virtual bracketed trade on every M1 bar, walks it forward on the real tick history, and reports for a sweep of stop distances how often 1-minute OHLC modelling would score the trade the wrong way round.
  • SessionReopenEA Gold has a daily maintenance break on the CME. The first hour after it rises more than chance explains, in every calendar year of an 11-year sample - while every other hour of the day measures flat. One trade per session, a volatility-scaled server-side stop, no averaging or grid. Then my cost model turned out to be wrong. A real-tick backtest showed the true round-trip cost at the reopen is about 60 points, not the 19 my research had charged - the M1 bar spread field is a per-bar summary and understates it roughly threefold. Re-running 11 years at the corrected cost: +3.34 bps, t 7.40, 59.3% wins -> +1.60 bps, t 3.42, 50.8% wins The edge survives, at less than half its original strength. That second number is the real one. What it is not: about +3.3% a year with 4.6% drawdown, roughly one year in nine negative. At 0.01 lots that is ~130 a year - a figure that measures the position size, not the strategy.

Published article "Market Simulation: Position View (IX)".

Market Simulation: Position View (IX)

In this turning-point article, we will begin to explore in greater depth the interaction between the applications we are developing to ensure full support for the replay/simulation system. Here we will analyze a problem that, on the one hand, is quite unpleasant, but on the other hand, is very interesting to explain and solve. The problem is this: how can we restore the take-profit and stop-loss lines after they have been deleted, and do so without using the terminal by performing the operation directly on the chart? At first glance, it seems simple. However, there are several obstacles that must be overcome.

Published article "From Basic to Intermediate: Queues, Lists, and Trees (I)".

From Basic to Intermediate: Queues, Lists, and Trees (I)

In this article, we'll begin exploring a short series of concepts that are of immense importance to anyone who truly wants to learn how to program properly. Since this may seem very complicated at first—even though it is based on simple elements—we will go through the material step by step. So, let's start by figuring out what queues are.

9 new signals now available for subscription:

BotCAD302
400% 2158 trades
Growth:400.03%
Equity:1,041.57USD
Balance:1,048.91USD
MakeIt
127% 148 trades
Growth:127.08%
Equity:1,260.69USD
Balance:1,260.69USD
Blind execution
27% 214 trades
Growth:26.72%
Equity:302.69USD
Balance:306.45USD
and 6 more...

Bestsellers in the Market:

11 new products are now available on the Market:

and 6 more...

2 new topics on forum:

7 new signals now available for subscription:

APEX KONG
17% 87 trades
Growth:16.59%
Equity:984.76UST
Balance:984.76UST
Gold World
16% 53 trades
Growth:16.14%
Equity:575.96USD
Balance:580.70USD
Vectrum Trend EA
7% 246 trades
Growth:7.18%
Equity:106,912.12USD
Balance:107,253.72USD
and 4 more...

16 new products are now available on the Market:

and 11 more...
There are more than 60,170 products available in Market

Most downloaded source codes this week

  • Functions to simplify work with orders All we want is to think about algorithms and methods, not about syntax and values how to place orders. Here you have simple functions to manage positions in MQL5.
  • iS7N_TREND.mq5 Now it's two-color (or two-mode) trend indicator, the number of calculated bars can be specified.
  • LotSize Calculation This is a simple script file to compute lot size either using risk percentage approach or the actual amount to risk.

Most read articles this week

How to purchase a trading robot from the MetaTrader Market and to install it?

How to purchase a trading robot from the MetaTrader Market and to install it?

A product from the MetaTrader Market can be purchased on the MQL5.com website or straight from the MetaTrader 4 and MetaTrader 5 trading platforms. Choose a desired product that suits your trading style, pay for it using your preferred payment method, and activate the product.

How to Test a Trading Robot Before Buying

How to Test a Trading Robot Before Buying

Buying a trading robot on MQL5 Market has a distinct benefit over all other similar options - an automated system offered can be thoroughly tested directly in the MetaTrader 5 terminal. Before buying, an Expert Advisor can and should be carefully run in all unfavorable modes in the built-in Strategy Tester to get a complete grasp of the system.

New publications in CodeBase

  • Trade Excursion Report: MFE and MAE of every closed trade, to CSV Exports one CSV line per closed trade with the numbers a statement does not carry: the best unrealised profit the trade showed (MFE), the worst unrealised loss it survived (MAE), how much of the MFE was actually kept, how many bars it spanned, and how long it was held. Same measurement as the Trade Excursion indicator, written to a file instead of drawn, because the questions worth asking of this data are ones a chart cannot answer: does the capture ratio depend on the hour of entry? Are the trades I close early the ones I hold longest? Do losers on Mondays reach a different MAE than on Fridays? Those are one pivot table away once the CSV exists. Output is semicolon separated with a header row, in MQL5\Files; opens in any spreadsheet. Measurement limit: excursions come from bar highs and lows on the chosen timeframe; the path inside a bar is unknown. The bars column reports the resolution each trade got, and the summary counts single-bar trades separately instead of averaging them in.
  • Trade Excursion: how much of each winner you actually kept (MFE/MAE from your own history) Your statement tells you what you KEPT. It does not tell you what you HAD. This indicator reads your own closed trades from the account history and draws, for each one, the full range it travelled: the best unrealised profit it ever showed (MFE) and the worst unrealised loss it survived (MAE). The gap between what a trade showed and what it paid is where two common problems hide, and neither is visible in a balance curve: winners closing far below their best point (the exit leaves money behind), and losers whose worst excursion barely passed the stop (the stop sits inside the noise). The number to look at is the CAPTURE RATIO: of the profit a winner showed at its best, how much did you take home? 90% says the exits are well placed; 30% says the market kept offering and the exit kept refusing. Limit, stated up front: excursions come from the bars each trade spanned, on the chart timeframe; the path inside a bar is unknown. Predicts nothing; measures trades that already happened.
  • Decision Watchdog: refuse yesterday's decision, fail closed, log once A daily process writes "today's decision" (which strategy runs, or FLAT) to a file the EAs read at the open. One day the writer did not run. The EAs read yesterday's file, compared its date with TimeCurrent() - the server clock, which had stepped back to the previous day overnight - saw a match, and traded all morning on a 24-hour-old decision. No error anywhere. Two rules, both in this class: 1) staleness is judged against TimeLocal(), which always moves forward; TimeCurrent() is the last tick's stamp - it freezes without ticks and can step back on reconnect. 2) When in doubt the answer is FLAT: missing file, bad date, wrong day, empty line - every failure path returns "do nothing", and each is logged ONCE per state change, not on every tick and not never. File format: line 1 = ISO date, line 2 = decision string. The demo writes a fresh, a stale, a malformed, an empty and a missing file, and shows that only the first is allowed to trade.
  • Exposure Cap: one position limit per symbol across all your EAs Four EAs on the same symbol, each one honest on its own: each checks "do I have a position?" with its own magic number, sees none, and enters. On a demo account this reached 22 contracts on a symbol meant to carry 1, and a watchdog had to close 16 positions in one morning. The cap belongs at the door, not after the fact. ExposureCap::Allowed(symbol, lots, cap) sums the volume of every open position on the symbol - all magic numbers, manual trades included - and refuses the order BEFORE it is sent when it would breach the cap. One log line with the three numbers (held, requested, cap) says why. Deliberately simple: gross exposure, no netting of longs against shorts, no per-EA quota. It is a check, not a lock: two EAs deciding on the same tick can both pass; in practice EAs on different charts decide on different ticks. The demo script prints held / cap / room for the current symbol and shows the refusal line. Nothing is traded.
  • Server Time Offset: the three clocks in MQL5 and how timestamps shift on export A datetime in MQL5 is seconds since 1970 - but server time (TimeCurrent, bar times, deal times) is the broker's wall clock stored AS IF it were UTC. Export it to CSV, read it in Python or a spreadsheet with a "seconds since 1970 UTC" parser, and every timestamp shifts by the server's UTC offset. On a UTC-3 broker that is three hours: the daily bar dated 00:00 reads as 21:00 of the previous day, and "yesterday's session" silently becomes "today's, half formed". That happened to a morning report of mine before this script existed. The script prints TimeTradeServer, TimeCurrent, TimeGMT and TimeLocal, the three offsets between them, the tick lag, and this chart's last bar time in server time and in real UTC - then states the rule: export server timestamps as wall-clock text, or export the epoch together with the offset, and never let the consumer apply its own timezone.

Bestsellers in the Market:

The most downloaded free products:

The most popular forum topics:

10 new products are now available on the Market:

and 5 more...

New publications in CodeBase

  • Risk-Based Lot Size Calculator A simple MQL5 script that calculates the correct lot size for a trade based on your account risk percentage and stop loss distance in pips, so every trade risks a consistent, controlled amount of your balance.
  • Correlation-Aware Lot Size Calculator Sizes your next trade based on the correlated risk you already have open across other positions — not just the trade in isolation.

New publications in CodeBase

  • Prop Firm Rule Checker Checks your trade history against common prop-firm challenge rules — profit target, max daily loss, max drawdown, consistency rule, and minimum trading days — with a clear PASS/FAIL report.
  • GDS Renko Donchian Demo EA A small educational Expert Advisor showing how a classic Donchian breakout can be applied directly to completed Renko bricks.
  • TrueCostReport Cost is the one input to a trading system that is knowable exactly, and it is almost always estimated wrongly - always in the direction that flatters the strategy. This EA measures what one round trip really costs on YOUR broker: the live spread sampled from ticks, the swap for both sides including the triple-charge day, and the commission read from your own deals. Most spread figures come from the bar's "spread" field, because that is the easy one to reach. It is a per-bar summary, not the quote at any instant. Measured on XAUUSD: 20 points live across 60 readings against a bar-field median of 6. A factor of 3.3. So a filter set to "skip if spread > 15" never fires - it lets through exactly the moments it exists to block. Swap is the half most custom simulators do not charge at all. It is asymmetric, one side pays while the other collects, and one weekday counts three times. Read-only: it never opens, closes or modifies a position.
  • SuperTrend TV EA An Expert Advisor that trades the SuperTrend TV indicator through iCustom on closed bars only, shipped with the audit that proves every trade matches a signal and no signal was missed
  • Any Indicator Alert - alerts, push notifications and multi-timeframe for any custom indicator, no source code needed Attach it to a chart, type the name of any custom indicator, and it alerts you on that indicator's own buffers - popup, sound, push notification to your phone, or email. It reads the indicator through iCustom, so no source is needed: a compiled .ex5 you downloaded is enough. It can also read that indicator from a higher timeframe, and it re-checks closed bars to tell you whether the indicator repaints or merely lags. It opens in EXPLORE mode, which lists every buffer the indicator has and what is in each one, because "which buffer holds the signal" is the question that stops most people using iCustom at all.
  • ErrorHandler - Trade Error Classifier for MQL4 Trade error classifier and automated retry back-off framework for MQL4 Expert Advisors.
There are more than 60,110 products available in Market

Bestsellers in the Market:

12 new signals now available for subscription:

CS zhoucheng
572% 4569 trades
Growth:571.50%
Equity:718,482.20USD
Balance:429,969.92USD
ABS FX Signals
15% 2732 trades
Growth:14.95%
Equity:5,792.24USD
Balance:5,792.24USD
and 10 more...

3 new topics on forum:

20 new products are now available on the Market:

and 15 more...

More than 700 new charts published:

Chart STD_XAUUSD_EQZ, M15, 2026.09.05 12:56 UTC, Exness Technologies Ltd, MetaTrader 5, Real
STD_XAUUSD_EQZ, M15
Chart Crash 500 Index, M1, 2026.09.05 12:36 UTC, Deriv.com Limited, MetaTrader 5, Demo
Crash 500 Index, M1
Chart XAUUSDm, M1, 2026.09.05 12:52 UTC, Exness Technologies Ltd, MetaTrader 5, Real
XAUUSDm, M1

5 new signals now available for subscription:

WhitegoldX
5% 693 trades
Growth:4.81%
Equity:9,534.10USD
Balance:9,534.10USD
and 4 more...
12345678910111213141516...689