12. Simulieren Sie die Risikokontrollen und die Broker-Anpassung im Live-Handel (Dual-Path)
Dieses Tutorial führt Sie durch zwei vollständige Wege, um die wichtigsten Verhaltensweisen von S1.3 in einer simulierten Live-Handelsumgebung zu überprüfen:
路径 A:
asset_type='E' + simulator路径 B:
asset_type='FD' + simulator
Das Ziel ist „Durchlaufen + Beobachten + Verifizieren“ und nicht nur das Betrachten von Konzepten.
12.1. 0. 教程目标
Sorgen Sie dafür, dass beide Pfade (E und FD) durchgängig funktionieren
Lösen Sie manuell eine Auftragsablehnung aus und ermitteln Sie die Ursache
Beobachten Sie das sichtbare Verhalten des Teilfüllungsstatus beim Übergang von „teilweise gefüllt“ zu „gefüllt“.
12.2. 1. 前置准备
Ein bereits lauffähiger
OperatorLokale Daten können die Laufzeitfrequenz unterstützen
Live-Kontoparameter wurden konfiguriert
Es wird empfohlen, zunächst eine Regelkonfiguration vorzubereiten, die „Bestellablehnungen stabil auslösen kann“ (z. B. eine kleinere Mengenbegrenzung pro Bestellung), um die Reproduktion des Experiments zu erleichtern.
12.3. 2. 路径 A:E + simulator
Schritt 1: Richten Sie die Konfiguration ein
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',
)
Schritt 2: Beginnen Sie mit dem Laufen
qt.run(op)
Schritt 3: Senden Sie eine Testbestellung und beobachten Sie das Feedback
Überprüfen Sie, ob die Meldung „Übermittlung erfolgreich“ angezeigt wird
Achten Sie darauf, ob eine Aufforderung zur Ablehnung einer Risikokontrollbestellung erscheint (auf Englisch).
Erfassen Sie eine Bestell-ID (für einen späteren Protokollvergleich).
12.4. 3. 路径 B:FD + simulator
Schritt 1: Ändern Sie die Asset-Typ-Konfiguration.
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',
)
Schritt 2: Wiederholt neu starten und Bestellungen aufgeben.
qt.run(op)
Schritt 3: Überprüfen Sie die Verhaltenskonsistenz.
Der FD-Pfad sollte in den Live-Ausführungsfluss gelangen können.
Die Art und Weise, Ablehnung/Übermittlung/Protokolle zu beobachten, ist die gleiche wie im E-Pfad.
Der gleiche Auftragstyp sollte über beide Pfade hinweg eine konsistente Feedback-Semantik aufweisen
12.5. 4. 人工触发一次风控拒单
Legen Sie vorübergehend strenge Regeln fest (z. B. eine Mengenbegrenzung pro Bestellung) und geben Sie eine Bestellung auf, die das Limit überschreitet. Sie sollten eine englische Eingabeaufforderung ähnlich der folgenden sehen:
Order rejected by risk rule [MAX_ORDER_QTY]: order quantity exceeds limit
und der entsprechende Datensatz kann in „risk_log“ abgerufen werden.
Es wird empfohlen, mindestens zweimal zu überprüfen:
Eine Ablehnung (bestätigen Sie, dass der Ablehnungsgrund sichtbar ist).
Eine Veröffentlichung (bestätigen, dass die Strategie weiter ausgeführt werden kann)
12.6. 5. 观察订单状态变化
Konzentrieren Sie sich darauf, ob Folgendes auftritt:
submitted -> partial-filled -> filled
In einem Teilfüllungsszenario sollte der Endstatus mit dem kumulierten Füllvolumen übereinstimmen.
Wenn Sie feststellen, dass „teilweise gefüllt“ längere Zeit unverändert bleibt, kehren Sie zur Fehlerbehebungsseite zurück und vergleichen Sie die Protokolle mit dem Playbook „Statusmissverständnis“.
12.7. 6. 教程验收清单
Pfad E ist lauffähig
Pfad FD ist ausführbar
Kann Ablehnungen von Risikokontrollaufträgen auslösen und identifizieren
Den Grund für die Ablehnung der Bestellung können Sie den Protokollen entnehmen.
Sie können Statusänderungen bei Teilbefüllungen beobachten und nachvollziehen.
Führen Sie mindestens eine vollständige Closed-Loop-Verifizierung von „Auftragsablehnung -> Parameteranpassung -> Freigabe“ durch.
12.8. 7. 下一步
Tiefer Einblick in den Mechanismus: „live_trading/3-risk-and-order-lifecycle“.
扩展 Broker:
live_trading/4-broker-adapter-and-integrationHandbuch zur Fehlerbehebung: „live_trading/5-artifacts-and-troubleshooting“.
12.9. 8. 结果判定标准
Nach Abschluss dieses Tutorials sollten Sie in der Lage sein, die folgenden Fragen selbstständig zu beantworten:
Wurde der aktuelle Auftrag von der Risikokontrolle abgelehnt oder wurde er eingereicht, aber nicht ausgeführt?
Warum sollte eine Bestellung in
partial-filledbleiben?Welche Protokolldatei sollten Sie zuerst überprüfen und welche Felder sollten Sie als nächstes betrachten?
Wenn Sie alle drei oben genannten Fragen unabhängig voneinander beantworten können, bedeutet dies, dass Sie bereits über grundlegende Fähigkeiten zur Fehlerbehebung für Live-Szenarien verfügen.