✓ Verified 💻 Development ✓ Enhanced Data

Metals Desk Os

Institutional Desk-Level Fully Automated Trading OS for XAU/USD and XAG/USD.

Rating
3.9 (61 reviews)
Downloads
36,301 downloads
Version
1.0.0

Overview

Institutional Desk-Level Fully Automated Trading OS for XAU/USD and XAG/USD.

Key Features

1

Deploy to OpenClaw

2

Install Dependencies

3

Configure Environment

4

Set Initial Mode

5

Start

Complete Documentation

View Source →

Metals Desk OS

An institutional-grade metals trading operating system for gold (XAU/USD) and silver (XAG/USD). This skill transforms the OpenClaw trader agent into a full prop-desk assistant with real-time analysis, automated execution, risk management, and performance tracking.

When to Use This Skill

Use this skill when:

  • Analyzing gold or silver market structure (ICT/SMC methodology)
  • Generating trade signals with full entry/SL/TP plans
  • Running automated or semi-automated trade execution via MT5
  • Monitoring real-time risk, drawdown, and position management
  • Tracking trading performance (win rate, expectancy, Sharpe, drawdown)
  • Getting session-aware, macro-aware trading intelligence

Architecture Overview

The system runs as a continuous event-driven pipeline:

text
PRICE FEED → SESSION ENGINE → STRUCTURE ENGINE → LIQUIDITY ENGINE →
MACRO ENGINE → BIAS ENGINE → VOLATILITY ENGINE → RISK ENGINE →
EXECUTION ENGINE → BROKER → PERFORMANCE ENGINE → DASHBOARD → ALERTS

All engines communicate through a central Event Bus (EventEmitter pattern). Every event is logged and can be monitored in real-time via WebSocket.

Core Engines

EnginePurposeKey Outputs
Structure EngineDetects HH/HL/LH/LL, BOS, CHoCH, FVG, Order BlocksMarket structure, trend direction, structural shifts
Liquidity EngineFinds equal highs/lows, stop clusters, session levels, sweepsLiquidity pools, sweep confirmations
Bias EngineMulti-timeframe directional bias with conviction scoringHTF bias, intraday bias, conviction 0-100, alignment score
Macro EngineTracks DXY, US10Y yields, risk sentiment, news proximitymacro_bias (bullish/bearish/neutral gold), macro_risk level
Volatility EngineATR calculation, spike detection, regime classificationATR, volatility regime (low/normal/high/extreme)
Risk EnginePosition sizing, drawdown monitoring, halt triggersLot size, risk %, pass/fail gate for every trade
Execution EngineCombines all engines to generate trade signalsFull trade plan: entry, SL, TP1/TP2/TP3, position size
Performance EngineWin rate, expectancy, Sharpe, monthly breakdownComprehensive performance metrics and trade log

System Modes

ModeNameBehavior
1AdvisoryFull analysis pipeline runs, signals logged, no execution
2Semi-AutomatedSignals generated + automatic TP/SL/trailing management
3Fully-AutomatedAutonomous execution: signal → order → manage → close
4Risk-OffMonitoring only, no signals generated
Set the mode in data/state.json or via WebSocket command. Always start in Mode 1 for validation.

Risk Rules (Non-Negotiable)

These hard rules are enforced by the Risk Engine and cannot be overridden:

  • Max 2% risk per trade — Position sized via (Balance × Risk%) / StopDistance
  • Max 5% daily exposure — Cumulative open risk capped
  • 3 consecutive losses → halt trading for the session
  • Volatility spike → reduce size 50% (extreme = 75% reduction)
  • Spread widening → block entry (symbol-specific thresholds)
  • High-impact news < 20 minutes → block all entries
  • Equity drawdown > 8% → halt trading until manual resume
  • API error on order → cancel, do NOT retry
  • Broker disconnect → close all positions immediately

Trade Management Protocol

  • TP1 at 1.5R → Partial close 40% → Move SL to break-even
  • TP2 at 2.5R → Partial close 30% → Trail SL under structure
  • TP3 at 4.0R → Close remaining 30% → Log trade to performance

Entry Conditions (All Must Pass)

For the Execution Engine to generate a signal, every condition must be true:

  • Bias conviction ≥ 65/100
  • Alignment score ≥ 0.6
  • Liquidity sweep confirmed (aligned with direction)
  • BOS or CHoCH confirmed in trade direction
  • Session = London or New York (kill zones preferred)
  • Macro risk = low or medium
  • Spread within threshold
  • No news block active
  • Daily loss below 80% of limit
  • Consecutive losses < 3

File Structure

text
metals-desk-os/
├── SKILL.md                    # This file
├── index.js                    # Main orchestrator & entry point
├── package.json                # npm dependencies
├── skill.json                  # OpenClaw registration manifest
├── manifest.json               # Runtime configuration
├── core/                       # 8 trading engines
│   ├── structure-engine.js     # HH/HL/LH/LL, BOS, CHoCH, FVG, OB
│   ├── liquidity-engine.js     # Pools, sweeps, equal levels
│   ├── bias-engine.js          # MTF bias, conviction scoring
│   ├── macro-engine.js         # DXY, yields, sentiment, news
│   ├── volatility-engine.js    # ATR, regime, spikes
│   ├── risk-engine.js          # Position sizing, halts
│   ├── execution-engine.js     # Signal generation
│   └── performance-engine.js   # Metrics tracking
├── automation/                 # System automation layer
│   ├── event-bus.js            # Central event system
│   ├── price-feed.js           # MT5/MetaAPI price data
│   ├── session-engine.js       # London/NY/Asian sessions
│   ├── scheduler.js            # Cron tasks
│   └── news-monitor.js         # Economic calendar
├── broker/                     # MT5 broker integration
│   ├── mt5-connector.js        # Order execution via MetaAPI
│   ├── risk-guard.js           # Position monitoring & trailing
│   └── order-manager.js        # Order lifecycle management
├── dashboard/                  # Real-time monitoring
│   ├── websocket-feed.js       # WebSocket broadcaster (port 3078)
│   ├── desk-dashboard.json     # Widget layout config
│   └── metrics.json            # Metrics template
├── alerts/                     # Notification channels
│   ├── whatsapp-alert.js       # WhatsApp Business API
│   ├── telegram-alert.js       # Telegram Bot
│   └── risk-alert.js           # Centralized dispatcher
├── data/                       # Persistent state files
│   ├── state.json              # System mode & connections
│   ├── trade-log.json          # Trade history
│   ├── performance.json        # Performance metrics
│   └── bias-memory.json        # Bias state persistence
└── prompts/                    # AI agent prompts
    ├── system.txt              # Main system prompt
    ├── intraday.txt            # Intraday trading protocol
    ├── swing.txt               # Swing trading protocol
    └── execution.txt           # Execution protocol

Installation

Step 1: Deploy to OpenClaw

bash
cp -r metals-desk-os/ ~/.openclaw/agents/trader/agent/metals-desk-os/
cd ~/.openclaw/agents/trader/agent/metals-desk-os/

Step 2: Install Dependencies

bash
npm install

Step 3: Configure Environment

Create a .env file in the skill root with the following variables:

text
# MetaAPI / MT5 Connection
METAAPI_TOKEN=your_metaapi_token_here
MT5_ACCOUNT_ID=your_mt5_account_id_here

# WhatsApp Business API (optional)
WHATSAPP_API_URL=https://graph.facebook.com/v18.0/YOUR_PHONE_NUMBER_ID/messages
WHATSAPP_TOKEN=your_whatsapp_token_here
WHATSAPP_PHONE=your_phone_number_with_country_code

# Telegram Bot (optional)
TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here
TELEGRAM_CHAT_ID=your_telegram_chat_id_here

# News API (optional)
NEWS_API_KEY=

# AI Keys (optional, for enhanced analysis)
OPENROUTER_API_KEY=
ANTHROPIC_API_KEY=

MetaAPI: Sign up at https://metaapi.cloud and connect your Fusion Markets MT5 account. Telegram: Create a bot via @BotFather, get chat ID from @userinfobot. WhatsApp: Configure via Meta Business API dashboard.

Step 4: Set Initial Mode

Edit data/state.json and set "mode": 1 (Advisory) to start safely.

Step 5: Start

bash
# Direct
node index.js

# Or with PM2 for production
pm2 start index.js --name metals-desk-os
pm2 save
pm2 startup

Dashboard

Connect any WebSocket client to ws://localhost:3078 to receive real-time JSON payloads containing:

  • Live prices and spread statistics
  • HTF and intraday bias with conviction scores
  • Active positions with live P&L and R:R
  • Liquidity map (equal highs/lows, sweep markers)
  • Macro panel (DXY, yields, news countdown)
  • Performance metrics (win rate, expectancy, drawdown, Sharpe)
  • Risk status (halt state, daily P&L, exposure)
  • Event log (all system events)

Alert Formats

Trade opened:

text
TRADE OPENED
Pair: XAUUSD
Direction: Long
Entry: 5024.50
SL: 5010.00
TP1: 5046.25
Risk: 1.5%
Session: London
Conviction: 82/100

Risk halt:

text
RISK HALT ACTIVATED
Reason: 3 consecutive losses
Trading paused for session

Key Events

The Event Bus broadcasts these events that external systems can subscribe to:

  • price.update — New price tick with candle data
  • structure.shift — BOS or CHoCH detected
  • liquidity.sweep — Liquidity pool swept
  • bias.update — Bias recalculated
  • bias.flip — HTF bias direction changed
  • execution.signal — Valid trade signal generated
  • risk.halt / risk.resume — Trading halted or resumed
  • order.filled / order.closed — Order lifecycle events
  • performance.update — New trade recorded to performance
  • macro.news.block — News event blocking execution

Validation Checklist

Before moving beyond Mode 1:

  • Price feed produces ticks (live or simulated)
  • Structure engine detects swing points and BOS/CHoCH
  • Liquidity engine identifies pools and sweeps
  • Bias engine produces conviction scores > 0
  • Session engine correctly identifies current session
  • Risk engine validates and rejects test scenarios
  • Execution engine generates signals with full entry plans
  • Alerts arrive on configured channels
  • WebSocket feed broadcasts state updates
Once all pass, move to Mode 2 (Semi-Auto) to test position management, then Mode 3 (Full-Auto) for live execution.

Installation

Terminal bash

openclaw install metals-desk-os
    
Copied!

💻Code Examples

EXECUTION ENGINE → BROKER → PERFORMANCE ENGINE → DASHBOARD → ALERTS

execution-engine--broker--performance-engine--dashboard--alerts.txt
All engines communicate through a central **Event Bus** (EventEmitter pattern). Every event is logged and can be monitored in real-time via WebSocket.

## Core Engines

| Engine | Purpose | Key Outputs |
|--------|---------|-------------|
| **Structure Engine** | Detects HH/HL/LH/LL, BOS, CHoCH, FVG, Order Blocks | Market structure, trend direction, structural shifts |
| **Liquidity Engine** | Finds equal highs/lows, stop clusters, session levels, sweeps | Liquidity pools, sweep confirmations |
| **Bias Engine** | Multi-timeframe directional bias with conviction scoring | HTF bias, intraday bias, conviction 0-100, alignment score |
| **Macro Engine** | Tracks DXY, US10Y yields, risk sentiment, news proximity | macro_bias (bullish/bearish/neutral gold), macro_risk level |
| **Volatility Engine** | ATR calculation, spike detection, regime classification | ATR, volatility regime (low/normal/high/extreme) |
| **Risk Engine** | Position sizing, drawdown monitoring, halt triggers | Lot size, risk %, pass/fail gate for every trade |
| **Execution Engine** | Combines all engines to generate trade signals | Full trade plan: entry, SL, TP1/TP2/TP3, position size |
| **Performance Engine** | Win rate, expectancy, Sharpe, monthly breakdown | Comprehensive performance metrics and trade log |

## System Modes

| Mode | Name | Behavior |
|------|------|----------|
| 1 | **Advisory** | Full analysis pipeline runs, signals logged, no execution |
| 2 | **Semi-Automated** | Signals generated + automatic TP/SL/trailing management |
| 3 | **Fully-Automated** | Autonomous execution: signal → order → manage → close |
| 4 | **Risk-Off** | Monitoring only, no signals generated |

Set the mode in `data/state.json` or via WebSocket command. Always start in Mode 1 for validation.

## Risk Rules (Non-Negotiable)

These hard rules are enforced by the Risk Engine and cannot be overridden:

- **Max 2% risk per trade** — Position sized via `(Balance × Risk%) / StopDistance`
- **Max 5% daily exposure** — Cumulative open risk capped
- **3 consecutive losses → halt trading** for the session
- **Volatility spike → reduce size 50%** (extreme = 75% reduction)
- **Spread widening → block entry** (symbol-specific thresholds)
- **High-impact news < 20 minutes → block all entries**
- **Equity drawdown > 8% → halt trading** until manual resume
- **API error on order → cancel, do NOT retry**
- **Broker disconnect → close all positions immediately**

## Trade Management Protocol

1. **TP1 at 1.5R** → Partial close 40% → Move SL to break-even
2. **TP2 at 2.5R** → Partial close 30% → Trail SL under structure
3. **TP3 at 4.0R** → Close remaining 30% → Log trade to performance

## Entry Conditions (All Must Pass)

For the Execution Engine to generate a signal, every condition must be true:
1. Bias conviction ≥ 65/100
2. Alignment score ≥ 0.6
3. Liquidity sweep confirmed (aligned with direction)
4. BOS or CHoCH confirmed in trade direction
5. Session = London or New York (kill zones preferred)
6. Macro risk = low or medium
7. Spread within threshold
8. No news block active
9. Daily loss below 80% of limit
10. Consecutive losses < 3

## File Structure

└── execution.txt # Execution protocol

--executiontxt--execution-protocol.txt
## Installation

### Step 1: Deploy to OpenClaw

npm install

npm-install.txt
### Step 3: Configure Environment

Create a `.env` file in the skill root with the following variables:

ANTHROPIC_API_KEY=

anthropicapikey.txt
**MetaAPI**: Sign up at https://metaapi.cloud and connect your Fusion Markets MT5 account.
**Telegram**: Create a bot via @BotFather, get chat ID from @userinfobot.
**WhatsApp**: Configure via Meta Business API dashboard.

### Step 4: Set Initial Mode

Edit `data/state.json` and set `"mode": 1` (Advisory) to start safely.

### Step 5: Start

pm2 startup

pm2-startup.txt
## Dashboard

Connect any WebSocket client to `ws://localhost:3078` to receive real-time JSON payloads containing:
- Live prices and spread statistics
- HTF and intraday bias with conviction scores
- Active positions with live P&L and R:R
- Liquidity map (equal highs/lows, sweep markers)
- Macro panel (DXY, yields, news countdown)
- Performance metrics (win rate, expectancy, drawdown, Sharpe)
- Risk status (halt state, daily P&L, exposure)
- Event log (all system events)

## Alert Formats

**Trade opened:**
example.txt
PRICE FEED → SESSION ENGINE → STRUCTURE ENGINE → LIQUIDITY ENGINE →
MACRO ENGINE → BIAS ENGINE → VOLATILITY ENGINE → RISK ENGINE →
EXECUTION ENGINE → BROKER → PERFORMANCE ENGINE → DASHBOARD → ALERTS
example.txt
metals-desk-os/
├── SKILL.md                    # This file
├── index.js                    # Main orchestrator & entry point
├── package.json                # npm dependencies
├── skill.json                  # OpenClaw registration manifest
├── manifest.json               # Runtime configuration
├── core/                       # 8 trading engines
│   ├── structure-engine.js     # HH/HL/LH/LL, BOS, CHoCH, FVG, OB
│   ├── liquidity-engine.js     # Pools, sweeps, equal levels
│   ├── bias-engine.js          # MTF bias, conviction scoring
│   ├── macro-engine.js         # DXY, yields, sentiment, news
│   ├── volatility-engine.js    # ATR, regime, spikes
│   ├── risk-engine.js          # Position sizing, halts
│   ├── execution-engine.js     # Signal generation
│   └── performance-engine.js   # Metrics tracking
├── automation/                 # System automation layer
│   ├── event-bus.js            # Central event system
│   ├── price-feed.js           # MT5/MetaAPI price data
│   ├── session-engine.js       # London/NY/Asian sessions
│   ├── scheduler.js            # Cron tasks
│   └── news-monitor.js         # Economic calendar
├── broker/                     # MT5 broker integration
│   ├── mt5-connector.js        # Order execution via MetaAPI
│   ├── risk-guard.js           # Position monitoring & trailing
│   └── order-manager.js        # Order lifecycle management
├── dashboard/                  # Real-time monitoring
│   ├── websocket-feed.js       # WebSocket broadcaster (port 3078)
│   ├── desk-dashboard.json     # Widget layout config
│   └── metrics.json            # Metrics template
├── alerts/                     # Notification channels
│   ├── whatsapp-alert.js       # WhatsApp Business API
│   ├── telegram-alert.js       # Telegram Bot
│   └── risk-alert.js           # Centralized dispatcher
├── data/                       # Persistent state files
│   ├── state.json              # System mode & connections
│   ├── trade-log.json          # Trade history
│   ├── performance.json        # Performance metrics
│   └── bias-memory.json        # Bias state persistence
└── prompts/                    # AI agent prompts
    ├── system.txt              # Main system prompt
    ├── intraday.txt            # Intraday trading protocol
    ├── swing.txt               # Swing trading protocol
    └── execution.txt           # Execution protocol
example.txt
# MetaAPI / MT5 Connection
METAAPI_TOKEN=your_metaapi_token_here
MT5_ACCOUNT_ID=your_mt5_account_id_here

# WhatsApp Business API (optional)
WHATSAPP_API_URL=https://graph.facebook.com/v18.0/YOUR_PHONE_NUMBER_ID/messages
WHATSAPP_TOKEN=your_whatsapp_token_here
WHATSAPP_PHONE=your_phone_number_with_country_code

# Telegram Bot (optional)
TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here
TELEGRAM_CHAT_ID=your_telegram_chat_id_here

# News API (optional)
NEWS_API_KEY=

# AI Keys (optional, for enhanced analysis)
OPENROUTER_API_KEY=
ANTHROPIC_API_KEY=
example.sh
# Direct
node index.js

# Or with PM2 for production
pm2 start index.js --name metals-desk-os
pm2 save
pm2 startup
example.txt
TRADE OPENED
Pair: XAUUSD
Direction: Long
Entry: 5024.50
SL: 5010.00
TP1: 5046.25
Risk: 1.5%
Session: London
Conviction: 82/100

Tags

#coding_agents-and-ides

Quick Info

Category Development
Model Claude 3.5
Complexity One-Click
Author cfilipemt
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install metals-desk-os