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
profileIdstring❌Filtrer 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
profileIdstring❌Filtrer 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
profileIdstring✅ID du profil à analyser
startDatestring❌Date de début (ISO 8601)
endDatestring❌Date de fin (ISO 8601)
strategyIdstring❌Filtrer par stratégie
langstring❌Langue: 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
profileIdstring✅ID du profil à analyser
startDatestring❌Date de début (ISO 8601)
endDatestring❌Date de fin (ISO 8601)
strategyIdstring❌Filtrer par stratégie
langstring❌Langue: 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