Skip to content

Statistics & Analytics

Endpoints pour accéder aux statistiques et analyses de trading.

Authentification

Toutes les routes supportent deux méthodes d'authentification :

MéthodeHeaderFormat
JWT (session)AuthorizationBearer <jwt_token>
API KeyX-API-Keyik_live_xxx ou ik_test_xxx

GET /stats/trades

Récupère les statistiques globales de trading.

Scope requis

stats:read

Paramètres de requête

ParamètreTypeRequisDescription
profileIdstringFiltrer par profil de trading

Exemple de requête

javascript
const response = await fetch('https://api.insightrades.com/stats/trades?profileId=abc123', {
  headers: {
    'X-API-Key': 'ik_live_xxx'
  }
});

Réponse (200 OK)

json
{
  "totalTrades": 150,
  "openTrades": 12,
  "closedTrades": 138,
  "winningTrades": 90,
  "losingTrades": 48,
  "totalPnL": 15420.50,
  "winRate": 65.22,
  "avgWin": 250.30,
  "avgLoss": 180.40,
  "profitFactor": 2.15,
  "bestTrade": 1250.00,
  "worstTrade": -850.00,
  "grossProfit": 22530.00,
  "grossLoss": 7109.50,
  "avgRiskReward": 2.3,
  "expectancy": 102.80
}

Champs de réponse

ChampTypeDescription
totalTradesnumberNombre total de trades
openTradesnumberTrades actuellement ouverts
closedTradesnumberTrades clôturés
winningTradesnumberNombre de trades gagnants
losingTradesnumberNombre de trades perdants
totalPnLnumberProfit/perte total
winRatenumberTaux de réussite (%)
avgWinnumberGain moyen par trade gagnant
avgLossnumberPerte moyenne par trade perdant
profitFactornumberRatio gains/pertes
bestTradenumberMeilleur trade (P&L)
worstTradenumberPire trade (P&L)
grossProfitnumberTotal des gains
grossLossnumberTotal des pertes
avgRiskRewardnumberRatio risque/récompense moyen
expectancynumberEspérance de gain par trade

Erreurs possibles

CodeDescription
401API Key invalide ou expirée
403Scope stats:read manquant
500Erreur serveur interne

GET /stats/symbols

Récupère les statistiques par symbole/instrument.

Scope requis

stats:read

Paramètres de requête

ParamètreTypeRequisDescription
profileIdstringFiltrer par profil de trading

Exemple de requête

javascript
const response = await fetch('https://api.insightrades.com/stats/symbols?profileId=abc123', {
  headers: {
    'X-API-Key': 'ik_live_xxx'
  }
});

Réponse (200 OK)

json
[
  {
    "symbol": "EUR/USD",
    "totalTrades": 45,
    "winningTrades": 28,
    "losingTrades": 17,
    "winRate": 62.22,
    "totalPnL": 2450.75,
    "avgPnL": 54.46,
    "bestTrade": 350.00,
    "worstTrade": -180.00
  },
  {
    "symbol": "GBP/USD",
    "totalTrades": 32,
    "winningTrades": 22,
    "losingTrades": 10,
    "winRate": 68.75,
    "totalPnL": 1890.50,
    "avgPnL": 59.08,
    "bestTrade": 420.00,
    "worstTrade": -150.00
  },
  {
    "symbol": "XAU/USD",
    "totalTrades": 28,
    "winningTrades": 18,
    "losingTrades": 10,
    "winRate": 64.29,
    "totalPnL": 3200.00,
    "avgPnL": 114.29,
    "bestTrade": 850.00,
    "worstTrade": -320.00
  }
]

Champs de réponse

ChampTypeDescription
symbolstringSymbole de l'instrument
totalTradesnumberNombre total de trades sur ce symbole
winningTradesnumberNombre de trades gagnants
losingTradesnumberNombre de trades perdants
winRatenumberTaux de réussite (%)
totalPnLnumberP&L total sur ce symbole
avgPnLnumberP&L moyen par trade
bestTradenumberMeilleur trade
worstTradenumberPire trade

Erreurs possibles

CodeDescription
401API Key invalide ou expirée
403Scope stats:read manquant
500Erreur serveur interne

GET /stats/trading-analytics

Récupère des analyses avancées de trading.

Scope requis

analytics:read

Paramètres de requête

ParamètreTypeRequisDescription
profileIdstringID du profil à analyser
startDatestringDate de début (ISO 8601)
endDatestringDate de fin (ISO 8601)
strategyIdstringFiltrer par stratégie
langstringLangue: en, fr, es, pt, de, it

Exemple de requête

javascript
const response = await fetch('https://api.insightrades.com/stats/trading-analytics?profileId=abc123&startDate=2024-01-01&endDate=2024-01-31&lang=fr', {
  headers: {
    'X-API-Key': 'ik_live_xxx'
  }
});

Réponse (200 OK)

json
{
  "period": {
    "start": "2024-01-01T00:00:00Z",
    "end": "2024-01-31T23:59:59Z"
  },
  "overview": {
    "totalTrades": 45,
    "netPnL": 2850.50,
    "winRate": 64.44,
    "profitFactor": 2.35
  },
  "performanceByInstrument": [
    {
      "instrument": "EUR/USD",
      "totalTrades": 20,
      "winningTrades": 14,
      "losingTrades": 6,
      "pnlTotal": 1250.00,
      "pnlAverage": 62.50,
      "winRate": 70.00
    },
    {
      "instrument": "GBP/USD",
      "totalTrades": 15,
      "winningTrades": 9,
      "losingTrades": 6,
      "pnlTotal": 890.50,
      "pnlAverage": 59.37,
      "winRate": 60.00
    }
  ],
  "performanceBySession": {
    "London": { "trades": 25, "pnl": 1500.00, "winRate": 68.00 },
    "NewYork": { "trades": 15, "pnl": 950.50, "winRate": 60.00 },
    "Tokyo": { "trades": 5, "pnl": 400.00, "winRate": 60.00 }
  },
  "performanceByDay": {
    "Monday": { "trades": 10, "pnl": 450.00, "winRate": 70.00 },
    "Tuesday": { "trades": 12, "pnl": 680.00, "winRate": 66.67 },
    "Wednesday": { "trades": 8, "pnl": 520.00, "winRate": 62.50 },
    "Thursday": { "trades": 9, "pnl": 700.50, "winRate": 66.67 },
    "Friday": { "trades": 6, "pnl": 500.00, "winRate": 50.00 }
  },
  "drawdownAnalysis": {
    "maxDrawdown": -850.00,
    "maxDrawdownPercent": 5.2,
    "currentDrawdown": -120.00,
    "recoveryFactor": 3.35
  },
  "consistencyScore": 78.5
}

Erreurs possibles

CodeDescription
400profileId requis
401API Key invalide ou expirée
403Scope analytics:read manquant
404Profil non trouvé
500Erreur serveur interne

GET /stats/insights

Récupère des insights et recommandations basés sur l'IA.

Scope requis

analytics:read

Paramètres de requête

ParamètreTypeRequisDescription
profileIdstringID du profil à analyser
startDatestringDate de début (ISO 8601)
endDatestringDate de fin (ISO 8601)
strategyIdstringFiltrer par stratégie
langstringLangue: en, fr, es, pt, de, it

Exemple de requête

javascript
const response = await fetch('https://api.insightrades.com/stats/insights?profileId=abc123&lang=fr', {
  headers: {
    'X-API-Key': 'ik_live_xxx'
  }
});

Réponse (200 OK)

json
{
  "generatedAt": "2024-01-20T15:30:00Z",
  "insights": [
    {
      "type": "strength",
      "category": "session",
      "title": "Performance exceptionnelle en session de Londres",
      "description": "Votre taux de réussite est de 68% pendant la session de Londres, supérieur à votre moyenne globale de 64%.",
      "impact": "high",
      "recommendation": "Concentrez davantage vos trades sur la session de Londres pour optimiser vos résultats."
    },
    {
      "type": "weakness",
      "category": "risk",
      "title": "Ratio risque/récompense à améliorer",
      "description": "Votre ratio R:R moyen est de 1.2, ce qui est inférieur à la recommandation de 2:1 minimum.",
      "impact": "medium",
      "recommendation": "Visez des take profits plus ambitieux ou réduisez vos stop loss pour améliorer ce ratio."
    },
    {
      "type": "pattern",
      "category": "behavior",
      "title": "Tendance à overtrade le vendredi",
      "description": "Vos performances baissent significativement le vendredi avec un winrate de 50% contre 66% les autres jours.",
      "impact": "medium",
      "recommendation": "Envisagez de réduire votre activité le vendredi ou d'être plus sélectif."
    }
  ],
  "summary": {
    "strengths": 3,
    "weaknesses": 2,
    "patterns": 4,
    "overallScore": 72
  }
}

Types d'insights

TypeDescription
strengthPoint fort identifié
weaknessPoint faible à améliorer
patternComportement ou tendance détecté
opportunityOpportunité d'amélioration
warningAlerte ou risque identifié

Niveaux d'impact

ImpactDescription
highImpact significatif sur les performances
mediumImpact modéré
lowImpact mineur

Erreurs possibles

CodeDescription
400profileId requis
401API Key invalide ou expirée
403Scope analytics:read manquant
404Profil non trouvé
500Erreur serveur interne

Codes d'erreur communs

json
{
  "statusCode": 403,
  "errorCode": "FORBIDDEN",
  "message": "Insufficient permissions. Missing scopes: analytics:read"
}
json
{
  "statusCode": 400,
  "errorCode": "VALIDATION_ERROR",
  "message": "profileId is required"
}

Documentation de l'API InsighTrades