9. Handelsstrategieklasse
Diese Seite ist der Autodoc-Eintrag für Kernstrategieklassen. Designhinweise und Tutorials finden Sie unter:
Design: „design/10-live-trading-s1.3-architecture.md“.
Strategiemanagement: „manage_strategies/*“.
Praktische Tutorials: „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)[Quellcode]
Bases:
objectAbstrakte Basisklasse für quantitative Strategien; Konkrete Strategien erben davon und implementieren eine Signalgenerierungslogik.
Eine vollständige Strategie besteht normalerweise aus drei Teilen: einstellbare Parameter („pars“), deklarierte historische Daten („data_types“, „window_length“ usw.) und „realize()“-Logik, die Daten in Signale umwandelt. Verwenden Sie während der Ausführung „get_pars()“ und „get_data()“; Der Operator analysiert numerische Signale als PT/PS/VS-Handelsanweisungen. Benutzerdefinierte Strategien und PT/PS/VS-Details finden Sie in den Dokumenten „Handelsstrategien und BaseStrategy“.
Examples
„BaseStrategy“ ist abstrakt; Implementieren Sie benutzerdefinierte Strategien durch Unterklassenbildung. Das folgende Beispiel zeigt die Ausgabe eines stabilen Typs:
>>> import qteasy as qt >>> qt.BaseStrategy.__name__ 'BaseStrategy'
- get_pars(*par_names)[Quellcode]
Rufen Sie den Wert des Parameters anhand seines Namens oder seiner ID ab, Alias wie „operator.par_name“. Es können mehrere Parameter gleichzeitig abgerufen werden
- info(verbose: bool = False, status: bool = False, stg_id: Optional[str] = None, extra_info: Optional[str] = None) None[Quellcode]
Drucken Sie alle zugehörigen Informationen und Hauptattribute
- Parameter:
verbose (bool, default False) – Ob zusätzliche Details gedruckt werden sollen
status (bool, default False) – Ob der Strategie-Ausführungsstatus gedruckt werden soll
stg_id (str, default None) – Strategie-ID; Wenn „Keine“, geben Sie stattdessen den Strategienamen aus
extra_info (str, default None) – Zusätzlicher Text wird nach der Hauptinformation und vor den Parametern und Daten gedruckt
- Rückgabetyp:
None
- update_par_values(*par_values: Any, **kwargs: Any) None[Quellcode]
Aktualisieren Sie schnell Strategieparameterwerte
- Parameter:
par_values (tuple, optional) – Parameterwerte als Tupel in Parameterreihenfolge; Wenn keine Parameter festgelegt sind, übergeben Sie stattdessen „kwargs“.
kwargs (dict) – Aktualisieren Sie bestimmte Parameter über ein Diktat, das Namen Werten zuordnet
- Rückgabetyp:
None
GeneralStg
- class qteasy.GeneralStg(name: str = 'General', description: str = 'description of General strategy', **kwargs)[Quellcode]
Bases:
BaseStrategyAllgemeine Strategieklasse: Definieren Sie die vollständige Handelslogik und Signalausgabe in „realize()“.
Eine detailliertere Beschreibung der GeneralStg-Klasse finden Sie in der Dokumentation zu 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)[Quellcode]
Bases:
BaseStrategy- FactorSorter-Aktienauswahlstrategie, die die Gewichtung jeder Aktienauswahl basierend auf einer benutzerdefinierten Aktienauswahlfaktorfilterung und -sortierung bestimmt (bitte beachten Sie, dass die FactorSorter-Strategie
Die generierten Handelssignale liegen zwischen 0 und 1. Es wird empfohlen, den signal_type auf „PT“ zu setzen.
Bei dieser Art von Strategie muss der Benutzer einen Aktienauswahlfaktor aus den historischen Daten extrahieren und die Handelssignale für die Aktien im Portfolio bestimmen, nachdem er sie nach der Größe des Aktienauswahlfaktors sortiert hat. Der Benutzer muss den Aktienauswahlfaktor in der Methode „real()“ berechnen, und sobald der Faktor berechnet ist, muss die nächste Sortier- und Aktienauswahllogik nicht mehr vom Benutzer definiert werden. Die Strategie filtert anhand der vordefinierten Bedingungen die Faktoren heraus, die die Kriterien erfüllen, sortiert die verbleibenden Faktoren, wählt daraus eine bestimmte Anzahl von Aktien aus und weist schließlich Gewichtungen oder Signalwerte basierend auf ihren Faktorwerten zu.
RuleIterator
- class qteasy.RuleIterator(name: str = 'Rule-Iterator', description: str = 'description of rule iterator strategy', allow_multi_par: bool = True, **kwargs)[Quellcode]
Bases:
BaseStrategyRegeliterator-Strategie: Wenden Sie dieselbe Regel auf jede Freigabe an, ohne Unterscheidung pro Aktie.
„RuleIterator“ kann unterschiedliche Parameter pro Aktie für dieselbe Regel anwenden – zum Beispiel unterschiedliche MA-Zeiträume pro Aktie. Weitere Informationen zu Strategieklassen finden Sie in der qteasy-Dokumentation.
Parameter pro Freigabe: übergeben Sie „update_par_values({code: (p1, p2, …), …})“ mit Schlüsseln, die mit „share_names“ übereinstimmen; Ein Positionstupel teilt einen Laufzeitparametersatz über mehrere Anteile hinweg (siehe RuleIterator in „Drei Strategie-Basisklassen“). Verwenden Sie „Standard“ für Freigaben, die nicht explizit aufgeführt sind. „Andere“ wird nicht unterstützt.
10. Keine Richtlinienparameter
„Parameter“ definiert den Parametertyp, den Bereich und die Wertesemantik der einstellbaren Strategie.
- class qteasy.Parameter(par_range, *, name: str = '', par_type=None, value=None)[Quellcode]
Einstellbares Parameterobjekt (diskret, kontinuierlich, Aufzählung oder Array), das sich auf die Strategieergebnisse auswirkt.
- get_value()[Quellcode]
Rufen Sie den aktuellen Parameterwert ab
- set_value(value)[Quellcode]
Stellen Sie den aktuellen Parameterwert ein
- Parameter:
value (any) – Zu setzender Wert; für Aufzählungen ein Aufzählungswert; für diskrete/kontinuierliche Typen, int oder float
- Verursacht:
ValueError – „ValueError` if ``value`“ liegt nicht auf der zulässigen Achse
- update_par_range(new_range)[Quellcode]
Parametergrenzen aktualisieren
- Parameter:
new_range (int, float, str or list or tuple of int, float, str) – Für „conti“/„discr“ eine Liste/ein Tupel der Länge 2 mit unteren/oberen Grenzen; für „enum“ eine Liste/ein Tupel zulässiger Werte
- Verursacht:
ValueError – „ValueError“, wenn der Achsentyp nicht unterstützt wird