6. ストラテジーの実行方法: タイミング、データ、パラメーター

6.1. 1. 策略运行时机

ストラテジーの 実行タイミング (いつ、どのくらいの頻度で実行されるか) は、ストラテジー クラス内に保存されませんが、それが属する グループ によって決定されます。グループの run_freq および run_timing は、戦略を Operator (例: add_strategy(stg, run_freq='d', run_timing='close')) に追加するときに指定されます。したがって、同じストラテジ インスタンスを異なる run_freq/run_timing を持つグループに配置すると、異なる時間に呼び出されます。

6.2. 2. 单步运行流程(细化)

現在のタイム ステップ (step_index):

  1. group_timing_table を確認します: このステップに対応する行を取得して、このステップで実行するグ​​ループのリストを取得します (値 1 の列)。

  2. 実行中のグループごと:

    • このグループ内の各ストラテジーについて: data_types、window_length、および現在のステップに基づいて、準備されたデータからこのステップのデータ ウィンドウを切り出し、update_running_data_window を呼び出してそのストラテジー インスタンス (dtype_id によって記述される) に注入します。

    • このグループ内の各戦略に対して generate() を順番に呼び出し (引数なしの realize() が内部的に呼び出されます)、各戦略によって返されたシグナルを収集し、リストを形成します。

    • このグループの ブレンダー を使用して、リスト内の信号をグループの 1 つのマージされた信号にブレンドします。

  3. このステップで複数のグループが実行される場合: group_merge_type に従って各グループからの信号を 1 つにマージします (または、実装に応じて個別に出力します)。

  4. ステップの最終シグナルを上位層に渡します。バックテストでは、それを Backtester に渡して、買い/売りを解析し、ポジションを更新します。ライブ取引では、それをTrader/ブローカーに渡して注文を生成します。

6.3. 3. Strategy 内部:realize() 与 get_pars / get_data

  • realize(): 引数は取りません。戦略ロジックはこのメソッド内でのみ実装されます。パラメータを介してデータや時刻を受け取りません。代わりに、get_pars(name, …) を使用して調整可能なパラメーターを取得し、get_data(dtype_id) を使用して現在のステップに挿入されたデータ ウィンドウを取得します。

  • 戻り値: ストラテジー基本クラスに応じて、スカラーまたは 1D 配列 (RuleIterator はスカラーであることが多く、FactorSorter は因子配列を返し、GeneralStg はアセットごとに 1 つの信号を返します)。同じrealize()コードがバックテストとライブ取引の両方で再利用され、一貫した動作が保証されます。

6.4. 4. 可调参数(Parameter)

  • 定義: ストラテジー クラスの init で、pars (パラメーター リストまたは辞書) を使用して、調整可能なパラメーターの名前、タイプ、値の範囲などを定義します。

  • 実行前のセットアップ: set_parameter (例: op.set_parameter(stg_id, pars=(...))) を使用して、実行前に使用するパラメーター値を書き込みます。

  • 最適化: オプティマイザーは、パラメーター空間 (par_range などのパラメーター設定によって決定) をサンプリングまたは検索します。各パラメータ セットについて、パラメータを Operator に設定し、1 つのバックテストを実行し、目的関数 (シャープ比など) に従って結果を集計し、より良いパラメータの組み合わせを見つけます。

6.5. 5. 三种策略基类的输入/输出差异

基本クラス

入力 (get_data など)

出力(realizeの戻り値)

典型的な使用例

RuleIterator

dtype_id によって取得される単一アセットまたはマルチアセット データ ウィンドウ

スカラー (例: 1/-1/0);同じルールの繰り返しがすべてのアセットに適用されます

複数の機器を使用した単一ルールのタイミング

FactorSorter

マルチアセットのクロスセクション (各銘柄のファクター値など)

1D 因子配列。エンジンはランキングとフィルタリングルールに従って銘柄を選択します

ファクターベースの銘柄選択

GeneralStg

マルチアセット、マルチ dtype ウィンドウ

1D 信号配列 (アセットごとに 1 つのターゲット位置または重み)

汎用マルチアセット信号

6.6. 6. 小结

同じ「ステップ → データの準備 → 注入 → Realize() → ミックス」ワークフローは、バックテストとライブ取引の両方に役立ちます。戦略は、現在バックテスト中であるかライブ取引中であるかを気にしません。 get_pars/get_data とそのグループのタイミングのみに依存します。ランタイム層は、対応するデータをさまざまなモードで提供し、出力信号を処理する責任があります。実装の詳細については、「ユーザーガイド」および API リファレンスを参照してください。