5. グループと戦略のシグナルブレンディング

1 つの Operator, strategies with the same run_freq and run_timing belong to the same Group; within each Group, a blender 式では、複数の戦略シグナルが 1 つにマージされます。

5.1. グループの形成方法

  • run_freq and run_timing を使用して戦略を追加する場合、それらが一致する場合は既存のグループに参加します。それ以外の場合は、新しいグループが作成されます。

  • バックテスト/ライブ取引では、スケジュールはグループごとに行われます。グループ内の戦略は同時に実行され、ブレンダーはその出力をマージします。

5.2. Operator グループの検査

  • groups: 各グループの構成とメンバー戦略。

  • 実行スケジュールを確認するためのグループごとの group_timing_table: run_freq and run_timing

5.3. ブレンダー式

ブレンダーは、同じグループ (追加順に s0、s1、s2、…) 内のストラテジーからの信号をマージします。一般的な形式:

表現

意味

s0

最初の戦略のシグナルのみを使用します。

0.5*s0+0.5*s1

2 つの戦略シグナルの等しい重みのブレンド。

s0*s1

要素ごとの積 (タイミング位置の乗算など)。

(s0+s1)/2

0.5*s0+0.5*s1 に相当します。

signal_type との関係: PT の場合、s0/s1 は通常 [0,1] の位置です。 PS については、各戦略の規則に従います。サポートされている演算は、+、-、×、÷ を介して s0/s1/… と結合されたスカラーです。

5.4. 複数のグループの結合

Operator has multiple Groups, group_merge_type が最終信号のマージ方法を制御する場合:

  • None: フレームワークのデフォルト (通常は最後または指定されたグループ)。

  • And: グループ全体の論理積 (たとえば、すべてのタイミング信号が 1 である必要があります)。

  • Or: グループ間の論理和。

5.5.

2 つのタイミング戦略を等重でブレンドした一般的な例:

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 以当前版本为准)

設定後、このグループは各実行ステップで個別に dma 信号と macd 信号を計算し、ブレンダーを介してブレンドされた位置を出力します。