Automated Trading Development with Python, Introduction to PyQt and Qt Designer

Automated trading is a system that automatically executes trades in financial markets based on algorithms.
This eliminates the emotional judgment of investors and enables faster and more accurate trading.
In this course, we will cover how to develop an automated trading system using Python,
and introduce how to utilize PyQt and Qt Designer to build a user interface (UI).

1. Overview of Python Automated Trading System

Python is a very suitable language for developing automated trading systems.
It offers libraries that provide access to various financial data and strong algorithmic calculation capabilities.
Additionally, thanks to Python’s community and the wealth of resources available, you can find many examples and help.

1.1. Principles of Automated Trading

The basic principle of automated trading systems is to create algorithms that generate signals and
execute trades based on these signals.
Typically, signal generators are based on chart patterns, technical indicators, news analysis, and more.

1.2. Required Libraries

The following libraries are required to develop an automated trading system:

  • pandas: Library for data processing
  • numpy: Library for mathematical calculations
  • matplotlib: Library for data visualization
  • TA-Lib: Library for technical analysis
  • ccxt: Library for data communication with various exchanges

2. Setting Up the Development Environment

Let’s explore how to set up the necessary environment for developing an automated trading system.

2.1. Installing Python and Libraries

First, you need to have Python installed. Download and install the latest version from the official Python website.

        
        pip install pandas numpy matplotlib ta-lib ccxt
        
    

2.2. Installing an IDE

It is recommended to use an integrated development environment (IDE) such as PyCharm, VSCode, or Jupyter Notebook for convenient coding.

3. Implementing Automated Trading Algorithms

In this section, we will implement a simple moving average crossover strategy.

3.1. Data Collection

We will look at how to collect real-time data from exchanges using the CCXT library.
For example, the code to fetch the Bitcoin price from Binance is as follows.

        
        import ccxt
        import pandas as pd

        # Creating a Binance instance
        binance = ccxt.binance()

        # Fetching Bitcoin data
        ohlcv = binance.fetch_ohlcv('BTC/USDT', timeframe='1d')
        df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
        df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
        print(df.head())
        
    

3.2. Calculating Moving Averages

Here’s how to calculate moving averages based on the collected data.

        
        # Calculating 50-day and 200-day moving averages
        df['MA50'] = df['close'].rolling(window=50).mean()
        df['MA200'] = df['close'].rolling(window=200).mean()

        # Generating signals
        df['signal'] = 0
        df.loc[df['MA50'] > df['MA200'], 'signal'] = 1
        df.loc[df['MA50'] < df['MA200'], 'signal'] = -1
        
    

3.3. Executing Trades

The code to execute trades based on signals is as follows.
Since real trades will take place, it should be used cautiously after thorough testing.

        
        # Trade execution function
        def execute_trade(signal):
            if signal == 1:
                print("Executing buy")
                # binance.create_market_buy_order('BTC/USDT', amount)
            elif signal == -1:
                print("Executing sell")
                # binance.create_market_sell_order('BTC/USDT', amount)

        # Executing trades based on the last signal
        last_signal = df.iloc[-1]['signal']
        execute_trade(last_signal)
        
    

4. Introduction to PyQt and Qt Designer

PyQt is a library that allows you to use the Qt framework in Python.
Qt Designer is a tool that helps you easily create GUI (Graphical User Interface).
It allows for the easy design of a visual interface, including fields for user input.

4.1. Installing PyQt

To install PyQt, enter the following command.

        
        pip install PyQt5
        
    

4.2. Installing Qt Designer

Qt Designer is part of PyQt and is installed along with it.
It can be used within the IDE and offers an intuitive visual tool for GUI design.

4.3. Creating a Basic GUI Structure

You can generate a UI file via Qt Designer and then convert it into Python code for use.
The following example shows how to create a basic window.

        
        from PyQt5.QtWidgets import QApplication, QMainWindow
        import sys

        class MyWindow(QMainWindow):
            def __init__(self):
                super(MyWindow, self).__init__()
                self.setWindowTitle("Automated Trading System")

        app = QApplication(sys.argv)
        window = MyWindow()
        window.show()
        sys.exit(app.exec_())
        
    

5. Integrating the Automated Trading System with the UI

Now let’s integrate the automated trading algorithm we created earlier with the GUI.
We will add functionality to execute trades when a button is clicked in the UI.

        
        from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel
        import sys

        class MyWindow(QMainWindow):
            def __init__(self):
                super(MyWindow, self).__init__()
                self.setWindowTitle("Automated Trading System")

                self.label = QLabel("Status: Waiting", self)
                self.label.setGeometry(50, 50, 200, 50)

                self.btn_execute = QPushButton("Execute Trade", self)
                self.btn_execute.setGeometry(50, 100, 200, 50)
                self.btn_execute.clicked.connect(self.execute_trade)

            def execute_trade(self):
                # Execute the trading algorithm here.
                self.label.setText("Status: Executing Trade")

        app = QApplication(sys.argv)
        window = MyWindow()
        window.show()
        sys.exit(app.exec_())
        
    

6. Conclusion

Today we learned about developing an automated trading system using Python and designing a UI with PyQt and Qt Designer.
Leveraging an automated trading system allows for efficient trading, and PyQt makes it easy to design a user-friendly interface.
I encourage you to further explore various strategies and advanced features.

6.1. Additional Resources

6.2. Questions and Feedback

If you have any questions or feedback, please feel free to leave a comment. Thank you!