6. Tres clases base de estrategia: RuleIterator, FactorSorter, GeneralStg

Las estrategias personalizadas en qteasy generalmente heredan una de las tres clases base: RuleIterator for timing or single-rule iteration; FactorSorter for factor-based stock selection; GeneralStg para señales generales de múltiples activos o múltiples reglas.

6.1. Qué clase base usar

  • RuleIterator: Iteración de un solo instrumento o de una sola regla por período (por ejemplo, sincronización MA o MACD). Los insumos suelen ser series de precios; La salida es una señal de posición o escalar.

  • ⟦CÓDIGO0⟧⟦CÓDIGO1⟧⟦CÓDIGO2⟧⟦CÓDIGO3⟧⟦CÓDIGO4⟧, etc.

  • GeneralStg: More flexible multi-asset, multi-rule, or custom I/O shapes when RuleIterator/FactorSorter no son suficientes.

6.2. RuleIterator

  • Entrada/salida: normalmente recupera OHLCV a través de get_data(dtype_id) and return a 1-D signal in realize() (por ejemplo, posición de destino 0–1).

  • Uso típico: cruces MA, signo de histograma MACD, etc.

  • Breve ejemplo (bosquejo lógico):

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)

Parámetros de múltiples instrumentos (lectura requerida)

  • Parámetros por acción: Después ⟦CÓDIGO0⟧⟦CÓDIGO1⟧⟦CÓDIGO2⟧⟦CÓDIGO3⟧⟦CÓDIGO4⟧⟦CÓDIGO5⟧⟦CÓDIGO6⟧⟦CÓDIGO7 ⟧⟦CÓDIGO8⟧⟦CÓDIGO9⟧⟦CÓDIGO10⟧⟦CÓDIGO11⟧⟦CÓDIGO12⟧⟦CÓDIGO13⟧⟦CÓDIGO14⟧.

  • Inicio de tupla/posicional: con múltiples recursos compartidos, el tiempo de ejecución utiliza un conjunto de parámetros compartido (único _pars). Si pretendía parámetros por acción pero omitió un dict, la semántica puede divergir silenciosamente; las tuplas están bien cuando todos los recursos compartidos deben compartir valores iniciales y evolucionar juntos.

  • **⟦CÓDIGO0⟧⟦CÓDIGO1⟧⟦CÓDIGO2⟧⟦CÓDIGO3⟧⟦CÓDIGO4⟧⟦CÓDIGO5⟧⟦COD E6⟧⟦CÓDIGO7⟧⟦CÓDIGO8⟧⟦CÓDIGO9⟧⟦CÓDIGO10⟧⟦CÓDIGO11⟧⟦CÓDIGO12⟧ Llave mágica: no utilice llaves no documentadas.

6.3. FactorSorter

  • Entrada/salida: obtenga datos de factores (rendimiento, volatilidad, etc.), valores de factor de retorno por acción en realize(); the base class sorts by sort_ascending and picks top max_sel_count acciones.

  • Atributos: max_sel_count (selection count), sort_ascending (Verdadero = el más pequeño primero, Falso = el más grande primero), etc.

6.4. GeneralStg

  • Entrada/salida: Entradas flexibles personalizadas DataType y formas de matriz de salida; ponderaciones de múltiples activos, combinaciones de múltiples reglas, etc.

  • Usar cuando: Lógica personalizada más allá de la simple selección de tiempo o factor.