Diskussion zum Artikel "Erstellung einer Strategie der Rückkehr zum Mittelwert auf der Grundlage von maschinellem Lernen" - Seite 4

[Gelöscht]  
Evgeniy Chernish #:
Maxim, erzählen Sie uns mehr darüber, wie Sie den Kursverlauf eines Währungspaares anhand des Asymmetriekoeffizienten clustern.

Er wird in einem gleitenden Fenster als Merkmal berechnet und dem Datensatz hinzugefügt. Das Clustering wird anhand dieses Merkmals durchgeführt, und dem gesamten Datensatz werden Cluster-Labels zugewiesen. Dann werden die Zeilen, die zu einem der Cluster gehören, ausgewählt. Die Preise und alle anderen Attribute bleiben dabei erhalten. Das war's schon.

[Gelöscht]  
fxsaber #:

Warum dann nicht ZZ?

Ich habe jedoch eine kleine Erklärung gefunden.

Wahrscheinlich würde das Herauswerfen einiger Eckpunkte aus der ZZ-Reihe den gleichen Effekt haben.
import pandas as pd
from scipy.signal import find_peaks

@njit
def calculate_labels_zigzag(peaks, troughs, len_close):
    """
    Generates labels based on the occurrence of peaks and troughs in the data.

    Args:
        peaks (np.array): Indices of the peaks in the data.
        troughs (np.array): Indices of the troughs in the data.
        len_close (int): The length of the close prices.

    Returns:
        np.array: An array of labels.
    """
    labels = np.empty(len_close, dtype=np.float64)
    labels.fill(2.0)  # Alle Etiketten auf 2,0 initialisieren (kein Signal)
    
    for i in range(len_close):
        if i in peaks:
            labels[i] = 1.0  # Verkaufssignal bei Spitzenwerten
        elif i in troughs:
            labels[i] = 0.0  # Kaufsignal bei Tiefstständen
    return labels

def get_labels_filter_ZZ(dataset, peak_prominence=0.1) -> pd.DataFrame:
    """
    Generates labels for a financial dataset based on zigzag peaks and troughs.

    This function identifies peaks and troughs in the closing prices using the 'find_peaks' 
    function from scipy.signal. It generates buy signals at troughs and sell signals at peaks.

    Args:
        dataset (pd.DataFrame): DataFrame containing financial data with a 'close' column.
        peak_prominence (float, optional): Minimum prominence of peaks and troughs, 
                                           used to filter out insignificant fluctuations. 
                                           Defaults to 0.1.

    Returns:
        pd.DataFrame: The original DataFrame with a new 'labels' column and filtered rows:
                       - 'labels' column: 
                            - 0: Buy
                            - 1: Sell
                       - Rows where 'labels' is 2 (no signal) are removed.
                       - Rows with missing values (NaN) are removed.
    """

    # Spitzen- und Tiefstwerte in den Schlusskursen finden
    peaks, _ = find_peaks(dataset['close'], prominence=peak_prominence)
    troughs, _ = find_peaks(-dataset['close'], prominence=peak_prominence)
    
    # Berechnung der Kauf-/Verkaufsmarken mit der neuen zickzackbasierten Beschriftungsfunktion
    labels = calculate_labels_zigzag(peaks, troughs, len(dataset)) 

    # Fügen Sie die berechneten Beschriftungen als neue Spalte 'labels' zum DataFrame hinzu.
    dataset['labels'] = labels

    # Zeilen entfernen, in denen die Spalte 'labels' einen Wert von 2,0 hat (kein Signal)
    dataset = dataset.drop(dataset[dataset.labels == 2.0].index)
    
    # Rückgabe des geänderten DataFrame 
    return dataset


[Gelöscht]  
Maxim Dmitrievsky #:

Sie können diesen Code selbst in die Deal-Markup-Bibliothek einfügen.

 
Maxim Dmitrievsky #:

Es wurde noch schlimmer.

[Gelöscht]  
fxsaber #:

Es wurde noch schlimmer.

Ja, aber es ist ein direkter Schuss, keine Tricks.
 
Maxim Dmitrievsky #:

Ist es möglich, Modelle in MT5 zu kombinieren? Nehmen wir an, ich habe die Top 20 ausgewählt, so dass 40 onnx-Dateien erscheinen. Was sollte ich in diesem Fall tun?

[Gelöscht]  
Evgeni Gavrilovi #:

Ist es möglich, Modelle in MT5 zu kombinieren? Nehmen wir an, ich habe die Top 20 ausgewählt, so dass 40 onnx-Dateien erscheinen. Was sollte ich in diesem Fall tun?

Dieser Artikel befasst sich nicht mit diesem Thema. Es ist nicht vorgesehen, Modelle zu kombinieren.
Sie können so viele Kopien von Bots erstellen, wie Sie möchten.
 
Natürlich könnten wir Drawdowns hinzufügen, denn die glatten Linien sind verwirrend, ich habe das Gefühl, dass dort der Drawdown bis zu -80% oder sogar mehr betrug).
[Gelöscht]  
Evgeni Gavrilovi #:
Natürlich wäre es möglich, Drawdowns hinzuzufügen, denn die glatten Linien sind verwirrend, ich habe das Gefühl, dass dort der Drawdown bis zu -80% oder sogar mehr betrug).
Ich nehme keine Verbesserungsvorschläge für den Artikel an, sondern nur Diskussionen über den bestehenden Artikel/Fragen.
 

Hinzufügen aller grundlegenden Attribute aus dem Pandas-Modul.

https://pandas.pydata.org/docs/reference/window.html

Als Ergebnis erhielt ich dieses Diagramm. Maxim, ich danke Ihnen für Ihre Arbeit.


Window#
  • pandas.pydata.org
Window# instances are returned by calls: and . instances are returned by calls: and . instances are returned by calls: and . Rolling window functions# Weighted window functions# Expanding window functions# Exponentially-weighted window functions...