Ich hatte ein paar Probleme mit VAE.mqh und habe festgestellt, dass die folgende Lösung das Problem recht gut umgeht.
bool CVAE::calcInputGradients(CNeuronBaseOCL *NeuronOCL) { if(!OpenCL || !NeuronOCL) return false; //--- if(!OpenCL.SetArgumentBuffer(def_k_VAECalcHiddenGradient, def_k_vaehg_input, NeuronOCL.getOutput().GetIndex())) return false; if(!OpenCL.SetArgumentBuffer(def_k_VAECalcHiddenGradient, def_k_vaehg_inp_grad, NeuronOCL.getGradient().GetIndex())) return false; if(!OpenCL.SetArgumentBuffer(def_k_VAECalcHiddenGradient, def_k_vaehg_random, m_cRandom.GetIndex())) return false; if(!OpenCL.SetArgumentBuffer(def_k_VAECalcHiddenGradient, def_k_vaehg_gradient, Gradient.GetIndex())) return false; if(!OpenCL.SetArgument(def_k_VAECalcHiddenGradient, def_k_vaehg_kld_mult, m_fKLD_Mult)) return false; // Die richtigen Arbeitsgrößen berechnen uint neurons_count = (uint)Neurons(); uint local_size = 64; // oder 32, 128, 256, je nach Ihrer GPU // Die globale Größe aufrunden, damit sie durch die lokale Größe teilbar ist uint global_size = ((neurons_count + local_size - 1) / local_size) * local_size; uint work_offset[] = {0}; uint work_size[] = {global_size}; uint local_work_size[] = {local_size}; if(!OpenCL.Execute(def_k_VAECalcHiddenGradient, 1, work_offset, work_size, local_work_size)) return false; //--- return true; }
Ich habe denselben Testablauf ebenfalls ausprobiert: Zunächst habe ich mit Study anhand historischer Daten 1.000.000 Mal trainiert und anschließend die entsprechenden NNW-Dateien generiert. Danach habe ich mit StudyOnline ein Jahr lang Daten trainiert (zu diesem Zeitpunkt gab es keinerlei Erträge; das Konto mit 10.000 US-Dollar war schnell aufgebraucht; nach Abschluss des Laufs habe ich einen Teil der NNW-Dateien aktualisiert).Schließlich waren die Ergebnisse mit „Test“ im Wesentlichen identisch mit denen von „StudyOnline“ (keinerlei Gewinn).
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Neuer Artikel Neuronale Netze im Handel: Probabilistische Zeitreihenprognose (Fazit) :
Wie bereits erwähnt, wird das Modell in zwei aufeinanderfolgenden Phasen trainiert. Zunächst führten wir ein Offline-Training mit historischen Daten der letzten 15 Jahre für das EURUSD-Paar im H1-Timeframe durch. Dieser Datensatz deckt alle Arten von Marktbedingungen ab: von anhaltenden Seitwärtsmärkten bis hin zu starken Trends und von ruhigen Phasen bis hin zu Volatilitätsspitzen. Dadurch konnte das Modell die Vielfalt des Marktverhaltens erlernen. Der Encoder lernte, Schlüsselmuster zu identifizieren und den Marktzustand in eine kompakte, aber aussagekräftige Repräsentation zu überführen, die zur Grundlage für die Entscheidungsfindung durch den Agenten wurde. Der Actor nutzte unterdessen das Feedback des Critic und des Director, um eine robuste Strategie zu entwickeln, die unter verschiedenen Bedingungen effektiv funktionieren konnte.
Darauf folgte die zweite Phase – ein Online-Training unter Verwendung von Daten aus dem Jahr 2024, das im MetaTrader-5-Strategietester durchgeführt wurde. Hier arbeitete das Modell nahezu in Echtzeit und analysierte den Markt Bar für Bar. Es war mit Rauschen, zufälligen Schwankungen und Verzerrungen konfrontiert, wie sie für einen Live-Markt typisch sind. Dieser Ansatz ermöglichte es nicht nur, das Modell feinabzustimmen, sondern auch sein Verhalten an reale Marktdynamiken anzupassen, seine Strategie zu verbessern und seine Robustheit gegenüber Unsicherheit zu erhöhen.
Nach Abschluss des Trainings testeten wir das Modell anhand neuer Daten – Kursdaten für Januar–März 2025 –, wobei wir alle während des Trainings verwendeten Parameter unverändert ließen. Die Testergebnisse sind unten aufgeführt.
Die Testergebnisse zeigen, dass das Modell im ausgewählten historischen Zeitraum einen Gewinn erzielt hat. Der Gesamtnettogewinn betrug 821,90 $ bei einer Anfangseinlage von 100,0 $, was auf Kapitalwachstum hinweist. Es ist jedoch zu beachten, dass der Profit Factor bei 1,06 liegt, was darauf hindeutet, dass die Gewinne die Verluste nur geringfügig übersteigen.
Autor: Dmitriy Gizlyk