Statistik
StatisticsWidget ist eine Tabelle der Statistikparameter einer Strategie: Gewinn, Drawdown, Anzahl der Trades, Latenzen. Das Panel ist ausschließlich zum Lesen gedacht: eine Zeile je Parameter, wobei die Zeilen nach dem Bereich gruppiert sind, zu dem der jeweilige Parameter gehört.

Erstellen und aktualisieren
import {
StatisticsWidget,
type TradingHost,
} from '@stocksharp/trading-controls';
declare const host: TradingHost;
const statistics = StatisticsWidget.create(
document.querySelector<HTMLElement>('#statistics')!,
{},
{ host },
);
statistics.update([
{
key: 'NetProfit',
category: 'pnl',
categoryText: 'Gewinn',
order: 1,
name: 'Nettogewinn',
description: 'Ergebnis des Laufs',
value: 11_055.75,
},
{
key: 'MaxProfitDate',
category: 'pnl',
categoryText: 'Gewinn',
order: 2,
name: 'Datum des Maximums',
value: '2024-03-26T07:30:00Z',
},
{
key: 'NetProfit',
category: 'pnl',
categoryText: 'Trades',
order: 100,
name: 'Anzahl der Trades',
value: 1_340,
},
]);
Der Abhängigkeitssatz StatisticsDeps besteht aus dem einzigen Pflichtfeld host. Aktionshandler hat das Steuerelement nicht: Die Statistik erzeugt die Strategie, und im Panel gibt es nichts abzubrechen, neu zu laden oder zu bearbeiten. Das zweite Argument von create ist der gespeicherte Panelzustand; das Steuerelement verwendet ihn nicht.
update ersetzt den gesamten Zeilensatz vollständig. Die Strategie veröffentlicht ihre Parameter als eine einzige Tabelle, deshalb gilt eine aus dem Satz verschwundene Zeile als nicht mehr existent und nicht als unverändert. Die Identität einer Zeile bestimmt das Feld key.
Zeilen und Reihenfolge
Eine Zeile wird durch den Typ StatisticRow beschrieben:
| Feld | Bedeutung |
|---|---|
key |
Stabile Kennung des Parameters. |
category |
Sprachunabhängiger Schlüssel der Gruppe. |
categoryText |
Anzuzeigende Überschrift der Gruppe. Fehlt sie, wird category verwendet. |
order |
Platz des Parameters im Verzeichnis. |
name |
Lokalisierte Bezeichnung des Parameters. |
description |
Lokalisierte Erläuterung, wird als Tooltip auf der Namenszelle angezeigt. |
value |
Zahl, Datum oder Zeichenfolge. null — der Parameter wurde noch nicht gemessen. |
Die Desktop-Variante der Tabelle bezieht die Zeilen per Reflexion über die Parameter der Strategie; im Browser gibt es einen solchen Mechanismus nicht, deshalb kommen die Zeilen fertig vom Host — mit übersetzter Bezeichnung und Erläuterung.
Gruppiert wird nach category und nicht nach categoryText: Eine Gruppierung nach der übersetzten Überschrift würde die Tabelle bei einem Sprachwechsel umbauen. Die Reihenfolge der Gruppen ergibt sich aus dem kleinsten order unter ihren Parametern, deshalb steht der Gewinn über dem Drawdown und dieser über den Trade-Zählern. Eine Sortierung nach Name oder Wert würde Parameter auseinanderreißen, die zusammen gelesen werden.
Sichtbar sind zwei Spalten: Name und Value. Die Spalten category und order sind deklariert, aber ausgeblendet — sie werden für Gruppierung und Sortierung benötigt und sagen dem Leser nichts. In den Export gelangen nur die beiden sichtbaren Spalten.
Formatierung der Werte
Den Text der Wertzelle erzeugt die exportierte Funktion formatStatistic(value):
import { formatStatistic } from '@stocksharp/trading-controls';
formatStatistic(11_055.756); // '11055.76'
formatStatistic(1_340); // '1340'
formatStatistic('2024-03-26T07:30:00Z'); // '2024-03-26'
formatStatistic(null); // ''
Eine Zahl wird auf zwei Stellen gerundet und ohne nachlaufende Nullen angezeigt. Ein Datum erscheint nur als Tag: Parameter dieser Art beschreiben den gesamten Lauf, und die Uhrzeit wäre darin nur Rauschen. Eine Zeichenfolge wird nur dann als Datum erkannt, wenn sie mit JJJJ-MM-TT beginnt; andernfalls bleibt sie Text. Ein fehlender Wert ergibt eine leere Zelle und keine Null, die als gemessenes Ergebnis gelesen würde.
Sortiert wird nach dem ursprünglichen Wert, deshalb wird eine Zahl als Zahl und nicht als Zeichenfolge sortiert.
Was das Steuerelement tut und was der Host
Das Steuerelement bezieht den gesamten sichtbaren Text über host.t vom Host, einschließlich der Spaltenbeschriftungen, der Panelüberschrift, des Hinweises für die leere Tabelle und der Einträge des Tabellenkontextmenüs. Die Schaltfläche zum Schließen ruft host.close auf, der Export gibt die Tabelle als XLSX aus. Beim Erstellen registriert sich die Instanz über host.register, bei dispose meldet sie sich über host.unregister ab.
Eigene Einstellungen speichert das Steuerelement nicht in host.preferences. Daten fordert es nicht an: Die Zeilen liefert der Host mit dem Aufruf update.
Die Kennung des Paneltyps ist als StatisticsWidget.TYPE verfügbar und entspricht ControlTypes.Statistics.
Öffentliche Methoden
StatisticsWidget.create(hostEl, state, deps)— das Panel im angegebenen Container erstellen.update(rows)— den gesamten Satz der Statistikzeilen ersetzen.dispose()— Ressourcen freigeben.
Das Panel unterstützt außerdem Sortierung, Mehrfachauswahl von Zeilen, ein Kontextmenü und den Export nach XLSX.