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_freqandrun_timingを使用して戦略を追加する場合、それらが一致する場合は既存のグループに参加します。それ以外の場合は、新しいグループが作成されます。バックテスト/ライブ取引では、スケジュールはグループごとに行われます。グループ内の戦略は同時に実行され、ブレンダーはその出力をマージします。
5.2. Operator グループの検査
groups: 各グループの構成とメンバー戦略。実行スケジュールを確認するためのグループごとの
group_timing_table:run_freqandrun_timing。
5.3. ブレンダー式
ブレンダーは、同じグループ (追加順に s0、s1、s2、…) 内のストラテジーからの信号をマージします。一般的な形式:
表現 |
意味 |
|---|---|
|
最初の戦略のシグナルのみを使用します。 |
|
2 つの戦略シグナルの等しい重みのブレンド。 |
|
要素ごとの積 (タイミング位置の乗算など)。 |
|
|
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 信号を計算し、ブレンダーを介してブレンドされた位置を出力します。