5. Gruppen- und Strategiesignalmischung

In einem „Operator“ gehören Strategien mit demselben run_freq und run_timing zur selben Gruppe; Innerhalb jeder Gruppe führt ein **„blender“-Ausdruck mehrere Strategiesignale zu einem zusammen.

5.1. Wie Gruppen gebildet werden

  • Beim Hinzufügen von Strategien mit „run_freq“ und „run_timing“ treten sie einer vorhandenen Gruppe bei, wenn diese übereinstimmen; andernfalls wird eine neue Gruppe erstellt.

  • Beim Backtest/Live-Handel erfolgt die Planung pro Gruppe: Strategien in einer Gruppe werden gleichzeitig ausgeführt, dann führt der Mixer ihre Ergebnisse zusammen.

5.2. Untersuchen Sie Operator-Gruppen

  • groups: Konfiguration und Mitgliedsstrategien jeder Gruppe.

  • group_timing_table: run_freq and run_timing pro Gruppe zur Überprüfung der Laufpläne.

5.3. Blender-Ausdrücke

Ein Mixer führt Signale von Strategien derselben Gruppe zusammen (s0, s1, s2, … in addierter Reihenfolge). Häufige Formen:

Ausdruck

Bedeutung

s0

Verwenden Sie nur das Signal der ersten Strategie.

0.5*s0+0.5*s1

Gleichgewichtige Mischung aus zwei Strategiesignalen.

s0*s1

Elementweises Produkt (z. B. Timing-Positionen multiplizieren).

(s0+s1)/2

Entspricht „0.5*s0+0.5*s1“.

Beziehung zu signal_type: Für PT sind s0/s1 normalerweise Positionen in [0,1]; Befolgen Sie für PS die Konventionen der einzelnen Strategien. Unterstützte Operationen sind Skalare kombiniert mit s0/s1/… über +, −, ×, ÷.

5.4. Mehrere Gruppen zusammenführen

Wenn ein „Operator`` has multiple Groups, **``group_merge_type“** steuert, wie endgültige Signale zusammengeführt werden:

  • None: Framework-Standard (normalerweise die letzte oder eine bestimmte Gruppe).

  • And: Logisches UND über Gruppen hinweg (z. B. müssen alle Zeitsignale 1 sein).

  • Or: Logisches ODER über Gruppen hinweg.

5.5. Beispiel

Typische gleichgewichtige Mischung aus zwei Timing-Strategien:

op = qt.Operator(signal_type='PT', run_freq='d')
op.add_strategy('dma', run_freq='d', run_timing='open')
op.add_strategy('macd', run_freq='d', run_timing='open')
# 在 Group 的 blender 中设置为 0.5*s0+0.5*s1(具体 API 以当前版本为准)

Nach der Konfiguration berechnet diese Gruppe die DMA- und MACD-Signale bei jedem Laufschritt separat und gibt dann die Mischposition über den Mixer aus.