An introduction to algorithmic trading with Python and MT5:

By Paul Reid

30 January 2024

3095 python trading bot

The world of algorithmic trading can seem daunting, especially for those who aren't tech-savvy. However, the advent of user-friendly tools like Python, a versatile programming language, and MetaTrader 5, a leading trading platform, are changing the game. This article is for non-IT experts curious about stepping into algorithmic trading. 

Understanding algorithmic trading

Algorithmic trading involves using computer programs to automate and manage trading strategies. This approach enables rapid decision-making and execution, essential in the fast-paced trading environment. It's an exciting field that's no longer reserved just for financial experts; with the right tools, anyone can participate.

Introduction to MT5 API

MetaTrader 5, commonly known as MT5, is a popular platform for algorithmic trading. It's known for its advanced technical analysis, flexible trading system, and robust algorithmic trading capabilities. For non-IT traders, MT5 offers an API and access to sophisticated trading tools, making the leap into algorithmic trading less intimidating.

Python – The bridge to simplifying algorithmic trading

Python stands out for its simplicity and readability, making it ideal for those new to programming. When integrated with the MT5 API, Python can automate and optimize trading strategies, opening up opportunities for efficient and effective algorithmic trading.

Step-by-step guide

Setting up: install the MT5 platform and Python on your computer. There are many online guides to help you through this process.

**Basic Python Script for Algorithmic Trading**:


import MetaTrader5 as mt5

# 1. Establish a MetaTrader 5 connection to a specified trading account

if not mt5.initialize(login=account_no, server="Exness-MT5server",password="your_password"):

    print("initialize() failed, error code =",mt5.last_error())


# 2. Display data on connection status, server name and trading account

  • print(mt5.terminal_info())

# 3. Get the XAUUSD data from the last 24 hours 

  • import pandas as pd

  • from datetime import datetime, timedelta

# 4. Initialize MetaTrader 5

if not mt5.initialize():

  •     print("MetaTrader 5 initialization failed.")

  •     quit()

# 5. Define the symbol to monitor

  • symbol = "XAUUSDm"

# 6. Calculate the start and end times for the last 1440 minutes

  • end_time =

  • start_time = end_time - timedelta(minutes=1440)

# 7. Request historical 1-minute data for the specified symbol and time range

  • rates = mt5.copy_rates_range(symbol, mt5.TIMEFRAME_M1, start_time, end_time)

# 8. Convert the data to a pandas DataFrame

if rates is not None and rates.size > 0:

  •     df = pd.DataFrame(rates)

# 9. Convert time in seconds into the datetime format

  •  df['time'] = pd.to_datetime(df['time'], unit='s')

 # 10. Visualize the 'close' prices

  •     plt.figure(figsize=(10, 4))

  •     plt.plot(df['time'], df['close'], label='Close Price', color='blue')

  •     plt.title(f'Close Price of {symbol} Over Time')

  •     plt.xlabel('Time')

  •     plt.ylabel('Close Price')

  •     plt.legend()


 # 11. Visualize the 'tick volume'

  •     plt.figure(figsize=(10, 4))

  •['time'], df['tick_volume'], label='Tick Volume', color='green')

  •     plt.title(f'Tick Volume of {symbol} Over Time')

  •     plt.xlabel('Time')

  •     plt.ylabel('Tick Volume')

  •     plt.legend()



    print(f"No data for {symbol} in the specified time range.")

Explanation of the Script: This script connects to your MT5 API trading account and defines a simple visualization for algorithmic trading. It automates the query XAUUSDm data and plots the specific columns based on the data.

Further Learning Resources

For those eager to learn more, consider online courses in Python programming and algorithmic trading basics. Communities like Exness Blog and trading forums can also be valuable resources.

Feel free to share your experiences, questions, or insights in the comments below. Happy trading!

The results of the coding include the close price of XAUUSD and tick volumes.:

This chart represents XAUUSD (Gold/US Dollar) price movements based on 1-minute interval data.

This chart presents the tick volume of the XAUUSD (Gold/US Dollar) pair, captured at 1-minute intervals. It illustrates the number of transactions or ticks within each minute, providing insights into the trading activity and market liquidity for gold relative to the US dollar. 


Using Python with the MT5 API for algorithmic trading doesn't have to be complicated. This guide is just the starting point. With practice and exploration, you can enhance your trading strategies using these tools. Remember, the key is to start simple and gradually build up your knowledge.

This is not investment advice. Past performance is not an indication of future results. Your capital is at risk, please trade responsibly.


Paul Reid
Paul Reid

Paul Reid is a financial journalist dedicated to uncovering hidden fundamental connections that can give traders an advantage. Focusing primarily on the stock market, Paul's instincts for identifying major company shifts is well established from following the financial markets for over a decade.