9. トレーディング戦略クラス

このページは、コア Strategy クラスの autodoc エントリです。設計ノートとチュートリアルについては、以下を参照してください。

  • デザイン: design/10-live-trading-s1.3-architecture.md

  • 戦略管理: manage_strategies/*

  • 実践的なチュートリアル: tutorials/*

BaseStrategy

class qteasy.BaseStrategy(*, name: str = '', description: str = '', stg_type: str = 'BASE', pars: Optional[Union[Parameter, List[Parameter], Dict[str, Parameter]]] = None, data_types: Optional[Union[DataType, List[DataType], Dict[str, DataType]]] = None, use_latest_data_cycle: Union[bool, List[bool], Dict[str, bool]] = False, window_length: Union[int, List[int], Dict[str, int]] = 270, opt_tag: int = 0, par_values: Optional[Union[Tuple[Any], List[Any]]] = None)[ソース]

ベースクラス: object

定量的戦略の抽象基本クラス。具体的な戦略はそれを継承し、信号生成ロジックを実装します。

完全な戦略は通常 3 つの部分で構成されます: 調整可能なパラメーター (pars), declared historical data (data_types, window_length, etc.), and realize() logic that turns data into signals. During runs, use get_pars() and get_data(); Operator は数値シグナルを PT/PS/VS 取引指示として解析します。カスタム戦略と PT/PS/VS の詳細については、「取引戦略と BaseStrategy」ドキュメントを参照してください。

サンプル

BaseStrategy」は抽象的です。サブクラス化してカスタム戦略を実装します。以下の例は、安定した型の出力を示しています。

>>> import qteasy as qt
>>> qt.BaseStrategy.__name__
'BaseStrategy'
get_pars(*par_names)[ソース]

get the value of parameter by its name or id, alias as operator.par_name multiple parameters can be got at one time

info(verbose: bool = False, status: bool = False, stg_id: Optional[str] = None, extra_info: Optional[str] = None) None[ソース]

すべての関連情報と主要な属性を出力します。

パラメータ:
  • verbose (bool, default False) -- 追加の詳細を印刷するかどうか

  • status (bool, default False) -- ストラテジーの実行状態を印刷するかどうか

  • stg_id (str, default None) -- 戦略 ID。なしの場合は、代わりに戦略名を出力します

  • extra_info (str, default None) -- メイン情報の後、パラメータとデータの前に印刷される追加のテキスト

戻り値の型:

None

update_par_values(*par_values: Any, **kwargs: Any) None[ソース]

戦略パラメーター値を迅速に更新する

パラメータ:
  • par_values (tuple, optional) -- パラメーター値はパラメーターの順序でタプルとして表示されます。パラメータが設定されていない場合は、代わりに kwargs を渡します

  • kwargs (dict) -- 名前を値にマッピングする辞書を介して特定のパラメータを更新します

戻り値の型:

None

GeneralStg

class qteasy.GeneralStg(name: str = 'General', description: str = 'description of General strategy', **kwargs)[ソース]

ベースクラス: BaseStrategy

一般戦略クラス: realize() で完全な取引ロジックとシグナル出力を定義します。

GeneralStg クラスの詳細については、qteasy ドキュメントを参照してください。

FactorSorter

class qteasy.FactorSorter(name: str = 'Factor', description: str = 'description of factor sorter strategy', max_sel_count: float = 0.5, condition: str = 'any', lbound: float = -inf, ubound: float = inf, sort_ascending: bool = False, weighting: str = 'even', **kwargs)[ソース]

ベースクラス: BaseStrategy

FactorSorter 銘柄ピッキング戦略。ユーザー定義の銘柄ピッキング係数のフィルタリングと並べ替えに基づいて、各銘柄ピッキングの重み付けを決定します (FactorSorter 戦略は、

生成される取引シグナルは 0 から 1 の間です。signal_type を "PT" に設定することをお勧めします)

このタイプの戦略では、ユーザーが履歴データから銘柄選択要因を抽出し、銘柄選択要因のサイズに従って並べ替えた後、ポートフォリオ内の株式の取引シグナルを決定する必要があります。ユーザーは、realize() メソッドで銘柄選択要因を計算する必要があり、一度係数が計算されると、次の並べ替えおよび銘柄選択ロジックをユーザーが定義する必要はありません。この戦略は、事前定義された条件に基づいて基準を満たすファクターをフィルターで除外し、残りのファクターを並べ替え、その中から特定の数の銘柄を選択し、最後にファクター値に基づいて重み付けまたはシグナル値を割り当てます。

RuleIterator

class qteasy.RuleIterator(name: str = 'Rule-Iterator', description: str = 'description of rule iterator strategy', allow_multi_par: bool = True, **kwargs)[ソース]

ベースクラス: BaseStrategy

ルール反復戦略: 共有ごとに区別せずに、すべての共有に同じルールを適用します。

RuleIterator は、同じルールの株ごとに異なるパラメータを適用できます。たとえば、株ごとに異なる MA 期間などです。 Strategy クラスの詳細については、qteasy のドキュメントを参照してください。

共有ごとのパラメータ: update_par_values({code: (p1, p2, ...), ...}) with keys matching share_names; a positional tuple shares one runtime parameter set across shares (see RuleIterator in “Three Strategy Base Classes”). Use default for shares not listed explicitly; others のパスはサポートされていません。

10. ポリシーパラメータがありません

Parameter は、調整可能な戦略パラメータのタイプ、範囲、および値のセマンティクスを定義します。

class qteasy.Parameter(par_range, *, name: str = '', par_type=None, value=None)[ソース]

戦略の結果に影響を与える調整可能なパラメーター オブジェクト (離散、連続、列挙、または配列)。

get_value()[ソース]

現在のパラメータ値を取得します

set_value(value)[ソース]

現在のパラメータ値を設定します

パラメータ:

value (any) -- 設定する値。列挙型の場合は 1 つの列挙型値。離散型/連続型の場合、int または float

例外:

ValueError -- ValueError if value は許可された軸上にありません

update_par_range(new_range)[ソース]

パラメータ境界を更新する

パラメータ:

new_range (int, float, str or list or tuple of int, float, str) -- conti/discr, a length-2 list/tuple of lower/upper bounds; for enum の場合、許可される値のリスト/タプル

例外:

ValueError -- 軸タイプがサポートされていない場合は ValueError