Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

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.

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 225 · 0 current installs · 0 all-time installs
bycanvascn00@canvascn00-crypto
MIT-0
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
high confidence
Purpose & Capability
Name and description align with what the files implement: Python scripts using the MetaTrader5 package to connect, read market data, and place/close orders. Requiring the MT5 desktop client and MetaTrader5 Python package is expected for this functionality.
!
Instruction Scope
SKILL.md stays within the trading domain and instructs users to modify configuration before use, but several runtime scripts include hardcoded account login/password/server values and call mt5.login() directly. The instructions tell users to edit scripts or create config.py, but do not mandate or enforce removal of the embedded credentials; the presence of those credentials in code expands the effective runtime scope (they will be used automatically if left unchanged).
Install Mechanism
No install spec or remote downloads are present (instruction-only + local code files). That reduces supply-chain risk — nothing is fetched or executed from third-party URLs by the skill itself.
!
Credentials
The skill declares no required environment variables or primary credential, yet many scripts contain plaintext credentials (login: 277528870, password: "KKx88088@@@@", server: "Exness-MT5Trial5") and other example account data. This is disproportionate: sensitive credentials are embedded in code rather than being declared or recommended as environment/config inputs. Multiple scripts reuse the same hardcoded credentials, increasing exposure.
Persistence & Privilege
The skill is not always-enabled, is user-invocable, and does not request special platform privileges or modify other skills/configurations. Autonomous invocation is allowed (platform default) but not combined here with other high-privilege requests.
What to consider before installing
This skill appears to implement the trading features it claims, but exercise caution before installing or running it: - Do not run these scripts against a live account until you have reviewed and replaced all credentials. Multiple scripts include plaintext account login/password/server values. Treat those as secrets and remove them from the repo. - Prefer using a config.py (kept out of version control) or environment variables (os.getenv) for MT5_LOGIN/MT5_PASSWORD/MT5_SERVER instead of hardcoded values. The SKILL.md recommends this, but the files still contain credentials that will be used if left unchanged. - Test only on a demo account first. A script can place/close real trades if connected to a live MT5 session and AutoTrading is enabled. - Restrict filesystem permissions on any config file you create and add config.py to .gitignore. Consider rotating passwords if you have ever run the included credentials. - Inspect the scripts yourself (they are plain Python) and remove unused example credentials. If you are concerned about an agent running the skill autonomously, avoid enabling autonomous invocation for agents that have access to real trading credentials. If you want, I can: (a) list every file/location where credentials appear, (b) suggest exact code edits to switch to environment variables, or (c) produce a safe config.py template using os.getenv().

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.0
Download zip
latestvk978hrjcz0n06a918682gxychs82wn9z

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

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

  1. Python 3.7+ with MetaTrader5 package:

    pip install MetaTrader5
    
  2. MT5 Desktop Client running and logged into your account

  3. 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 price
  • take_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)

  1. Create config.py from template:

    cp references/config_template.py config.py
    
  2. 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
    }
    
  3. 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:

  1. Ensure MT5 desktop client is running and logged in
  2. Verify account credentials in config.py
  3. Check server name matches MT5 client
  4. 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

  1. Never hardcode passwords - Use config.py or environment variables
  2. Use environment variables for production:
    import os
    MT5_CONFIG = {
        "login": os.getenv("MT5_LOGIN"),
        "password": os.getenv("MT5_PASSWORD"),
        "server": os.getenv("MT5_SERVER"),
    }
    
  3. Set file permissions: chmod 600 config.py
  4. Add to .gitignore: echo "config.py" >> .gitignore
  5. 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:

  1. Check references/setup_guide.md for troubleshooting
  2. Verify MT5 client is running with AutoTrading enabled
  3. Test connection with python scripts/test_mt5_kline.py
  4. Check account credentials in config.py

Common solutions:

  • Restart MT5 client
  • Re-enable AutoTrading (F7)
  • Verify internet connection
  • Check broker server status

Files

11 total
Select a file
Select a file to preview.

Comments

Loading comments…