TradeClaw

Open-source AI market intelligence for traders who prefer evidence over noise.

Self-hosted by default

Product

  • Dashboard
  • Screener
  • Backtest
  • Track record
  • Live demo

Transparency

  • What we tested and killed
  • Methodology
  • Why long-term
  • Open data
  • Calibration

Resources

  • Blog
  • Docs
  • API reference
  • How it works
  • FAQ
  • Glossary

Community

  • Discord
  • Weekly digest
  • Contribute
  • Contributors
  • Sponsors

Open source

  • GitHub repo
  • Star history
  • Self-host guide
  • Security
  • Data freshness
  • Roadmap

© 2026 TradeClaw. MIT licensed.

Terms|Privacy|Trading involves risk. Signals are informational only and are not financial advice.
DashboardScreenerCopilotTrack Record
TradeClaw
Documentation

Getting Started

  • Overview
  • Installation
  • Configuration
  • Self-Hosting

Core Features

  • Trading Signals
  • Paper Trading
  • Strategy Builder

Integrations

  • API Reference
  • Webhooks
  • Telegram Bot
  • Plugins
  • Embedding

Project

  • Contributing
  • Changelog
GitHubApp Dashboard

Core Features

Trading Signals

Every signal is generated by running five independent technical indicators and combining their outputs into a single confluence score. No black boxes — every formula is in apps/web/app/lib/ta-engine.ts.

Supported Instruments

XAUUSD

Gold

Metals

XAGUSD

Silver

Metals

USOIL

US Oil

Commodities

BTCUSD

Bitcoin

Crypto

ETHUSD

Ethereum

Crypto

EURUSD

EUR/USD

Forex

GBPUSD

GBP/USD

Forex

USDJPY

USD/JPY

Forex

AUDUSD

AUD/USD

Forex

USDCAD

USD/CAD

Forex

USDCHF

USD/CHF

Forex

GBPJPY

GBP/JPY

Forex

EURJPY

EUR/JPY

Forex

Timeframes

M5

5-minute

Scalping, short-term momentum

M15

15-minute

Intraday swing entries

H1

1-hour

Main trading timeframe

H4

4-hour

Trend confirmation

D1

Daily

Higher-timeframe bias

Indicators

The TA engine runs five indicators on every symbol/timeframe combination. Each indicator casts a directional vote (bullish, bearish, or neutral) which is weighted into the final confluence score.

RSI — Relative Strength Index

Period: 14 · Method: Wilder's smoothing

Momentum

RSI measures the speed and change of price movements on a scale of 0–100. TradeClaw uses Wilder's original exponential smoothing formula.

Oversold

< 30

Bullish

Neutral

30–70

Neutral

Overbought

> 70

Bearish

typescript
// Wilder's smoothing RSI (from ta-engine.ts)
function calcRSI(closes: number[], period = 14): RSIResult {
  let avgGain = 0, avgLoss = 0;
  for (let i = 1; i <= period; i++) {
    const diff = closes[i] - closes[i - 1];
    if (diff > 0) avgGain += diff; else avgLoss -= diff;
  }
  avgGain /= period; avgLoss /= period;

  for (let i = period + 1; i < closes.length; i++) {
    const diff = closes[i] - closes[i - 1];
    avgGain = (avgGain * (period - 1) + Math.max(diff, 0)) / period;
    avgLoss = (avgLoss * (period - 1) + Math.max(-diff, 0)) / period;
  }

  const rs = avgLoss === 0 ? 100 : avgGain / avgLoss;
  return { value: 100 - 100 / (1 + rs) };
}

MACD — Moving Average Convergence/Divergence

Fast: 12 · Slow: 26 · Signal: 9

Trend

MACD measures the relationship between two EMAs. A positive histogram means short-term momentum is stronger than long-term — bullish. Negative — bearish.

Histogram > 0

Bullish

Histogram < 0

Bearish

MACD Line = EMA(12) - EMA(26)

Signal Line = EMA(9) of MACD Line

Histogram = MACD Line - Signal Line

EMA — Exponential Moving Averages

Periods: 20, 50, 200

Trend

Three EMAs establish the trend bias. Price above EMA20 > EMA50 > EMA200 is a strong uptrend. A golden cross (EMA50 crossing above EMA200) is particularly weighted in the confluence score.

Price > EMA20 > EMA50

Bullish

Golden Cross (50 > 200)

Strong Bullish

Price < EMA20 < EMA50

Bearish

Death Cross (50 < 200)

Strong Bearish

Bollinger Bands

Period: 20 · Std Dev: 2

Volatility

Three bands (upper, middle SMA, lower) built from ±2 standard deviations. Price touching the lower band while other indicators are bullish = high-probability entry. Band squeeze (low bandwidth) often precedes a breakout.

Upper Band = SMA(20) + 2 × StdDev(20)

Middle Band = SMA(20)

Lower Band = SMA(20) - 2 × StdDev(20)

Bandwidth = (Upper - Lower) / Middle

Stochastic Oscillator

%K: 14 smooth 3 · %D: 3

Momentum

Compares a closing price to its high-low range over 14 periods. Values below 20 (oversold) with %K crossing above %D is a buy signal. Values above 80 (overbought) with %K crossing below %D is a sell signal.

Oversold

< 20

Bullish

Neutral

20–80

Neutral

Overbought

> 80

Bearish

Confluence Scoring

Each indicator vote is weighted and summed to produce a final score from 0–100. The direction (BUY or SELL) is determined by whichever side has more weighted votes. A score of 80+ is considered high-confidence.

Score RangeLabelIndicators Aligned
80–100High Confidence4–5 of 5
65–79Moderate Confidence3–4 of 5
50–64Low Confidence2–3 of 5
< 50Filtered / Not Emitted< 2 of 5

Signals below 50 confidence are filtered before being emitted. The screener and signal feed default to showing only signals with confidence ≥ 65.

Signal Data Structure

typescript
interface TradingSignal {
  id: string;            // Unique signal ID
  symbol: string;        // e.g. "XAUUSD"
  timeframe: string;     // e.g. "H1"
  direction: 'BUY' | 'SELL';
  confidence: number;    // 0–100 confluence score
  entryPrice: number;    // Current price at signal generation
  tp1: number;           // Take Profit 1 (1:1 R:R)
  tp2: number;           // Take Profit 2 (1:2 R:R)
  tp3: number;           // Take Profit 3 (1:3 R:R)
  sl: number;            // Stop Loss (ATR-based)
  indicators: {
    rsi: number;
    macd: number;        // histogram value
    ema20: number;
    ema50: number;
    ema200: number;
    bb_upper: number;
    bb_lower: number;
    stoch_k: number;
    stoch_d: number;
  };
  timestamp: string;     // ISO 8601
  status: 'active' | 'hit_tp1' | 'hit_tp2' | 'hit_tp3' | 'sl_hit' | 'expired';
}

Multi-Timeframe Consensus

The GET /api/signals/multi-tfendpoint calculates direction consensus across M15, H1, H4, and D1. When all four timeframes agree on direction, the signal is marked as "aligned" — historically the highest win-rate scenario.

Tip: Filter signals by minConfidence=80 and only trade when MTF consensus is aligned. This is the highest-probability setup in the platform.
PreviousSelf-HostingNextPaper Trading
Edit this page on GitHub