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
Hallo, noch nicht fertig. Wenn es fertig ist, werde ich Ihnen schreiben.
Vielen Dank für Ihre Antwort.
Haben Sie jemals darüber nachgedacht, Q-Learning als Belohnungsfunktion in Ihrer aktuellen Implementierung von Random Forest zu implementieren?
Ich meine, wollen Sie die "Bellman-Gleichung" als eine Möglichkeit verwenden, den Agenten für die Aktualisierung der Belohnungsmatrix für jede geschlossene Kerze für Entscheidungen zu belohnen, und ist das möglich?
Ich habe gerade ein Beispiel MQL5-Code der Q-Formel zu implementieren, und wenn Sie interessiert sind, werde ich hier posten. Ich habe versucht, mich zu implementieren, aber ich bin nicht sehr gut in der Matrix-Implementierung und ich bin immer noch nicht 100% sicher, wie man die Matrix richtig zu verwenden.
Übrigens muss ich zugeben, dass EA unter bestimmten Marktbedingungen manchmal vielversprechende und überraschende Ergebnisse liefert, aber nicht immer, wenn sich der Markt ändert. Daher versuche ich auch, etwas zu implementieren, so dass EA sofort die Prädiktoren (Indikatoren) automatisch ändert, wenn ein Verlust auftritt. Ich habe gesehen, dass Sie diese Idee der automatischen Auswahl von Prädiktoren in einem Ihrer Kommentare erwähnt haben, was meiner Meinung nach auch der wichtigste Teil ist.
Vielen Dank für Ihre Antwort.
Haben Sie jemals darüber nachgedacht, Q-Learning als Belohnungsfunktion in Ihrer aktuellen Implementierung von Random Decision Forest zu implementieren?
Ich meine, wollen Sie die "Bellman-Gleichung" als eine Möglichkeit verwenden, den Agenten für die Aktualisierung der Belohnungsmatrix für jede geschlossene Kerze für Entscheidungen zu belohnen, und ist das möglich?
Ich habe gerade ein Beispiel MQL5-Code der Q-Formel zu implementieren, und wenn Sie interessiert sind, werde ich hier posten. Ich habe versucht, mich zu implementieren, aber ich bin nicht sehr gut in der Matrix-Implementierung und ich bin immer noch nicht 100% sicher, wie man die Matrix richtig zu verwenden.
Übrigens muss ich zugeben, dass EA unter bestimmten Marktbedingungen manchmal vielversprechende und überraschende Ergebnisse liefert, aber nicht immer, wenn sich der Markt ändert. Daher versuche ich auch, etwas zu implementieren, so dass EA sofort die Prädiktoren (Indikatoren) automatisch ändert, wenn ein Verlust auftritt. Ich habe gesehen, dass Sie diese Idee der automatischen Auswahl von Prädiktoren in einem Ihrer Kommentare erwähnt haben, was meiner Meinung nach auch der wichtigste Teil ist.
Ja, ich habe an Q-Learning gedacht. Die Sache ist die, dass der Random Forest selbst eine Annäherung an die Strategie darstellt, so dass die Bellman-Gleichung nicht benötigt wird. Außerdem ist das Q-Learning viel zu leistungsfähig.
Ich suche jetzt nach Lösungen für automatische Funktionstransformationen, z. B. "Kernel-Tricks". Dann können wir das Modell iterativ trainieren und ein Modell mit transformierten Merkmalen mit einem kleinen Klassifikationsfehler auf einer Testteilmenge auswählen.
Ja, ich dachte an Q-learning. Die Sache ist die, dass der Random Forest selbst die Strategie annähert, so dass die Bellman-Gleichung nicht benötigt wird. Außerdem ist das Q-Learning sehr leistungsfähig.
Ich suche jetzt nach Lösungen für automatische Funktionstransformationen, z. B. "Kernel-Tricks". Dann können wir das Modell iterativ trainieren und ein Modell mit transformierten Funktionen mit einem kleinen Klassifikationsfehler auf einer Testuntermenge auswählen.
Ja, ich stimme Ihnen zu, was die Konvergenz der Richtlinien betrifft. Aber bei der derzeitigen Implementierung von Policy-to-Policy berücksichtigt die Policy nicht den konsistenten Verlust der Handelshistorie, des Handelsfloats usw. Mit der Umsetzung von Q meine ich, dass der Agent den aktuellen schwebenden Gewinn jedes offenen Handels und die vorherigen aufeinanderfolgenden Verluste und Gewinne vollständig kennt und daher die Strategie so anpasst, dass die Gewinne maximiert werden und NICHT nur die Anzahl der gewinnbringenden Geschäfte maximiert wird, die irrelevant werden, wenn große Verluste auftreten.
Was ich damit sagen will, ist, dass die Gewinne aus einer Reihe von gewinnbringenden Geschäften durch einen großen Verlust zunichte gemacht werden, aber das ist für den Agenten irrelevant, da er einfach darauf abzielt, die Anzahl der gewinnbringenden Geschäfte zu maximieren. In Q-value können wir dem Agenten also eine sofortige Belohnung mit dem aktuellen schwebenden Gewinn geben, den der Agent bei jeder offenen Kerze überprüft, um die nächste Entscheidung zur Maximierung der Gewinne und Minimierung der Verluste zu treffen, unabhängig von der Anzahl der profitablen Geschäfte oder der Beendigung von Geschäften.
Wie auch immer, wenn Sie planen, etwas zu implementieren, um das Modell iterativ und automatisch bei aufeinanderfolgenden Verlusten zu trainieren, könnte dies sehr nützlich sein. Ich werde mich in meinem nächsten Artikel mit so etwas beschäftigen.
Außerdem habe ich bei meinem EA-Training und -Test in den letzten Wochen festgestellt, dass man einfach automatisch auf ein anderes Modell (andere Indikatorwerte oder Indikatoren) umschalten muss, wenn ein Verlust auftritt, da der EA sonst eine Reihe profitabler Trades liefert, wenn die Märkte für eine bestimmte Zeit auf die Strategie treffen. Aber sobald ein Verlust passiert, hält die gleiche Serie von Verlusten passieren für einige Zeit.
FxTrader562 :
Ja, ich stimme Ihnen in Bezug auf die politische Konvergenz zu. Aber bei der derzeitigen Umsetzung von Politik zu Politik berücksichtigt die Politik nicht die aufeinanderfolgenden Verluste der Handelsgeschichte, den schwebenden Gewinn usw. Mit der Umsetzung von Q meine ich also, dass der Agent den aktuellen schwebenden Gewinn jedes offenen Handels und die vorherigen aufeinanderfolgenden Verluste und Gewinne vollständig kennt und daher die Politik so anpasst, dass die Gewinne maximiert werden und NICHT nur die Anzahl der gewinnbringenden Geschäfte maximiert wird, die beim Auftreten großer Verluste irrelevant werden.
Was ich damit sagen will, ist, dass die Gewinne aus einer Reihe von gewinnbringenden Geschäften durch einen großen Verlust zunichte gemacht werden, aber das ist für den Agenten irrelevant, da er einfach darauf abzielt, die Anzahl der gewinnbringenden Geschäfte zu maximieren. In Q-value können wir dem Agenten also eine sofortige Belohnung mit dem aktuellen schwebenden Gewinn geben, den der Agent bei jeder offenen Kerze überprüft, um die nächste Entscheidung zur Maximierung des Gewinns und Minimierung des Verlusts zu treffen, unabhängig von der Anzahl der profitablen Geschäfte oder der Beendigung von Geschäften.
Wie auch immer, wenn Sie planen, etwas zu implementieren, um das Modell iterativ und automatisch bei aufeinanderfolgenden Verlusten zu trainieren, könnte dies sehr nützlich sein. Ich werde mich in meinem nächsten Artikel mit so etwas beschäftigen.
Außerdem habe ich bei meinem EA-Training und -Test in den letzten Wochen festgestellt, dass ich einfach automatisch auf ein anderes Modell (andere Indikatorwerte oder Indikatoren) umschalten muss, wenn ein Verlust auftritt, da der EA sonst eine Reihe profitabler Trades liefert, wenn die Märkte für eine bestimmte Zeit auf die Strategie treffen. Aber sobald ein Verlust auftritt, wird die gleiche Serie von Verlusten für einige Zeit fortgesetzt.
Ich denke also, dass eine automatische Optimierung in diesem Fall sinnvoll wäre. Ich glaube, es gibt bereits einen Artikel zur automatischen Optimierung, und wenn Sie ihn für Ihren aktuellen EA implementieren können, ist die Aufgabe erfüllt.
Ja, ich stimme Ihnen in Bezug auf die politische Konvergenz zu. Aber bei der derzeitigen Umsetzung von Politik zu Politik berücksichtigt die Politik nicht die aufeinanderfolgenden Verluste der Handelsgeschichte, den schwebenden Gewinn usw. Mit der Umsetzung von Q meine ich also, dass der Agent den aktuellen schwebenden Gewinn jedes offenen Handels und die vorherigen aufeinanderfolgenden Verluste und Gewinne vollständig kennt und daher die Politik so anpasst, dass die Gewinne maximiert werden und NICHT nur die Anzahl der gewinnbringenden Geschäfte maximiert wird, die beim Auftreten großer Verluste irrelevant werden.
Was ich damit sagen will, ist, dass die Gewinne aus einer Reihe von gewinnbringenden Geschäften durch einen großen Verlust zunichte gemacht werden, aber das ist für den Agenten irrelevant, da er einfach darauf abzielt, die Anzahl der gewinnbringenden Geschäfte zu maximieren. In Q-value können wir dem Agenten also eine sofortige Belohnung mit dem aktuellen schwebenden Gewinn geben, den der Agent bei jeder offenen Kerze überprüft, um die nächste Entscheidung zur Maximierung der Gewinne und Minimierung der Verluste zu treffen, unabhängig von der Anzahl der profitablen Geschäfte oder der Beendigung von Geschäften.
Wie auch immer, wenn Sie planen, etwas zu implementieren, um das Modell iterativ und automatisch bei aufeinanderfolgenden Verlusten zu trainieren, könnte dies sehr nützlich sein. Ich werde mich in meinem nächsten Artikel mit so etwas beschäftigen.
Außerdem habe ich bei meinem EA-Training und -Test in den letzten Wochen festgestellt, dass man einfach automatisch auf ein anderes Modell (andere Indikatorwerte oder Indikatoren) umschalten muss, wenn ein Verlust auftritt, da der EA sonst eine Reihe profitabler Trades liefert, wenn die Märkte eine bestimmte Zeit lang auf die Strategie einschlagen. Aber sobald ein Verlust auftritt, wird die gleiche Serie von Verlusten für einige Zeit fortgesetzt.
Ich denke also, dass eine automatische Optimierung in diesem Fall sinnvoll wäre. Ich glaube, es gibt bereits einen Artikel zur automatischen Optimierung, und wenn Sie ihn für Ihren aktuellen EA implementieren können, ist die Aufgabe erledigt.
Sie können zum Beispiel die Reward-Funktion ändern, um sich der Sharpe-Ratio anzunähern. Oder andere Metriken. Ich habe verschiedene Funktionen ausprobiert und festgestellt, dass es keinen großen Vorteil bringt, wenn man es noch komplizierter macht.
Sie können auch dies lesen: https: //github.com/darden1/tradingrrl
Die automatische Optimierung ist eine gute Idee, aber ich arbeite gerade daran, den aktuellen Algorithmus zu verbessern.
Sie können zum Beispiel die Reward-Funktion ändern, um sich dem Sharpe-Ratio anzunähern. Oder andere Metriken. Ich habe verschiedene Funktionen ausprobiert und festgestellt, dass es keinen großen Vorteil bringt, wenn man es noch komplizierter macht.
Sie können auch dies lesen: https://github.com/darden1/tradingrrl
Die automatische Optimierung ist eine gute Idee, aber jetzt arbeite ich daran, den aktuellen Algorithmus zu verbessern.
Vielen Dank für den Artikel. Ich werde mich damit befassen.
Es besteht kein Zweifel daran, dass die derzeitige Implementierung in Bezug auf die Einfachheit der Programmierung, die Lerngeschwindigkeit und die Genauigkeit der Ergebnisse immer noch die beste ist, die ich im Bereich des maschinellen Lernens je gesehen habe, und durch das Hinzufügen einiger weiterer Indikatoren könnten die Ergebnisse wahrscheinlich sogar noch erheblich verbessert werden.
Ich stimme Ihnen voll und ganz zu, dass kleine Komplikationen die Ergebnisse verschlechtern, und der EA lernt am besten von selbst. Ich habe versucht, Stop Loss und Take Profit anzuwenden, um die Höhe der Verluste zu begrenzen, und die Ergebnisse wurden mit einem engen Stop Loss noch schlechter.
Aber das Einzige, was fehlt, ist iteratives Lernen. Ich meine, dass der Algorithmus nur während der Optimierung lernt und danach völlig von den trainierten Daten abhängig ist, so dass man in einem Fall nicht von "Reinforcement Learning" sprechen kann, weil er nicht während des Handels, sondern nur während des Trainings lernt,
Ich suche also nach einer Lösung, um die Optimierung bei jedem Verlust zu automatisieren. Ich meine, bei jedem Verlust und auch bei der Aktualisierung der Rewards sollte der EA den Optimierer aufrufen, um ihn erneut für die Daten des letzten Monats zu trainieren. Oder wir können nach einem Verlust für eine Weile pausieren, und später, nachdem die Optimierung abgeschlossen ist, wird der EA den Handel wieder aufnehmen. Auf diese Weise enthalten die trainierten Bäume (Mtrees-Textdatei) immer die neueste Strategie auf der Grundlage des aktuellen Marktes.
Es gibt wahrscheinlich einige Artikel über die automatische Optimierung, aber ich bin kein EA-Programmierer und habe daher bisher noch keine Möglichkeit gefunden, diese in Ihren EA zu integrieren.
Da Ihre derzeitige Implementierung bereits die Richtlinie aus den vorbereiteten Daten verwendet und daher im Gegensatz zu anderen EAs, braucht Ihr Automat die Werte nach der automatischen Optimierung nicht zu speichern. Es reicht aus, den Optimierer zu starten und die Schaltfläche "Start" zusammen mit dem Start- und Enddatum anzuklicken, um die Optimierung zu automatisieren.
Danke für den Artikel. Ich werde ihn mir ansehen.
Es besteht kein Zweifel daran, dass die derzeitige Implementierung in Bezug auf die Einfachheit der Programmierung, die Lerngeschwindigkeit und die Genauigkeit der Ergebnisse immer noch die beste ist, die ich je im Bereich des maschinellen Lernens gesehen habe, und durch das Hinzufügen einiger weiterer Indikatoren könnten die Ergebnisse wahrscheinlich sogar noch erheblich verbessert werden.
Ich stimme Ihnen voll und ganz zu, dass kleine Komplikationen die Ergebnisse verschlechtern, und der EA lernt am besten von selbst. Ich habe versucht, Stop Loss und Take Profit anzuwenden, um die Höhe der Verluste zu begrenzen, und die Ergebnisse wurden mit einem engen Stop Loss noch schlechter.
Aber das Einzige, was fehlt, ist iteratives Lernen. Ich meine, dass der Algorithmus nur während der Optimierung lernt und danach völlig von den trainierten Daten abhängig ist, so dass man in einem Fall nicht von "Reinforcement Learning" sprechen kann, weil er nicht während des Handels, sondern nur während des Trainings lernt,
Ich suche also nach einer Lösung, um die Optimierung bei jedem Verlust zu automatisieren. Ich meine, bei jedem Verlust und auch bei der Aktualisierung der Rewards sollte der EA den Optimierer aufrufen, um ihn erneut für die Daten des letzten Monats zu trainieren. Oder wir können nach einem Verlust für eine Weile pausieren, und später, nachdem die Optimierung abgeschlossen ist, wird der EA den Handel wieder aufnehmen. Auf diese Weise enthalten die trainierten Bäume (Mtrees-Textdatei) immer die neueste Strategie auf der Grundlage des aktuellen Marktes.
Es gibt wahrscheinlich einige Artikel über die automatische Optimierung, aber ich bin kein EA-Programmierer und habe daher bisher noch keine Möglichkeit gefunden, diese in Ihren EA zu integrieren.
Da Ihre derzeitige Implementierung bereits die Strategie aus den vorbereiteten Daten verwendet und daher im Gegensatz zu anderen EAs, braucht Ihr Automat die Werte nach der automatischen Optimierung nicht zu speichern. Es reicht aus, den Optimierer zu starten und die Schaltfläche "Start" zusammen mit dem Start- und Enddatum anzuklicken, um die Optimierung zu automatisieren.
Ich verstehe, was Sie meinen, Sie brauchen dafür einen virtuellen Backtester. Es ist gar nicht schwer, ihn zu schreiben, vielleicht werde ich ihn in den nächsten Artikeln hinzufügen.
Ich verstehe, was Sie meinen, denn dafür braucht man einen virtuellen Tester. Es ist nicht schwer zu schreiben, ich werde es wahrscheinlich zu den nächsten Artikeln hinzufügen.
Ich danke Ihnen vielmals. Ich werde es in Ihren zukünftigen Artikeln berücksichtigen.
Ja, ich denke auch, dass es keine schwierige Aufgabe sein sollte, besonders für Ihren Ea, da es nicht viel zu tun gibt, außer den Optimierer vom Startdatum bis zum heutigen Datum zu verwenden und der Optimierungszeitraum kann in den EA-Eingabeeinstellungen festgelegt werden, ich meine, es gibt kein Lesen und Schreiben von den optimierten Dateien, da dies bereits von Ihrem Ea erledigt wird. Aber ich weiß nicht genau, wie ich es machen soll und werde daher auf Ihr Update warten.
Übrigens, das Ungewöhnlichste, was mich zu Randomised Decision Forest (RDF) hingezogen hat, ist, dass ich festgestellt habe, dass das Grundmodell der RDF-Implementierung dem GO-Spiel sehr ähnlich ist, obwohl ich mich in meinen Beobachtungen irren könnte. Wenn also das maschinelle Lernen mit dem Algo "ALPHAGO" ein komplexes Spiel wie Go schlagen kann, kann RDF definitiv den Devisenmarkt schlagen. Ich meine, ich glaube fest daran, dass es sehr einfach ist, 99% - genaue Trades mit RDF zu bekommen, wenn genügend Input-Variablen (Indikatoren) gefüttert werden und kontinuierlich gefüttert werden, um optimale Strategien zu entwickeln und zu erhalten, während der Handel läuft.
Nochmals vielen Dank für Ihre Zeit.
Guten Tag!
Ich poste hier die Ergebnisse einiger Experimente (die mit reinen Bäumen ohne Fuzzy-Logik gewonnen wurden. Ich dachte, sie einem neuen Artikel beizufügen, aber da die Diskussion über Belohnungsfunktionen weitergeht, poste ich sie als Information zum Verständnis und zur Diskussion).
1. es schien mir nicht ganz richtig zu sein, dass bei SELL der Zufallswert auf das gesamte Intervall 0..1 gesetzt wird, da wir bereits wissen, dass Verkäufe unrentabel sind
Durch die Begrenzung der Bereiche auf entgegengesetzte und unsichere Werte erhöht sich die Lerngeschwindigkeit um ein Vielfaches. Mit 2-3 Durchläufen (ich glaube mit einem Durchgang auf Zufallsdaten) ist die Qualität des Trainings wie mit 4-6 alten (Streuung ist breit, weil eine Menge zusätzlicher Faktoren, aber die Effizienz hat nicht einmal um zehn Prozent erhöht).
2. In der ersten Implementierung, fand ich es seltsam, dass der Wert zufällig erhalten ist ein Verstärkungsfaktor. Dadurch entsteht leicht eine Situation, in der ein starker Trend eine geringere Belohnung hat.
Erster Versuch, davon wegzukommen
Idee: bei 100 Pips und mehr Take Profit - 1, wenn weniger - gleichmäßig steigend (in diesem Fall von 0,61). Priper pdl für den Verkauf, für den Kauf ähnlich mit anderen Ebenen. Theoretisch für einen stärkeren Trend - höhere Belohnung. Die Ergebnisse haben sich verbessert, aber etwas mehr als der statistische Fehler. Gleichzeitig hat sich die Datei mit dem Baum für dieselben Bedingungen deutlich verkleinert. Offensichtlich erlaubte eine solche eigenartige Sortierung der Ergebnisse, die Regeln einfacher zu beschreiben.
Um das Ensemble der Bäume zu testen, beschloss ich, die Schätzung eines Baumes zu laden.
und ließ aus Gewohnheit das Training laufen. Zu meiner Überraschung zeigte sich bei einem ähnlichen Training mit einer vergröberten Belohnungsfunktion eine deutliche Verbesserung - auf der trainierten Seite übertraf der Gewinn für 4 Monate unter sonst gleichen Bedingungen den Gewinn für 6 Monate der alten Variante (ich arbeite mit Vergleichen, da die konkreten Zahlen stark von den Trainingsbedingungen, dem Paar, der Krümmung der Griffe des Codierers abhängen), und was am interessantesten ist, die Ergebnisse im Kontrollintervall verbesserten sich. Das Laden der Bewertungsfunktion verbesserte die Vorhersage! Wahrscheinlich ist das für einen Profi-Statistiker nichts Neues und er kann mit Formeln beweisen, dass es so sein sollte, aber für mich ist es ein Schock, wie man sagt, man muss sich daran gewöhnen. Und es stellt sich die Frage nach der weiteren Auswahl und Bewertung von Vorhersagefunktionen.
Ich hoffe, dass die Zeit, die ich mit den Tests verbracht habe, jemandem helfen wird, zumindest die Zeit seiner Suche zu reduzieren (oder die Gelegenheit zu geben, neue Fehler zu machen, die mit uns geteilt werden).
und wie realistisch ist es, diesen Code, der freundlicherweise vom Autor des Artikels zur Verfügung gestellt wurde, den einfachsten Mustern von 3-5 Takten beizubringen?
SZY: hmm, sogar unter Alkohol schreibe ich wie auf Aliexpress an einen chinesischen Verkäufer ))))