Skip to main content

Guide d’Utilisation des Services d’Échanges

Ce guide explique comment configurer et utiliser les services d’échanges dans l’application Remora.

Configuration des Échanges

Pour commencer à utiliser les échanges, vous devez d’abord configurer vos identifiants d’API.

Ajouter un Nouvel Échange

// Exemple d'ajout d'un échange Binance
const exchangeData = {
  name: "Binance",
  type: ExchangeType.BINANCE,
  apiKey: "votre-clé-api",
  apiSecret: "votre-secret-api",
  isActive: true
};

// Enregistrer dans la base de données
await prisma.exchange.create({
  data: exchangeData
});

Configurer les Paires de Trading

// Exemple d'ajout d'une paire de trading
const tradingPair = {
  name: "BTC/USDT",
  baseCurrency: "BTC",
  quoteCurrency: "USDT",
  exchangeId: exchangeId,
  isActive: true
};

await prisma.tradingPair.create({
  data: tradingPair
});

Utilisation du ExchangesService

Le ExchangesService est le point central pour interagir avec les échanges cryptographiques.

Initialisation du Service

import { ExchangesService } from "@poihunter/functions/ExchangesService";
import { PrismaClient } from "@prisma/client";

const prisma = new PrismaClient();
const exchangesService = new ExchangesService(prisma);

// Initialiser le service (charger les échanges depuis la BD)
await exchangesService.initialize();

Créer des Ordres

// Créer un ordre d'achat au marché
const buyOrder = await exchangesService.createMarketBuyOrder(
  "BTC/USDT",     // Paire d'échange
  0.001           // Montant à acheter
);

// Créer un ordre de vente au marché
const sellOrder = await exchangesService.createMarketSellOrder(
  "BTC/USDT",     // Paire d'échange
  0.001           // Montant à vendre
);

Annuler des Ordres

// Annuler un ordre existant
await exchangesService.cancelOrder(
  "BTC/USDT",             // Paire d'échange
  "123456789"             // ID de l'ordre
);

Formater les Prix et Montants

// Formater un montant selon la précision de l'échange
const formattedAmount = exchangesService.formatAmount(
  "BTC/USDT",             // Paire d'échange
  0.123456789             // Montant à formater
);

// Formater un prix selon la précision de l'échange
const formattedPrice = exchangesService.formatPrice(
  "BTC/USDT",             // Paire d'échange
  45678.123456789         // Prix à formater
);

Synchronisation des Positions

Le ExchangePositionService gère la synchronisation entre les positions en base de données et celles sur les échanges.
import { ExchangePositionService } from "@poihunter/functions/positions/exchangePositionService";

const exchangePositionService = new ExchangePositionService(
  prisma,
  logService,
  exchangesService
);

// Synchroniser toutes les positions actives
await exchangePositionService.syncPositions();

Gestion des Erreurs

Erreurs Communes

  • InsufficientFunds: Vérifier les soldes disponibles avant de placer des ordres
  • InvalidOrder: Vérifier les paramètres de l’ordre (montant minimal, précision)
  • ExchangeError: Problème de communication avec l’échange

Exemple de Gestion d’Erreurs

try {
  const order = await exchangesService.createMarketBuyOrder("BTC/USDT", 0.001);
  // Traiter l'ordre créé
} catch (error) {
  if (error.name === 'InsufficientFunds') {
    // Gérer l'erreur de fonds insuffisants
    console.error("Fonds insuffisants pour créer l'ordre", error);
  } else if (error.name === 'InvalidOrder') {
    // Gérer l'erreur d'ordre invalide
    console.error("Paramètres d'ordre invalides", error);
  } else {
    // Gérer les autres erreurs
    console.error("Erreur lors de la création de l'ordre", error);
  }
}

Bonnes Pratiques

  1. Toujours vérifier les soldes avant de placer des ordres
  2. Formater les montants et prix selon les exigences de l’échange
  3. Gérer les erreurs spécifiques à chaque type d’échange
  4. Limiter les appels API en utilisant les données en cache lorsque possible
  5. Synchroniser régulièrement les positions pour éviter les incohérences

Dépannage

Si vous rencontrez des problèmes avec les services d’échanges:
  1. Vérifiez que vos identifiants API sont valides et ont les permissions nécessaires
  2. Assurez-vous que le service a été correctement initialisé
  3. Consultez les journaux pour les messages d’erreur détaillés
  4. Vérifiez les limites de taux (rate limits) de l’échange
  5. Pour les erreurs de type “InsufficientFunds”, vérifiez les soldes disponibles
Pour plus d’informations, consultez la spécification du service d’échanges.