6. 3 つの戦略基本クラス: RuleIterator、FactorSorter、GeneralStg
qteasy のカスタム ストラテジーは通常、3 つの基本クラスの 1 つを継承します: RuleIterator for timing or single-rule iteration; FactorSorter for factor-based stock selection; GeneralStg (一般的なマルチアセットまたはマルチルール シグナルの場合)。
6.1. どの基本クラスを使用するか
RuleIterator: 期間ごとに単一の金融商品または単一ルールの反復 (例: MA または MACD タイミング)。通常、入力は価格系列です。出力は位置信号またはスカラー信号です。FactorSorter: Rank multiple instruments by a factor and pick top or bottom N. Setmax_sel_count,sort_ascendingなどGeneralStg: More flexible multi-asset, multi-rule, or custom I/O shapes whenRuleIterator/FactorSorterでは不十分です。
6.2. RuleIterator
入力/出力: 通常、OHLCV は
get_data(dtype_id)and return a 1-D signal inrealize()経由でフェッチします (例: ターゲット位置 0–1)。一般的な用途: MA クロスオーバー、MACD ヒストグラム サインなど。
簡単な例 (ロジック スケッチ):
from qteasy import RuleIterator, Parameter
class MyTiming(RuleIterator):
def __init__(self):
super().__init__(pars=[Parameter('period', 20)], ...)
def realize(self):
close = self.get_data('close')
# 简单均线规则
return (close[-1] > close[-self.get_pars()['period']:].mean()).astype(float)
複数の機器のパラメータ (必読)
シェアごとのパラメータ: 後
⟦コード0⟧⟦コード1⟧⟦コード2⟧⟦コード3⟧⟦コード4⟧⟦コード5⟧⟦コード6⟧⟦コード7 ⟧⟦コード8⟧⟦コード9⟧⟦コード10⟧⟦コード11⟧⟦コード12⟧⟦コード13⟧⟦コード14⟧。タプル / 位置初期化: 複数の共有の場合、ランタイムは 1 つの共有 パラメーター セット (単一の
_pars) を使用します。共有ごとのパラメータを意図していながら辞書を省略した場合、セマンティクスが静かに分岐する可能性があります。 すべてのシェアが初期値を共有し、一緒に進化する必要がある場合、タプルは問題ありません。**
⟦コード0⟧⟦コード1⟧⟦コード2⟧⟦コード3⟧⟦コード4⟧⟦コード5⟧⟦COD E6⟧⟦コード7⟧⟦コード8⟧⟦コード9⟧⟦コード10⟧⟦コード11⟧⟦コード12⟧マジック キー - 文書化されていないキーは使用しないでください。
6.3. FactorSorter
入力/出力: ファクター データ (リターン、ボラティリティなど) を取得し、
realize(); the base class sorts bysort_ascendingand picks topmax_sel_count株の 1 株あたりのファクター値を返します。属性:
max_sel_count(selection count),sort_ascending(True = 最小が最初、False = 最大が最初) など。
6.4. GeneralStg
入力/出力: 柔軟なカスタム
DataType入力および出力配列形状。マルチアセットウェイト、マルチルールブレンドなど。次の場合に使用します: 単純なタイミングや要因の選択を超えたカスタム ロジック。