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
| Parameter | Type | Required | Allowed Values | Default | Description |
|---|
symbol | string | yes | XAUUSD, EURUSD, USDJPY, GBPUSD, AUDUSD, USDCHF, AUDNZD, SP500, DAX | – | Determines for which symbol the traders are returned. |
sort | string | no | fitness, latest, potential | fitness | Defines the sorting of the result list. |
signals | string | no | bollingerbands, 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
| Field | Type | Description |
|---|
status | string | Request status. Typically "success" on success. |
symbol | string | The requested trading symbol (e.g., EURUSD). |
traders | Trader[] | Array of trader objects (see Trader Object below). |
Trader Object
| Field | Type | Description |
|---|
id | string | Unique identifier of the trader/strategy configuration. |
symbol | string | Symbol the trader was evaluated on. |
timeframe | string | Candle timeframe (e.g., M1 = 1 minute). |
created | string | Humanized time when the trader configuration was created. |
tested | string | Humanized time of the last backtest. |
fitness | number | Composite fitness score (higher = better recent profitability/consistency). |
pipsPerTrade | number | Average pips per trade. |
tradesWon | number | Count of winning trades. |
tradesLost | number | Count of losing trades. |
pipsWon | number | Total pips gained. |
pipsLost | number | Total pips lost. |
totalPips | number | Net pips (usually pipsWon - pipsLost). |
avgPipsPerTrade | number | Arithmetic average pips per executed trade. |
expectedValue | number | Calculated Expected Value in pips |
testPeriod | object | Backtest window. See Test Period. |
lastSignal | object | Most recent signal. See Last Signal. |
maxDrawdown | number | Maximum drawdown (in pips). |
potentialPips | number | Unrealized/theoretical move since last signal, in pips. |
strategy | object | Signal generator. See Strategy Object. |
positionManager | object | SL/TP/trailing logic. See Position Manager Object. |
filter | object | Optional filter logic. See Filter Object. |
balances | number[] | Cumulative profit series, aligned to trades. Starts at 0. |
trades | Trade[] | 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;
}
{
"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
| Code | Meaning |
|---|
| 200 | OK |
| 400 | Missing or invalid parameters |
| 401 | Missing token |
| 403 | Invalid token / unauthorized |
| 429 | Rate limit exceeded (per user & symbol) |
| 500 | Internal error / upstream failure |