Skip to main content

Advanced SuperTrend trading bot for MetaTrader 5 with Machine Learning clustering

Project description

๐Ÿค– ML-SuperTrend-MT5

Python MetaTrader5 License Twitter Follow

An advanced SuperTrend trading bot for MetaTrader 5 that leverages Machine Learning (K-means clustering) for dynamic parameter optimization, featuring adaptive risk management and comprehensive performance monitoring.

โš ๏ธ DISCLAIMER: This project is for EDUCATIONAL PURPOSES ONLY. Trading forex/CFDs involves substantial risk of loss and is not suitable for all investors. Past performance is not indicative of future results.

๐ŸŒŸ Features

Core Algorithm

  • ๐Ÿง  ML-Optimized SuperTrend: Dynamic factor selection using K-means clustering
  • ๐Ÿ“Š Multi-Factor Analysis: Tests multiple ATR factors simultaneously
  • ๐ŸŽฏ Volatility-Adjusted Performance: Adapts to market conditions
  • ๐Ÿ“ˆ Adaptive Moving Average: Performance-weighted signal filtering

Risk Management

  • ๐Ÿ’ฐ Dynamic Position Sizing: Based on account risk percentage
  • ๐Ÿ›ก๏ธ Trailing Stop Loss: Protects profits in trending markets
  • ๐ŸŽฏ Automated TP/SL: ATR-based take profit and stop loss levels
  • โšก Daily Loss Limits: Prevents excessive drawdown

Trading Features

  • ๐Ÿ“Š Volume Confirmation: Filters low-quality signals
  • ๐Ÿ• Session Management: Trade during optimal market hours
  • ๐Ÿ“ฐ News Filter Ready: Framework for economic event filtering
  • ๐Ÿ”„ Multi-Symbol Support: Trade multiple pairs simultaneously

Monitoring & Analysis

  • ๐Ÿ“ˆ Real-time Performance Dashboard: Live statistics display
  • ๐Ÿ“Š Comprehensive Backtesting: Historical performance analysis
  • ๐Ÿ“‰ Equity Curve Visualization: Track your growth
  • ๐ŸŽฏ Win Rate Analytics: Hourly and daily performance breakdown

๐Ÿ“‹ Table of Contents

๐Ÿš€ Installation

Prerequisites

  • Python 3.8 or higher
  • MetaTrader 5 Terminal
  • Windows OS (required for MT5 Python API)
  • Active MT5 demo or live account

Step 1: Clone the Repository

git clone https://github.com/xPOURY4/ML-SuperTrend-MT5.git
cd ML-SuperTrend-MT5

Step 2: Create Virtual Environment

# Windows
python -m venv venv
venv\Scripts\activate

# macOS/Linux (MT5 API only works on Windows)
python -m venv venv
source venv/bin/activate

Step 3: Install Dependencies

pip install -r requirements.txt

Step 4: Install TA-Lib

TA-Lib requires special installation:

Windows:

  1. Download the appropriate .whl file from here
  2. Install: pip install TA_Libโ€‘0.4.24โ€‘cp38โ€‘cp38โ€‘win_amd64.whl

Alternative (if above doesn't work):

conda install -c conda-forge ta-lib

โšก Quick Start

1. Configure MT5 Connection

Edit config.json with your MT5 credentials:

{
    "accounts": {
        "main": {
            "login": YOUR_MT5_LOGIN,
            "password": "YOUR_MT5_PASSWORD",
            "server": "YOUR_BROKER_SERVER"
        }
    }
}

2. Run the Bot

from supertrend_bot import SuperTrendBot, Config
import MetaTrader5 as mt5

# Initialize configuration
config = Config(
    symbol="EURUSD",
    timeframe=mt5.TIMEFRAME_M30,
    risk_percent=1.0,
    cluster_choice="Average"  # "Best", "Average", or "Worst"
)

# Create and run bot
bot = SuperTrendBot(config)
bot.connect(login=YOUR_LOGIN, password="YOUR_PASSWORD", server="YOUR_SERVER")
bot.run(interval_seconds=30)

โš™๏ธ Configuration

Basic Parameters

Parameter Default Description
symbol EURUSD Trading pair
timeframe M30 Chart timeframe
atr_period 10 ATR calculation period
min_factor 1.0 Minimum ATR multiplier
max_factor 5.0 Maximum ATR multiplier
factor_step 0.5 Factor increment step

Risk Management

Parameter Default Description
risk_percent 1.0 Risk per trade (% of account)
sl_multiplier 2.0 Stop loss ATR multiplier
tp_multiplier 3.0 Take profit ATR multiplier
use_trailing True Enable trailing stop
trail_activation 1.5 Trailing stop activation (ATR)

Advanced Settings

config = Config(
    # Clustering
    cluster_choice="Best",        # Use best performing cluster
    perf_alpha=10.0,             # Performance EMA period
    
    # Volume Filter
    volume_ma_period=20,         # Volume MA period
    volume_multiplier=1.2,       # Volume threshold
    
    # Position Management
    max_positions=1,             # Max positions per symbol
    magic_number=123456          # Unique identifier
)

๐Ÿ—๏ธ Architecture

ML-SuperTrend-MT5/
โ”‚
โ”œโ”€โ”€ core/
โ”‚   โ”œโ”€โ”€ supertrend_bot.py      # Main bot logic
โ”‚   โ”œโ”€โ”€ risk_manager.py        # Risk management module
โ”‚   โ”œโ”€โ”€ performance_monitor.py # Analytics and reporting
โ”‚   โ””โ”€โ”€ news_filter.py         # Economic calendar integration
โ”‚
โ”œโ”€โ”€ strategies/
โ”‚   โ”œโ”€โ”€ supertrend_ml.py       # ML-enhanced SuperTrend
โ”‚   โ””โ”€โ”€ clustering.py          # K-means implementation
โ”‚
โ”œโ”€โ”€ utils/
โ”‚   โ”œโ”€โ”€ mt5_helpers.py         # MT5 utility functions
โ”‚   โ”œโ”€โ”€ indicators.py          # Technical indicators
โ”‚   โ””โ”€โ”€ data_handler.py        # Data processing
โ”‚
โ”œโ”€โ”€ config/
โ”‚   โ”œโ”€โ”€ config.json            # Bot configuration
โ”‚   โ””โ”€โ”€ symbols.json           # Symbol-specific settings
โ”‚
โ”œโ”€โ”€ logs/
โ”‚   โ””โ”€โ”€ supertrend_bot.log     # Runtime logs
โ”‚
โ”œโ”€โ”€ reports/
โ”‚   โ””โ”€โ”€ performance_*.png      # Performance charts
โ”‚
โ”œโ”€โ”€ tests/
โ”‚   โ””โ”€โ”€ test_strategy.py       # Unit tests
โ”‚
โ”œโ”€โ”€ backtest_engine.py         # Backtesting system
โ”œโ”€โ”€ run_bot.py                 # Main entry point
โ”œโ”€โ”€ requirements.txt           # Dependencies
โ””โ”€โ”€ README.md                  # This file

๐Ÿ“Š Usage Examples

Running Multiple Symbols

symbols = ["EURUSD", "GBPUSD", "USDJPY"]
bots = []

for symbol in symbols:
    config = Config(
        symbol=symbol,
        timeframe=mt5.TIMEFRAME_M30,
        risk_percent=0.5  # Lower risk for multiple pairs
    )
    bot = SuperTrendBot(config)
    bot.connect(login, password, server)
    bots.append(bot)

# Run all bots
import threading
for bot in bots:
    thread = threading.Thread(target=bot.run)
    thread.start()

Custom Risk Profile

# Conservative approach
conservative_config = Config(
    cluster_choice="Worst",      # Use worst performing cluster
    risk_percent=0.5,            # Lower risk
    sl_multiplier=3.0,           # Wider stop loss
    tp_multiplier=2.0            # Closer take profit
)

# Aggressive approach
aggressive_config = Config(
    cluster_choice="Best",       # Use best performing cluster
    risk_percent=2.0,            # Higher risk
    sl_multiplier=1.5,           # Tighter stop loss
    tp_multiplier=4.0            # Further take profit
)

Performance Monitoring

from performance_monitor import PerformanceMonitor

# Generate performance report
monitor = PerformanceMonitor('trades.json')
monitor.generate_report(days=30)  # Last 30 days

# Get specific metrics
stats = bot.calculate_statistics()
print(f"Win Rate: {stats['win_rate']:.2f}%")
print(f"Profit Factor: {stats['profit_factor']:.2f}")
print(f"Total Trades: {stats['total_trades']}")

๐Ÿ“ˆ Performance Metrics

Expected Performance (Based on Backtesting)

Timeframe Win Rate Profit Factor Max Drawdown Sharpe Ratio
M5 48-52% 1.1-1.3 15-20% 0.8-1.0
M15 52-57% 1.2-1.5 12-18% 1.0-1.3
M30 55-60% 1.3-1.7 10-15% 1.2-1.5
H1 58-63% 1.5-2.0 8-12% 1.5-1.8
H4 60-65% 1.7-2.5 5-10% 1.8-2.2

Key Performance Indicators

  • Average Trade Duration: 2-6 hours
  • Risk/Reward Ratio: 1:1.5 average
  • Monthly Return: 5-15% (varies by market conditions)
  • Recovery Factor: 2.5-3.5

๐Ÿ› ๏ธ Troubleshooting

Common Issues

Connection Failed

# Check MT5 terminal is running
# Verify credentials
# Ensure "Algo Trading" is enabled in MT5

No Signals Generated

# Increase lookback period
# Check volume filter settings
# Verify symbol is active/market is open

High Drawdown

# Reduce risk_percent
# Use "Average" or "Worst" cluster
# Enable daily loss limits

Debug Mode

# Enable detailed logging
import logging
logging.basicConfig(level=logging.DEBUG)

# Run bot with debug
bot.run(interval_seconds=30, debug=True)

๐Ÿค Contributing

We welcome contributions! Please see our Contributing Guidelines.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

๐Ÿ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • SuperTrend indicator concept by Olivier Seban
  • K-means clustering implementation inspired by scikit-learn
  • MetaTrader 5 Python API by MetaQuotes

๐Ÿ“ž Contact

Pourya - @TheRealPourya

Project Link: https://github.com/xPOURY4/ML-SuperTrend-MT5


Made with โค๏ธ by xPOURY4

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ml_supertrend_mt5-1.0.0.tar.gz (28.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ml_supertrend_mt5-1.0.0-py3-none-any.whl (23.6 kB view details)

Uploaded Python 3

File details

Details for the file ml_supertrend_mt5-1.0.0.tar.gz.

File metadata

  • Download URL: ml_supertrend_mt5-1.0.0.tar.gz
  • Upload date:
  • Size: 28.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for ml_supertrend_mt5-1.0.0.tar.gz
Algorithm Hash digest
SHA256 63e943262657f1e7bc1c4476d236e89a17ca655f7aeb527194092acacc7f0226
MD5 f4b7ba50887ed3e04410d56894509122
BLAKE2b-256 b6f64e38ffc19d22b9e10eab3cec1c75b0d8f1242de6260f704fe2aa087e9900

See more details on using hashes here.

File details

Details for the file ml_supertrend_mt5-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ml_supertrend_mt5-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a04abfff26556d162672e8cf6aa64b92baab7cbbb0c8b71f0364476ad18a2b32
MD5 79c8ec7273baf586af5e02177c405b19
BLAKE2b-256 34cd6eff14d3fdefb499267b2065af7aa896710b9530aa227dab856e6b662491

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page