PnlTracker
Développeur

Graphique du trade

Fonctionnement du graphique de trade dans PnlTracker - intégration Polygon, mapping des symboles, cache et rate limiting.

Le graphique du trade s'affiche dans la modale de détail d'un trade dans la vue quotidienne. Il affiche un graphique candlestick dont les données proviennent de Polygon.io, avec le point d'entrée, le point de sortie et optionnellement les trades adjacents superposés.

Mapping des symboles

tradeToPolygonSymbol() convertit un symbole de trade en ticker Polygon en fonction du instrumentType du trade.

  • Forex : les paires de 6 lettres sont préfixées avec C: (ex. EURUSDC:EURUSD). Les alias métaux comme GOLD ou XAU sont mappés vers C:XAUUSD.
  • Crypto : correspond au format X:BASEQUOTE. USDT est normalisé en USD (ex. BTCUSDTX:BTCUSD).
  • Stock : ticker nu (ex. AAPL).
  • Future : ticker nu avec code mois/année (ex. ESZ5).
  • Option : préfixé avec O: (ex. AAPL240315C00150000O:AAPL240315C00150000).
  • Any / indéfini : si le symbole ressemble à un future, il est traité comme tel.

Alias Polygon (spgn)

Pour les symboles qui ne se mappent pas automatiquement, ajoutez un champ personnalisé nommé spgn dans la configuration du symbole. La valeur est le ticker Polygon à utiliser. Un préfixe optionnel permet de forcer le type d'instrument utilisé pour appeler l'API Polygon :

PréfixeType d'instrumentExemple
ft:Futureft:ES
fx:Forexfx:EURUSD
cr:Cryptocr:BTCUSD
st:Stockst:AAPL

C'est utile quand un symbole broker diffère du ticker Polygon ou quand le type d'instrument doit être forcé.

Récupération des données

API standard aggregates

Les actions, forex, crypto et options utilisent :

https://api.polygon.io/v2/aggs/ticker/{ticker}/range/{multiplier}/{timespan}/{from}/{to}

Les timestamps sont retournés en millisecondes et convertis en secondes pour le graphique.

API futures

Les futures utilisent un endpoint dédié :

https://api.polygon.io/futures/v1/aggs/{ticker}

L'API futures retourne des timestamps en nanosecondes et utilise un format de résolution différent (1min, 1hour, 1session).

Résolution des contrats

Si un symbole future n'a pas de code d'expiration (ex. MGC) ou si le trade tombe dans le mois d'expiration, l'application interroge l'endpoint /futures/v1/contracts pour trouver le contrat front-month. Les contrats en mois d'expiration sont ignorés pour éviter les données dégradées, avec un fallback sur le contrat le plus proche si nécessaire.

Rate limiting

Le plan gratuit Polygon autorise 5 requêtes par minute. Le client applique un délai minimum de 12 secondes entre les requêtes et réessaie jusqu'à 3 fois en cas de HTTP 429 avec un backoff exponentiel (12s, 24s, 48s).

Cache

Les barres sont mises en cache dans le navigateur via idb-keyval (IndexedDB). Le cache utilise des clés de période :

  • Timeframes ≤ 5 minutes : semaines ISO (YYYY-Www)
  • Timeframes > 5 minutes : mois (YYYY-MM)

Chaque période est stockée séparément sous une clé comme polygon:{ticker}:{tf}:{periodKey}. Les périodes historiques ne sont jamais rafraîchies ; les périodes courantes ou futures sont rafraîchies au maximum une fois par minute. Un bouton Vider le cache Polygon dans Paramètres → Options supprime toutes les entrées du cache.

Plage de dates et timeframes

Timeframes disponibles : 1, 5, 15 minutes, 1 heure, 4 heures, daily. La plage demandée est centrée sur le trade avec un buffer adaptatif :

TimeframeBarres de bufferContexte approximatif
1 min1500~25 heures
5 min1000~83 heures
15 min800~200 heures
1 heure500~500 heures
4 heures400~1600 heures
Daily250~250 jours

Au chargement, le graphique défile vers une fenêtre visible centrée sur le milieu du trade. La taille de cette fenêtre est aussi adaptative selon le timeframe.

Fuseau horaire d'affichage

Les axes du graphique et les étiquettes du curseur respectent le fuseau horaire configuré dans Paramètres → Options (CURRENT, LOCAL ou UTC). C'est indépendant des timestamps UTC bruts stockés par Polygon.

Marqueurs et superpositions

  • Marqueurs d'entrée / sortie : flèches BUY/SELL sous la barre d'entrée, flèche EXIT au-dessus de la barre de sortie.
  • Segments de prix : courtes lignes horizontales aux prix d'entrée et de sortie exacts.
  • Ligne de trade : ligne pointillée reliant les prix d'entrée et de sortie.
  • Trades adjacents : marqueurs et segments de prix monochromes optionnels pour les autres trades sur le même symbole dans la plage visible.

Les marqueurs et segments qui tombent en dehors de la plage de données récupérées sont ignorés pour éviter que le graphique ne plante.

Configuration

La clé API Polygon est configurée dans Paramètres → Options. Elle est stockée dans le navigateur (persistée dans localStorage) et utilisée pour toutes les requêtes du graphique de trade. Il n'y a pas de fallback vers une clé publique ou une variable d'environnement.

Copyright © 2026