mt5-trading-assistant
Automates MetaTrader 5 trading: connect, monitor accounts, execute buy/sell orders with SL/TP, retrieve market data, and manage positions via scripts.
Description
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
MetaTrader5package: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
# IMPORTANT: First modify scripts/mt5_buy.py with your account details
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
# Buy 0.01 lots at market price
python scripts/mt5_buy.py 0.01
# Sell 0.02 lots at specified price 5040.00
python scripts/mt5_sell.py 0.02 5040.00
# Buy with stop loss and take profit
python scripts/mt5_buy.py 0.01 0 5030 5050
Close Positions
# Close all script-managed positions
python scripts/mt5_close_all.py
# Close all positions for a symbol
python scripts/mt5_close_all.py all
# Close specific position by ticket
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 pricetake_profit: Optional take profit price
Examples:
# Market buy 0.01 lot
python scripts/mt5_buy.py 0.01
# Limit buy at 5040.00 with SL 5030, TP 5050
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:
# In scripts/mt5_buy.py, scripts/mt5_sell.py, etc.
ACCOUNT_CONFIG = {
"login": YOUR_ACCOUNT_NUMBER, # CHANGE THIS
"password": "YOUR_PASSWORD", # CHANGE THIS
"server": "YOUR_SERVER_NAME", # CHANGE THIS
"symbol": "YOUR_SYMBOL", # e.g., "XAUUSD" or "XAUUSDm"
}
Option 2: Configuration File (Recommended)
-
Create
config.pyfrom template:cp references/config_template.py config.py -
Edit
config.py:MT5_CONFIG = { "login": 12345678, # YOUR MT5 account number "password": "your_password", # YOUR MT5 password "server": "YourServer", # YOUR MT5 server "symbol": "XAUUSD", # Trading symbol } -
Uncomment import lines in scripts:
# Uncomment these lines in each script: 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", # Demo server
"symbol": "XAUUSDm", # Gold with 'm' suffix
}
IC Markets
MT5_CONFIG = {
"login": 12345678,
"password": "your_password",
"server": "ICMarkets-MT5",
"symbol": "XAUUSD", # Standard symbol
}
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"""
# Initialize MT5
mt5.initialize()
mt5.login(MT5_CONFIG["login"], MT5_CONFIG["password"], server=MT5_CONFIG["server"])
# Get historical data
rates = mt5.copy_rates_from(MT5_CONFIG["symbol"], mt5.TIMEFRAME_H1, datetime.now(), 100)
# Calculate indicators
# ... strategy logic ...
# Execute trades
# ... order execution ...
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
# Get point value
symbol_info = mt5.symbol_info(MT5_CONFIG["symbol"])
point_value = symbol_info.trade_tick_value
# Calculate lot size
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:
#!/usr/bin/env python3
"""
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:
# Clear screen
print("\n" * 50)
# Get current time
print(f"MT5 Dashboard - {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print("=" * 60)
# Get account data
mt5.initialize()
mt5.login(MT5_CONFIG["login"], MT5_CONFIG["password"], server=MT5_CONFIG["server"])
# Display data
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}")
# Get positions
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 templatereferences/setup_guide.md- Complete setup instructions
External Resources
Support
For issues:
- Check
references/setup_guide.mdfor 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
Reviews (0)
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!