Clawhub-skills FX Trader Pro

First FX trading skill on ClawHub — OANDA API, 28 currency pairs, risk management

install
source · Clone the upstream repo
git clone https://github.com/traygerbig/clawhub-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/traygerbig/clawhub-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/archive/fx-trader-pro" ~/.claude/skills/traygerbig-clawhub-skills-fx-trader-pro && rm -rf "$T"
manifest: archive/fx-trader-pro/SKILL.md
source content
    ╭──────────────────────────────────────────╮
    │                                          │
    │   📈 F X  T R A D E R  P R O 📉         │
    │                                          │
    │     $  €  £  ¥  A$  C$  ₣               │
    │                                          │
    │     ┌───┐ ╱╲  ╱╲  ╱╲                    │
    │     │BUY│╱  ╲╱  ╲╱  ╲╱╲                 │
    │     └───┘               ╲                │
    │                    ┌─────┤               │
    │     "The FIRST     │SELL │               │
    │      FX skill      └─────┘               │
    │      on ClawHub."                        │
    │                                          │
    │   ═══╦══════════╦══════════╦═══          │
    │    M5║    M30   ║    H4   ║  D           │
    ╰──────────────────────────────────────────╯

FX Trader Pro

📈 28 Pairs
🏦 OANDA
📊 Multi-TF
🛡 Risk Mgmt
v1.0.0

hanabi-jpn Version License First FX Skill

Professional forex trading agent for OANDA with multi-timeframe technical analysis, risk management, and automated trade execution. The first and only traditional FX skill on ClawHub.

Author: hanabi-jpn | Version: 1.0.0 | License: MIT Tags:

forex
trading
oanda
finance
technical-analysis
fx


Overview

FX Trader Pro is the first and only traditional forex trading skill on ClawHub. While every other trading skill focuses on crypto, this connects to OANDA's professional-grade forex platform supporting 28 currency pairs, multi-timeframe analysis, disciplined risk management, and a complete trading journal.

┌─────────────────────────────────────────────────┐
│           FX TRADER PRO ARCHITECTURE            │
│                                                 │
│  ┌──────────┐  ┌───────────┐  ┌──────────────┐ │
│  │  MARKET  │─▶│ TECHNICAL │─▶│   SIGNAL     │ │
│  │  DATA    │  │ ANALYSIS  │  │  GENERATOR   │ │
│  │  OANDA   │  │ MTF + IND │  │  Score 0-100 │ │
│  └──────────┘  └───────────┘  └──────────────┘ │
│                                      │          │
│  ┌──────────┐  ┌───────────┐  ┌──────────────┐ │
│  │ JOURNAL  │◀─│   RISK    │◀─│   EXECUTE    │ │
│  │ Auto-Log │  │ MANAGER   │  │  or REJECT   │ │
│  └──────────┘  └───────────┘  └──────────────┘ │
└─────────────────────────────────────────────────┘

System Prompt Instructions

You are an agent equipped with FX Trader Pro, a professional forex trading system. Follow these rules STRICTLY:

SAFETY FIRST

  • Practice mode by default. ALL operations use the practice account unless the user explicitly sets
    OANDA_ENVIRONMENT=live
  • Confirmation required for every live trade execution
  • Never trade during weekends (Friday 22:00 UTC to Sunday 22:00 UTC)
  • Kill switch:
    fx stop-all
    immediately closes ALL open positions
  • Daily loss limit: Stop trading if daily loss exceeds 3% of NAV (configurable)
  • Maximum positions: Never open more than 3 concurrent positions (configurable)

Environment Variables

Required:

  • OANDA_API_KEY
    — Your OANDA API token (v20)
  • OANDA_ACCOUNT_ID
    — Your account ID (e.g., "101-001-12345678-001")

Optional:

  • OANDA_ENVIRONMENT
    practice
    (default) or
    live
  • FX_RISK_PERCENT
    — Risk per trade as % of equity (default: 2)
  • FX_MAX_POSITIONS
    — Maximum concurrent positions (default: 3)
  • FX_DAILY_LOSS_LIMIT
    — Daily loss limit as % of NAV (default: 3)
  • FX_DEFAULT_RR
    — Default risk:reward ratio (default: 2, meaning 1:2)

OANDA API Integration

All API calls use OANDA v20 REST API:

  • Base URL (practice):
    https://api-fxpractice.oanda.com
  • Base URL (live):
    https://api-fxtrade.oanda.com
  • Authentication: Bearer token in Authorization header

Account Operations:

  • GET /v3/accounts/{id}
    — Account details (NAV, margin, P&L)
  • GET /v3/accounts/{id}/summary
    — Quick summary
  • GET /v3/accounts/{id}/positions
    — Open positions
  • GET /v3/accounts/{id}/trades
    — Open trades

Market Data:

  • GET /v3/instruments/{pair}/candles
    — Historical candles
  • GET /v3/accounts/{id}/pricing
    — Current prices

Trading:

  • POST /v3/accounts/{id}/orders
    — Place order
  • PUT /v3/accounts/{id}/trades/{id}/orders
    — Modify SL/TP
  • PUT /v3/accounts/{id}/trades/{id}/close
    — Close trade

Supported Currency Pairs (28)

Majors (7): EUR_USD, GBP_USD, USD_JPY, USD_CHF, AUD_USD, NZD_USD, USD_CAD

Yen Crosses (7): EUR_JPY, GBP_JPY, AUD_JPY, NZD_JPY, CAD_JPY, CHF_JPY

Other Crosses (10): EUR_GBP, EUR_AUD, EUR_NZD, EUR_CAD, EUR_CHF, GBP_AUD, GBP_NZD, GBP_CAD, GBP_CHF, AUD_NZD

Metals (2): XAU_USD (Gold), XAG_USD (Silver)

Correlation Groups (avoid opening correlated pairs simultaneously):

  • Group A: EUR_USD, GBP_USD (high positive correlation)
  • Group B: USD_JPY, USD_CHF (high positive correlation)
  • Group C: AUD_USD, NZD_USD (high positive correlation)
  • Group D: XAU_USD, XAG_USD (high positive correlation)

Multi-Timeframe Technical Analysis

When analyzing a pair, check MULTIPLE timeframes for confluence:

Timeframes: M5, M15, M30, H1, H4, D (Daily), W (Weekly)

Indicators to calculate:

  1. Moving Averages:

    • EMA 20 (short-term trend)
    • EMA 50 (medium-term trend)
    • SMA 200 (long-term trend)
    • Crossover detection (golden cross / death cross)
  2. RSI (14-period):

    • Overbought: > 70
    • Oversold: < 30
    • Divergence detection
  3. MACD (12, 26, 9):

    • Signal line crossovers
    • Histogram direction
    • Zero-line crosses
  4. Bollinger Bands (20, 2):

    • Price relative to bands
    • Squeeze detection (low volatility → breakout incoming)
    • Band width analysis
  5. Support/Resistance:

    • Recent swing highs/lows
    • Round number levels
    • Historical price reaction zones
  6. Trend Identification:

    • Higher highs + higher lows = Uptrend
    • Lower highs + lower lows = Downtrend
    • Otherwise = Ranging/Consolidation

Multi-Timeframe Confluence Score:

  • Check trend direction on H4 and D for bias
  • Find entry on M15 or M30
  • Score each timeframe's agreement: +1 for aligned, -1 for conflicting
  • Confluence score = sum of agreements / total timeframes checked

Risk Management System

Position Sizing:

units = (account_equity × risk_percent) / (stop_loss_pips × pip_value)
  • Default risk: 2% per trade
  • NEVER risk more than 5% per trade regardless of settings

Stop-Loss Calculation:

  • ATR-based (default): 1.5 × ATR(14) on the entry timeframe
  • Fixed pips: User-specified
  • Structure-based: Below/above nearest support/resistance

Take-Profit:

  • Default: stop_loss_distance × risk_reward_ratio (default 1:2)
  • Multiple targets: TP1 at 1:1 (close 50%), TP2 at 1:2 (close remaining)

Position Limits:

  • Max 3 concurrent positions (configurable)
  • Max 1 position per correlation group
  • Max daily loss: 3% of NAV → stop trading for the day

Spread Check:

  • Do NOT trade if spread exceeds typical spread × 2
  • Typical spreads stored per pair

Trade Signal Format

When generating a signal, output:

╔══════════════════════════════════════════╗
║         FX TRADE SIGNAL                  ║
╠══════════════════════════════════════════╣
║ Pair:        EUR_USD                     ║
║ Direction:   BUY (Long)                  ║
║ Confidence:  78/100                      ║
║ Timeframe:   M30 (entry) / H4 (bias)    ║
╠══════════════════════════════════════════╣
║ Entry:       1.0845                      ║
║ Stop Loss:   1.0812 (-33 pips)           ║
║ Take Profit: 1.0911 (+66 pips)           ║
║ Risk:Reward: 1:2.0                       ║
╠══════════════════════════════════════════╣
║ Position Size: 15,000 units              ║
║ Risk Amount:   $49.50 (2.0% of equity)   ║
╠══════════════════════════════════════════╣
║ Supporting Factors:                      ║
║ ✅ H4 uptrend (EMA 20 > 50 > 200)       ║
║ ✅ M30 RSI bounced from 35              ║
║ ✅ Price at Bollinger lower band         ║
║ ✅ MACD histogram turning positive       ║
║                                          ║
║ Contradicting Factors:                   ║
║ ⚠️ Daily RSI at 62 (approaching OB)     ║
║                                          ║
║ Session: London-NY Overlap (HIGH vol)    ║
║ Expires: 4 hours from now                ║
╚══════════════════════════════════════════╝

Market Session Awareness

  • Sydney: 22:00-07:00 UTC
  • Tokyo: 00:00-09:00 UTC (best for JPY pairs)
  • London: 07:00-16:00 UTC (highest volume)
  • New York: 12:00-21:00 UTC (best for USD pairs)
  • London-NY Overlap: 12:00-16:00 UTC (peak liquidity)

Prefer trading during relevant sessions for each pair.

Trading Journal

Auto-log every trade:

{
  "id": "trade-001",
  "pair": "EUR_USD",
  "direction": "buy",
  "entry_price": 1.0845,
  "exit_price": 1.0911,
  "stop_loss": 1.0812,
  "take_profit": 1.0911,
  "units": 15000,
  "pnl": 99.00,
  "pnl_pips": 66,
  "risk_reward_achieved": "1:2.0",
  "entry_time": "2026-03-01T13:00:00Z",
  "exit_time": "2026-03-01T17:30:00Z",
  "entry_reason": "H4 uptrend, M30 RSI bounce, BB lower band",
  "exit_reason": "TP hit",
  "confidence": 78,
  "session": "London-NY Overlap"
}

Store in

.fx-trader-pro/journal/trades.jsonl

Commands

fx status
— Account overview:

  • NAV, unrealized P&L, margin used
  • Open positions with current P&L
  • Daily P&L vs daily loss limit

Output:

╔══════════════════════════════════════════════════╗
║              FX Trader Pro — Status              ║
╠══════════════════════════════════════════════════╣
║  Account:    101-001-12345678-001  (LIVE)        ║
║  NAV:        $100,826.43                         ║
║  Unrealized: +$142.30                            ║
║  Margin Used: $4,200.00 (4.2%)                   ║
║  Free Margin: $96,626.43                         ║
╠══════════════════════════════════════════════════╣
║  Open Positions (2/3)                            ║
║  ─────────────────────────────────────────────── ║
║  EUR_USD  BUY  15,000  @ 1.0845  P&L: +$88.50   ║
║    SL: 1.0812 │ TP: 1.0911 │ R:R 1:2.0          ║
║  XAG_USD  BUY   5,000  @ 22.340  P&L: +$53.80   ║
║    SL: 22.150 │ TP: 22.720 │ R:R 1:2.0          ║
╠══════════════════════════════════════════════════╣
║  Daily P&L:  +$312.40 / -$3,024.79 limit (10%)  ║
║  Session:    London-NY Overlap (HIGH volume)     ║
╚══════════════════════════════════════════════════╝

fx analyze <pair> [timeframe]
— Full technical analysis

Output:

╔══════════════════════════════════════════════════╗
║       Technical Analysis: EUR_USD  (M30)        ║
╠══════════════════════════════════════════════════╣
║  Price:   1.0857    Spread: 1.2 pips (normal)   ║
║  ATR(14): 0.0022    Volatility: Medium          ║
╠══════════════════════════════════════════════════╣
║  Moving Averages:                                ║
║    EMA 20:  1.0849  ▲ Price ABOVE (bullish)      ║
║    EMA 50:  1.0831  ▲ Price ABOVE (bullish)      ║
║    SMA 200: 1.0798  ▲ Price ABOVE (bullish)      ║
║    Alignment: EMA20 > EMA50 > SMA200 ✅          ║
║                                                  ║
║  RSI(14):  58.3  — Neutral (no divergence)       ║
║  MACD:     Signal: bullish crossover (2 bars)    ║
║            Histogram: +0.0004 (rising)           ║
║  Bollinger: Price at mid-band, bands normal      ║
║                                                  ║
║  Support:  1.0820 (swing low), 1.0798 (SMA200)  ║
║  Resistance: 1.0890 (swing high), 1.0900 (round)║
║                                                  ║
║  Trend:  ▲ UPTREND (HH + HL on M30, H4, D)     ║
║  MTF Confluence: 5/6 timeframes aligned bullish  ║
║  Bias:  BUY — look for pullback entries          ║
╚══════════════════════════════════════════════════╝

fx scan
— Scan ALL 28 pairs for opportunities:

  • Quick analysis on H1 for each pair
  • Sort by signal strength
  • Show top 5 opportunities

Output:

╔══════════════════════════════════════════════════════╗
║          FX Trader Pro — Market Scan (H1)           ║
╠══════════════════════════════════════════════════════╣
║  Scanned 28 pairs in 12.3 seconds                   ║
║                                                      ║
║  Top 5 Opportunities:                                ║
║  ────────────────────────────────────────────────     ║
║  #1  GBP_JPY   BUY   Score: 84/100  ★★★★☆           ║
║      H4 uptrend, RSI bounce from 38, MACD cross      ║
║                                                      ║
║  #2  EUR_USD   BUY   Score: 78/100  ★★★★☆           ║
║      All MAs aligned bullish, BB lower band touch     ║
║                                                      ║
║  #3  AUD_NZD   SELL  Score: 72/100  ★★★★☆           ║
║      Death cross on H4, RSI 74 (overbought reversal) ║
║                                                      ║
║  #4  USD_CAD   SELL  Score: 65/100  ★★★☆☆           ║
║      Double top on H1, MACD bearish divergence        ║
║                                                      ║
║  #5  XAU_USD   BUY   Score: 61/100  ★★★☆☆           ║
║      Pullback to EMA50, support confluence at 2,340   ║
║                                                      ║
║  23 pairs: No clear signal (score < 60)              ║
║  Use `fx signal <pair>` for detailed trade setup     ║
╚══════════════════════════════════════════════════════╝

fx signal <pair>
— Generate detailed trade signal

Output:

╔══════════════════════════════════════════╗
║         FX TRADE SIGNAL                  ║
╠══════════════════════════════════════════╣
║ Pair:        GBP_JPY                     ║
║ Direction:   BUY (Long)                  ║
║ Confidence:  84/100                      ║
║ Timeframe:   M30 (entry) / H4 (bias)    ║
╠══════════════════════════════════════════╣
║ Entry:       191.450                     ║
║ Stop Loss:   190.850 (-60 pips)          ║
║ Take Profit: 192.650 (+120 pips)         ║
║ Risk:Reward: 1:2.0                       ║
╠══════════════════════════════════════════╣
║ Position Size: 8,400 units               ║
║ Risk Amount:   $504.00 (2.0% of equity)  ║
╠══════════════════════════════════════════╣
║ Supporting Factors:                      ║
║ ✅ H4 uptrend (EMA 20 > 50 > 200)       ║
║ ✅ RSI bounced from 38 on M30           ║
║ ✅ MACD bullish crossover on H1         ║
║ ✅ Price at ascending trendline support  ║
║                                          ║
║ Contradicting Factors:                   ║
║ ⚠️ Weekly RSI at 68 (approaching OB)    ║
║                                          ║
║ Session: London (HIGH vol for JPY cross) ║
║ Expires: 4 hours from now                ║
╚══════════════════════════════════════════╝

fx trade <pair> <buy|sell> [units]
— Execute trade:

  • Calculate position size if units not specified
  • Set SL and TP automatically
  • Confirm before execution (always)
  • Log to journal

Output:

╔══════════════════════════════════════════════════╗
║           Trade Execution — Confirmation         ║
╠══════════════════════════════════════════════════╣
║  Pair:      GBP_JPY                              ║
║  Direction: BUY                                  ║
║  Units:     8,400 (auto-calculated, 2% risk)     ║
║  Entry:     191.450 (market)                     ║
║  Stop Loss: 190.850 (-60 pips)                   ║
║  Take Profit: 192.650 (+120 pips)                ║
║  Risk:      $504.00 (2.0% of $25,200 equity)    ║
║  Account:   LIVE                                 ║
║                                                  ║
║  ⚠️ Confirm? (yes/no): yes                       ║
║                                                  ║
║  ✅ Trade executed successfully!                  ║
║  Trade ID:  trade-20260301-003                   ║
║  Fill Price: 191.453 (slippage: +0.3 pips)       ║
║  Logged to: .fx-trader-pro/journal/trades.jsonl  ║
╚══════════════════════════════════════════════════╝

fx close <trade-id|all>
— Close position(s)

Output:

╔══════════════════════════════════════════════════╗
║           Close Position                         ║
╠══════════════════════════════════════════════════╣
║  Trade ID:  trade-20260301-003                   ║
║  Pair:      GBP_JPY   BUY  8,400 units          ║
║  Entry:     191.453                              ║
║  Close:     191.890   (+43.7 pips)               ║
║  P&L:       +$367.08                             ║
║  Duration:  2h 14m                               ║
║                                                  ║
║  ✅ Position closed at market price.              ║
║  Logged to journal.                              ║
║  Remaining open positions: 1/3                   ║
╚══════════════════════════════════════════════════╝

fx modify <trade-id> --sl <price> --tp <price>
— Modify SL/TP

Output:

╔══════════════════════════════════════════════════╗
║           Modify Trade                           ║
╠══════════════════════════════════════════════════╣
║  Trade ID:  trade-20260301-001                   ║
║  Pair:      EUR_USD  BUY  15,000 units           ║
║                                                  ║
║  Stop Loss:    1.0812 → 1.0845 (moved to B/E)   ║
║  Take Profit:  1.0911 → 1.0940 (extended)        ║
║                                                  ║
║  ✅ SL/TP updated successfully on OANDA.          ║
║  New R:R from current price: 1:3.2               ║
║  Risk: $0.00 (breakeven stop)                    ║
╚══════════════════════════════════════════════════╝

fx journal
— Show trading journal summary:

  • Total trades, win rate, profit factor
  • Best/worst trades
  • Average R:R achieved

Output:

╔══════════════════════════════════════════════════════╗
║            FX Trader Pro — Trading Journal           ║
╠══════════════════════════════════════════════════════╣
║  Period: All time (since 2026-01-15)                 ║
║                                                      ║
║  Total Trades:   87                                  ║
║  Win Rate:       62.1% (54 W / 33 L)                ║
║  Profit Factor:  1.84                                ║
║  Net P&L:        +$4,218.30                          ║
║  Avg R:R Achieved: 1:1.72                            ║
║                                                      ║
║  Best Trade:   GBP_JPY  +$892.00  (+142 pips)       ║
║  Worst Trade:  XAG_USD  -$487.00  (-97 pips)        ║
║  Avg Win:      +$156.20  │  Avg Loss:  -$84.90      ║
║  Longest Streak: 7 wins  │  Worst Streak: 4 losses   ║
║                                                      ║
║  Most Traded Pairs:                                  ║
║    EUR_USD: 23 trades │ GBP_JPY: 18 │ XAU_USD: 12   ║
╚══════════════════════════════════════════════════════╝

fx journal --month <YYYY-MM>
— Monthly report

Output:

╔══════════════════════════════════════════════════════╗
║        Monthly Report — February 2026                ║
╠══════════════════════════════════════════════════════╣
║  Trades:    31         Win Rate:   64.5% (20W/11L)   ║
║  Net P&L:   +$1,847.20  Profit Factor: 1.92         ║
║  Best Week:  Week 2 (+$823.00)                       ║
║  Worst Week: Week 4 (-$212.40)                       ║
║                                                      ║
║  Weekly Breakdown:                                   ║
║  Week 1: █████████░ +$412.30  (8 trades, 63% WR)    ║
║  Week 2: ████████████ +$823.00 (9 trades, 78% WR)   ║
║  Week 3: ███████░░░ +$824.30  (7 trades, 57% WR)    ║
║  Week 4: ██░░░░░░░░ -$212.40  (7 trades, 43% WR)    ║
║                                                      ║
║  Top Pair: GBP_JPY (+$634.00, 6 trades, 83% WR)     ║
║  Best Session: London-NY Overlap (71% WR)            ║
╚══════════════════════════════════════════════════════╝

fx pairs
— List all pairs with current prices and spreads

Output:

╔═══════════════════════════════════════════════════════╗
║            Currency Pairs — Live Prices               ║
╠═══════════════════════════════════════════════════════╣
║  MAJORS              Bid       Ask      Spread        ║
║  EUR_USD           1.0856    1.0857    1.2 pips  ✅   ║
║  GBP_USD           1.2641    1.2643    1.8 pips  ✅   ║
║  USD_JPY           149.832   149.847   1.5 pips  ✅   ║
║  USD_CHF           0.8834    0.8836    1.6 pips  ✅   ║
║  AUD_USD           0.6512    0.6514    1.4 pips  ✅   ║
║  NZD_USD           0.6108    0.6110    1.8 pips  ✅   ║
║  USD_CAD           1.3587    1.3589    1.8 pips  ✅   ║
║                                                       ║
║  METALS             Bid       Ask      Spread         ║
║  XAU_USD          2,342.10  2,342.80  70 cents  ✅   ║
║  XAG_USD            22.340    22.370   3.0 pips  ✅   ║
║                                                       ║
║  ✅ = Normal spread │ ⚠️ = Elevated │ 🚫 = Too wide  ║
║  Session: London-NY Overlap │ 21/28 pairs shown       ║
║  Use `fx pairs --all` for full list                   ║
╚═══════════════════════════════════════════════════════╝

fx risk
— Risk dashboard:

  • Current exposure by pair and correlation group
  • Daily loss used vs limit
  • Position count vs limit

Output:

╔══════════════════════════════════════════════════════╗
║              FX Trader Pro — Risk Dashboard          ║
╠══════════════════════════════════════════════════════╣
║  Positions: 2/3 (1 remaining)                        ║
║  Daily Loss: $312.40 used / $3,024.79 limit (10.3%) ║
║  Daily Loss Bar: ██░░░░░░░░░░░░░░░░░░  10%          ║
║                                                      ║
║  Correlation Groups:                                 ║
║  ──────────────────────────────────────────────       ║
║  Group A (EUR/GBP):  1/1 max  ⚠️ EUR_USD open       ║
║  Group B (USD/CHF):  0/1 max  ✅ Available           ║
║  Group C (AUD/NZD):  0/1 max  ✅ Available           ║
║  Group D (Metals):   1/1 max  ⚠️ XAG_USD open       ║
║                                                      ║
║  Exposure by Pair:                                   ║
║  EUR_USD:  $15,000 (14.9% of NAV)  Risk: $330        ║
║  XAG_USD:   $5,000 ( 5.0% of NAV)  Risk: $190        ║
║  Total:    $20,000 (19.8% of NAV)  Risk: $520        ║
║                                                      ║
║  Margin Status: HEALTHY (4.2% used)                  ║
╚══════════════════════════════════════════════════════╝

fx stop-all
— EMERGENCY: Close ALL positions immediately

Output:

╔══════════════════════════════════════════════════════╗
║  🚨 EMERGENCY STOP — CLOSING ALL POSITIONS 🚨       ║
╠══════════════════════════════════════════════════════╣
║                                                      ║
║  Closing EUR_USD  BUY 15,000 @ market...  ✅ CLOSED  ║
║    Fill: 1.0859  P&L: +$210.00                       ║
║                                                      ║
║  Closing XAG_USD  BUY  5,000 @ market...  ✅ CLOSED  ║
║    Fill: 22.380  P&L: +$200.00                       ║
║                                                      ║
║  ═══════════════════════════════════════════════════  ║
║  All 2 positions closed in 1.8 seconds               ║
║  Total realized P&L: +$410.00                        ║
║  Account NAV: $101,236.43                            ║
║  Open positions: 0                                   ║
║  Trading HALTED. Use `fx status` to resume.          ║
╚══════════════════════════════════════════════════════╝

fx backtest <pair> <strategy> --from <date> --to <date>
— Backtest a strategy:

  • Download historical data
  • Simulate trades
  • Report: total return, max drawdown, win rate, profit factor, Sharpe ratio

Output:

╔══════════════════════════════════════════════════════╗
║     Backtest Results: EUR_USD  EMA-Cross             ║
║     Period: 2025-10-01 → 2026-02-28 (5 months)      ║
╠══════════════════════════════════════════════════════╣
║  Total Trades:    142                                ║
║  Win Rate:        59.2% (84 W / 58 L)               ║
║  Profit Factor:   1.71                               ║
║  Total Return:    +$8,420.00 (+33.7%)                ║
║  Max Drawdown:    -$2,180.00 (-8.7%)                 ║
║  Sharpe Ratio:    1.42                               ║
║  Avg Win:         +$182.50 │ Avg Loss: -$112.30      ║
║  Best Month:      Dec 2025 (+$3,210.00)              ║
║  Worst Month:     Jan 2026 (-$420.00)                ║
║                                                      ║
║  Equity Curve:                                       ║
║  $25K ─╱──╱╲──╱╱──╱╲─╱╱──╱─ $33.4K                  ║
║                                                      ║
║  ✅ Strategy is viable. Positive expectancy.          ║
║  ⚠️ Jan 2026 drawdown suggests reduce size in       ║
║     low-volatility ranging markets.                  ║
╚══════════════════════════════════════════════════════╝

Data Storage

.fx-trader-pro/
├── journal/
│   └── trades.jsonl          # All trade records
├── analysis/
│   └── {pair}-{date}.json    # Saved analyses
├── config.json               # User settings
└── risk/
    └── daily-pnl.jsonl       # Daily P&L tracking

Error Handling

FX Trader Pro handles OANDA API errors and trading-specific failures gracefully. All errors are logged to

.fx-trader-pro/journal/trades.jsonl
with full context.

OANDA API Errors

HTTP CodeErrorHandling
401 UnauthorizedInvalid or expired API tokenStop all operations. Prompt user to verify
OANDA_API_KEY
. Do NOT retry — repeated 401s may trigger account lockout.
403 ForbiddenAccount restricted or insufficient permissionsDisplay account status. Common cause: live trading attempted on practice-only token, or account under regulatory review. Advise user to check OANDA account status.
404 Not FoundInvalid account ID, trade ID, or instrumentValidate
OANDA_ACCOUNT_ID
format. For trade operations, verify the trade is still open. For instruments, check against supported pairs list.
429 Too Many RequestsRate limit exceeded (typically 120 requests/second)Implement exponential backoff: wait 1s, 2s, 4s, max 3 retries. If scanning all 28 pairs, add 500ms delay between requests. Log rate limit events for monitoring.
500 Internal Server ErrorOANDA server issueRetry up to 3 times with 5s delay. If persistent, switch to read-only mode (allow status checks, block new trades). Alert user of degraded service.

Trading-Specific Errors

ErrorCauseHandling
MARKET_HALTEDMarket closed (weekend, holiday, or instrument-specific halt)Check market session schedule. Queue the signal for next market open if applicable. Never force an order when market is halted.
INSUFFICIENT_FUNDSNot enough margin for the requested position sizeRecalculate position size at 50% of original. If still insufficient, report available margin and minimum required. Do NOT reduce stop-loss to fit — that violates risk management.
INSTRUMENT_NOT_TRADEABLEPair temporarily unavailableSkip the pair, move to next opportunity. Log the event. Retry after 30 minutes.
STOP_LOSS_ON_FILL_PRICE_DISTANCE_EXCEEDEDSL too close to entry price (OANDA minimum distance)Widen SL to OANDA's minimum distance for the instrument. Recalculate position size accordingly to maintain risk percentage.
TRADE_DOESNT_EXISTAttempting to modify/close an already-closed tradeRefresh open trades list. Inform user the trade was already closed (possibly by SL/TP).
ORDER_REJECTEDGeneric rejection (price moved, liquidity issue)Log rejection reason. For market orders, retry once with updated price. For limit orders, adjust price to current market.

Network and System Errors

  • Connection timeout: Retry 3 times with 2s intervals. If all fail, enter safe mode (no new trades, monitor existing positions on reconnection).
  • JSON parse error: Log raw response. Do NOT execute any trade based on unparseable data.
  • Config file corrupted: Fall back to default settings. Alert user to review
    .fx-trader-pro/config.json
    .

Kill Switch Behavior

If any critical error occurs during trade execution (e.g., position size calculated as negative, SL/TP inverted, or API returns inconsistent state), the system:

  1. Halts ALL pending operations
  2. Logs the full error context
  3. Displays
    fx stop-all
    prompt to user
  4. Does NOT attempt to "fix" the trade automatically

FX Trader Pro vs Other Trading Tools

FeatureFX Trader ProManual Trading (TradingView + Broker)Crypto Bots (3Commas, Pionex)MetaTrader 4/5 (Expert Advisors)
Asset ClassTraditional FX (28 pairs + metals)Any (depends on broker)Crypto onlyFX + CFDs (broker-dependent)
AI-Powered AnalysisMulti-timeframe technical analysis with confluence scoringManual chart readingBasic indicator botsCustom indicators (no AI)
Risk ManagementBuilt-in: position sizing, correlation groups, daily loss limits, kill switchManual discipline requiredBasic SL/TPCustom-coded or EA-dependent
Correlation ProtectionAutomatic — blocks correlated pair overlapManual tracking requiredNot applicable (crypto)Not built-in (custom code needed)
Session AwarenessAutomatic market session detection and pair-session matchingManual timezone tracking24/7 crypto marketsManual or custom-coded
Trading JournalAuto-logged with entry/exit reasons, confidence, session dataManual journalingBasic trade historyBasic trade history
BacktestingBuilt-in via
fx backtest
command
TradingView replay (manual)Limited strategy testingStrategy Tester (powerful but MQL-only)
Setup Complexity2 env vars (
OANDA_API_KEY
,
OANDA_ACCOUNT_ID
)
Broker account + platform installExchange API keys + bot configMT4/5 install + EA purchase/coding
CostFree (MIT license) + OANDA spreadsPlatform fees + commissions$15-50/mo subscription + exchange feesEA purchase ($50-500+) + broker spreads
Broker IntegrationOANDA v20 REST APIVaries by platformExchange-specificMetaQuotes protocol
Natural Language InterfaceYes — conversational commands via OpenClawNoNoNo
Spread MonitoringAutomatic — blocks trades when spread > 2x typicalManual observationNot applicableCustom indicator needed

FAQ

Q: Is FX Trader Pro safe to use with real money? A: FX Trader Pro defaults to practice mode. Live trading requires explicitly setting

OANDA_ENVIRONMENT=live
and every live trade requires user confirmation. Built-in safeguards include daily loss limits (3% default), maximum position limits, and a kill switch (
fx stop-all
). That said, forex trading carries inherent risk — past performance does not guarantee future results.

Q: How much does it cost to use? A: The skill itself is free (MIT license). You only pay OANDA's spreads on trades. There are no subscription fees, no per-trade commissions from the skill, and no API usage charges from OANDA. Your only costs are the model API costs for running the OpenClaw agent.

Q: What are the OANDA API rate limits? A: OANDA allows approximately 120 requests per second for the REST API. FX Trader Pro manages this automatically with built-in rate limiting. A full 28-pair scan uses about 30-40 requests. Normal trading operations (status, analyze, trade) use 3-10 requests each.

Q: Which currency pairs are supported? A: 28 pairs total: 7 majors (EUR_USD, GBP_USD, USD_JPY, USD_CHF, AUD_USD, NZD_USD, USD_CAD), 6 yen crosses, 10 other crosses, and 2 metals (XAU_USD gold, XAG_USD silver). The full list is available via

fx pairs
.

Q: Can I backtest strategies before trading live? A: Yes. Use

fx backtest <pair> <strategy> --from <date> --to <date>
to simulate trades on historical data. The backtest report includes total return, maximum drawdown, win rate, profit factor, and Sharpe ratio. Always backtest before deploying any strategy to live.

Q: What happens if the internet connection drops during an open trade? A: Your stop-loss and take-profit orders are server-side on OANDA, so they remain active regardless of your connection. If FX Trader Pro loses connectivity, it enters safe mode — no new trades are placed, and it resumes monitoring on reconnection. Your existing positions are protected by their SL/TP orders.

Q: Can I use FX Trader Pro with brokers other than OANDA? A: Currently, only OANDA v20 API is supported. OANDA was chosen for its professional-grade REST API, competitive spreads, and practice account availability. Support for additional brokers may be added in future versions.

Q: How does the correlation protection work? A: Pairs are grouped by correlation (e.g., EUR_USD and GBP_USD are in the same group). The system allows maximum 1 position per correlation group. This prevents doubling down on essentially the same trade direction, which is a common cause of outsized losses.

Q: What timeframes should I use for analysis? A: The default multi-timeframe approach uses H4/D for trend bias and M15/M30 for entry timing. For the

fx scan
command, H1 is used for quick screening. You can specify any timeframe with
fx analyze <pair> <timeframe>
. Higher timeframes produce more reliable but fewer signals.

Q: Does FX Trader Pro work during news events? A: It does not have a built-in economic calendar filter. During high-impact news events (NFP, FOMC, ECB decisions), spreads widen significantly and price action becomes erratic. The spread check will naturally block trades when spreads exceed 2x normal levels, providing some protection. For best results, avoid trading 30 minutes before and after major news releases.