| name | mt5-trading-assistant |
| description | Comprehensive MetaTrader 5 (MT5) trading automation and monitoring skill. Use when users need to connect to MT5 trading platforms, execute trades, monitor accounts, analyze market data, or automate trading strategies. Triggers: MT5, MetaTrader 5, trading automation, forex trading, gold trading (XAUUSD), automated trading, trading bot, MT5 API, execute trade, buy/sell orders, close positions, stop loss/take profit, account monitoring, real-time quotes, K-line data. |
MT5 Trading Assistant
Complete automation suite for MetaTrader 5 trading platforms. Provides tools for account monitoring, trade execution, market analysis, and risk management.
Quick Start
Important: This skill contains example scripts with hardcoded credentials. You MUST modify the configuration before use.
Prerequisites
-
Python 3.7+ with MetaTrader5 package:
pip install MetaTrader5
-
MT5 Desktop Client running and logged into your account
-
AutoTrading enabled in MT5 (press F7 or click traffic light icon)
Basic Usage Example
Check Account Status
python scripts/mt5_check.py
Execute Test Trade
python scripts/mt5_buy.py 0.01
Basic Usage
Check Account Status
python scripts/mt5_check.py
Get Market Snapshot
python scripts/mt5_snapshot.py
Execute Trades
python scripts/mt5_buy.py 0.01
python scripts/mt5_sell.py 0.02 5040.00
python scripts/mt5_buy.py 0.01 0 5030 5050
Close Positions
python scripts/mt5_close_all.py
python scripts/mt5_close_all.py all
python scripts/mt5_close_all.py 12345678
Test K-line Data
python scripts/test_mt5_kline.py
Core Features
1. Account Monitoring
- Real-time balance and equity tracking
- Position monitoring with P&L calculation
- Margin and leverage information
- Connection status verification
2. Trade Execution
- Market orders (BUY/SELL)
- Position closing (full/partial)
- Stop loss and take profit management
- Order modification capabilities
3. Market Data
- Real-time bid/ask quotes
- Historical K-line data (M1, M5, H1, D1, etc.)
- Spread monitoring
- Price change calculations
4. Risk Management
- Position size calculation
- Stop loss automation
- Risk percentage limits
- Daily loss limits
Script Reference
mt5_buy.py - Buy Order Execution
python scripts/mt5_buy.py <volume> [price] [stop_loss] [take_profit]
Parameters:
volume: Lot size (e.g., 0.01 for micro lot)
price: Optional execution price (0 for market price)
stop_loss: Optional stop loss price
take_profit: Optional take profit price
Examples:
python scripts/mt5_buy.py 0.01
python scripts/mt5_buy.py 0.05 5040.00 5030.00 5050.00
mt5_sell.py - Sell Order Execution
python scripts/mt5_sell.py <volume> [price] [stop_loss] [take_profit]
Usage: Same as mt5_buy.py but for sell orders.
mt5_close_all.py - Position Management
python scripts/mt5_close_all.py [command]
Commands:
- No argument: Close script-managed positions (magic 100001/100002)
all: Close all positions for configured symbol
<ticket>: Close specific position by ticket number
mt5_check.py - Account Status
python scripts/mt5_check.py
Output: Account information, positions, market data, system status.
mt5_snapshot.py - Market Snapshot
python scripts/mt5_snapshot.py
Output: Concise account and market status with trading commands.
test_mt5_kline.py - Data Validation
python scripts/test_mt5_kline.py
Purpose: Test MT5 connection and data retrieval capabilities.
Configuration - MUST MODIFY BEFORE USE
⚠️ SECURITY WARNING: The example scripts contain hardcoded demo account credentials. You MUST modify these before using with your real account.
Configuration Options
Option 1: Direct Script Modification (Quick)
Edit the configuration section in each script file:
ACCOUNT_CONFIG = {
"login": YOUR_ACCOUNT_NUMBER,
"password": "YOUR_PASSWORD",
"server": "YOUR_SERVER_NAME",
"symbol": "YOUR_SYMBOL",
}
Option 2: Configuration File (Recommended)
-
Create config.py from template:
cp references/config_template.py config.py
-
Edit config.py:
MT5_CONFIG = {
"login": 12345678,
"password": "your_password",
"server": "YourServer",
"symbol": "XAUUSD",
}
-
Uncomment import lines in scripts:
try:
from config import MT5_CONFIG
ACCOUNT_CONFIG.update(MT5_CONFIG)
except ImportError:
print("NOTE: config.py not found, using default configuration")
Broker-Specific Settings
Exness
MT5_CONFIG = {
"login": 277528870,
"password": "your_password",
"server": "Exness-MT5Trial5",
"symbol": "XAUUSDm",
}
IC Markets
MT5_CONFIG = {
"login": 12345678,
"password": "your_password",
"server": "ICMarkets-MT5",
"symbol": "XAUUSD",
}
Common Issues & Solutions
Connection Problems
Error: Initialize failed or Login failed
Solution:
- Ensure MT5 desktop client is running and logged in
- Verify account credentials in config.py
- Check server name matches MT5 client
- Enable AutoTrading in MT5 (F7 key)
Trading Issues
Error: AutoTrading disabled by client
Solution: Click the AutoTrading button (traffic light) in MT5 toolbar
Error: Invalid symbol
Solution: Check symbol name in MT5 client, note broker-specific suffixes
Performance Issues
Slow execution: Reduce refresh intervals, close unused charts
Connection drops: Check internet stability, restart MT5 client
Advanced Usage
Custom Strategies
Create strategy scripts by importing MT5 functions:
import MetaTrader5 as mt5
from config import MT5_CONFIG
def moving_average_strategy():
"""Simple moving average crossover strategy"""
mt5.initialize()
mt5.login(MT5_CONFIG["login"], MT5_CONFIG["password"], server=MT5_CONFIG["server"])
rates = mt5.copy_rates_from(MT5_CONFIG["symbol"], mt5.TIMEFRAME_H1, datetime.now(), 100)
mt5.shutdown()
Risk Management Integration
from config import MT5_CONFIG
def calculate_position_size(risk_percent=0.02, stop_loss_pips=20):
"""Calculate position size based on risk"""
account = mt5.account_info()
risk_amount = account.balance * risk_percent
symbol_info = mt5.symbol_info(MT5_CONFIG["symbol"])
point_value = symbol_info.trade_tick_value
risk_per_pip = risk_amount / stop_loss_pips
lot_size = risk_per_pip / point_value
return min(lot_size, MT5_CONFIG.get("max_lot_size", 1.0))
Monitoring Dashboard
Create a simple monitoring script:
"""
MT5 Trading Dashboard
Refreshes every 10 seconds with account status
"""
import time
from datetime import datetime
import MetaTrader5 as mt5
from config import MT5_CONFIG
def dashboard():
while True:
print("\n" * 50)
print(f"MT5 Dashboard - {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print("=" * 60)
mt5.initialize()
mt5.login(MT5_CONFIG["login"], MT5_CONFIG["password"], server=MT5_CONFIG["server"])
account = mt5.account_info()
if account:
print(f"Account: {account.login} | Equity: ${account.equity:.2f}")
print(f"Balance: ${account.balance:.2f} | Margin: ${account.margin:.2f}")
positions = mt5.positions_get(symbol=MT5_CONFIG["symbol"])
if positions:
print(f"\nPositions: {len(positions)}")
for pos in positions:
pnl = "+" if pos.profit > 0 else ""
print(f" {pos.ticket}: {pos.symbol} {pos.volume} lots | P&L: {pnl}${pos.profit:.2f}")
mt5.shutdown()
print("\n" + "=" * 60)
print("Next update in 10 seconds (Ctrl+C to stop)")
time.sleep(10)
if __name__ == "__main__":
try:
dashboard()
except KeyboardInterrupt:
print("\nDashboard stopped")
Security Best Practices
- Never hardcode passwords - Use config.py or environment variables
- Use environment variables for production:
import os
MT5_CONFIG = {
"login": os.getenv("MT5_LOGIN"),
"password": os.getenv("MT5_PASSWORD"),
"server": os.getenv("MT5_SERVER"),
}
- Set file permissions:
chmod 600 config.py
- Add to .gitignore:
echo "config.py" >> .gitignore
- Regular password rotation: Change passwords every 30-90 days
Resources
Reference Files
references/config_template.py - Configuration template
references/setup_guide.md - Complete setup instructions
External Resources
Support
For issues:
- Check
references/setup_guide.md for troubleshooting
- Verify MT5 client is running with AutoTrading enabled
- Test connection with
python scripts/test_mt5_kline.py
- Check account credentials in config.py
Common solutions:
- Restart MT5 client
- Re-enable AutoTrading (F7)
- Verify internet connection
- Check broker server status