9. Clase de estrategia comercial

Esta página es la entrada de autodoc para las clases básicas de estrategia. Para notas de diseño y tutoriales, consulte:

  • Diseño: design/10-live-trading-s1.3-architecture.md

  • Gestión de estrategia: manage_strategies/*

  • Tutoriales prácticos: 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)[fuente]

Bases: object

Clase base abstracta para estrategias cuantitativas; estrategias concretas heredan de él e implementan la lógica de generación de señales.

Una estrategia completa suele tener tres partes: parámetros ajustables (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 analiza señales numéricas como instrucciones comerciales PT/PS/VS. Consulte los documentos «Estrategias comerciales y BaseStrategy» para conocer estrategias personalizadas y detalles de PT/PS/VS.

Ejemplos

BaseStrategy es abstracto; implementar estrategias personalizadas mediante subclasificaciones. El siguiente ejemplo muestra una salida de tipo estable:

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

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[fuente]

Imprime toda la información relacionada y los atributos principales.

Parámetros:
  • verbose (bool, default False) – Si imprimir detalles adicionales

  • status (bool, default False) – Si se debe imprimir el estado de ejecución de la estrategia

  • stg_id (str, default None) – Identificación de estrategia; Si no hay ninguno, imprima el nombre de la estrategia en su lugar.

  • extra_info (str, default None) – Texto adicional impreso después de la información principal y antes de los parámetros y datos.

Tipo del valor devuelto:

None

update_par_values(*par_values: Any, **kwargs: Any) None[fuente]

Actualizar rápidamente los valores de los parámetros de la estrategia

Parámetros:
  • par_values (tuple, optional) – Valores de parámetros como una tupla en el orden de los parámetros; si los parámetros no están configurados, pase kwargs en su lugar

  • kwargs (dict) – Actualice parámetros específicos a través de un dict que asigna nombres a valores

Tipo del valor devuelto:

None

GeneralStg

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

Bases: BaseStrategy

Clase de estrategia general: defina la lógica comercial completa y la salida de señal en realize().

Para obtener una descripción más detallada de la clase GeneralStg, consulte la documentación 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)[fuente]

Bases: BaseStrategy

Estrategia de selección de acciones FactorSorter, que determina la ponderación de cada selección de acciones en función de un filtrado y clasificación de factores de selección de acciones definidos por el usuario (tenga en cuenta que la estrategia FactorSorter

Las señales comerciales generadas están entre 0 y 1. Se recomienda establecer el tipo de señal en «PT»)

Este tipo de estrategia requiere que el usuario extraiga un factor de selección de acciones de los datos históricos y determine las señales comerciales para las acciones en la cartera después de clasificarlas según el tamaño del factor de selección de acciones. El usuario necesita calcular el factor de selección de acciones en el método darse cuenta(), y una vez que se calcula el factor, no es necesario que el usuario defina la siguiente lógica de clasificación y selección de acciones. La estrategia filtrará los factores que cumplen con los criterios en función de las condiciones predefinidas, clasificará los factores restantes, seleccionará un número específico de acciones de ellos y, finalmente, asignará ponderaciones o valores de señal en función de los valores de sus factores.

RuleIterator

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

Bases: BaseStrategy

Estrategia de iterador de reglas: aplique la misma regla a todas las acciones sin distinción por acción.

RuleIterator puede aplicar diferentes parámetros por acción para la misma regla; por ejemplo, diferentes períodos MA por acción. Consulte los documentos qteasy para obtener más información sobre las clases de estrategia.

Parámetros por recurso compartido: la transferencia 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 no es compatible.

10. Sin parámetros de política

Parameter define la semántica del tipo, rango y valor del parámetro de estrategia ajustable.

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

Objeto de parámetro ajustable (discreto, continuo, enumeración o matriz) que afecta los resultados de la estrategia.

get_value()[fuente]

Obtener el valor del parámetro actual

set_value(value)[fuente]

Establecer el valor del parámetro actual

Parámetros:

value (any) – Valor a establecer; para enumeraciones, un valor de enumeración; para tipos discretos/continuos, int o float

Muestra:

ValueErrorValueError if value no está en el eje permitido

update_par_range(new_range)[fuente]

Actualizar límites de parámetros

Parámetros:

new_range (int, float, str or list or tuple of int, float, str) – Para conti/discr, a length-2 list/tuple of lower/upper bounds; for enum, una lista/tupla de valores permitidos

Muestra:

ValueErrorValueError si el tipo de eje no es compatible