Aller au contenu

Référence API

Concepts communs

Volume, prix, types d'ordres et durée de validité

Volume

Le volume est spécifié en cents (unités de 0,0000001 lots).

Lots Volume (cents)
0,01 100 000
0,1 1 000 000
1,0 10 000 000

Prix

Les valeurs de prix sont en pipettes. À convertir : display_price = pipette_value / 10^pipDigits

Pour EURUSD (5 chiffres), une valeur de pipette de 112345 = 1.12345.

Types d'ordres

Type Description Champs requis
MARKET Exécuter immédiatement au prix actuel symbolId, tradeSide, volume
LIMIT Exécuter au prix limite ou mieux + limitPrice
STOP Déclencher lorsque le marché atteint le prix stop + stopPrice
MARKET_RANGE Exécuter dans un écart de prix + baseSlippagePrice
STOP_LIMIT Ordre à cours limité déclenché au prix stop + stopPrice, limitPrice

Durée de validité

Politique Description
GOOD_TILL_CANCEL L'ordre reste actif jusqu'à son exécution ou son annulation
GOOD_TILL_DATE L'ordre expire à l'expirationTimestamp spécifié
IMMEDIATE_OR_CANCEL Exécuter ce qui est disponible immédiatement, annuler le reste

Informations sur le compte

GET /v1/balance Get account balance

Renvoie le solde du compte, les fonds propres et la marge libre.

Paramètres

Aucun paramètre.

Réponses

200 Réponse réussie

Response body
{
  "balance": 10000.00,
  "equity": 10250.75,
  "freeMargin": 9800.50,
  "balanceVersion": 42,
  "moneyDigits": 2,
  "depositAssetId": 1
}
Champ Type Description
balance double Solde du compte dans la devise de dépôt
equity double Solde + P&P flottant
freeMargin double Marge disponible pour de nouvelles transactions
balanceVersion int64 Compteur de version du solde
moneyDigits int32 Nombre de décimales pour les valeurs monétaires
depositAssetId int64 ID de l'actif de la devise de dépôt
GET /v1/symbols Obtenir les symboles disponibles

Renvoie tous les symboles disponibles pour le trading sur le compte.

Paramètres

Aucun paramètre.

Réponses

200 Tableau d'objets Symbol

Response body
[
  {
    "symbolId": 1,
    "symbolName": "EURUSD",
    "enabled": true,
    "baseAssetId": 2,
    "quoteAssetId": 1,
    "description": "Euro vs US Dollar"
  }
]

Symbol

Champ Type Description
symbolId int64 ID du symbole (utilisé dans d'autres appels API)
symbolName string Nom du symbole (par ex., « EURUSD »)
enabled boolean Indique si le symbole est négociable
baseAssetId int64 ID de l'actif de base
quoteAssetId int64 ID de l'actif de cotation
description string Description lisible
GET /v1/assets Obtenir les actifs disponibles

Renvoie les actifs disponibles (devises).

Paramètres

Aucun paramètre.

Réponses

200 Tableau d'objets Asset

Response body
[
  {
    "assetId": 1,
    "name": "USD",
    "displayName": "US Dollar"
  }
]

Asset

Champ Type Description
assetId int64 ID de l'actif
name string Code de l'actif (par ex., « USD »)
displayName string Nom d'affichage

Données de marché

GET /v1/prices Obtenir les prix au comptant

Renvoie les prix acheteur/vendeur actuels pour les symboles spécifiés. Il s'agit d'un instantané – l'API ne prend pas en charge le streaming.

Paramètres
Nom Situé dans Type Requis Description
symbolId query int64[] ID de symboles séparés par des virgules
Réponses

200 Tableau d'objets SpotPrice

Response body
[
  {
    "symbolId": 1,
    "bid": 112340,
    "ask": 112355,
    "high": 112890,
    "low": 111950,
    "sessionClose": 112100,
    "timestamp": 1700000000000
  }
]

SpotPrice

Champ Type Description
symbolId int64 ID du symbole
bid int64 Meilleur cours vendeur (pipettes)
ask int64 Meilleur cours acheteur (pipettes)
high int64 Plus haut de la session (pipettes)
low int64 Plus bas de la session (pipettes)
sessionClose int64 Clôture de la session précédente (pipettes)
timestamp int64 Horodatage de la cotation (epoch ms)
GET /v1/trendbars Obtenir les données OHLCV historiques

Renvoie les données historiques en chandeliers (OHLCV) pour un symbole.

Paramètres
Nom Situé dans Type Requis Par défaut Description
symbolId query int64 ID du symbole
period query string Période de la barre
fromTimestamp query string Heure de début (ISO-8601)
toTimestamp query string Heure de fin (ISO-8601)
count query int32 100 Nombre maximal de barres à renvoyer
Périodes disponibles

M_1 M_2 M_3 M_4 M_5 M_10 M_15 M_30 H_1 H_2 H_3 H_4 H_6 H_8 H_12 D_1 W_1 MN_1

Réponses

200 Tableau d'objets Trendbar

Response body
[
  {
    "timestamp": 1700000000000,
    "open": 112340.0,
    "high": 112890.0,
    "low": 111950.0,
    "close": 112500.0,
    "volume": 4521
  }
]

Trendbar

Champ Type Description
timestamp int64 Heure d'ouverture de la barre (epoch ms)
open double Prix d'ouverture (pipettes)
high double Prix le plus haut (pipettes)
low double Prix le plus bas (pipettes)
close double Prix de clôture (pipettes)
volume int64 Volume de tick

Ordres

POST /v1/orders Placer un nouvel ordre

Place un nouvel ordre de trading. Renvoie une ExecutionResponse.

Paramètres

Aucun paramètre de chemin ou de requête.

Corps de la requête application/json
Champ Type Requis Description
symbolId int64 Symbole à trader
orderType string MARKET, LIMIT, STOP, MARKET_RANGE, STOP_LIMIT
tradeSide string BUY ou SELL
volume int64 Volume en centimes
limitPrice double Prix limite – requis pour LIMIT, STOP_LIMIT
stopPrice double Prix de déclenchement du stop – requis pour STOP, STOP_LIMIT
stopLoss double Prix du stop loss
takeProfit double Prix du take profit
comment string Commentaire en texte libre (max. 256 caractères)
label string Libellé du bot (max. 100 caractères)
timeInForce string GOOD_TILL_CANCEL, GOOD_TILL_DATE, IMMEDIATE_OR_CANCEL
baseSlippagePrice double Prix de base pour le slippage – requis pour MARKET_RANGE
slippageInPoints int32 Slippage max. en points
expirationTimestamp int64 Horodatage d'expiration (epoch ms) – pour GOOD_TILL_DATE
Example request body
{
  "symbolId": 1,
  "orderType": "MARKET",
  "tradeSide": "BUY",
  "volume": 10000000,
  "stopLoss": 112000,
  "takeProfit": 113000
}
Réponses

200 ExecutionResponse – ordre accepté ou exécuté

400 INVALID_REQUEST ou TRADING_BAD_VOLUME

422 NOT_ENOUGH_MONEY

409 MARKET_CLOSED

Example success response
{
  "orderId": 12345,
  "positionId": 67890,
  "executionType": "ORDER_FILLED",
  "order": { "..." : "..." },
  "position": { "..." : "..." },
  "deal": { "..." : "..." }
}
GET /v1/orders Obtenir les ordres en attente

Renvoie tous les ordres en cours (non exécutés).

Paramètres

Aucun paramètre.

Réponses

200 Tableau d'objets Order en attente

PUT /v1/orders/{orderId} Modifier un ordre en attente

Modifie un ordre en cours existant. Renvoie une ExecutionResponse.

Paramètres
Nom Situé dans Type Requis Description
orderId path int64 L'ordre à modifier
Corps de la requête application/json

N'importe quel sous-ensemble des champs suivants.

Champ Type Description
volume int64 Nouveau volume en centimes
limitPrice double Nouveau prix limite
stopPrice double Nouveau prix stop
stopLoss double Nouveau prix de stop loss
takeProfit double Nouveau prix de take profit
expirationTimestamp int64 Nouvel horodatage d'expiration (epoch ms)
Réponses

200 ExecutionResponse avec ORDER_REPLACED

404 Ordre introuvable

DELETE /v1/orders/{orderId} Annuler un ordre en attente

Annule un ordre en cours. Renvoie une ExecutionResponse.

Paramètres
Nom Situé dans Type Requis Description
orderId path int64 L'ordre à annuler
Réponses

200 ExecutionResponse avec ORDER_CANCELLED

404 Ordre introuvable

GET /v1/orders/history Obtenir l'historique des ordres

Renvoie l'historique des ordres dans une plage horaire.

Paramètres
Nom Situé dans Type Requis Description
fromTimestamp query string Heure de début (ISO-8601)
toTimestamp query string Heure de fin (ISO-8601)
Réponses

200 OrderListResponse

Champ Type Description
orders Order[] Tableau des ordres historiques
hasMore boolean Indique si des pages supplémentaires sont disponibles

Positions

GET /v1/positions Obtenir les positions ouvertes

Renvoie toutes les positions ouvertes et les ordres en cours.

Paramètres

Aucun paramètre.

Réponses

200 Tableau d'objets Position

Response body
[
  {
    "positionId": 67890,
    "symbolId": 1,
    "tradeSide": "BUY",
    "volume": 10000000,
    "entryPrice": 112345.0,
    "stopLoss": 112000.0,
    "takeProfit": 113000.0,
    "unrealizedPnl": 155.25,
    "commission": -7.00,
    "swap": -1.20
  }
]

Position

Champ Type Description
positionId int64 Numéro de la position
symbolId int64 ID du symbole
tradeSide string BUY ou SELL
volume int64 Volume en centimes
entryPrice double Prix d'entrée PMPV
stopLoss double Prix du stop loss
takeProfit double Prix du take profit
unrealizedPnl double Profit/perte flottant(e)
commission double Commission facturée
swap double Montant du swap
GET /v1/positions/{positionId} Obtenir les détails de la position

Renvoie une position avec ses ordres et transactions associés.

Paramètres
Nom Situé dans Type Requis Description
positionId path int64 L'ID de la position
Réponses

200 PositionDetailResponse

Champ Type Description
position Position Objet Position
orders Order[] Ordres associés
deals Deal[] Transactions associées
PUT /v1/positions/{positionId} Modifier le SL/TP de la position

Met à jour le stop loss et/ou le take profit pour une position ouverte. Renvoie une ExecutionResponse.

Paramètres
Nom Situé dans Type Requis Description
positionId path int64 L'ID de la position
Corps de la requête application/json
Champ Type Description
stopLoss double Nouveau prix de stop loss (null pour supprimer)
takeProfit double Nouveau prix de take profit (null pour supprimer)
trailingStopLoss boolean Activer le stop loss suiveur
Example request body
{
  "stopLoss": 111500,
  "takeProfit": 113500,
  "trailingStopLoss": false
}
Réponses
POST /v1/positions/{positionId}/close Fermer une position

Ferme une position ouverte totalement ou partiellement. Utilisez une valeur inférieure au volume total de la position pour une fermeture partielle. Renvoie une ExecutionResponse.

Paramètres
Nom Situé dans Type Requis Description
positionId path int64 L'ID de la position
Corps de la requête application/json
Champ Type Requis Description
volume int64 Volume à fermer en centièmes
Example – full close (1 lot)
{
  "volume": 10000000
}
Réponses

422 NOT_ENOUGH_MONEY – marge insuffisante pour une fermeture partielle


Transactions

GET /v1/deals Obtenir l'historique des transactions

Renvoie les transactions exécutées dans une plage horaire.

Paramètres
Nom Situé dans Type Requis Par défaut Description
fromTimestamp query string Heure de début (ISO-8601)
toTimestamp query string Heure de fin (ISO-8601)
maxRows query int32 50 Nombre maximum de transactions à renvoyer
Réponses

200 Tableau d'objets Deal

Response body
[
  {
    "dealId": 11111,
    "orderId": 12345,
    "positionId": 67890,
    "symbolId": 1,
    "tradeSide": "BUY",
    "volume": 10000000,
    "filledVolume": 10000000,
    "executionPrice": 112345.0,
    "executionTimestamp": 1700000000000,
    "dealStatus": "FILLED",
    "commission": -7.00
  }
]

Deal

Champ Type Description
dealId int64 ID de la transaction
orderId int64 Ordre ayant déclenché cette transaction
positionId int64 Numéro de la position
symbolId int64 ID du symbole
tradeSide string BUY ou SELL
volume int64 Volume demandé en centièmes
filledVolume int64 Volume exécuté en centièmes
executionPrice double Prix d'exécution
executionTimestamp int64 Heure d'exécution (epoch ms)
dealStatus string Statut – voir les valeurs ci-dessous
commission double Commission facturée

Valeurs de dealStatus

Valeur Signification
FILLED Ordre entièrement exécuté
PARTIALLY_FILLED Ordre partiellement conclu
REJECTED Rejeté par le serveur de trading
INTERNALLY_REJECTED Rejeté en interne avant d'atteindre le serveur
ERROR Une erreur s'est produite lors de l'exécution
MISSED Ordre manqué (par ex., écart de marché)

Schémas { #execution-response-schema }

ExecutionResponse

Toutes les opérations de placement, de modification et d'annulation d'ordres renvoient cet objet.

Champ Type Description
orderId int64 ID de l'ordre affecté
positionId int64 ID de la position affectée
executionType string Type de résultat – voir les valeurs ci-dessous
order Order Détails de l'ordre (le cas échéant)
position Position Détails de la position (le cas échéant)
deal Deal Détails de la transaction (le cas échéant)

Valeurs executionType

Valeur Signification
ORDER_ACCEPTED Ordre en cours accepté
ORDER_FILLED Ordre entièrement conclu
ORDER_REPLACED Ordre modifié
ORDER_CANCELLED Ordre annulé
ORDER_EXPIRED Ordre expiré
ORDER_REJECTED Ordre refusé
ORDER_CANCEL_REJECTED Demande d'annulation rejetée
ORDER_PARTIAL_FILL Ordre partiellement conclu
SWAP Swap de position appliqué
DEPOSIT Dépôt sur le compte
WITHDRAW Retrait du compte
BONUS_DEPOSIT_WITHDRAW Dépôt ou retrait de bonus

Limites de taux

La passerelle applique des limites de taux à plusieurs niveaux.

Niveau Description
Par IP Limite le nombre total de requêtes provenant d'une seule adresse IP
Par utilisateur Limite le nombre total de requêtes sur tous les comptes pour un seul jeton
Par compte Limite les requêtes ciblant un seul compte de trading

Limite de taux dépassée

Lorsqu'une limite de taux est dépassée, l'API renvoie 429 Too Many Requests avec un en-tête Retry-After.


Gestion des erreurs

Lorsqu'une requête échoue, l'API renvoie une réponse d'erreur JSON.

Error response format
{
  "error": {
    "code": "NOT_ENOUGH_MONEY",
    "message": "Insufficient free margin for this order",
    "httpStatus": 422,
    "retryAfter": null
  }
}

Codes d'erreur

Code HTTP Description
INVALID_REQUEST 400 Paramètres de requête invalides ou manquants
UNAUTHORIZED 401 Jeton invalide, expiré ou manquant
TRADING_BAD_VOLUME 400 Le volume est invalide (inférieur au minimum ou dépasse la position)
NOT_ENOUGH_MONEY 422 Marge libre insuffisante
SYMBOL_NOT_FOUND 404 L'ID du symbole n'existe pas
MARKET_CLOSED 409 Le marché pour le symbole est actuellement fermé
MAINTENANCE 503 Le serveur de trading est en mode maintenance
TIMEOUT 504 Le serveur de trading n'a pas répondu à temps
GATEWAY_RATE_LIMIT 429 Limite de taux dépassée – voir l'en-tête Retry-After

Gestion de la limite de taux

Lorsque vous recevez une réponse 429, l'en-tête Retry-After et le champ retryAfter indiquent combien de secondes vous devez attendre avant d'envoyer la requête suivante.