Simulierte Handelsplattform: Konfiguration und Betrieb
Dieses Kapitel führt Sie von „bestehenden Backtesting-Strategien“ zum „ersten stabilen Start eines simulierten Live-Handelskontos“: Es zeigt Ihnen, welche Elemente Sie konfigurieren müssen, wie Sie diese bestätigen und worauf Sie nach dem Start achten sollten.
Lieber Nutzer, falls Sie bereits einen Operator (Trader-Container) besitzen, der Backtests ermöglicht, ist dieses Kapitel der schnellste Weg zum Live-Testing. Wir erläutern zunächst die notwendigen Konfigurationen und gehen anschließend auf optionale erweiterte Funktionen wie „Strategie-Snapshots“ und „Startzugriffskontrolle“ ein.
0. 适用场景
Sie verfügen über einen funktionierenden Operator und sind bereit, vom Backtesting zur Live-Simulation überzugehen.
Sie sollten zunächst den kürzesten Weg testen, bevor Sie schrittweise Risikokontrolle, Zugriffskontrolle und betriebliche Details hinzufügen.
1. 核心概念(本章术语)
Bevor Sie mit dem Live-Betrieb beginnen, überprüfen Sie bitte die Zusammenhänge zwischen den drei Komponenten. In Qteasy ist der Operator für die Berechnung von Signalen zuständig, das Live-Konto für die Kontoführung und Positionsverwaltung und die lokale Datenquelle für die Bereitstellung von Kursen und historischen Daten. Ohne eine dieser Komponenten kann der Trader nicht stabil funktionieren. Die folgende Tabelle veranschaulicht die Position jeder Komponente im Live-Subsystem und die erforderlichen Vorbereitungen.
Bedeutung der einzelnen Spalten: Rolle ist der Komponentenname; Funktion ist die Verantwortung in der Live-Pipeline; Was Sie vorbereiten müssen sind die Vorstartprüfungen.
Anwendung: Markieren Sie die Kästchen nacheinander; falls eine Spalte nicht ausreicht, fügen Sie zuerst die Daten oder Kontoinformationen hinzu und führen Sie dann qt.run(op) aus.
Rolle |
Wirkung |
Was müssen Sie vorbereiten? |
|---|---|---|
Operator |
Haltestrategie und Signallogik |
Dasselbe |
Live-Konto |
Bargeld, Lagerbestände und Aufträge erfassen. |
|
Lokale Datenquelle |
Bietet historische und Echtzeitkurse |
Häufigkeit der Tabellendatenabdeckungsstrategie (z. B. erfordert eine minutenbasierte Strategie minutenbasierte Tabellen) |
LiveTradeConfig (Live-Konfigurations-Snapshot): Vor dem Start von Trader überprüft und speichert qteasy die in qt.configure(...) enthaltenen, lauffähigen Einstellungen in einem unveränderlichen Snapshot – vergleichbar mit einer Checkliste vor dem Start –, um versehentliche Konfigurationsänderungen während der Laufzeit zu verhindern. Eine Zusammenfassung können Sie mit liveconfig in der Shell anzeigen.
2. 最小配置集
Im Folgenden sind einige essentielle Konfigurationselemente aufgeführt (fehlende oder falsche Einstellungen führen häufig zu Fehlern beim Start). Diese Schlüssel werden über qt.configure(...) in die globale Konfiguration geschrieben und beim Start in den LiveTradeConfig-Snapshot integriert. Sie bestimmen, ob es sich um einen Live-Handel handelt, welche Vermögenswerte gehandelt werden, welches Konto verwendet wird, woher der Preis stammt und wer die Aufträge ausführt.
Bedeutung der einzelnen Spalten: Der Konfigurationsschlüssel ist der Name in QT_CONFIG; die Bedeutung ist das durch diesen Schlüssel gesteuerte Verhalten; was passiert, wenn er nicht gesetzt ist sind die üblichen Konsequenzen (um festzustellen, ob der aktuelle Fehler mit diesem Schlüssel zusammenhängt).
Anleitung: Bitte nehmen Sie für Ihre erste Live-Sitzung alle Einstellungen explizit vor. Sollte der Start fehlschlagen, finden Sie in der Spalte „Was passiert, wenn ich nichts einstelle?“ Hinweise zur Fehlerbehebung. Beispiele finden Sie in Abschnitt 5 Vorlage A/B.
Konfigurationsschlüssel |
Bedeutung |
Was würde passieren, wenn wir keinen festlegen würden? |
|---|---|---|
|
Live-/Demo-Handel starten |
Ich verwende immer noch Backtesting oder andere Methoden. |
Anlagentyp |
Anlagearten wie E-Aktien und F-Aktien (ETFs). |
Die Handelsregeln und Datentabellen stimmen möglicherweise nicht überein. |
|
Welches Demokonto soll ich verwenden? |
Ledger konnte nicht gebunden werden |
|
Arten von Brokerfirmen, Anfänger nutzen den |
Kein Transaktionskanal |
|
Echtzeit-Preiskanäle wie beispielsweise |
Live-Preis nicht verfügbar |
|
Häufigkeit der Preiserhöhungen, z. B. |
Daten können fehlen, wenn das Tempo der Strategie nicht koordiniert ist. |
Die folgenden Einstellungen sind keine zwingenden Voraussetzungen für den Start, es wird jedoch dringend empfohlen, sie zu überprüfen, da sie die minimale Transaktionseinheit, die Anzahl der Schreibvorgänge auf die Festplatte und die Festplattennutzung beeinflussen. Sie gehören zusammen mit der obigen Tabelle zum Gültigkeitsbereich von qt.configure und können in dasselbe Skript geschrieben werden.
Anwendungshinweise: Falls die Transaktionsmenge nicht „in vollständigen Losen“ angegeben ist oder die Protokolldatei nicht gefunden werden kann, gehen Sie zurück und überprüfen Sie die entsprechende Zeile in dieser Tabelle.
Konfigurationsschlüssel |
Bedeutung |
Was würde passieren, wenn wir keinen festlegen würden? |
|---|---|---|
|
Mindestverkaufsmenge |
Standardwerte verwenden |
|
Bargeld/Menge Dezimalstellen |
Standardwerte verwenden |
|
System-/Transaktionsprotokollverzeichnis |
Verwenden Sie den Standardpfad innerhalb des Pakets |
|
Aufbewahrungsdauer der Protokolle (einschließlich Risikoprotokolle) |
Automatische Bereinigung alle 3 Tage (standardmäßig) |
3. 查看配置快照
Python (mit Selbstprüfung im Skript):
from qteasy.live_config import build_live_trade_config
import qteasy as qt
cfg = build_live_trade_config(qt.QT_CONFIG)
print(cfg.to_summary_dict())
CLI (Trader Shell): Befehl liveconfig (Alias live-config)
Standard: stabile Feldteilmenge
Fügen Sie
--detailhinzu: Enthält zusätzlich Schlüssel zum Aktivieren der Zugriffskontrolle, Richtlinien-Snapshots usw.
Hinweis: Die liveconfig-Anweisung in der Shell ist eine Zusammenfassung basierend auf dem aktuellen Trader und keine Speicherreferenz des Objekts beim Start – sie reicht jedoch aus, um die aktuell gültige Konfiguration zu überprüfen.
4. 配置键分组(主要 live 键)
Es gibt zahlreiche Konfigurationsschlüssel für Live. Zur besseren Übersicht haben wir sie nach Funktion gruppiert (keine vollständige API-Liste; die vollständigen Felder basieren auf LiveTradeConfig). In qteasy werden diese Schlüssel vor dem Start validiert und fixiert – nach Änderungen an qt.configure muss der Live-Prozess neu gestartet werden, damit die Änderungen wirksam werden.
Spaltenbedeutungen: Gruppierung repräsentiert den Verantwortungsbereich innerhalb des laufenden Subsystems; Repräsentative Schlüssel listen die am häufigsten geänderten Schlüssel dieser Gruppe auf (es können weitere Schlüssel derselben Gruppe vorhanden sein, die nicht aufgeführt sind); Beschreibungen beschreiben die Rolle dieser Gruppe während des Betriebs.
Anwendung: Wählen Sie die Gruppe entsprechend Ihrer aktuellen Aufgabe aus – um beispielsweise Protokollprobleme zu beheben, sehen Sie sich die Zeile „Protokoll“ an und springen Sie zu: :doc:5-artifacts-and-troubleshooting; wenn Sie eine minutengenaue Strategie öffnen, überprüfen Sie zuerst, ob die „Marktdaten und Nachfüllung“ mit der Frequenz der Strategie übereinstimmen.
Beispiel: Strategien mit sub-täglicher Frequenz modifizieren häufig live_price_acquire_freq in der Gruppe „Marktdaten und Nachfüllen“ und aktivieren bei Bedarf live_trade_split_strategy_prepare in der Gruppe „Strategie-Snapshots (5-A)“.
Gruppierung |
Repräsentativer Schlüssel |
Anweisungen |
|---|---|---|
Konten und Benutzeroberfläche |
|
Konto- und CLI/TUI-Auswahl |
Marktbedingungen und Nachfüllung |
|
Echtzeit-Preis- und zeitgesteuerte Datenaktualisierungen |
Handelsregeln |
|
An Backtesting-Semantik ausrichten |
Makler |
|
Standardmäßig wird |
Strategieübersicht (5-A) |
|
Die Daten werden vor Ausführung der Strategie vorab abgerufen; siehe :doc: |
Zugangskontrolle aktivieren (5-B) |
|
Sicherheitsprüfung vor Markteinführung; CLI |
Protokoll |
|
Beinhaltet die Rotation der Datei |
Die vollständigen Felder basieren auf LiveTradeConfig; die gültigen Werte für jeden Schlüssel sind in der Konfigurationsvalidierungslogik definiert.
5. 推荐配置模板
Vorlage A: Aktien (E+ Simuliertes Brokerage)
Der folgende Code wird vor qt.run(op) ausgeführt und weist qteasy an, Aktienregeln, den 15-Minuten-Kurs von Eastmoney und simulierten Gegenhandel zu verwenden.
import qteasy as qt
qt.configure(
mode=0,
asset_type='E',
live_trade_broker_type='simulator',
live_price_acquire_channel='eastmoney',
live_price_acquire_freq='15MIN',
trade_log_keep_days=3,
)
Vorlage B: Börsengehandelte Fonds / ETFs (Festgeld + simuliertes Brokerage)
Gleiches gilt wie Vorlage A, nur dass asset_type='FD' für Beispielpfade wie ETF gilt.
import qteasy as qt
qt.configure(
mode=0,
asset_type='FD',
live_trade_broker_type='simulator',
live_price_acquire_channel='eastmoney',
live_price_acquire_freq='15MIN',
trade_log_keep_days=3,
)
Vorlage C: Richtlinien-Snapshot + Zugriffskontrolle aktivieren (Smoke/Erweitert)
In Übereinstimmung mit :doc:7-manual-smoke-live-grid-roadmap wird empfohlen, dieses Dokument erst zu öffnen, nachdem Sie mit der Vorlage A/B vertraut sind.
qt.configure(
live_trade_split_strategy_prepare=True,
live_trade_prepare_lead_seconds=60,
live_trade_strategy_snapshot_max_age_seconds=300.0,
live_trade_startup_gate_mode='warn', # 先 warn 观察,稳定后可试 block
)
6. 启动流程(分步说明)
Vervollständigen Sie die Konfiguration: Folgen Sie §2, um
qt.configure(...)abzuschließen, und bestätigen Sie die Konto-ID/den Kontonamen.(Optional) Snapshot prüfen: Führen Sie den Python-Codeausschnitt in §3 aus oder geben Sie nach dem Start in der Shell
liveconfig --detailein.Startvorgang:
qt.run(op); Häufige Befehlszeilenbeispiele verwenden--ui cli, um die Trader Shell zu öffnen.Hinweis: Prüfen Sie, ob Status, Bestellungen und Protokolle wie erwartet geschrieben werden (§7).
Vor dem Start schnell einige wichtige Konfigurationselemente ausdrucken:
import qteasy as qt
for key in ('mode', 'asset_type', 'live_trade_broker_type',
'live_price_acquire_channel', 'live_trade_startup_gate_mode'):
print(key, qt.get_config(key)[key])
7. 启动后建议先看什么(CLI)
Sobald Sie die Trader Shell aufrufen, helfen Ihnen die folgenden Befehle dabei, zu überprüfen, ob die Konfiguration wirksam ist, wo sich die Protokolle befinden, ob das Brokerhaus Ihre Anfrage bearbeiten kann und ob die Zugriffskontrolle erfolgreich war. Diese Befehle entsprechen den Operationen in :doc:8-cli-trader-capability-matrix – nicht allen Shell-Befehlen.
Bedeutung der einzelnen Spalten: Befehl: Der an der Eingabeaufforderung eingegebene Name (siehe das Kapitel Matrix für Aliase); Typische Verwendungen: Die Fragen, die am häufigsten mit diesem Befehl beantwortet werden.
Anwendung: Nach dem Start die Tabelle schnell von oben nach unten durchsuchen; falls ein Schritt fehlerhaft ist, die Ausgabe des Befehls an :doc:5-artifacts-and-troubleshooting umleiten.
Beispiel: Unsicher bezüglich des Protokollpfads → Geben Sie artifacts ein → Öffnen Sie den zurückgegebenen sys_log-Pfad, um den Startablauf anzuzeigen.
Befehl |
Typische Anwendungen |
|---|---|
|
Zusammenfassung der aktuellen Live-Konfiguration |
|
Pfad des Vierbindungsprodukts (wo befinden sich die Protokolle?) |
|
Führen Sie das Zutrittskontrollsystem einmal manuell aus (zur Fehlersuche). |
|
Prüfen Sie, ob die simulierte Brokerage-Plattform „verbunden“ ist. |
|
Abgleich-Snapshot-JSON |
|
Diagnose während der Übertragung (erfordert DEBUG-Modus) |
Den vollständigen Befehlssatz finden Sie unter :doc:8-cli-trader-capability-matrix.
7.1 Dashboard und interaktiver Modus
Trader Shell startet standardmäßig im Dashboard-Modus: Ein einzeiliger Statusbereich zeigt den Countdown bis zur nächsten Aufgabe, Echtzeitkurse in der Überwachungsliste und Systemmeldungen an. So können Sie den Betriebsablauf beobachten, ohne Befehle eingeben zu müssen. Um Aufträge manuell zu platzieren, Konfigurationen zu prüfen oder Wartungsbefehle auszuführen, drücken Sie Strg+C, um das Modusmenü zu öffnen, oder geben Sie im interaktiven Modus (Befehlsmodus) dashboard ein, um zum Dashboard zurückzukehren.
Modell |
Verhalten |
|---|---|
Armaturenbrett |
Die Statuszeile und der überwachte Preis werden automatisch aktualisiert; die Hauptschleife des Traders läuft im Hintergrund weiter. |
interaktiv (Befehl) |
Über die traditionelle |
Ctrl+C Modusauswahlmenü (verfügbar sowohl im Dashboard- als auch im Befehlsmodus)
Drücken Sie innerhalb von 5 Sekunden die Taste 1 → um in den Befehlsmodus zu wechseln; die Taste 2 → um zum Dashboard zurückzukehren; die Taste 3 → um Trader zu beenden und zu stoppen.
Sie müssen nicht die Eingabetaste drücken, die Zifferntasten reagieren sofort.
Keine Eingabe innerhalb von 5 Sekunden → Automatische Wiederaufnahme des Modus vor der Unterbrechung.
Während der Wartezeit im Menü erneut Strg+C drücken → Sofort beenden (entspricht der Auswahl von 3)
Wenn in der Hauptschleife eine unerwartete Ausnahme auftritt, werden Sie von der Shell aufgefordert, 1 zu drücken, um zum Dashboard zurückzukehren, oder 3, um das Programm zu beenden; wenn 5 Sekunden lang keine Eingabe erfolgt, kehrt das Programm standardmäßig zum Dashboard zurück, und der Trader läuft weiter.
8. 运行前检查清单
Die Konto-ID/der Kontoname ist verfügbar und stimmt mit dem Strategie-Asset-Pool überein.
asset_typesollte mitasset_poolübereinstimmen (Regeln für Aktien und Fonds dürfen nicht vermischt werden).live_trade_broker_typesolltesimulatorsein (oder ein Typ, den Sie bereits implementiert haben).Die Häufigkeit der Live-Preise muss mindestens der Laufzeit der Strategie entsprechen (minutenbasierte Strategien erfordern eine ausreichend hohe Häufigkeit der Live-Preise).
Der Protokollpfad ist gültig und die Festplatte ist beschreibbar.
trade_log_keep_dayserfüllt Ihre Aufbewahrungserwartungen (einschließlich Risikoprotokolle).
9. 常见启动失败与处理
Treten beim Systemstart Fehler auf, lassen sich die Symptome häufig in folgende Kategorien einteilen: Konfiguration, Konto, Daten, Pfad, Häufigkeit oder Zugriffskontrolle beim Start. Die folgende Tabelle ist nach den beobachteten Symptomen indiziert, um eine ziellose Suche in den Protokollen zu vermeiden.
Erläuterung der einzelnen Spalten: Phänomen: Das Verhalten beim Start oder auf dem ersten Bildschirm; Mögliche Ursachen: Häufige Ursachen (nicht abschließend); Vorschläge: Die nächsten Schritte.
Anwendung: Gleichen Sie zunächst die Spalte „Phänomen“ ab; falls das Problem weiterhin besteht, verwenden Sie den Befehl §7, um die Pfade nach liveconfig und artifacts zu exportieren, und konsultieren Sie den Entscheidungsbaum in :doc:5-artifacts-and-troubleshooting.
Phänomen |
Mögliche Gründe |
Anregung |
|---|---|---|
Die Konfigurationsprüfung ist fehlgeschlagen. |
Ein bestimmter aktiver Schlüssel ist ungültig oder schließt sich gegenseitig aus. |
Nach Behebung der Fehlermeldungen starten Sie das System neu. |
Konto nicht verfügbar |
ID/Name falsch oder nicht initialisiert |
Prüfen Sie die Parameter für die Kontoerstellung. |
Daten nicht verfügbar |
Kanal-/Frequenz-/Lokaltabelle fehlt |
Prüfen Sie die Tabellen |
Pfadfehler |
Das Protokollverzeichnis ist nicht beschreibbar |
Prüfen Sie |
Frequenzinkoordination |
Eine kosteneffektive Strategie im Live-Betrieb mit höherer Schrittfrequenz ist seltener. |
Erhöhen Sie |
Torblock |
Die Zugriffskontrollsperre ist aktiviert, aber die Überprüfung schlägt fehl. |
Siehe die Ausgabe des |
10. 相关跳转
Risikomanagement und Aufträge: 3-Risiko-und-Auftragslebenszyklus
Produkte und Fehlerbehebung: :doc:
5-artifacts-and-troubleshootingBroker-Anpassung: :doc:
4-Broker-Adapter-und-IntegrationSnapshot/Zugriffskontrolle: :doc:
6-trader-snapshot-gateRauchliste: :doc:
7-manual-smoke-live-grid-roadmapCLI-Referenz: :doc:
8-cli-trader-capability-matrixVollständige Anleitung: tutorials/8-live-trade-risk-and-broker-walkthrough.md
11. 最小验收标准
Ein stabiler Start ist im E- oder FD-Pfad möglich.
Die Ausgabe von
liveconfig/artifactsentspricht den Erwartungen.Mindestens eines der folgenden Ereignisse kann beobachtet werden: Auftragserteilung, Ablehnung aufgrund des Risikomanagements oder Gegenbearbeitung.
Wird der Auftrag von der Risikokontrolle abgelehnt, findet sich ein entsprechender Eintrag im
risk_log. Wird der Auftrag vom Broker abgelehnt, wird er alsrejectedmarkiert und die Brokernummer ist leer.Die entsprechenden Laufzeitartefakte befinden sich im Log-Verzeichnis.