BJF Trading Group Inc. — Ontario, Canada Contact Espace membre Blog Affiliés
EN DE JA AR KO ES PT ID VI HI FR TR IT CN



Pour les développeurs · plateforme SharpTrader

Développez sur SharpTrader : API de bots en C#, connectivité EasyFIX et bibliothèque graphique BjfChart

SharpTrader est une plateforme de trading conçue pour les traders, pas pour les courtiers, et elle est ouverte à ceux qui écrivent du code pour eux. Écrivez vos propres stratégies en C# directement dans la plateforme, connectez vos logiciels externes à son moteur d’exécution via l’API EasyFIX, ou intégrez notre bibliothèque de graphiques en chandeliers accélérée par GPU dans votre propre terminal .NET.

Stratégies C# avec ticks en temps réel et sessions multi-courtiers
API EasyFIX : plus de 50 connecteurs FIX, exchanges crypto
DLL BjfChart : 22 indicateurs, outils de dessin, ticket d’ordre
.NET Framework 4.8 et .NET 8

Voir la démonstration des graphiques Contacts développeurs



C#langage natif des stratégies, compilé dans SharpTrader 50+connecteurs FIX API vers des courtiers, plus les principaux exchanges crypto 22indicateurs dans BjfChart, vérifiés par rapport à des calculs de référence 2cibles dans une seule DLL : net48 pour les applications existantes, net8.0-windows pour les nouvelles



Trois façons de développer avec BJF

Chaque option répond à un besoin différent. Choisissez celle qui correspond à l’endroit où se trouve votre code.

Dans la plateforme

Module de programmation : API de bots en C#

Écrivez une stratégie sous forme de classe C#, compilez-la dans SharpTrader et exécutez-la sur n’importe quel courtier ou exchange connecté. Ticks, positions, ordres et indicateurs sont tous accessibles en un seul appel.

En savoir plus sur l’API de bots

En dehors de la plateforme

API EasyFIX

Conservez votre propre moteur, dans n’importe quel langage, et faites de SharpTrader votre passerelle : il vous transmet les cotations en continu et achemine vos ordres via ses connecteurs vers les courtiers et les exchanges.

En savoir plus sur EasyFIX

Dans votre propre terminal

Bibliothèque graphique BjfChart

Une seule DLL qui apporte à votre application .NET des graphiques en chandeliers professionnels, des indicateurs, des outils de dessin, un panneau de trading et un carnet d’ordres, avec un flux de ticks en temps réel.

Découvrir la bibliothèque graphique



Module de programmation : écrivez vos stratégies en C#

Le module de programmation transforme SharpTrader en environnement de développement pour stratégies automatisées. Un bot est une classe C# qui hérite de la classe de base Bot de la plateforme et réagit à des événements : initialisation, chaque tick entrant, ouverture de position, fermeture de position et mises à jour du statut des ordres. La plateforme le compile, affiche vos paramètres dans l’interface et l’exécute sur des comptes réels ou de démonstration, en parallèle des stratégies intégrées d’arbitrage, d’actualités et d’impulsion.

Ce que l’API vous offre

Domaine Ce que vous pouvez faire
Données de marché Bid, ask, spread et valeur du point par symbole et par session, via l’objet ticker. Une session correspond à un compte connecté chez un courtier ou sur un exchange ; un même bot peut donc surveiller et trader plusieurs contreparties à la fois grâce à l’index de session.
Ordres et positions sendOrder pour l’exécution au marché, modifyPositionByID pour le stop-loss et le take-profit, closePositionByID, recherches par ID ou par commentaire, et listes en temps réel des ordres ouverts, clôturés et en attente.
Détails des positions Chaque position contient les prix et heures d’ouverture et de clôture, le volume, le sens, la session, le profit, le commentaire, le stop-loss, le take-profit, ainsi que le slippage mesuré et le temps d’exécution pour les deux jambes. C’est ce dernier point qui permet à un bot de s’adapter à la façon dont un courtier vous exécute réellement.
Indicateurs Fonctions d’indicateurs intégrées, comme EMA et MACD, sur n’importe quelle unité de temps, enrichies en continu au fil des mises à jour de la plateforme.
Paramètres et journalisation Les propriétés publiques marquées [PropertyInfo] apparaissent comme paramètres modifiables dans l’interface ; writeLog écrit dans le journal de la plateforme ; stopBot arrête la stratégie depuis le code.
État du compte Solde et fonds propres (equity) par session pour les règles de risque et le dimensionnement des positions.

Un squelette de stratégie minimal

// Squelette illustratif. Les noms suivent la référence de la bibliothèque de programmation SharpTrader.
using SharpTraderBot;

public class SpreadGuardBot : Bot
{
    [PropertyInfo(0.10, "Lot size")]
    public double Lots { get; set; }

    [PropertyInfo(20, "Max spread, points")]
    public int MaxSpreadPoints { get; set; }

    string _inFlight;                            // un seul ordre en cours par tick

    public virtual void OnInit() { writeLog("SpreadGuardBot started"); }

    public virtual void OnTick(NewTickEventArgs args)
    {
        int session = 0;                         // index de session = compte courtier
        string symbol = args.tick.symbol;

        double point  = ticker.getPointValue(session, symbol);
        double spread = (ticker.getAsk(session, symbol) - ticker.getBid(session, symbol)) / point;

        if (spread > MaxSpreadPoints || _inFlight != null) return;

        _inFlight = sendOrder(session, symbol, Lots, OrderSide.BUY, OrderType.MARKET, 0, "spread-guard");
    }
}
À savoir avant d’écrire la première ligne. Le bac à sable compile avec un ensemble fixe d’assemblies : System, System.Collections, System.Runtime, System.Console et la bibliothèque de bots SharpTrader. LINQ n’en fait pas partie : écrivez donc de simples boucles foreach au lieu de Where, Select ou Any. Les prix renvoyés par l’API sont exprimés en points du courtier ; multipliez-les par la valeur du point avant de les comparer à vos propres seuils. Et limitez-vous à un seul ordre en cours par tick, protégé par l’ID d’ordre client renvoyé, à moins d’aimer déboguer des exécutions en double.

Référence complète des classes, méthodes et événements : documentation de la bibliothèque de programmation SharpTrader. Le module de programmation est un module complémentaire de SharpTrader Pro ; consultez la page SharpTrader Pro pour l’offre actuelle.



API EasyFIX : connectez votre propre logiciel à SharpTrader

Tout n’a pas vocation à tourner dans la plateforme. Si vous utilisez déjà un moteur de signaux, un gestionnaire de risque, une interface personnalisée ou une chaîne de recherche, EasyFIX lui permet de communiquer avec SharpTrader via un protocole FIX simplifié. SharpTrader devient votre passerelle d’exécution : il gère les connexions aux courtiers et aux exchanges, tandis que vous envoyez des ordres et recevez cotations et exécutions depuis votre propre code, dans le langage de votre choix.

Ce que transporte EasyFIX

  • Données de marché : cotations des symboles auxquels vous êtes abonné, depuis n’importe quelle session ouverte dans SharpTrader.
  • Flux d’ordres : nouveaux ordres, modifications et clôtures acheminés vers la session choisie.
  • Rapports d’exécution : exécutions, rejets, statut des positions et des ordres renvoyés à votre application.
  • Accès aux mêmes plus de 50 connecteurs FIX API vers des courtiers et aux connexions aux principaux exchanges crypto que SharpTrader utilise pour ses propres stratégies.

Intégrations typiques

  • Une stratégie externe écrite en Python, Java, C++ ou dans tout langage disposant d’un socket et d’un générateur de messages FIX.
  • Une couche de risque à l’échelle de l’entreprise qui supervise plusieurs instances de SharpTrader.
  • Une interface de trading ou un tableau de bord personnalisé reposant sur l’exécution de SharpTrader.
  • L’enregistrement des cotations et des exécutions pour la recherche, le backtest et l’audit de l’exécution des courtiers.

EasyFIX est un dialecte FIX modifié : il conserve le modèle de messages que les développeurs connaissent déjà tout en supprimant le formalisme dont une liaison entre un trader et une passerelle n’a pas besoin. La spécification, des exemples de sessions et une connexion de test sont fournis sur demande aux utilisateurs de SharpTrader Pro et Lite. Écrivez à support@bjftradinggroup.com en décrivant brièvement ce que vous prévoyez de connecter.



BjfChart : la bibliothèque graphique derrière les nouveaux graphiques de SharpTrader

En 2026, nous avons entièrement reconstruit les graphiques de SharpTrader, et le moteur qui les anime est disponible pour les développeurs sous forme de bibliothèque autonome. BjfChart est un contrôle de graphiques en chandeliers pour WinForms, accéléré par GPU et basé sur SkiaSharp. Il affiche des dizaines de milliers de barres à 60 images par seconde et est livré sous la forme d’un unique fichier BjfChart.dll ciblant à la fois net48 et net8.0-windows ; il s’intègre ainsi aussi bien dans des terminaux .NET Framework existants que dans de nouvelles applications .NET 8.

Vidéo : SharpTrader Charting, nouvelle bibliothèque graphique et démonstration du trading manuel

Huit unités de temps, des indicateurs, des outils Fibonacci et de tendance, un ticket d’ordre avec lignes de stop-loss et de take-profit déplaçables, et des graphiques multi-courtiers, présentés en direct dans SharpTrader. Ouvrir sur YouTube

Contenu de la bibliothèque

Moteur graphique

  • Rendu en chandeliers avec sous-panneau de volume, réticule, étiquette de prix en temps réel et légende OHLC flottante.
  • Zoom à la molette qui garde fixe la barre sous le curseur, déplacement par cliquer-glisser.
  • Flux en temps réel : PushTick intègre un tick dans la dernière barre, FeedTick regroupe automatiquement les ticks en chandeliers de n’importe quel intervalle.
  • Superpositions multi-symboles pour la comparaison, avec échelle indépendante ou partagée.
  • Sauvegarde de la disposition en JSON : indicateurs, dessins, superpositions et zone d’affichage sont enregistrés et restaurés.
  • Thèmes sombre (bleu marine et or BJF) et clair, commutables à la volée, chaque couleur étant modifiable.
  • Filigrane derrière les chandeliers à partir d’un fichier logo, d’une URL ou d’un texte.

Couche de trading

  • TradingPanel : un ticket d’ordre (achat et vente au marché, à cours limité ou stop, quantité, prix, stop-loss, take-profit) avec affichage en temps réel de la position et du P/L.
  • Lignes d’entrée, de stop-loss, de take-profit et d’ordres en attente tracées automatiquement sur le graphique ; le stop-loss et le take-profit sont déplaçables et déclenchent des événements au relâchement.
  • Le panneau n’exécute rien lui-même. Il déclenche des événements destinés à votre couche d’exécution, qu’il s’agisse d’une session FIX API, d’un bridge de courtier ou de SharpTrader via EasyFIX.
  • OrderBookPanel : une échelle de profondeur de marché avec la taille par niveau et des barres de profondeur proportionnelles ; cliquez sur un niveau pour préremplir un prix limite.
  • Lignes de prix arbitraires par ID pour les ordres du courtier, avec déplacement optionnel.

Indicateurs et outils de dessin

Groupe Inclus
Indicateurs superposés SMA, EMA, WMA, VWAP, bandes de Bollinger, canaux de Keltner, canaux de Donchian, Envelope, Parabolic SAR.
Indicateurs en sous-panneau RSI, MACD avec histogramme, Stochastique, ATR, CCI, ADX / DMI, Momentum, Rate of Change, Williams %R, Awesome Oscillator, écart-type, On-Balance Volume, Money Flow Index.
Précision Les calculs des indicateurs sont vérifiés par rapport à des implémentations de référence indépendantes : SMA, EMA, Bollinger, RSI, ATR, Stochastique et CCI concordent à 1e-9 près ; MACD, ADX, DI, Williams %R, MFI et OBV sont validés quant à leur exactitude et à leur plage de valeurs.
Outils de dessin Ligne de tendance, demi-droite, ligne prolongée, ligne et demi-droite horizontales, ligne verticale, flèche, canal parallèle, rectangle, ellipse, retracement de Fibonacci, extension de Fibonacci, et un outil de mesure affichant l’écart de prix, la variation en pourcentage et le nombre de barres. Tous sont ancrés dans l’espace des données et restent donc fixés lors du zoom et du déplacement.
Extensibilité Implémentez IIndicator (ou dérivez de IndicatorBase), renvoyez une ou plusieurs séries alignées sur la liste des chandeliers, choisissez superposition ou sous-panneau, ligne, histogramme ou points, puis enregistrez l’indicateur pour qu’il apparaisse dans le menu contextuel et dans les dispositions sauvegardées.

Dix lignes pour un graphique opérationnel

using BjfChart;
using BjfChart.Indicators;
using BjfChart.Models;

var chart = new ChartControl { Dock = DockStyle.Fill };
form.Controls.Add(chart);

chart.SetData(myCandles);                          // IEnumerable<Candle>
chart.AddIndicator("ema");
chart.AddIndicator("bb");
chart.AddIndicator("macd");                        // s’affiche dans son propre sous-panneau
chart.AddIndicator(new RsiIndicator(21));          // ou par type, avec des paramètres personnalisés

chart.CandleInterval = TimeSpan.FromMinutes(15);   // active le regroupement automatique
chart.FeedTick(DateTime.UtcNow, price, volume);    // crée un nouveau chandelier à chaque limite

chart.StartDrawing(DrawingKind.FibRetracement);    // le prochain glisser trace un retracement de Fibonacci
chart.SaveLayout(@"C:\layouts\eurusd.json");

// Panneau de trading relié à votre couche d’exécution
var panel = new TradingPanel { Dock = DockStyle.Right, Symbol = "EURUSD" };
panel.AttachChart(chart);                          // trace les lignes d’entrée / SL / TP sur le graphique
panel.OrderSubmitted += (s, req) => myExecutionEngine.Send(req);
panel.PositionModified += (s, pos) => broker.Modify(pos);   // après déplacement du SL ou du TP

Tout ce qui est accessible dans le code l’est aussi depuis le menu contextuel du graphique : ajouter ou supprimer des indicateurs, choisir un outil de dessin, gérer les superpositions, changer de thème, enregistrer ou charger une disposition. La compilation de la bibliothèque nécessite Windows et le SDK .NET 8.0 ou supérieur ; NuGet restaure SkiaSharp automatiquement. Une application de démonstration exécutable avec des ticks simulés en temps réel est incluse.

Utiliser BjfChart dans votre produit. La bibliothèque est concédée sous licence aux développeurs SharpTrader, aux partenaires en marque blanche et aux éditeurs de terminaux tiers. Pour toute question d’utilisation, les conditions de licence, une version de démonstration ou de l’aide pour l’intégrer à votre flux de données, contactez-nous directement aux coordonnées ci-dessous. Indiquez-nous la cible .NET que vous utilisez et la nature de votre source de données, et nous vous répondrons sous un jour ouvrable.



Contacts développeurs

Toutes les questions des développeurs sont traitées par l’équipe qui conçoit la plateforme. Pour les questions sur l’API de bots et EasyFIX, indiquez votre version de SharpTrader et votre type de compte ; pour BjfChart, indiquez votre cible .NET et votre flux de données.

E-mailsupport@bjftradinggroup.comIdéal pour les exemples de code, les spécifications et les licences Téléphone+1 (905) 599-5507Du lundi au vendredi, de 9 h 00 à 18 h 00, heure de l’Est (Toronto) Telegramt.me/bjftradinggroupQuestions rapides et suivis

BJF Trading Group Inc., 3397 Mistwell Crescent, Oakville, ON, L6L 0A2, Canada. Demandes générales : page de contact.



Questions fréquentes

Quel langage utilisent les bots SharpTrader ?
Le C#. Un bot est une classe qui hérite de la classe de base Bot de la plateforme et implémente des gestionnaires d’événements pour l’initialisation, les ticks, les changements de position et les mises à jour du statut des ordres. Il est compilé dans SharpTrader et s’exécute en parallèle des stratégies intégrées.
Un même bot peut-il trader chez plusieurs courtiers ou sur plusieurs exchanges en même temps ?
Oui. Chaque appel de données de marché et d’ordre prend un index de session, une session correspondant à un compte connecté chez un courtier ou sur un exchange. Un bot peut lire les cotations d’une session et envoyer des ordres vers une autre : c’est ainsi que s’écrit la logique multi-courtiers et inter-exchanges.
Qu’est-ce que l’API EasyFIX et à qui s’adresse-t-elle ?
EasyFIX est un protocole FIX simplifié qui permet à un logiciel externe de se connecter à SharpTrader en l’utilisant comme passerelle d’exécution. Elle s’adresse aux développeurs qui conservent leur propre moteur en dehors de la plateforme et souhaitent recevoir des cotations et envoyer des ordres via les connecteurs de SharpTrader vers les courtiers et les exchanges. La spécification et une connexion de test sont fournies sur demande.
BjfChart est-il disponible séparément de SharpTrader ?
Oui. BjfChart est une bibliothèque .NET autonome, une seule DLL ciblant net48 et net8.0-windows, basée sur SkiaSharp. Elle est concédée sous licence aux développeurs SharpTrader, aux partenaires en marque blanche et aux éditeurs de terminaux. Contactez support@bjftradinggroup.com pour connaître les conditions et obtenir une version de démonstration.
Le panneau de trading de BjfChart exécute-t-il des ordres ?
Non. Le panneau déclenche des événements (ordre soumis, demande de clôture de position, position modifiée après déplacement du stop-loss ou du take-profit) et l’application hôte les achemine vers sa propre couche d’exécution, comme une session FIX API, un bridge de courtier ou SharpTrader via EasyFIX.
Puis-je ajouter mes propres indicateurs à BjfChart ?
Oui. Implémentez l’interface IIndicator ou dérivez de IndicatorBase, renvoyez une ou plusieurs séries alignées sur la liste des chandeliers, choisissez un rendu en superposition ou en sous-panneau, puis enregistrez l’indicateur pour qu’il apparaisse dans le menu contextuel et soit sauvegardé dans les dispositions.
Le code source de SharpTrader ou de BjfChart est-il à vendre ?
Non. BJF Trading Group concède des licences sur des versions compilées et fournit l’accès à l’API, la documentation et le support. Le code source n’est ni vendu ni divulgué, quel que soit le programme.





Dites-nous ce que vous développez

Un bot pour une particularité d’un courtier, un moteur externe qui a besoin d’une passerelle d’exécution, ou un terminal qui doit avoir ses graphiques d’ici vendredi. Un e-mail avec les détails, une réponse avec l’étape suivante.

Écrire à l’équipe de développement Nous écrire sur Telegram

BJF Trading Group Inc. développe des outils logiciels pour les traders et développeurs expérimentés. Nous ne sommes ni un courtier, ni une institution financière, ni un conseiller en investissement, et nous n’exécutons pas de transactions et ne gérons pas de fonds. Les exemples de code de cette page sont illustratifs et peuvent différer de la référence actuelle de la bibliothèque ; consultez toujours la documentation correspondant à la version de votre plateforme. Le trading sur le Forex, les CFD et les cryptomonnaies comporte un risque élevé de perte et ne convient pas à tous les investisseurs. Rien sur cette page ne constitue un conseil financier ni une promesse de profit.