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: object

Abstrakte 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: BaseStrategy

Allgemeine 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: BaseStrategy

Regeliterator-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