Diskussion zum Artikel "Gradient Boosting (CatBoost) für die Entwicklung von Handelssystemen. Ein naiver Zugang"
Es gibt keinen Grund, hier etwas durcheinander zu bringen
train_X, test_X, train_y, test_y = train_test_split(X, y, train_size = 0.5, test_size = 0.5, shuffle=True)
Laut der Hilfe auf https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html
Ob die Daten vor der Aufteilung gemischt werden sollen oder nicht. Wenn shuffle=False, muss stratify None sein.
Die Daten werden vor der Aufteilung gemischt, d.h. einige Beispiele aus dem Test werden in den Zug aufgenommen.
Im Allgemeinen hat mir der Artikel gefallen, er zeigt, dass es recht einfach ist, KI im Handel zu implementieren und einzusetzen.
- scikit-learn.org
Ich vermute, die Validierung würde sich verschlechtern und der Test mit unbekannten Daten könnte sich verbessern.
Hier gibt es keinen Grund zur Aufregung
Laut der Hilfe https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html
Die Daten werden vor der Aufteilung gemischt, d.h. einige Beispiele aus dem Test werden in den Zug aufgenommen.
Im Allgemeinen hat mir der Artikel gefallen, er zeigt, dass es recht einfach ist, KI im Handel zu implementieren und einzusetzen.
Ich mache das absichtlich, um die Stichproben ein wenig auszugleichen. Ohne das Mischen fällt der Test schlechter aus, aber es hat fast keine Auswirkungen auf die neuen Daten. Ich werde später Beispiele zeigen.
Das ist es, was ich nicht verstehe:
if dataset['close'][i] >= (dataset['close'][i + rand]): labels.append(1.0) elif dataset['close'][i] <= (dataset['close'][i + rand]): labels.append(0.0) else: labels.append(0.0)
Bedingungen, die niemals funktionieren werden, sind rot markiert.
Das ist es, was ich nicht verstehe:
Bedingungen, die niemals funktionieren werden, sind rot markiert.
Hier ist alles in Ordnung, ich habe die Bedingungen geändert und habe immer noch Artefakte.
Insbesondere für den Import des Python-Modells auf mql5.
Ich bin zwar kein ALGLIB-Experte, aber ich bin der Meinung, dass XGBoost, CATBoost und Pytorch bei weitem überlegen sind, wenn es um maschinelles und tiefes Lernen geht.
Die Bäume werden unabhängig voneinander aufgebaut, und dann wird in den Blättern gezählt (Aufzählung durch nicht quantifizierte Prädiktoren), so dass der Gradientenfehler reduziert wird.
Bei der Auswahl der Prädiktoren für die Baumkonstruktion und die Baumaufteilung werden Zufallskoeffizienten verwendet, was es theoretisch ermöglicht, die Vollständigkeit (Recall) zu erhöhen und Übertraining zu vermeiden.
Es ist besser, die Entwickler zu fragen
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel Gradient Boosting (CatBoost) für die Entwicklung von Handelssystemen. Ein naiver Zugang :
Trainieren des Klassifikators CatBoost in Python und Exportieren des Modells nach mql5, sowie Parsen der Modellparameter und eines nutzerdefinierten Strategietesters. Die Python-Sprache und die MetaTrader 5-Bibliothek werden zur Vorbereitung der Daten und zum Training des Modells verwendet.
Der kompilierte Bot kann mit dem standardmäßigen Strategietester des MetaTrader 5 getestet werden. Wählen Sie einen geeigneten Zeitrahmen (der mit dem im Modelltraining verwendeten übereinstimmen muss) und Eingaben look_back und MA_period, die auch mit den Parametern aus dem Python-Programm übereinstimmen sollten. Überprüfen wir das Modell in der Trainingsphase (Trainings- + Validierungsteilstichproben):
Modellleistung (Trainings- + Validierungsteilstichproben)
Wenn wir das Ergebnis mit dem im nutzerdefinierten Tester erzielten Ergebnis vergleichen, sind diese Ergebnisse bis auf einige Abweichungen beim Spread gleich. Testen wir nun das Modell mit absolut neuen Daten vom Jahresanfang:
Leistung des Modells mit neuen Daten
Das Modell schnitt bei neuen Daten signifikant schlechter ab. Ein solch schlechtes Ergebnis hängt mit objektiven Gründen zusammen, die ich versuchen werde, näher zu beschreiben.
Autor: Maxim Dmitrievsky