9. 交易策略基類
本頁提供 Strategy 相關核心類的 API 自動文檔入口。 設計思路與使用教程請參考:
設計文檔:
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量化投資策略的抽象基類,所有具體策略都應從本類繼承並實現交易信號生成邏輯。
一個完整的策略通常由三部分組成:可調參數(pars)、所需歷史數據的聲明 (data_types + window_length 等)以及基於這些數據生成信號的
realize()邏輯。 在策略運行過程中,可通過get_pars()和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,如果爲None,則列印策略的名稱,否則列印策略的ID
extra_info (str, default None) – 額外的資訊,可以是任何字符串,會被列印在策略主資訊之後,參數和數據之前
- 回傳型別:
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策略
生成的交易信號在0到1之間,推薦設置signal_type爲」PT」)
這類策略要求用戶從歷史數據中提取一個選股因子,並根據選股因子的大小排序後確定投資組合中股票的交易信號 用戶需要在realize()方法中計算選股因子,計算出選股因子後,接下來的排序和選股邏輯都不需要用戶自行定義。 策略會根據預設的條件,從中篩選出符合標準的因子,並將剩下的因子排序,從中選擇特定數量的股票,最後根據它 們的因子值分配權重或信號值。關於Strategy類的更詳細說明,請參見qteasy的文檔。
RuleIterator
- class qteasy.RuleIterator(name: str = 'Rule-Iterator', description: str = 'description of rule iterator strategy', allow_multi_par: bool = True, **kwargs)[原始碼]
基礎類別:
BaseStrategy規則迭代策略類。這一類策略不考慮每一隻股票的區別,將同一套規則同時迭代應用到所有的股票上。
RuleIterator策略類的特殊功能是可以對同一套交易規則,將不同的參數應用到投資組合中的不同股票上。 例如,用戶可以設計一個均線交叉策略,並將其應用到投資組合中的所有股票上,同時可以爲每隻股票 設定不同的均線週期參數。關於Strategy類的更詳細說明,請參見qteasy的文檔。
多標的且每股參數不同:須通過
update_par_values({股票代碼: (p1, p2, ...), ...})傳入與share_names一致的股票代碼鍵;若僅用位置元組初始化,多標的時全體共享一套運行時參數(見 用戶文檔《三種策略基類》中 RuleIterator 一節)。字典中可用鍵名default爲未單獨列出的標的 提供同一套默認初值;不支持others等其它保留鍵名。
10. 交易策略參數對象
Parameter 用於定義策略可調參數的類型、範圍與取值方式。