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 用于定义策略可调参数的类型、范围与取值方式。