Watch how to download trading robots for free
Find us on Twitter!
Join our fan page
Access the CodeBase from your MetaTrader 5 terminal
Couldn't find the right code? Order it in the Freelance section
How to Write an Expert Advisor or an Indicator

MQL5 Source Code Library for MetaTrader 5 - 3


This is the largest free source code library for MetaTrader 5 platform programs. Here you can find ready-made Expert Advisors, technical indicators, scripts and libraries. Use the code library when learning MQL5 language and develop your own automated trading applications based on the provided codes.

You can freely download and test published codes, as well as launch them in MetaTrader 5. The library is also available directly from MetaTrader 5 platform and MetaEditor development environment.

Submit your code

Show candle gain and candle loss in percent.

Candlestick Fitness concept is used in coding HFT Algos based on population optimization algorithms.

This is an indicator to calculate 14 types of moving averages based on close price.

Provides Bollinger Bands with calculating the range bandwidth as the difference in pips between the upper and lower Bands. Bollinger Bands appearance and behavior can be tailored by adjusting period, shift, deviation, and applied price, along with color and line style. The 'range/bandwidth information' label can be placed in the specified Sub-Window, allow to customize label positions. Overall, this indicator aids traders in visualizing market flexibility and volatility based on Bollinger Bands width.

Sec-WebSocket-Key Generator

This function performs the main logic of opening a trade. Calculates the opening price, take profit levels and stop loss based on symbol information and parameters provided by the user. Prepare a trade request (MqlTradeRequest) with the necessary information, such as symbol, volume, order type, deviation, comment, magic number, etc. Call the OrderSend function to send the operation request and get the result. SetTypeFillingBySymbol function: Determines the order fill type (Fill or Kill, Immediate or Cancel, or Return) based on the symbol's filling policy. GetMinTradeLevel function: Calculates the minimum operating level based on the freeze level and the symbol stops level. Adjusts the minimum level to make sure it is within certain limits and returns the result.

This is a script to print all open trades and their PnLs at a specific time in history.

Syncs all chart symbols to symbol of the chart the EA is attached to

The 'wd.Multi_ClockPrice lite!' is the lite version of 'wd.Multi_ClockPrice', providing a visual representation of server time and bid prices on the chart. It synchronizes with PC clock every seconds, allowing seamless updates even when MT5 is offline. Real-time bid prices are displayed, efficiently meeting the need for price information. Place informational labels in the specified sub-window, adjusting positions as needed.

This utility is simple example to add sound alert on connect / disconnect

This is the exact conversion of pivotshigh and pivotslow functions from pine script v4 as an mql5 indicator.

Calculate the cosine distance and similarity between 2 vectors . The cosine distance is 1-cosine_similarity and the cosine similarity is the dot product of two vectors by their magnitudes multiplied.

This is an indicator for showing volume profile on the chart, using simple calculations and very fast execution.

This Script collects all MQL5 built-in indicators buffers and stores them in a CSV file for analysis purposes

This is the exact conversion of linreg function from pine script v4 as an mql5 indicator.

Candle ZigZag is an indicator which changes its leg if a candlestick color changes

The script is useful for inspecting the structure of ONNX models, providing insights into the input and output, their names, and their properties. It is particularly helpful for debugging and understanding the characteristics of ONNX models used in machine learning applications.

A sophisticated tool that accurately measures market noise

The final seventh part of the book discusses the advanced capabilities of the MQL5 API, which will be useful when developing programs for MetaTrader 5. These include custom financial symbols, built-in economic calendar events, and general-purpose technologies such as networking, databases, and cryptography.

In Part 6 of the "MQL5 Programming for Traders", we will study a key component of the MQL5 language – trading automation. We will start with a description of the fundamental entities, such as financial instrument specifications and trading account settings. These are prerequisites for creating properly operating Expert Advisors.

In Part 5 of the book, we'll delve deeper into the APIs associated with algorithmic trading, including financial data analysis and processing, chart visualization, automation, and user interactions.

In the fourth part of the book, we will focus on mastering built-in functions (MQL5 API) and will gradually delve into specialized subsystems. Any MQL5 program can utilize a plethora of technologies and functionalities. Therefore, it makes sense to begin with the most simple and useful functions that can be utilized in most programs.

Part 3 "Object Oriented Programming in MQL5" offers an immersion into the world of object-oriented programming (OOP) in the MQL5 language. Software development often involves the complexity related to the management of multiple entities, requiring advanced technology to improve programming convenience, productivity, and quality.

Part 2 "MQL5 programming fundamentals" is an introduction to the key concepts of this programming language. This part of the book is devoted to data types, identifiers, variables, expressions, and operators. You will learn how to combine different instructions to form the program logic.

The first chapter of the book introduces the MQL5 language and development environment. One of the new features introduced in the MQL5 language compared to MQL4 (MetaTrader 4 language) is support for object-oriented programming (OOP), which makes it similar to C++.

Draw a Rectangle on chart to plot custom grids based on points value on input

A simpler way to display Heikin Ashi

This indicator allows you to define a checklist for you to manually check and confirm your strategy before entering into a trade.

a Simple Visual Strategy Tester / Manual Trade Training using Martingale.

Alerts on engulfing bar below or above rsi levels

The MT5 custom indicator, named "wd.Multi_LineMA.mq5," is designed to offer traders valuable insights into Moving Average values from a higher timeframe (MTF Multi TimeFrame). It encompasses additional visual features for in-depth analysis, such as the ability to view trails for a specified number of bars and a dynamic MA horizontal price line.

Click on candlestick to see its body range, high low range, upper wick range and lower wick range value.

Current Candle To Close in x Time

Envelopes beginner tutorial to learn how to code in MQL5

Horizontal Grid Controller with KeyEvents

This is a simple program to compare asynchronous and synchronous all close. It is a sample program, so feel free to modify it for your own testing purposes, such as adding conditions.

Candlestick Wick Imbalance

This Expert Advisor does not trade. A simple panel, implemented using the standard Canvas library, allows you to draw digits with the mouse. The trained mnist.onnx model is used to recognize the digits.

Display Binance quotes in real-time mode

DCC / Piercing