365 lines
5.3 KiB
Markdown
365 lines
5.3 KiB
Markdown
# xLSTM PPO Reinforcement Learning Trading Bot for MetaTrader 5 (XAUUSD)
|
|
|
|
An AI-powered trading bot that combines **Extended LSTM (xLSTM)** and **Proximal Policy Optimization (PPO)** to learn profitable trading strategies on XAUUSD.
|
|
|
|
Unlike traditional indicator-based Expert Advisors, this project learns directly from historical market data using reinforcement learning while incorporating Smart Money Concepts (SMC), technical indicators, market structure, and adaptive risk management.
|
|
|
|
---
|
|
|
|
## Features
|
|
|
|
### Reinforcement Learning
|
|
|
|
- xLSTM policy network
|
|
- Proximal Policy Optimization (PPO)
|
|
- Sequence-based learning
|
|
- Reinforcement learning trading environment
|
|
- Reward shaping
|
|
- GPU/CPU training support
|
|
|
|
---
|
|
|
|
## Smart Money Concepts (SMC)
|
|
|
|
The bot automatically detects:
|
|
|
|
- Order Blocks (OB)
|
|
- Mitigated Order Blocks
|
|
- Breaker Blocks
|
|
- Mitigation Blocks (MB)
|
|
- Rejection Blocks (RB)
|
|
- Fair Value Gaps (FVG)
|
|
- Inverse Fair Value Gaps (IFVG)
|
|
- FVG Retracements
|
|
- Equal Highs (EQH)
|
|
- Equal Lows (EQL)
|
|
- Market Structure Shifts (MSS)
|
|
- Swing Highs
|
|
- Swing Lows
|
|
- Previous Day High (PDH)
|
|
- Previous Day Low (PDL)
|
|
- Asia High
|
|
- Asia Low
|
|
- Trend Lines
|
|
- Liquidity Sweeps
|
|
- BoS
|
|
- Trends
|
|
- CHoCHs
|
|
---
|
|
|
|
## Technical Indicators
|
|
|
|
Included features include:
|
|
|
|
- EMA 7
|
|
- EMA 21
|
|
- EMA Difference
|
|
- EMA Slopes
|
|
- ADX
|
|
- +DI
|
|
- -DI
|
|
- Stochastic Oscillator
|
|
- VWAP
|
|
- VWAP Upper Band
|
|
- VWAP Lower Band
|
|
- Volume Moving Average
|
|
- Session Detection
|
|
- Indecision Candles
|
|
|
|
---
|
|
|
|
## Adaptive Trade Management
|
|
|
|
The bot automatically manages:
|
|
|
|
- Adaptive Stop Loss
|
|
- Adaptive Take Profit
|
|
- Partial Profit Taking
|
|
- Break-even Movement
|
|
- Dynamic Position Sizing
|
|
- Risk-based Lot Calculation
|
|
|
|
---
|
|
|
|
## Machine Learning Features
|
|
|
|
The model learns from more than 50 engineered features including:
|
|
|
|
- Smart Money Concepts
|
|
- Trend
|
|
- Momentum
|
|
- Liquidity
|
|
- Session information
|
|
- Price distances
|
|
- Volume
|
|
- Volatility
|
|
- Historical sequences
|
|
|
|
---
|
|
|
|
## Trading Environment
|
|
|
|
The custom Gymnasium environment supports:
|
|
|
|
- Buy
|
|
- Sell
|
|
- Hold
|
|
|
|
Rewards consider:
|
|
|
|
- Profit
|
|
- Drawdown
|
|
- Risk
|
|
- Trade quality
|
|
- Spread
|
|
- Commission
|
|
|
|
---
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
.
|
|
├── bot.py # Main application
|
|
├── download/ # Historical CSV data
|
|
├── models/ # Saved models
|
|
├── logs/ # Training logs
|
|
├── scaler.pkl # Feature scaler
|
|
└── README.md
|
|
```
|
|
|
|
---
|
|
|
|
## Installation
|
|
|
|
Clone the repository
|
|
|
|
```bash
|
|
git clone https://github.com/pressure679/LSTM-PPO-Reinforcement-Learning-Trading-Bot-for-MetaTrader-5-XAUUSD-
|
|
cd LSTM-PPO-Reinforcement-Learning-Trading-Bot-for-MetaTrader-5-XAUUSD-
|
|
```
|
|
|
|
Install dependencies
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
---
|
|
|
|
## Requirements
|
|
|
|
- Python 3.11+
|
|
- MetaTrader 5
|
|
|
|
Python packages:
|
|
|
|
```
|
|
torch
|
|
stable-baselines3
|
|
sb3-contrib
|
|
gymnasium
|
|
MetaTrader5
|
|
numpy
|
|
pandas
|
|
scikit-learn
|
|
ta
|
|
xlstm
|
|
```
|
|
|
|
---
|
|
|
|
## Historical Data
|
|
|
|
Place historical data inside the `download/` folder.
|
|
|
|
Example:
|
|
|
|
```
|
|
download/
|
|
└── xauusd-m5-bid-2023-01-01-2026-06-01.csv
|
|
```
|
|
|
|
The bot automatically calculates all technical indicators and Smart Money Concept features before training.
|
|
|
|
---
|
|
|
|
## Training
|
|
|
|
Train the reinforcement learning model:
|
|
|
|
```bash
|
|
python bot.py --train
|
|
```
|
|
|
|
Training automatically:
|
|
|
|
- Loads historical data
|
|
- Calculates technical indicators
|
|
- Builds SMC features
|
|
- Normalizes inputs
|
|
- Creates the trading environment
|
|
- Trains the PPO agent
|
|
- Saves the trained model
|
|
|
|
---
|
|
|
|
## Live Trading
|
|
|
|
Run the live trading bot:
|
|
|
|
```bash
|
|
python bot.py --test
|
|
```
|
|
|
|
The bot will:
|
|
|
|
- Connect to MetaTrader 5
|
|
- Read live candles
|
|
- Generate feature vectors
|
|
- Predict actions
|
|
- Execute trades
|
|
- Manage open positions automatically
|
|
|
|
---
|
|
|
|
## Feature List
|
|
|
|
Current feature set includes:
|
|
|
|
```
|
|
k
|
|
k_smooth
|
|
adx
|
|
+di
|
|
-di
|
|
EMA721_DIFF
|
|
EMA7_Slope
|
|
EMA21_Slope
|
|
indecision
|
|
|
|
bullish_ob
|
|
bearish_ob
|
|
bullish_fvg
|
|
bearish_fvg
|
|
bullish_ifvg
|
|
bearish_ifvg
|
|
|
|
eqh
|
|
eql
|
|
|
|
bullish_mb
|
|
bearish_mb
|
|
|
|
bullish_rb
|
|
bearish_rb
|
|
|
|
bullish_bb
|
|
bearish_bb
|
|
|
|
bullish_mss
|
|
bearish_mss
|
|
|
|
bullish_ob_mitigation
|
|
bearish_ob_mitigation
|
|
|
|
bullish_fvg_retracement
|
|
bearish_fvg_retracement
|
|
|
|
bullish
|
|
bearish
|
|
|
|
above_vwap
|
|
below_vwap
|
|
|
|
pdh
|
|
pdl
|
|
|
|
asia_high
|
|
asia_low
|
|
|
|
pdh_distance
|
|
pdl_distance
|
|
|
|
asia_high_distance
|
|
asia_low_distance
|
|
|
|
vwap
|
|
vwap_upper
|
|
vwap_lower
|
|
|
|
bullish_ifvg_retracement
|
|
bearish_ifvg_retracement
|
|
|
|
swing_high
|
|
swing_low
|
|
|
|
support_trend_line
|
|
resistance_trend_line
|
|
|
|
seq_len
|
|
session
|
|
```
|
|
|
|
---
|
|
|
|
## Risk Management
|
|
|
|
Supports:
|
|
|
|
- Fixed percentage risk
|
|
- Dynamic lot sizing
|
|
- Adaptive stop losses
|
|
- Adaptive take profits
|
|
- Partial exits
|
|
- Break-even protection
|
|
- Maximum open positions
|
|
|
|
---
|
|
|
|
## Training Statistics
|
|
|
|
The bot reports:
|
|
|
|
- Win Rate
|
|
- Profit Factor
|
|
- Sharpe Ratio
|
|
- Sortino Ratio
|
|
- Weekly Return
|
|
- Maximum Drawdown
|
|
- Mean Win
|
|
- Mean Loss
|
|
- Average R
|
|
- Trade Count
|
|
|
|
---
|
|
|
|
## Roadmap
|
|
|
|
- [ ] Multi-symbol training
|
|
- [ ] Multi-timeframe observations
|
|
- [ ] Prioritized Experience Replay
|
|
- [ ] Hyperparameter optimization
|
|
- [ ] Walk-forward validation
|
|
- [ ] ONNX export
|
|
- [ ] Transformer/xLSTM hybrid policy
|
|
- [ ] Trade visualization dashboard
|
|
- [ ] Pattern similarity search
|
|
- [ ] Explainable AI trade analysis
|
|
|
|
---
|
|
|
|
## Disclaimer
|
|
|
|
This project is intended for educational and research purposes only.
|
|
|
|
Trading financial markets involves substantial risk. Past performance does not guarantee future results.
|
|
|
|
Always test on a demo account before trading with real funds.
|
|
|
|
---
|
|
|
|
## License
|
|
|
|
This project is licensed under the MIT License.
|