Request Founder AccessApplications are open for a limited group of Founder Members

Traders API

Traders API

GET https://darwintiq.com/api/traders

Returns a list of traders (strategy configurations) for a given symbol.
The list can be sorted and filtered by several parameters. See also API Query Parameters.

Query Parameters

ParameterTypeRequiredAllowed ValuesDefaultDescription
symbolstringyesXAUUSD, EURUSD, USDJPY, GBPUSD, AUDUSD, USDCHF, AUDNZD, SP500, DAXDetermines for which symbol the traders are returned.
sortstringnofitness, latest, potentialfitnessDefines the sorting of the result list.
signalsstringnobollingerbands, breakoutextrema, frequency (comma-separated)(all)Filters by signal type. Multiple values can be provided, separated by commas.

If signals is omitted, traders of all signal types are returned.

Examples

All traders for XAUUSD (default sort: fitness)

curl "https://darwintiq.com/api/traders?symbol=XAUUSD"

Sorted by latest signal

curl "https://darwintiq.com/api/traders?symbol=EURUSD&sort=latest"

Filter by multiple signal types

curl "https://darwintiq.com/api/traders?symbol=GBPUSD&signals=bollingerbands,frequency"

Traders API — Response

When successful, the API returns a JSON object with a status, the requested symbol, and a list of traders (strategy configurations) including performance metrics, latest signal info, cumulative balance series, and executed trades.

Top-Level Fields

FieldTypeDescription
statusstringRequest status. Typically "success" on success.
symbolstringThe requested trading symbol (e.g., EURUSD).
tradersTrader[]Array of trader objects (see Trader Object below).

Trader Object

FieldTypeDescription
idstringUnique identifier of the trader/strategy configuration.
symbolstringSymbol the trader was evaluated on.
timeframestringCandle timeframe (e.g., M1 = 1 minute).
createdstringHumanized time when the trader configuration was created.
testedstringHumanized time of the last backtest.
fitnessnumberComposite fitness score (higher = better recent profitability/consistency).
pipsPerTradenumberAverage pips per trade.
tradesWonnumberCount of winning trades.
tradesLostnumberCount of losing trades.
pipsWonnumberTotal pips gained.
pipsLostnumberTotal pips lost.
totalPipsnumberNet pips (usually pipsWon - pipsLost).
avgPipsPerTradenumberArithmetic average pips per executed trade.
expectedValuenumberCalculated Expected Value in pips
testPeriodobjectBacktest window. See Test Period.
lastSignalobjectMost recent signal. See Last Signal.
maxDrawdownnumberMaximum drawdown (in pips).
potentialPipsnumberUnrealized/theoretical move since last signal, in pips.
strategyobjectSignal generator. See Strategy Object.
positionManagerobjectSL/TP/trailing logic. See Position Manager Object.
filterobjectOptional filter logic. See Filter Object.
balancesnumber[]Cumulative profit series, aligned to trades. Starts at 0.
tradesTrade[]Executed trades with per-trade metrics. See Trade Object.

Structured Blocks

Strategy Object

strategy: {
  type: string;        // slugified type, e.g. "breakout_extrema"
  class: string;       // full class name
  description: string; // human-readable description (Markdown supported)
  params: Record<string, string|number|boolean>;
}

Position Manager Object

positionManager: {
  type: string;        // e.g. "absolute", "atr", "sup_res_pm"
  class: string;       // full class name
  description: string;
  params: Record<string, string|number|boolean>;

  // Optional friendly aliases (depending on type)
  initialStopPips?: number;
  trailingStopPips?: number;
  takeProfitPips?: number;
  atrPeriod?: number;
  slFactor?: number;
  tpFactor?: number;
  safety?: { stopLossSafetyDistancePips: number; takeProfitSafetyDistancePips: number; }
  trailing?: { useAtr: boolean; atrPeriod: number; atrFactor: number; }
}

Filter Object

filter: {
  type: string;        // e.g. "nofilter", "rsi", "sma"
  class: string;       // full class name
  description: string;
  params: Record<string, string|number|boolean>;
}

Test Period

testPeriod: {
  from: string; // "YYYY-MM-DD HH:mm:ss"
  to:   string; // "YYYY-MM-DD HH:mm:ss"
}

Last Signal

lastSignal: {
  type: "BUY" | "SELL";
  time: string;        // "YYYY-MM-DD HH:mm:ss"
  timeElapsed: string; // e.g., "4 minutes ago"
}

Trade Object

trade: {
  ticket: string;
  type: "Buy" | "Sell";
  openTime:  string;
  openPrice: number | string;
  closeTime: string;
  closePrice: number | string;
  closeReason: string; // e.g. "tp", "sl", "eot"
  pipsMade: number;
  slPips: number;
  tpPips: number;
  ratio: number;
}

Example Response (Formatted)

{
  "status": "success",
  "symbol": "EURUSD",
  "traders": [
    {
      "id": "0416f3119e403519ba3a99f9d77d1053d85c8543",
      "symbol": "EURUSD",
      "timeframe": "M1",
      "created": "9 minutes ago",
      "tested": "43 seconds ago",
      "fitness": 221.5,
      "pipsPerTrade": 2.6,
      "tradesWon": 8,
      "tradesLost": 0,
      "pipsWon": 20.8,
      "pipsLost": 0,
      "totalPips": 20.8,
      "avgPipsPerTrade": 2.6,
      "expectedValue": "1.9",
      "testPeriod": { "from": "2025-09-25 10:32:00", "to": "2025-09-25 15:51:00" },
      "lastSignal": { "type": "SELL", "time": "2025-09-25 15:49:00", "timeElapsed": "4 minutes ago" },
      "maxDrawdown": 0,
      "potentialPips": -0.6,
      "strategy": {
        "type": "breakout_extrema",
        "class": "BreakoutExtrema",
        "description": "The Breakout Extrema strategy detects price breakouts...",
        "params": { "period": 15, "priceType": "low", "minDiffToExtrema": 1.6 }
      },
      "positionManager": {
        "type": "absolute",
        "class": "Absolute",
        "description": "Fixed stop-loss/take-profit in pips...",
        "params": { "fixInitialStop": 70.6, "fixTrailingStop": 23.7, "fixTakeProfit": 2.6 },
        "initialStopPips": 70.6,
        "trailingStopPips": 23.7,
        "takeProfitPips": 2.6
      },
      "filter": {
        "type": "nofilter",
        "class": "Nofilter",
        "description": "No filter is applied",
        "params": {}
      },
      "balances": [0, 1.86, 3.72, 5.58],
      "trades": [
        {
          "ticket": "0",
          "type": "Sell",
          "openTime": "2025-09-25 14:02:00",
          "openPrice": "1.17434",
          "closeTime": "2025-09-25 14:14:00",
          "closePrice": 1.17408,
          "closeReason": "tp",
          "pipsMade": 2.6,
          "slPips": 22.3,
          "tpPips": 2.6,
          "ratio": 0.12
        }
      ]
    }
  ]
}

Status Codes

CodeMeaning
200OK
400Missing or invalid parameters
401Missing token
403Invalid token / unauthorized
429Rate limit exceeded (per user & symbol)
500Internal error / upstream failure