Skip to content

Trades ​

Endpoints pour gérer vos trades dans InsighTrades.

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

API Key via Authorization

Vous pouvez aussi envoyer l'API Key via le header Authorization :

Authorization: Bearer ik_live_xxx

GET /trades ​

Récupère la liste des trades avec pagination et filtres.

Scope requis ​

trades:read

Paramètres de requête ​

ParamètreTypeRequisDescription
pagenumber❌Numéro de page (défaut: 1)
limitnumber❌Nombre de résultats par page (défaut: 10, max: 100)
profileIdstring❌Filtrer par profil de trading
statusstring❌Filtrer par statut: OPEN ou CLOSED
typestring❌Filtrer par type: long ou short
startDatestring❌Date de début (ISO 8601)
endDatestring❌Date de fin (ISO 8601)

Exemple de requête ​

javascript
const response = await fetch('https://api.insightrades.com/trades?page=1&limit=20&status=CLOSED', {
  headers: {
    'X-API-Key': 'ik_live_xxx'
  }
});

Réponse (200 OK) ​

json
{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "symbol": "EUR/USD",
      "type": "long",
      "status": "CLOSED",
      "entryPrice": 1.085,
      "exitPrice": 1.092,
      "quantity": 1.5,
      "entryDate": "2024-01-15T10:30:00Z",
      "exitDate": "2024-01-15T14:30:00Z",
      "pnl": 105.0,
      "stopLoss": 1.08,
      "takeProfit": 1.095,
      "profile": {
        "id": "abc123",
        "name": "Live Account"
      },
      "strategy": {
        "id": "def456",
        "name": "Scalping"
      }
    }
  ],
  "meta": {
    "currentPage": 1,
    "itemsPerPage": 20,
    "totalItems": 150,
    "totalPages": 8,
    "hasNextPage": true,
    "hasPreviousPage": false
  }
}

Erreurs possibles ​

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

GET /trades/stats ​

Récupère les statistiques de trading agrégées.

Scope requis ​

stats:read

Paramètres de requête ​

ParamètreTypeRequisDescription
profileIdstring❌Filtrer par profil de trading
statusstring❌Filtrer par statut: OPEN ou CLOSED
typestring❌Filtrer par type: long ou short
searchstring❌Rechercher par symbole
startDatestring❌Date de début (ISO 8601)
endDatestring❌Date de fin (ISO 8601)

Exemple de requête ​

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

Réponse (200 OK) ​

json
{
  "totalTrades": 150,
  "openTrades": 12,
  "closedTrades": 138,
  "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
}

Champs de réponse ​

ChampTypeDescription
totalTradesnumberNombre total de trades
openTradesnumberNombre de trades ouverts
closedTradesnumberNombre de trades clôturés
totalPnLnumberProfit/perte total
winRatenumberTaux de réussite (%)
avgWinnumberGain moyen
avgLossnumberPerte moyenne
profitFactornumberFacteur de profit (gains/pertes)
bestTradenumberMeilleur trade
worstTradenumberPire trade
grossProfitnumberGains bruts
grossLossnumberPertes brutes

Erreurs possibles ​

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

POST /trades ​

Crée un nouveau trade.

Scope requis ​

trades:write

Corps de la requête ​

ChampTypeRequisDescription
profileIdstring✅ID du profil de trading
strategyIdstring❌ID de la stratégie utilisée
symbolstring✅Symbole de l'instrument (ex: EUR/USD)
typestring✅Direction: long ou short
statusstring✅Statut: OPEN ou CLOSED
entryDatestring✅Date d'entrée (ISO 8601)
exitDatestring❌Date de sortie (ISO 8601)
entryPricenumber✅Prix d'entrée
exitPricenumber❌Prix de sortie
quantitynumber✅Taille de position / lots
stopLossnumber❌Niveau de stop loss
takeProfitnumber❌Niveau de take profit
riskRewardRationumber❌Ratio risque/récompense
manualPnlnumber❌P&L manuel
commissionnumber❌Frais de commission
swapOrOvernightnumber❌Frais de swap
instrumentTypestring❌Type: forex, crypto, stocks, etc.
timeframestring❌Timeframe: M1, M5, H1, D1, etc.
sessionstring❌Session: London, NewYork, Tokyo, Sydney
tagsstring[]❌Tags de catégorisation
notesobject[]❌Notes et commentaires
brokerTradeIdstring❌ID du trade chez le broker

Exemple de requête ​

javascript
const response = await fetch('https://api.insightrades.com/trades', {
  method: 'POST',
  headers: {
    'X-API-Key': 'ik_live_xxx',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    profileId: '550e8400-e29b-41d4-a716-446655440000',
    symbol: 'EUR/USD',
    type: 'long',
    status: 'CLOSED',
    entryDate: '2024-01-15T10:30:00Z',
    exitDate: '2024-01-15T14:30:00Z',
    entryPrice: 1.085,
    exitPrice: 1.092,
    quantity: 1.5,
    stopLoss: 1.08,
    takeProfit: 1.095,
    tags: ['scalping', 'trend-following']
  })
});

Réponse (201 Created) ​

json
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "symbol": "EUR/USD",
  "type": "long",
  "status": "CLOSED",
  "entryPrice": 1.085,
  "exitPrice": 1.092,
  "quantity": 1.5,
  "pnl": 105.0,
  "createdAt": "2024-01-15T14:35:00Z"
}

Erreurs possibles ​

CodeDescription
400Données invalides (validation error)
401API Key invalide ou expirée
403Scope trades:write manquant
404Profile ou Strategy non trouvé
500Erreur serveur interne

POST /trades/bulk ​

Crée plusieurs trades en une seule requête.

Scope requis ​

trades:write

Corps de la requête ​

Un tableau de trades avec les mêmes champs que POST /trades.

Exemple de requête ​

javascript
const response = await fetch('https://api.insightrades.com/trades/bulk', {
  method: 'POST',
  headers: {
    'X-API-Key': 'ik_live_xxx',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify([
    {
      profileId: '550e8400-e29b-41d4-a716-446655440000',
      symbol: 'EUR/USD',
      type: 'long',
      status: 'CLOSED',
      entryDate: '2024-01-15T10:30:00Z',
      entryPrice: 1.085,
      exitPrice: 1.092,
      quantity: 1.5
    },
    {
      profileId: '550e8400-e29b-41d4-a716-446655440000',
      symbol: 'GBP/USD',
      type: 'short',
      status: 'CLOSED',
      entryDate: '2024-01-15T11:00:00Z',
      entryPrice: 1.265,
      exitPrice: 1.260,
      quantity: 1.0
    }
  ])
});

Réponse (201 Created) ​

json
{
  "created": 2,
  "trades": [
    { "id": "xxx", "symbol": "EUR/USD" },
    { "id": "yyy", "symbol": "GBP/USD" }
  ]
}

Limites ​

  • Maximum 100 trades par requête
  • Taille maximale de la requête : 1 MB

Erreurs possibles ​

CodeDescription
400Données invalides ou limite dépassée
401API Key invalide ou expirée
403Scope trades:write manquant
500Erreur serveur interne

POST /trades/import ​

Importe des trades depuis un broker (MT4/MT5).

Documentation complète

Voir la documentation détaillée de l'import pour plus d'informations.

Scope requis ​

trades:import

PUT /trades/:id ​

Met à jour un trade existant.

Scope requis ​

trades:write

Paramètres d'URL ​

ParamètreTypeDescription
idstringID du trade à modifier

Corps de la requête ​

Mêmes champs que POST /trades, tous optionnels.

Exemple de requête ​

javascript
const response = await fetch('https://api.insightrades.com/trades/550e8400-e29b-41d4-a716-446655440000', {
  method: 'PUT',
  headers: {
    'X-API-Key': 'ik_live_xxx',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    exitPrice: 1.095,
    exitDate: '2024-01-15T16:00:00Z',
    status: 'CLOSED'
  })
});

Réponse (200 OK) ​

json
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "symbol": "EUR/USD",
  "status": "CLOSED",
  "exitPrice": 1.095,
  "pnl": 150.0,
  "updatedAt": "2024-01-15T16:05:00Z"
}

Erreurs possibles ​

CodeDescription
400Données invalides
401API Key invalide ou expirée
403Scope trades:write manquant
404Trade non trouvé
500Erreur serveur interne

DELETE /trades/:id ​

Supprime un trade.

Scope requis ​

trades:delete

Paramètres d'URL ​

ParamètreTypeDescription
idstringID du trade à supprimer

Exemple de requête ​

javascript
const response = await fetch('https://api.insightrades.com/trades/550e8400-e29b-41d4-a716-446655440000', {
  method: 'DELETE',
  headers: {
    'X-API-Key': 'ik_live_xxx'
  }
});

Réponse (200 OK) ​

json
{
  "deleted": true,
  "id": "550e8400-e29b-41d4-a716-446655440000"
}

Erreurs possibles ​

CodeDescription
401API Key invalide ou expirée
403Scope trades:delete manquant
404Trade non trouvé
500Erreur serveur interne

Codes d'erreur communs ​

json
{
  "statusCode": 401,
  "errorCode": "API_KEY_INVALID",
  "message": "Invalid or expired API Key"
}
json
{
  "statusCode": 403,
  "errorCode": "FORBIDDEN",
  "message": "Insufficient permissions. Missing scopes: trades:read"
}
json
{
  "statusCode": 400,
  "errorCode": "VALIDATION_ERROR",
  "message": ["symbol should not be empty", "entryPrice must be a number"]
}

Documentation de l'API InsighTrades