Audit du système

Ce qu’il fait, et à quelle vitesse.

Tout ce qui figure sur cette page est livré dans @tradecanvas/chart 1.30.0. Les temps par image ont été mesurés dans Chrome, sur un portable à puce graphique intégrée (Intel UHD) ; node scripts/bench-render.mjs, dans le dépôt, rejoue les mêmes scènes sur votre machine.

Architecture: Comment il reste rapide sur un portable ordinaire. →

En chiffres

18
types de graphiques
134
indicateurs intégrés
69
outils de dessin
30
langues du widget
101
clés de style
114
interrupteurs de fonctionnalités du widget
0
dépendance tierce à l’exécution
3 000+
tests unitaires

Mesurez-le sur votre machine

Les chiffres ci-dessus viennent de notre portable. Ces tests rejouent les mêmes scènes dans votre navigateur, avec la bibliothèque que vous livreriez. Rien n’est préenregistré.

1 000 000 de barres : Canvas 2D, puis WebGL

Un million de bougies d’une minute avec bandes de Bollinger, EMA, RSI et MACD, en vue d’ensemble complète, qui défilent pendant 150 images, dessinées d’abord en Canvas 2D puis en WebGL 2.

Des ticks en direct sur 100 000 barres

Vingt ticks arrivent à chaque image sur un graphique de 100 000 barres avec quatre indicateurs. Chaque indicateur se met à jour depuis la dernière barre au lieu de recalculer toute la série.

Un tableau des cours de 1 000 symboles

bo-grid avec 1 000 symboles mis à jour 50 fois par seconde. Chaque cellule modifiée clignote, et seules ces cellules sont redessinées.

WebGL 2, avec Canvas 2D en dessous

  • renderer: 'webgl' dessine la zone du graphique sur le GPU : bougies, volume, lignes et remplissages des indicateurs, heatmap de profondeur. Le texte reste sur une couche Canvas 2D au-dessus. 'auto' choisit WebGL partout où WebGL 2 est disponible.
  • Là où WebGL 2 manque, ou quand son contexte est perdu, le même graphique continue en Canvas 2D. Rien ne change dans votre code.
  • Jusqu’à 8 graphiques d’une page dessinent en WebGL en même temps (setMaxWebGLCharts) ; les autres dessinent en Canvas 2D et repassent en WebGL quand un contexte se libère.
  • Les bougies tombent sur les mêmes pixels de l’appareil avec les deux moteurs de rendu : un graphique a le même aspect, quel que soit celui qui le dessine.

Temps par image

Le temps de dessin d’une image pendant le défilement. 16,7 ms correspondent à 60 images par seconde.

GraphiqueRatio de pixelsCanvas 2DWebGLCanvas 2D / WebGL
1600×900, 500 bougies + 4 indicateurs2×27,4 ms19,6 ms
1600×900, vue d’ensemble sur 200 000 barres + 4 indicateurs2×34,5 ms20,2 ms
1600×900, vue d’ensemble sur 1 000 000 de barres + 4 indicateurs2×34,5 ms16,7 ms
1600×900, heatmap de profondeur, 240 instantanés × 80 niveaux2×25,5 ms16,8 ms
Six graphiques, avec 500 bougies et 2 indicateurs chacun2×23,5 ms17,2 ms
2560×1400, 2 000 bougies + 4 indicateurs1×41,6 ms17,7 ms
2560×1400, 2 000 bougies + 4 indicateurs1,5×70,8 ms17,6 ms
2560×1400, 2 000 bougies + 4 indicateurs2×114,5 ms29,1 ms

Canvas 2D est le moteur de rendu par défaut. renderer: 'webgl' (ou 'auto') dessine la zone du graphique en WebGL 2 et revient à Canvas 2D là où WebGL 2 manque ou quand son contexte est perdu.

Chemin des données

Un tick en direct avec bandes de Bollinger, EMA, RSI et MACD sur 100 000 barres
~0,001 ms
Les quatre mêmes indicateurs entièrement recalculés sur 100 000 barres
~27 ms
Une ligne de 1 000 000 de points visibles, sous-échantillonnée pour une image
~2,6 ms
Un redessin au survol (réticule, légende)
~0,2 ms
Un changement de symbole ou d’unité de temps n’affiche un voile de chargement qu’au-delà de
200 ms

Poids du téléchargement

Minifié et compressé en gzip, avec tout ce qu’il importe.

Chart, l’API headless
176 KB
ChartWidget, l’interface complète
315 KB
Le moteur de rendu WebGL, chargé à la première utilisation
18 KB

Comment c’est vérifié

  • Plus de 3 000 tests unitaires, répartis sur les sept paquets, s’exécutent en CI à chaque pull request.
  • Le moteur de rendu WebGL dessine les bougies sur les mêmes pixels de l’appareil que Canvas 2D ; les lignes et les remplissages ne diffèrent que sur quelques pixels de bord lissés.
  • Le moteur de rendu WebGL a été vérifié dans Chromium, Firefox et WebKit. Sans WebGL 2, ou quand son contexte est perdu, le graphique continue en Canvas 2D.
  • Les exemples de code de la doc et de la skill pour agents sont vérifiés par typage contre la vraie API.
  • Les graphiques se lisent au lecteur d’écran et s’utilisent au clavier ; le widget s’affiche de droite à gauche en arabe, en hébreu et en persan.

Fonctionnalités

Filtrez par domaine, ou cherchez par nom ou par API.

FonctionnalitéDomaineDétails et API
Bougies, barres OHLC, ligne, aire, ligne de base, Heikin-Ashi, bougies creusesTypes de graphiquescandlestick, bar, line, area, baseline, heikinAshi, hollowCandle
Renko, line break, Kagi, point & figure, barres de rangeTypes de graphiquesTaille de boîte ou ATR, lignes à casser, retournement en pourcentage ou en prix, amplitude par barre
Bougies de volume, Equivolume, aire HLC, ligne en escalier, ligne avec marqueurs, haut-basTypes de graphiques18 types de graphiques au total
La série principale masquéeTypes de graphiquesSeuls les indicateurs et les dessins restent
Graphiques pour tableaux de bordTypes de graphiquesBarres (groupées, empilées, horizontales), anneau et camembert, nuages de points et bulles, histogrammes, calendriers, matrices de corrélation, cartes par secteur, courbes anti-horaires, sparklines, jauges, cartes de chaleur et treemaps, cascades, profondeur, courbes de capital
Canvas 2D ou WebGL 2Rendurenderer: 'canvas' | 'webgl' | 'auto', setRenderer, l’événement rendererChange
Un trait par colonne de pixels en vue d’ensembleRenduLignes, bandes et histogrammes d’indicateurs sous un pixel par barre
Un million de barres qui défilent sans à-coupsRenduAvec quatre indicateurs, à un ratio de pixels de 2
Heatmap de profondeur, profil de volume et profil de marché sur le GPURendupushDepthSnapshot(book, time)
Plusieurs graphiques WebGL sur une pageRenduJusqu’à 8 (setMaxWebGLCharts) ; les autres dessinent en Canvas 2D ; retour à WebGL quand le contexte revient
Net à toutes les échelles d’affichageRenduBougies, volume et dessins sur les pixels de l’appareil à 100 %, 125 % et 200 %
Aucune dépendance tierce à l’exécutionRenduRien d’autre à installer ni à auditer
134 indicateurs intégrésIndicateursPoints pivots de six sortes, MA Cross, corrélation avec un autre symbole
Source de prixIndicateursopen, high, low, hl2, hlc3, ohlc4, hlcc4
Un indicateur appliqué à un indicateurIndicateursComme une moyenne mobile du RSI, mise à jour à chaque tick
Plusieurs indicateurs dans un panneau, déplacés d’un panneau à l’autreIndicateursmoveIndicatorToPane
Plusieurs fois le même indicateurIndicateursEMA 20 et EMA 50 côte à côte
Niveaux et seuilsIndicateursRSI 30/70, CCI ±100, enregistrés avec la disposition
Dernière valeur sur l’axeIndicateursSur l’axe des prix et sur l’axe de chaque panneau, dans la couleur de la ligne
Panneaux repliés, agrandis et réordonnésIndicateursEnregistrés avec la disposition
Modèles d’indicateursIndicateursParamètres, style, niveaux et panneau, enregistrés et appliqués ensemble
Style et visibilité de chaque ligneIndicateursUne ligne masquée n’étire pas l’échelle ; setIndicatorDefaults
Delta de volume et CVDIndicateursEstimés à partir des barres
Export des valeurs d’indicateursIndicateursCSV ou JSON, une colonne par ligne
Mises à jour incrémentales sur les ticks en directIndicateursupdate() ne recalcule que la barre en formation
69 outils de dessinOutils de dessinLignes, canaux, Fibonacci, Gann, fourchettes, vagues d’Elliott, figures, cycles, projections
Les réglages propres à chaque outilOutils de dessinStyle, propriétés et coordonnées sur la grille de prix du marché
Positions acheteuses et vendeusesOutils de dessinRapport risque/rendement, quantité à partir du risque en pourcentage ou en montant
Alertes sur un dessinOutils de dessinQuand le prix franchit une ligne de tendance ou un canal tel qu’il est dessiné, échelle logarithmique comprise
Ordre, groupes et modèlesOutils de dessinAvancer, reculer, grouper, verrouiller, masquer
Notes, bulles, flèches, drapeaux, pinceau, tracé, courbeOutils de dessinDessin à main levée et à plusieurs points
VWAP ancré et profil de volume sur plage fixeOutils de dessinLisent les barres du graphique
Gomme, zoom par zone, aimant fort, raccourcis clavierOutils de dessinAlt+T, Alt+H, Alt+J, Alt+V, Alt+C, Alt+F
Aller à une date ; périodes de 1D à ToutÉchelles et tempsPas de limite de dézoom
Fuseaux horaires IANA avec heure d’étéÉchelles et tempsOu le fuseau propre à la place de marché
N’importe quelle unité de temps, et barres en ticksÉchelles et temps7m, 90m, 2d construites à partir de ce que sert le flux ; 100T à partir de ses transactions
Échelles gauche et droite ; logarithmique, inversée et en pourcentage par panneauÉchelles et tempsL’échelle de gauche pour une superposition ou une copie de l’échelle des prix
Comparer des symboles, spread et ratioÉchelles et tempsSur leur propre échelle ou panneau, alignés dans le temps
Horaires étendusÉchelles et tempsD’après les horaires de séance du symbole
Formats de prix et d’heureÉchelles et tempspriceFormat en fonction ou en fractions comme 1/32 ; timeFormatter
L’échelle aux décimales et au pas de prix du symboleÉchelles et tempspricePrecision, minTick : une action qui évolue par pas de 10 n’affiche jamais 21 705
Lignes du plus haut et du plus bas, bid et askÉchelles et tempsBid et ask d’après les ticks du flux
Marques d’événements sur le graphiqueÉchelles et tempssignalMarkerHover, signalMarkerClick
Des flux prêts à l’emploi, et les vôtresDonnées et temps réelBinance, Bybit, Coinbase, Kraken, mock ; WebSocketAdapter, PollingAdapter
Historique plus ancien chargé en défilant vers la gaucheDonnées et temps réelfetchHistoryBefore
Recherche de symboles avec leurs détailsDonnées et temps réelsearchSymbols, resolveSymbol : décimales, pas de prix, séances, fuseau horaire
Détails du symbole appris après la connexionDonnées et temps réelL’événement symbolInfo de l’adaptateur
Échelle de profondeur de marchéDonnées et temps réelTaille à l’achat et à la vente par prix ; cliquez pour trader
Cours en direct pour les listes de suiviDonnées et temps réelsubscribeQuotes, setQuotes, getQuote
Actualités et état du marchéDonnées et temps réelfetchNews ; un compte à rebours jusqu’à l’ouverture ou la clôture
Règles de la bourseDonnées et temps réelsetMarket : pas de cotation par tranche de prix, plafond et plancher du jour, lots, séances ; HOSE, HNX, UPCoM et contrats à terme sur le VN30
Ordres et positions sur le graphiqueTradingFaites glisser pour modifier ; annulez, clôturez et inversez depuis la ligne
Marques d’exécutionTradingMotif et gain ou perte dans executionFill
Ticket d’ordreTradingQuantité, type, stop-loss et take-profit, durée de validité, vérifiés pendant la saisie ; le pas de cotation, le plafond, le plancher et les lots de la bourse
Panneau du compteTradingPositions avec gains et pertes en direct, ordres en attente, exécutions
Signaux et zones de tradeTradingClés de style markers.*, tradeZones.*
Backtesting et mesures de risqueTrading@tradecanvas/analytics : commission, glissement, Sharpe, Sortino, Calmar, drawdown
Des alertes au-delà d’un niveau de prixAlertes et relectureLigne qui en croise une autre, variation de N % en N barres, à la clôture de la barre, avec expiration
Relecture des barres par pas plus finsAlertes et relectureUne unité de temps plus longue rejouée à partir de barres plus courtes
Trading fictif pendant une relectureAlertes et relectureOrdres exécutés aux prix rejoués
Relecture sur une grille de graphiquesAlertes et relectureTous au même pas
Relecture pour les applicationsAlertes et relecturestartTime, hideHistory, duration, marques révélées au fil de la lecture, replayComplete
Une grille de widgets synchronisésEspace de travailJusqu’à 6, partageant symbole, unité de temps, réticule, temps et dessins
Des dispositions nommées sur votre propre stockageEspace de travailEnregistrer, ouvrir, renommer, enregistrement auto ; LayoutStorage pour un serveur
Annuler et rétablir pour toutEspace de travailDessins, indicateurs, paramètres et type de graphique ; recordUndo
Menus contextuels par zoneEspace de travailDessins, zone du graphique, panneaux, axe des prix, axe du temps
Listes de suiviEspace de travailPlusieurs listes, réordonnées par glisser
Des événements pour l’application hôteEspace de travailsymbolChange, timeframeChange, ordersChange, executionFill, styleChange et d’autres
Trois apparences pour le widgetPersonnalisationStudio, Terminal, Capsule ; ui et setUI ; variables CSS --tcw-*
L’apparence du graphique, clé par cléPersonnalisationapplyOverrides sur 101 clés typées, sur une couche hôte et une couche utilisateur
Des paramètres qui atteignent chaque cléPersonnalisationUn onglet de style pour le type de graphique affiché, un onglet trading
112 interrupteurs de fonctionnalitésPersonnalisationfeatures, setFeatures, isFeatureOn ; modifiables en marche
Vos propres pièces dans le widgetPersonnalisationBoutons et menus déroulants de la barre d’outils, boutons de la barre latérale, éléments d’état, emplacements, entrées de menu
Vos propres raccourcisPersonnalisationaddHotkey selon la disposition du clavier
Le widget en 30 languesLangues et accessibilitéL’arabe, l’hébreu et le persan de droite à gauche
Lecteurs d’écran et clavierLangues et accessibilitéUn résumé du graphique, les barres lues une à une, les boîtes de dialogue au clavier
Ce site en 14 langues, sa doc en sixLangues et accessibilitéEnglish, Tiếng Việt, 简体中文, 繁體中文, 日本語, 한국어, Español, Português, Français, Deutsch, Русский, Türkçe, Bahasa Indonesia, ไทย
Composants React, Vue et SvelteDéveloppeursProps réactives : overrides, indicators, features
PluginsDéveloppeursIndicateurs, outils de dessin, types de graphiques et superpositions ; overlayScale et getPriceStep pour dessiner sur la grille de prix
Une doc pour les agents de codeDéveloppeursllms.txt, llms-full.txt et une skill pour agents

Limites connues

  • Canvas 2D reste le moteur de rendu par défaut tant que WebGL n’a pas été essayé sur davantage d’appareils ; sa fréquence d’images sur Safari et sur les écrans 5K n’a pas encore été mesurée.
  • À un ratio de pixels de 2 sur un graphique de 2560×1400, la composition du navigateur prend à elle seule environ 23 ms sur une puce graphique intégrée ; les images WebGL y durent donc 29 ms en moyenne.
  • Les unités de temps en ticks sont construites à partir des transactions récentes que renvoie un flux ; un historique de ticks plus ancien ne peut pas être chargé.
  • Le delta de volume et le CVD sont estimés à partir des barres, pas du sens de chaque transaction.
  • Au plus 8 graphiques d’une page dessinent en WebGL en même temps ; les autres dessinent en Canvas 2D.

Vous construisez un écran de trading avec TradeCanvas ?

Nous aimerions en savoir plus.