8. Operator-Klasse
Die Klasse Operator wird zum Erstellen von Operator-Objekten verwendet, dem Kernobjekt von qteasy.
Operator ist ein Strategiecontainer. Es enthält eine Reihe von Handelsstrategien, speichert die für jede Handelsstrategie erforderlichen historischen Daten und kann alle Handelsstrategien aufrufen, um Handelssignale zu generieren. Gleichzeitig mischt es die von allen Handelsstrategien erzeugten Signale gemäß den gespeicherten Regeln zu einem endgültigen Satz von Handelssignalen – genau wie das Verhalten eines Händlers im realen Handel.
Um ein Operator-Objekt zu erstellen, müssen Sie eine Reihe von Handelsstrategien angeben und die Handels- und Signalmodi des Händlers festlegen. Dies sind die wichtigsten Attribute des Operator-Objekts und bestimmen zusammen das Verhaltensmuster des Händlers:.
- class qteasy.Operator(strategies: Optional[Union[str, BaseStrategy, type, list[Union[str, qteasy.strategy.BaseStrategy, type]]]] = None, *, name: Optional[str] = None, signal_type: str = 'pt', op_type: str = 'batch', group_merge_type: str = 'None', run_freq: str = 'd', run_timing: str = 'close')[Quellcode]
Das Kernobjekt „Händler“ in qteasy, das zum Halten einer Strategiegruppe und zum Generieren von Handelssignalen nach einem einheitlichen Zeitplan verwendet wird.
Operator ist für die Verwaltung einer oder mehrerer Strategiegruppen, die Vorbereitung und Zwischenspeicherung der für die Ausführung erforderlichen historischen Daten, den Aufruf jeder Strategie zur Generierung von Signalen entsprechend der Ausführungshäufigkeit und dem Timing sowie für die Zusammenführung von Signalen in endgültige Handelsanweisungen gemäß gruppeninternen/gruppenübergreifenden Zusammenführungsregeln verantwortlich. Es kann für Backtesting, Optimierung und Live-Handel verwendet werden. Architekturdetails wie die Beziehung zwischen Operator und Strategy/Group und die Single Source of Truth für run_freq/run_timing finden Sie im Abschnitt „Operator/Strategy/Group Architecture“ der Dokumentation.
- add_strategies(strategies: Union[str, list[Union[str, qteasy.strategy.BaseStrategy, type]]], run_freq: str = 'd', run_timing: str = 'close', **kwargs: Any)[Quellcode]
Fügen Sie dem Operator-Objekt mehrere Strategiehandelsstrategien hinzu.
Mit dieser Methode ist es nicht möglich, die grundlegenden Eigenschaften einer Handelsstrategie zu ändern, während eine Handelsstrategie hinzugefügt wird. Die Eingabeparameterstrategien können entweder eine Liste oder eine durch Kommas getrennte Zeichenfolge sein. Die Elemente der Liste können entweder Zeichenfolgen sein, die die Typen integrierter Strategien darstellen, oder ein bestimmtes Strategieobjekt. Die Strings und Strategieobjekte können gemischt angegeben werden.
- Parameter:
strategies (stg or list of str or list of Strategy) – Der Name der Handelsstrategie oder des Handelsstrategieobjekts
run_freq (str, optional) – run_freq ist die Ausführungshäufigkeit der Strategie; Es kann None sein, was bedeutet, dass keine Ausführungshäufigkeit angegeben ist.
run_timing (str, optional) – run_timing ist der Ausführungszeitpunkt der Strategie; Es kann None sein, was bedeutet, dass kein Ausführungszeitpunkt angegeben ist.
**kwargs (Any) – Eigenschaften, die von den hinzugefügten Handelsstrategien gemeinsam genutzt werden, wie etwa run_timing, run_freq, window_length, use_latest_data_cycle, freq, asset_type, data_type_ids usw. (an add_strategy übergeben).
- Rückgabetyp:
None
Examples
>>> op = Operator() >>> op.add_strategies(['dma', 'macd']) >>> op.strategies [RULE-ITER(DMA), RULE-ITER(MACD)]
- add_strategy(stg: Union[str, BaseStrategy, type, tuple, list, Any], run_freq: str = 'd', run_timing: str = 'close', **kwargs)[Quellcode]
Fügen Sie dem Operatorobjekt eine Strategie hinzu.
Wenn Sie diese Methode aufrufen, um eine Handelsstrategie zu Operator hinzuzufügen, können Sie gleichzeitig mit dem Hinzufügen die grundlegenden Eigenschaften der Handelsstrategie ändern oder angeben.
- Parameter:
stg (str or int or Strategy) – Die hinzuzufügende Handelsstrategie. Dabei kann es sich auch um die Strategie-ID oder den Strategienamen der integrierten Handelsstrategie handeln
run_freq (str, Optional) – run_freq ist die Ausführungshäufigkeit der Strategie; Es kann None sein, was bedeutet, dass keine Ausführungshäufigkeit angegeben ist.
run_timing (str, Optional) – run_timing ist der Ausführungszeitpunkt der Strategie; Es kann None sein, was bedeutet, dass kein Ausführungszeitpunkt angegeben ist.
kwargs – Jedes gültige Strategieattribut kann direkt beim Hinzufügen der Strategie zugewiesen werden. Sie müssen den Namen des zu ändernden Attributs explizit angeben, einschließlich - pars: Diktat oder Tupel, einstellbare Strategieparameter - opt_tag: int, Strategieoptimierungs-Tag - stg_type: int, Strategietyp - par_count: int, Anzahl der Strategieparameter - par_types: Liste, Strategieparametertypen - par_ranges: Liste, Strategieparameterbereiche - data_freq: str, Strategiedatenhäufigkeit - window_length: int, Strategiefensterlänge - run_freq: str, Strategie-Abtastfrequenz - data_types: Liste, Strategie-Datentypen - data_type_id: str, Strategie-Datentyp-ID (wird für update_data_types verwendet) - freq: str oder list oder dict, Häufigkeit des Datentyps (durch Ändern wird das entsprechende DataType ersetzt) - asset_type: str oder list oder dict, Asset-Typ des Datentyps (durch Ändern wird das entsprechende DataType ersetzt) - group: str, Strategieausführungszeitpunkt - use_latest_data_cycle: bool, ob die Strategie den neuesten Datenzyklus verwendet
- Rückgabetyp:
None
Examples
>>> op = Operator() >>> op.add_strategy('dma', opt_tag=1, pars=(50, 10, 20)) >>> op.strategies [RULE-ITER(DMA)] >>> op.strategies[0].opt_tag 1 >>> op.strategies[0].par_values (50, 10, 20)
- property all_dynamic_dtypes
Gibt die Sammlung „alter“ dynamischer Datentypen im Operator zurück; Veraltet, gibt immer leer zurück.
Der Zugriff auf Prozessdaten erfolgt nun einheitlich über get_data(‚proc.xxx‘) und wird nicht mehr über DataType deklariert. Dieses Attribut wird nur aus Gründen der Aufruferkompatibilität beibehalten und gibt ein leeres Diktat zurück.
- property all_strategy_data_types
Gibt den Satz von Backtest-Preistypen und Datentypen der Handelslistenhistorie für alle Strategien des Operatorobjekts aus dem Objekt zurück.
- check_dynamic_data()[Quellcode]
Prüfen Sie, ob das Operatorobjekt dynamische Datentypen (d. h. historische Daten, die von Handelsergebnissen abhängen) zur Generierung von Handelssignalen enthält.
Wenn eine Strategie get_data(‚proc.xxx‘) in real() verwendet, wird davon ausgegangen, dass sie von dynamischen Prozessdaten abhängt und den dynamischen Backtesting-Zweig verwenden muss.
- clear_strategies()[Quellcode]
Leeren Sie das Operator-Objekt aller Handelsstrategien.
- create_data_windows()[Quellcode]
Erstellen Sie Datenfenster für jede Strategie und ihre Datentypen. Erstellen Sie außerdem Datenfensterindizes für jede Strategie und ihre Datentypen. Datenfensterindizes werden gemäß Gruppenplänen erstellt.
- disable_tracing()[Quellcode]
Deaktivieren Sie das Tracking für alle Strategien im Operator-Objekt.
Nach dem Deaktivieren der Nachverfolgung zeichnet das Operator-Objekt während der Ausführung keine Debugging-Informationen auf, wodurch die Laufzeiteffizienz verbessert wird.
- Rückgabetyp:
None
- property empty
Überprüfen Sie, ob der Betreiber Richtlinien enthält
- enable_tracing()[Quellcode]
Aktivieren Sie die Nachverfolgung für alle Strategien im Operator-Objekt
Nach dem Aktivieren der Nachverfolgung zeichnet das Operator-Objekt während der Ausführung mehr Debugging-Informationen auf, was die nachfolgende Analyse und das Debuggen erleichtert.
- Rückgabetyp:
None
- get_blender(group_name=None)[Quellcode]
Gibt den Lang-/Kurzmasken-Mischer im Operatorobjekt zurück. Wenn Gruppenname nicht angegeben ist, wird das vollständige Blender-Wörterbuch ausgegeben.
- Parameter:
group_name (str) – Ein verfügbarer Gruppenname
- Rückgabe:
Blender – Wenn Gruppenname „None“ ist, wird ein Wörterbuch zurückgegeben, das die Blender für alle run_timing-Werte enthält. Wenn Gruppenname nicht None ist, wird eine Liste mit den Mixern für diesen run_timing zurückgegeben.
- Rückgabetyp:
dict or list
- get_group(group_idx: Union[str, int]) Group[Quellcode]
Rufen Sie ein Gruppenobjekt von group_idx ab, das der Methode get_group_by_id entspricht.
- Parameter:
group_idx (int or str) – Die Indexnummer der Strategiegruppe
- Rückgabetyp:
Examples
>>> op = Operator('dma, macd') >>> op.get_group(0) Group(name=Group_1, members=[RULE-ITER(DMA), RULE-ITER(MACD)]) >>> op.get_group_by_id('Group_1') Group(name=Group_1, members=[RULE-ITER(DMA), RULE-ITER(MACD)])
- get_group_by_id(group_id: Union[str, int]) Group[Quellcode]
Rufen Sie ein Gruppenobjekt mit der Gruppen-ID ab
- Parameter:
group_id (str or int) – Die Namens-ID oder Indexnummer der Strategiegruppe
- Rückgabetyp:
Notes
1,当group_id为int时,返回的是序号为group_id的策略组 2,当group_id为str时,返回的是ID为group_id的组
Examples
>>> op = Operator('dma, macd') >>> op.get_group_by_id(0) Group(name=Group_1, members=[RULE-ITER(DMA), RULE-ITER(MACD)]) >>> op.get_group_by_id('Group_1') Group(name=Group_1, members=[RULE-ITER(DMA), RULE-ITER(MACD)])
- get_max_window_length_by_dtype_id(dtype: str) int[Quellcode]
Berechnen Sie die maximale Fensterlänge für einen bestimmten Datentyp des Operatorobjekts und geben Sie sie zurück.
- Parameter:
dtype (str) – Die dtype_id des abzufragenden historischen Datentyps.
- Rückgabetyp:
int, operator对象中所有子策略中某个dtype最长的窗口长度
Geben Sie bei gegebener Freigabe (einer Zeichenfolge) den entsprechenden Index zurück
- Parameter:
share (str) – share ist eine Zeichenfolge, die den Aktiencode darstellt.
- Rückgabe:
Gibt eine Ganzzahl zurück, die den Index der Freigabe darstellt.
- Rückgabetyp:
int
- get_signal_count(steps=None) int[Quellcode]
Rufen Sie die Anzahl der Handelssignale ab, die von allen Strategiegruppen im aktuellen Ausführungsplan generiert wurden.
- Parameter:
steps (list of int, optional) – Wenn Schritte angegeben sind, berechnen Sie nur die Anzahl der Handelssignale für diese Schritte. Wenn „Keine“, berechnen Sie die Anzahl der Handelssignale für alle Schritte.
- Rückgabe:
int
- Rückgabetyp:
交易信号的数量
- get_stg(stg_id)[Quellcode]
Ein Strategieobjekt erhalten, eine andere Verwendung von Operator[item].
- Parameter:
stg_id (int or str) – Name oder Seriennummer der Strategie
- Rückgabetyp:
Strategy, 子策略
Notes
1, wenn stg_id int ist, wird die erste stg_id-Strategie zurückgegeben. 2, wenn stg_id str ist, wird die Strategie mit dem Namen stg_id zurückgegeben. 3, wenn stg_id nicht übereinstimmt, wird die letzte Strategie zurückgegeben
Examples
>>> op = Operator('dma, macd') >>> op[0] RULE-ITER(DMA) >>> op['dma'] RULE-ITER(DMA) >>> op[999] RULE-ITER(MACD) >>> op['invalid_strategy_name'] UserWarning: No such strategy with ID (invalid_strategy_name)!
Siehe auch
- get_strategies_by_group(group_id: str)[Quellcode]
Gibt das Strategieobjekt im Operatorobjekt zurück, mit Timing als optionalem Parameter, und wenn Timing angegeben ist, wird die Handelsstrategie zurückgegeben, die dieses Timing verwendet.
- Parameter:
group_id (str) – Ein verfügbarer Zeitpunkt, standardmäßig Keiner
- get_strategy_by_id(stg_id)[Quellcode]
Ein Strategieobjekt erhalten, eine andere Verwendung von Operator[item].
- Parameter:
stg_id (int or str) – Name oder Seriennummer der Strategie
- Rückgabetyp:
Strategy, 子策略
Siehe auch
- get_strategy_count_by_group(group_id: str)[Quellcode]
Gibt die Gesamtzahl der Strategien in der Strategiegruppe „group_id“ zurück
- get_strategy_id_by_group(group_id: str)[Quellcode]
Gibt alle Strategie-IDs in der Strategiegruppe „group_id“ zurück
- get_strategy_id_pairs()[Quellcode]
Gibt einen Generator zurück, der alle Strategie- und ID-Paare in op enthält:
- Rückgabetyp:
generator, 包含op中所有strategy和id对
Examples
>>> op = Operator('dma, macd') >>> list(op.get_strategy_id_pairs()) [('dma', RULE-ITER(DMA)), ('macd', RULE-ITER(MACD))]
- get_strategy_names_by_group(group_id: str)[Quellcode]
Gibt alle Strategienamen in der Strategiegruppe „group_id“ zurück
- property group_ids
Gibt den Laufzeittyp aller untergeordneten Strategieelemente des Operatorobjekts zurück.
- property group_merge_type
Gibt die Strategiekombinationsmethode des Operatorobjekts zurück
- property group_names
Gibt den Laufzeittyp aller untergeordneten Strategieelemente des Operatorobjekts zurück.
- property groups
Gibt alle Strategiegruppen des Operators als nach Strategiegruppennamen indiziertes Wörterbuch zurück
- property groups_by_index
Gibt alle Strategiegruppen des Operators als Wörterbuch zurück, das durch den Strategiegruppenindex indiziert ist
- info(verbose=False)[Quellcode]
Drucken Sie Informationen zum Operator-Objekt, einschließlich Strategiegruppen, Strategien innerhalb jeder Gruppe, Strategiemischungsmethode usw.
Wenn die Strategie weitere Informationen enthält, werden auch einige spezifische Details der Strategie gedruckt.
- Parameter:
verbose (bool, Default False) – Gibt an, ob detaillierte Informationen zu den Strategien gedruckt werden sollen. Bei True werden detaillierte Informationen zu den Strategien gedruckt.
- is_ready(tell_me_why: bool = False, raise_error: bool = False) bool[Quellcode]
Prüfen Sie, ob Operator die Mindestanforderungen zur Generierung von Handelssignalen erfüllt.
Zu den typischen Bereitschaftsbedingungen gehören: Strategien wurden bereitgestellt, jede Strategiegruppe hat einen Blender konfiguriert und Schlüsselfelder wie historische Datentypen und der Ausführungsplan sind bereit (detailliertere Gültigkeitsprüfungen werden in den folgenden Schritten durchgeführt).
- Parameter:
tell_me_why (bool, default False) – Wenn das Operator-Objekt die Bereitschaftsbedingungen nicht erfüllt, wird angegeben, ob der spezifische Grund gedruckt werden soll. wird standardmäßig nicht gedruckt.
raise_error (bool, default False) – Wenn das Operator-Objekt die Bereitschaftsbedingungen nicht erfüllt, wird eine Ausnahme ausgelöst. Standardmäßig wird keine Ausnahme ausgelöst.
- Rückgabetyp:
bool, Operator对象是否已经准备好,可以开始生成交易信号
- property max_window_length
Berechnen Sie die längste Fensterlänge aller Unterstrategien des Operatorobjekts und geben Sie sie zurück. Wenn Sie historische Daten für Backtesting oder Optimierung vorbereiten, stellen Sie sicher, dass genügend historische Daten für die Entwicklung der Strategien vorhanden sind.
- Rückgabetyp:
int, operator对象中所有子策略中最长的窗口长度
- property op_data_freq: dict
Gibt die Abtastfrequenz der Daten zurück, die von allen Strategie-Unterobjekten des Operatorobjekts benötigt werden. Gibt diesen Wert an, wenn data_freq für alle Strategien gleich ist, andernfalls wird eine sortierte Liste zurückgegeben
- property op_data_type_count
Gibt die Anzahl der historischen Datentypen zurück, die das Operatorobjekt zum Generieren einer Liste von Transaktionen benötigt
- property op_data_type_ids
Gibt die IDs der historischen Datentypen zurück, die von allen Strategie-Unterobjekten des Operatorobjekts benötigt werden.
- property op_data_types
Gibt die historischen Datentypobjekte zurück, die von allen Strategieunterobjekten des Operatorobjekts benötigt werden.
- property op_signal_index: Optional[Index]
Gibt den Index zurück, bei dem das Operatorobjekt Handelssignale generiert.
- property op_signal_types: list
Die Signaltypen der generierten Handelsliste. Da die generierten Handelssignale von verschiedenen Strategiegruppen erzeugt werden können und unterschiedliche Strategiegruppen ihre eigenen Signaltypen (PT/ST/VT) haben, kann jede Reihe von Handelssignalen einen anderen Handelssignaltyp haben. Diese Eigenschaft gibt eine Liste zurück, die die signal_list jeder Zeile in op_signal_list enthält.
- Rückgabetyp:
list, 生成的交易清单的price_types,回测交易价格类型
- property op_type
Gibt den Ausführungstyp des Operatorobjekts zurück
- property opt_space_par
Gibt die Parameterrauminformationen der an der Optimierung beteiligten Unterstrategien zurück, die zum Erstellen von „Space“ verwendet werden.
Iterieren Sie über den „opt_tag“ jeder Unterstrategie, aggregieren Sie Felder wie „par_range“ / „par_types“ und geben Sie das Tupel „(ranges,types)“ aus, das direkt als Eingabe zum Erstellen von „Space“ verwendet werden kann.
- Rückgabe:
Zwei Listen, „Bereiche“ und „Typen“, die den Wertebereichen bzw. Typmarkierungen jeder beteiligten Optimierungsdimension entsprechen.
- Rückgabetyp:
tuple[list, list]
- property opt_tags
Gibt die optimierten Typbezeichnungen aller Strategien zurück. Der Rückgabewert dieses Attributs ist eine Liste der optimierten Typbezeichnungen aller Handelsstrategien in der Reihenfolge
- prepare_data_buffer(*, start_date: Union[str, Timestamp], end_date: Union[str, Timestamp], data_package: dict) None[Quellcode]
Bereiten Sie den Datenpuffer vor und laden Sie alle für alle Strategien erforderlichen Daten.
Der Datenpuffer ist ein Wörterbuch, dessen Schlüssel Datentypen und dessen Werte die entsprechenden Daten-DataFrames sind. Zu den Eingabeparametern gehören das Start- und Enddatum des Datenpakets. Basierend auf diesen beiden Daten wird der entsprechende Zeitbereich aus jedem DataFrame im Datenpaket herausgeschnitten und im Datenpuffer gespeichert.
Überprüfen Sie beim Speichern des Datenpuffers auch, ob die Daten ausreichend Lookback haben, um das Schiebefenster zu erstellen.
- Parameter:
start_date (str or pd.Timestamp) – Das Startdatum der Daten. Der Standardwert ist „Keine“, d. h. beginnend mit dem Anfangsdatum des Datenpakets.
end_date (str or pd.Timestamp) – Das Enddatum der Daten. Der Standardwert ist „Keine“, d. h. bis zum Enddatum des Datenpakets.
data_package (dict[]) – Ein Wörterbuch, das alle erforderlichen Daten enthält, mit Schlüsseln als Datentypen und Werten als den entsprechenden Daten-DataFrames. Zum Beispiel: {‚price‘: price_df, ‚volume‘: volume_df, …}. Der Index jedes DataFrame besteht aus Zeitstempeln und die Spalten sind verschiedene Instrumentencodes.
- prepare_dynamic_data_buffer(*, trade_records: ndarray, trade_prices: ndarray, own_cashes: ndarray, available_cashes: ndarray, holding_positions: ndarray, available_positions: ndarray) None[Quellcode]
Reservierte Schnittstelle: Prozessdaten wurden einheitlich über proc.* eingefügt; Diese Methode führt keine Logik mehr aus.
- prepare_running_schedule(start_date=None, end_date=None, **kwargs) None[Quellcode]
Der Ausführungsplan ist der Strategieausführungsplan, der Informationen wie die Ausführungszeit und Häufigkeit jeder Strategie enthält.
Bevor Sie die Strategie ausführen, müssen Sie zunächst den Ausführungsplan vorbereiten. Dieser Zeitplan wird durch die Laufzeit-Timing-Parameter jeder Strategiegruppe im Händler bestimmt. Der Ausführungsplan umfasst N Zeilen, wobei jede Zeile einen Zeitpunkt darstellt. Die Anzahl der Spalten entspricht der Anzahl der Strategiegruppen, und jede Zelle gibt an, ob diese Strategiegruppe zu diesem Zeitpunkt ausgeführt wird: 0 bedeutet nicht ausgeführt, 1 bedeutet ausgeführt.
In dieser Methode werden die Werte der folgenden zwei Attribute festgelegt: – „group_schedules“: ein Wörterbuch, dessen Schlüssel Strategiegruppennamen sind und dessen Werte der Ausführungsplan für diese Gruppe sind – „group_timing_table“: ein DataFrame, der die Ausführungspläne aller Strategiegruppen enthält
- Parameter:
start_date (str or pd.Timestamp, optional) – Startdatum. Der Standardwert ist „Keine“, d. h. beginnend mit dem Anfangsdatum der Datenquelle.
end_date (str or pd.Timestamp, optional) – Enddatum, der Standardwert ist „Keine“, d. h. bis zum Enddatum der Datenquelle
kwargs (dict, optional) – Andere Parameter, einschließlich derjenigen, die während des Generierungsprozesses der Handelszeitreihe erforderlich sind, wie z. B. Handelsstartzeit, Endzeit usw. Weitere Informationen finden Sie in der Parameterbeschreibung der Funktion qteasy.trading_util.trade_time_index().
- Rückgabetyp:
None
- property ready
Eigenschaft, eine alternative Schreibweise von „operator.is_ready()“
- remove_strategy(id_or_pos: Optional[Union[str, int]] = None) None[Quellcode]
Entfernt eine Handelsstrategie aus dem Operator-Objekt, indem entweder die Strategie-ID oder die Position der Strategie im Operator angegeben wird.
- reset()[Quellcode]
Setzen Sie den Betriebsstatus des Operator-Objekts zurück, damit es wieder mit der Generierung von Handelssignalen beginnen kann.
Notes
Diese Methode setzt alle Laufzeitdaten des Operator-Objekts zurück, einschließlich historischer Datencaches, Datenfensteransichten, Datenfensterindizes, Handelssignale usw. Nach dem Zurücksetzen kann das Operator-Objekt erneut mit der Generierung von Handelssignalen beginnen.
Examples
>>> op = Operator('dma, macd') >>> op.reset()
- run(config, datasource=None, logger=None)[Quellcode]
Führen Sie den Operator gemäß den Konfigurationsparametern aus und unterstützen Sie sowohl den Live-Handels- als auch den Backtesting-Modus.
- Parameter:
config (dict) – Führen Sie das Konfigurationsparameterwörterbuch aus
datasource (DataSource, optional) – Datenquellenobjekt. Der Standardwert ist „Keine“, was bedeutet, dass die globale Standarddatenquelle verwendet wird.
logger (Logger, optional) – Logger-Objekt. Der Standardwert ist „Keine“, was bedeutet, dass kein Logger verwendet wird.
- Rückgabe:
backtest_result – Wenn der Ausführungsmodus Backtesting ist, wird das Backtest-Ergebnisobjekt zurückgegeben, das verschiedene Backtest-Ergebnisdaten enthält. Wenn der Ausführungsmodus Live-Handel ist, wird kein Ergebnis zurückgegeben.
- Rückgabetyp:
BacktestResult, optional
- run_backtest(config, datasource=None, logger=None) dict[Quellcode]
Führen Sie den Operator im Backtest-Modus aus und verwenden Sie dabei historische Daten, um die Handelsstrategie zu testen und Backtest-Ergebnisse zu generieren.
- Parameter:
config (dict) – Wörterbuch der Backtest-Konfigurationsparameter.
datasource (DataSource, optional) – Datenquellenobjekt. Der Standardwert ist „Keine“, was bedeutet, dass die globale Standarddatenquelle verwendet wird.
logger (Logger, optional) – Logger-Objekt. Der Standardwert ist „Keine“, was bedeutet, dass kein Logger verwendet wird.
- Rückgabe:
backtest_result – Backtest-Ergebnisobjekt, das verschiedene Ergebnisdaten aus dem Backtest enthält.
- Rückgabetyp:
BacktestResult
- run_live_trade(config, datasource=None, logger=None)[Quellcode]
Führen Sie den Operator im Live-Handelsmodus aus.
- run_optimization(config, datasource=None, logger=None) dict[Quellcode]
Führen Sie den Operator im Optimierungsmodus aus.
- run_prediction(config, datasource=None, logger=None) dict[Quellcode]
Führen Sie den Operator im Papierhandelsmodus aus.
- run_strategies(steps: Iterable) Iterable[Quellcode]
Führen Sie Operator aus und geben Sie das Laufergebnis zurück. Die Semantik ähnelt der Schlüsselwort-Argument-Form, die an „qt.run(self, …)“ übergeben wird.
- Parameter:
steps (Iterable) – Ein iterierbares Objekt, das die Indizes der auszuführenden Schritte enthält.
- Yields:
Generator ((signal_type, step_index, signal)) – Gibt einen Generator zurück, der das Handelssignal für jeden Schritt enthält. signal_type: str, der Signaltyp der Strategiegruppe step_index: int, der Index des aktuellen Schritts signal: np.ndarray, das Handelssignal, ein Zahlenarray, dessen Bedeutung je nach Signaltyp-Modus unterschiedlich ist.
- run_strategy(step_index) Generator[Union[tuple[Any, int, Any], tuple[Optional[Any], int, Union[int, Any]]], Any, None][Quellcode]
Führen Sie alle Strategiegruppen für den aktuellen Schritt aus und generieren Sie Handelssignale.
Diese Funktion ist eine Generatorfunktion, die die Handelssignale jeder Strategiegruppe im aktuellen Schritt zurückgibt.
- Parameter:
step_index (int) – Der Index des aktuellen Schritts, der seine Position im Ausführungsplan angibt.
- Rückgabe:
Generator – Gibt einen Generator zurück, der das Handelssignal jeder Strategiegruppe im aktuellen Schritt enthält. signal_type: str, der Signaltyp der Strategiegruppe step_index: int, der Index des aktuellen Schritts signal: np.ndarray, das Handelssignal, ein Zahlenarray, dessen Bedeutung je nach Signaltyp-Modus unterschiedlich ist.
- Rückgabetyp:
(signal_type, step_index, signal)
- set_blender(blender: Union[str, list[str], dict[str, str]], group_id: Optional[str] = None)[Quellcode]
Einheitlicher Eintrag zum Festlegen von Mixer-Eigenschaften
- Parameter:
blender (str or list of str or dict of str, optional) – Ein gültiger gemischter Ausdruck für Handelssignale kann, wenn die Gruppe „Keine“ ist, eine Liste als Argument akzeptieren und den gemischten Ausdruck für alle Gruppen gleichzeitig festlegen.
group_id (str, optional) – Wenn eine Strategiegruppen-ID angegeben wird, wird nur diese Gruppe aktualisiert; Bei „Keine“ werden alle Strategiegruppen aktualisiert. Wenn „blender“ im letzteren Fall eine Zeichenfolge ist, bedeutet dies, dass alle Gruppen denselben Ausdruck verwenden; Wenn es sich um eine Liste handelt, legen Sie die Elemente einzeln in Gruppenreihenfolge fest. Wenn die Länge nicht ausreicht, verwenden Sie das letzte Element erneut.
- Rückgabetyp:
None
- Verursacht:
TypeError – Wenn der angegebene Preistyp nicht der richtige ist
Warnung
Wenn der angegebene Preistyp nicht existiert, geben Sie eine Warnung aus und geben Sie den zurück
Examples
>>> op = Operator() >>> op.add_strategy('dma', run_timing='close') # 添加策略时指定run_timing,自动分配到第一个策略组Group_1 >>> op.add_strategy('trix', run_timing='close') # 添加策略时指定run_timing,自动分配到第一个策略组Group_1 >>> op.add_strategy('macd', run_timing='open') # 添加策略时指定run_timing,自动分配到第二个策略组Group_2 >>> op.add_strategy('bband', run_timing='open') # 添加策略时指定run_timing,自动分配到第二个策略组Group_2
>>> # 设置策略组1的混合模式 >>> op.set_blender('s0+s1', 'Group_1') >>> op.get_blender() >>> {'Group_1': ['+', 's1', 's2']}
>>> # 给所有的交易价格策略设置同样的混合表达式 >>> op.set_blender('s0 + s1') >>> op.get_blender() >>> {'Group_1': ['+', 's2', 's1'], 'Group_2': ['+', 's2', 's1']}
>>> # 通过一个列表给不同的策略组设置不同的混合表达式(策略组按顺序排列) >>> op.set_blender(['s1 + s2', 's3*s4'], None) >>> op.get_blender() >>> {'close': ['+', 's2', 's1'], 'open': ['*', 's4', 's3']}
- set_group_parameters(group: Union[str, int], run_timing: Optional[str] = None, run_freq: Optional[str] = None, signal_type: Optional[str] = None, blender_str: Optional[str] = None, **kwargs)[Quellcode]
Legen Sie die Parameter einer Strategiegruppe fest oder ändern Sie sie. :param group: die ID der Strategiegruppe. :type group: str: param run_timing: der Ausführungszeitpunkt der Strategiegruppe. Wenn Sie den Ausführungszeitpunkt ändern, ändern Sie auch den Ausführungszeitpunkt aller Handelsstrategien in der Gruppe: Typ run_timing: str, optional: param run_freq: die Ausführungshäufigkeit der Strategiegruppe; Wenn Sie die Ausführungshäufigkeit ändern, ändern Sie die Strategiegruppe :type run_freq: str, optional :param signal_type: der Handelssignaltyp der Strategiegruppe; Der Standardwert ist „PT“, d. h. die prozentuale Position target :type signal_type: str, optional :param blender_str: der Handelssignal-Mischungsausdruck der Strategiegruppe; kann ein String oder eine Liste von Strings sein :type blender_str: str, optional :param kwargs: andere Parameter; kann jeder gültige Strategiegruppenparameter sein, wie z. B. Gruppenname, Run_Timing, Run_Frequenz usw. :Typ kwargs: dict, optional
- Rückgabetyp:
None
- Verursacht:
TypeError – Wenn die Gruppe nicht vom Typ String oder Integer ist.
ValueError – Wenn die Gruppe nicht existiert oder nicht gefunden werden kann.
- set_opt_par_values(par_values)[Quellcode]
Optimiererseitiger Einstiegspunkt: Schneiden Sie einen Parametervektor nach jeder Unterstrategie „opt_tag“ und schreiben Sie ihn zurück.
Im Gegensatz zu „set_parameter“ zielt diese Methode auf einen Optimierungsworkflow ab, bei dem „ein Vektor mehreren Strategie-Unterblöcken entspricht“; Der Aufrufer muss sicherstellen, dass „par_values“ mit der Reduzierungsreihenfolge von „opt_space_par“ übereinstimmt.
- Parameter:
par_values (tuple) – Das Parametertupel, das dem aktuellen Kandidatenpunkt des Optimierers entspricht.
- Rückgabetyp:
None
Notes
Ruft intern „Strategy.update_par_values“ auf; Hier werden keine Parametergültigkeitsprüfungen durchgeführt.
- set_parameter(stg_id: Union[str, int], pars: Optional[Union[Parameter, tuple, list, dict]] = None, opt_tag: Optional[int] = None, data_types: Optional[Union[DataType, list[qteasy.datatypes.DataType], dict[str, qteasy.datatypes.DataType]]] = None, data_type_id: Optional[str] = None, window_length: Optional[Union[int, tuple[int, ...], list[int], dict[str, int]]] = None, use_latest_data_cycle: Optional[Union[bool, list[bool], tuple[bool, ...], dict[str, bool]]] = None, freq: Optional[Union[str, list[str], tuple[str, ...], dict[str, str]]] = None, asset_type: Optional[Union[str, list[str], tuple[str, ...], dict[str, str]]] = None, par_values: Optional[Union[tuple, list, dict[str, Any]]] = None, par_range: Optional[Union[tuple, list, dict[str, tuple]]] = None, run_freq: Optional[str] = None, run_timing: Optional[str] = None, **kwargs)[Quellcode]
Einheitlicher Eintrag zum Festlegen von Richtlinienparametern. stg_id identifiziert die spezifische Mitgliedsrichtlinie, die den Parameter akzeptiert, und weist den im Funktionsparameter angegebenen Richtlinienparameter der entsprechenden Richtlinie zu
- Parameter:
stg_id (str,) – Der Name (ID) der Richtlinie, um die Richtlinie zu finden, die eine Parameteränderung basierend auf der ID erfordert
pars (tuple or dict, optional) – Anpassbare Richtlinienparameter im Tupelformat. Beim Erstellen einer Richtlinie können Sie einige der Richtlinienparameter als „anpassbare Parameter“ festlegen. Der Wertebereich dieser Parameter kann im Prozess der Richtlinienoptimierung angepasst werden. Durch Anpassen der Kombination dieser Parameter können Sie die optimale Kombination von Richtlinienparametern finden, um die optimale Richtlinie zu finden.
opt_tag (int, optional) – Optimierungstyp: 0: nicht an der Optimierung teilnehmen, die einstellbaren Parameter der Strategie während des Strategieoptimierungsprozesses nicht anpassen 1: an der Optimierung teilnehmen, die Strategieparameter während des Strategieoptimierungsprozesses aktiv gemäß dem Optimierungsalgorithmus anpassen, um die beste Parameterkombination zu finden 2: als Aufzählungstyp an der Optimierung teilnehmen, während des Strategieoptimierungsprozesses nur die optimale Parameterkombination aus der gegebenen Parameterkombination auswählen
data_types (DataType or list of DataType or dict of str, optional) – Der Datentyp der für die Strategieberechnung erforderlichen historischen Daten; Falls vorhanden, aktualisieren Sie die Parameter für diesen Datentyp.
data_type_id (str, optional) – Die ID des Datentyps der historischen Daten, die für die Strategieberechnung erforderlich sind; Die Angabe dieser ID bedeutet, dass die Parameter für diesen Datentyp aktualisiert werden.
window_length (int or list of int or tuple of int,) – Fensterlänge: Die von der Richtlinie berechnete Länge des Frontsichtfensters
use_latest_data_cycle (bool or list of bool or tuple of bool,) – Ob der neueste Datenzeitraum verwendet werden soll.
freq (str or list of str or tuple of str or dict of str,) – Die Häufigkeit des Datentyps; Falls angegeben, ersetzen Sie das entsprechende Element durch das neue DataType (dtype_id ändert sich entsprechend).
asset_type (str or list of str or tuple of str or dict of str,) – Der Asset-Typ des Datentyps; Falls angegeben, ersetzen Sie das entsprechende Element durch das neue DataType (dtype_id ändert sich entsprechend).
par_values (tuple or list,) – Die spezifischen Werte der Strategieparameter.
par_range (tuple or list, or dict of tuples,) – Der Wertebereich der Strategieparameter.
run_freq (str, optional) – Wenn dieser Parameter bereitgestellt wird, ändern Sie die Ausführungshäufigkeit der Strategie. Eine Änderung der Ausführungshäufigkeit führt dazu, dass die Strategie aus ihrer Strategiegruppe entfernt und einer neuen Strategiegruppe zugewiesen wird.
run_timing (str, optional) – Wenn dieser Parameter bereitgestellt wird, ändern Sie den Ausführungszeitpunkt der Strategie. Eine Änderung des Ausführungszeitpunkts führt dazu, dass die Strategie aus ihrer Strategiegruppe entfernt und einer neuen Strategiegruppe zugewiesen wird.
kwargs (dict,) – Andere Parameter
Legen Sie die Liste der Handelsinstrumente für das Operatorobjekt fest.
- Parameter:
shares (list of str) – Eine Liste von Zeichenfolgen, die die Liste der Handelsinstrumentsymbole darstellen
- Rückgabetyp:
None
- property strategies
Gibt alle Strategieobjekte des Operatorobjekts als Liste zurück.
- property strategy_count
Gibt die Anzahl aller Strategieobjekte im Operatorobjekt zurück.
- property strategy_group_count
Berechnen Sie die Anzahl aller Handelsstrategiegruppen im Operatorobjekt
- Rückgabetyp:
int, operator对象中所有交易策略组的数量
- property strategy_groups
Gibt alle Strategiegruppen des Operators als nach Strategiegruppennamen indiziertes Wörterbuch zurück
- property strategy_ids
Gibt die IDs aller Handelsstrategieobjekte im Operatorobjekt zurück.
- view_blender(group: Optional[Union[str, int]] = None) Union[dict, str][Quellcode]
- Gibt eine für Menschen lesbare Version des Multi-Hollow-Mask-Mixers im Operatorobjekt zurück, d. h. eine besser für Menschen lesbare Version des ursprünglichen Mixer-Strings.
Version, die Strategiecodes wie s0 durch Strategie-IDs ersetzt und entsprechend formatiert. Wenn der Gruppenparameter nicht bereitgestellt wird, wird die für Blender lesbare Version für alle Strategiegruppen zurückgegeben.
- Parameter:
group (str) – Eine verfügbare Gruppen-ID oder ein verfügbarer Index
Gruppenstrategie-Gruppenklasse
- class qteasy.group.Group(name: str, signal_type: str = 'pt', blender: Optional[str] = None, run_freq: str = 'd', run_timing: str = 'close')[Quellcode]
Eine Strategiegruppe, die mehrere Strategiemitglieder enthält und Eigenschaften wie den Signaltyp der Mitgliedsstrategien, die Mischmethode, die Ausführungshäufigkeit und das Timing definiert.
- add_strategy(strategy: BaseStrategy) None[Quellcode]
Fügen Sie der Gruppe eine Strategie hinzu. Die Strategie wird Mitglied der Gruppe.
Die hinzugefügte Strategie muss eine Instanz von BaseStrategy sein und darf nicht bereits Mitglied dieser Gruppe sein; andernfalls wird ein ValueError ausgelöst. Die Gruppen-ID der hinzugefügten Strategie wird auf die Gruppen-ID dieser Gruppe gesetzt, damit die Strategie auf Informationen über die ihr zugeordnete Gruppe zugreifen kann.
- Parameter:
strategy (BaseStrategy) – Die Strategieinstanz, die der Gruppe hinzugefügt werden soll; Es muss eine Instanz einer Unterklasse von BaseStrategy sein.
- Rückgabetyp:
None
- Verursacht:
ValueError – Wenn die Strategie bereits Mitglied der Gruppe ist, wird ValueError ausgelöst, um anzuzeigen, dass die Strategie bereits in der Gruppe vorhanden ist.
TypeError – Wenn die Strategie keine Instanz von BaseStrategy ist, wird TypeError ausgelöst, was auf einen ungültigen Strategietyp hinweist.
- blend(signals: Iterable)[Quellcode]
Verwenden Sie den aktuellen Mixer, um Signale von Strategien derselben Gruppe zu einem einzigen Signalsatz zu mischen.
- clear_strategies()[Quellcode]
Löschen Sie alle Strategien in der Gruppe. Alle Mitgliedsstrategien sind nicht länger Mitglieder dieser Gruppe.
- property group_id
Die ID der Gruppe, identisch mit dem Namen, aus Kompatibilitätsgründen mit Strategy.group_id.
- remove_strategy(strategy: BaseStrategy)[Quellcode]
Eine Strategie aus der Gruppe entfernen; Die Strategie wird nicht länger Mitglied der Gruppe sein.
Die entfernte Strategie muss Mitglied dieser Gruppe sein; andernfalls wird ein ValueError ausgelöst. Die Gruppen-ID der entfernten Strategie wird auf „Keine“ gesetzt, um anzuzeigen, dass sie keiner Gruppe mehr angehört.
- Parameter:
strategy (BaseStrategy) – Die aus der Gruppe zu entfernende Strategieinstanz; Es muss ein Mitglied der Gruppe sein.
- Rückgabetyp:
None
- Verursacht:
ValueError – Wenn die Strategie kein Mitglied der Gruppe ist, wird ValueError ausgelöst, um anzuzeigen, dass die Strategie nicht zur Gruppe gehört.
TypeError – Wenn die Strategie keine Instanz von BaseStrategy ist, wird TypeError ausgelöst, was auf einen ungültigen Strategietyp hinweist.