166 lines
4.2 KiB
Markdown
166 lines
4.2 KiB
Markdown
# Quick Start Guide
|
|
|
|
Get up and running with the MT5 Python backtesting framework in 5 minutes!
|
|
|
|
## Step 1: Install Dependencies
|
|
|
|
```bash
|
|
cd backtesting/MT5
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
## Step 2: Test Your Setup
|
|
|
|
Before running backtests, verify that MT5 is properly configured:
|
|
|
|
```bash
|
|
python test_setup.py
|
|
```
|
|
|
|
This will:
|
|
- Test MT5 connection
|
|
- Check account access
|
|
- Verify symbol availability
|
|
- Test historical data retrieval
|
|
- Test indicator creation
|
|
|
|
**If this fails**, make sure:
|
|
1. MetaTrader5 is installed
|
|
2. MT5 is running
|
|
3. You're logged into a demo or live account
|
|
4. You have historical data downloaded in MT5
|
|
|
|
## Step 3: Run Your First Backtest
|
|
|
|
### Option A: Command Line (Easiest)
|
|
|
|
```bash
|
|
python run_backtest.py --strategy RSIReversalStrategy --symbol XAUUSD --start 2023-01-01 --end 2024-01-01
|
|
```
|
|
|
|
This will:
|
|
- Run the RSI Reversal strategy on Gold (XAUUSD)
|
|
- Backtest from Jan 1, 2023 to Jan 1, 2024
|
|
- Generate performance reports in `backtest_results/`
|
|
|
|
### Option B: Python Script
|
|
|
|
```python
|
|
from datetime import datetime
|
|
import MetaTrader5 as mt5
|
|
from backtest_engine import BacktestEngine
|
|
from example_strategies import RSIReversalStrategy
|
|
from performance_analyzer import PerformanceAnalyzer
|
|
|
|
# Create strategy
|
|
strategy = RSIReversalStrategy(
|
|
symbol='XAUUSD',
|
|
timeframe=mt5.TIMEFRAME_H1,
|
|
initial_balance=10000.0
|
|
)
|
|
|
|
# Run backtest
|
|
engine = BacktestEngine(
|
|
strategy,
|
|
start_date=datetime(2023, 1, 1),
|
|
end_date=datetime(2024, 1, 1)
|
|
)
|
|
|
|
results = engine.run()
|
|
|
|
# View results
|
|
analyzer = PerformanceAnalyzer(results)
|
|
analyzer.generate_report('my_results')
|
|
```
|
|
|
|
## Step 4: Create Your Own Strategy
|
|
|
|
1. **Copy an example strategy** from `example_strategies.py`
|
|
|
|
2. **Modify the `on_bar()` method** with your trading logic:
|
|
|
|
```python
|
|
def on_bar(self, bar_data):
|
|
rsi = bar_data.get('rsi')
|
|
current_price = bar_data['close']
|
|
|
|
# Your logic here
|
|
if rsi < 30 and self.position is None:
|
|
self.open_position('BUY', 0.1, current_price)
|
|
```
|
|
|
|
3. **Specify required indicators**:
|
|
|
|
```python
|
|
def get_required_indicators(self):
|
|
return {
|
|
'rsi': {'period': 14, 'applied_price': mt5.PRICE_CLOSE},
|
|
'ema': {'period': 50, 'applied_price': mt5.PRICE_CLOSE}
|
|
}
|
|
```
|
|
|
|
4. **Run your strategy**:
|
|
|
|
```python
|
|
from backtest_engine import BacktestEngine
|
|
# ... (same as above)
|
|
```
|
|
|
|
## Common Commands
|
|
|
|
### Different Symbols
|
|
```bash
|
|
python run_backtest.py --strategy RSIReversalStrategy --symbol EURUSD --start 2023-01-01 --end 2024-01-01
|
|
```
|
|
|
|
### Different Timeframes
|
|
```bash
|
|
python run_backtest.py --strategy RSIScalpingStrategy --symbol XAUUSD --timeframe M15 --start 2023-01-01 --end 2024-01-01
|
|
```
|
|
|
|
### Custom Parameters
|
|
```bash
|
|
python run_backtest.py --strategy RSIReversalStrategy --symbol XAUUSD --start 2023-01-01 --end 2024-01-01 --rsi-period 28 --rsi-overbought 64 --rsi-oversold 13 --lot-size 0.2
|
|
```
|
|
|
|
## Understanding the Output
|
|
|
|
After running a backtest, you'll get:
|
|
|
|
1. **Console Summary**: Key metrics printed to terminal
|
|
2. **Equity Curve**: `*_equity_curve.png` - Account balance over time
|
|
3. **Drawdown Chart**: `*_drawdown.png` - Drawdown visualization
|
|
4. **Monthly Returns**: `*_monthly_returns.png` - Monthly performance
|
|
5. **Trades CSV**: `*_trades.csv` - Detailed trade log
|
|
|
|
## Next Steps
|
|
|
|
- **Optimize Parameters**: Try different parameter combinations
|
|
- **Test Multiple Strategies**: Compare different approaches
|
|
- **Add More Indicators**: Extend `BacktestEngine.setup_indicators()`
|
|
- **Improve Risk Management**: Customize position sizing and risk rules
|
|
|
|
## Troubleshooting
|
|
|
|
### "MT5 initialization failed"
|
|
- Make sure MT5 is installed and running
|
|
- Try logging into MT5 manually first
|
|
- Check that you have a demo/live account configured
|
|
|
|
### "No data available"
|
|
- Check date range - ensure data exists
|
|
- Verify symbol name (e.g., 'XAUUSD' not 'GOLD')
|
|
- Download historical data in MT5 (Tools > History Center)
|
|
|
|
### "Failed to create indicator"
|
|
- Ensure enough bars are available (need more bars than indicator period)
|
|
- Check indicator parameters are valid
|
|
|
|
## Need Help?
|
|
|
|
- Check the main [README.md](README.md) for detailed documentation
|
|
- Review `example_strategies.py` for strategy examples
|
|
- Look at `example_usage.py` for more usage examples
|
|
|
|
Happy backtesting! 🚀
|