Bibliotheken: RL algorithms - Seite 3

 
Maxim Dmitrievsky:

Es wird weitere Experimente mit verschiedenen Varianten geben.....

Ich probiere diese Algorithmen mit einem Satz von Indikatoren und einer Mischung (Indikatoren+Schlusskurse) aus. Wenn möglich und im Einklang mit Ihrer Forschung, implementieren Sie die anfängliche Ablehnung von korrelierten Daten, d.h. prüfen Sie auf Korrelation. Mit Ihrer Methode werden zwei nahe beieinander liegende Indikatoren ausgewählt (wenn sie das Ergebnis ausreichend beeinflussen), obwohl einer von ihnen einem unabhängigen Indikator weichen sollte.

 
mov:

Ich versuche diese Algorithmen mit einer Reihe von Indikatoren und einem Mix (Indikatoren+Schlusskurse). Wenn es möglich ist und Ihrer Forschung entspricht, implementieren Sie eine anfängliche Ablehnung von korrelierten Daten, d.h. prüfen Sie auf Korrelation. Mit Ihrer Methode werden zwei enge Indikatoren ausgewählt (wenn sie das Ergebnis ausreichend beeinflussen), obwohl einer von ihnen einem unabhängigen Indikator weichen sollte.

Es wird möglich sein, dies auszuprobieren. Im Moment implementiert die Version von recursive und Logistic recursive (logit regression anstelle von RDF) die Auswahl von Kursinkrementen, d.h. bei einer gegebenen Reihe von Prädiktoren von z.B. 1000 Schlusskursen wird der Null-Balken durch jeden nachfolgenden Kurswert geteilt, wodurch eine große Menge von Inkrementen mit verschiedenen Lags erhalten wird, und das beste von ihnen wird ausgewählt. D.h. verschiedene Oszillatoren wie Momentum oder RSI mit unterschiedlichen Perioden zu füttern, ist in diesem Fall nicht sehr sinnvoll

 
Maxim Dmitrievsky:

Ich kann es ja mal versuchen...

Korrigieren Sie mich, wenn ich mit meinen Überlegungen (zu den Preisen) falsch liege:

Mehrere gepostete Methoden verwenden etwas wie:

CDForest::DFBuildRandomDecisionForest(m,RDFpolicyMatrix.Size(),1,2,trees,r,RDFinfo,mRDF,mRep); 

Mit Auswahl durch minimalen Fehler. Dies kann als ein Test der Korrelation mit dem Ergebnis gesehen werden.

Nehmen wir an, es gibt einen Wellenprozess (Korridor, Keil, etc.). 100 Werte auf einem Stunden-Zeitrahmen sind ~4 Tage, es gibt eine hohe Wahrscheinlichkeit, dass es mehr als 1 Welle in dem Intervall gibt. Dann haben wir 2 (oder mehr) korrelierte Punkte. Wenn einer von ihnen das Ergebnis stark beeinflusst, wird auch der zweite diesen Test bestehen. Und es gibt auch Halbwellen mit negativer Korrelation. Folglich sind von den zehn für die weitere Konstruktion ausgewählten Messwerten 2-3 unabhängig (die übrigen sind stark mit ihnen korreliert und führen zu einer geringen Verbesserung der Erkennung). Es ist erforderlich, zunächst die Messwerte auszuwählen, die wenig miteinander korrelieren (es ist kein Problem, für alle Paare zu rechnen, aber wie man aus diesem Schwein ein Stück Schinken herausschneidet, weiß ich noch nicht).

Als indirekte Bestätigung wird in seriösen Handbüchern angegeben, dass die Methode des Tree-Busting ein um ein paar % höheres Ergebnis liefert als Random Forest (Bagging). Dies hängt jedoch stark von der Implementierung und den internen Baumerstellungsalgorithmen ab (in dem obigen Ergebnis verwendeten beide Methoden CART).

Folglich hängt die Effizienz einer Methode stark von der Wahl des Testzeitraums ab. Übrigens wird die Kanalneigung dieses Problem nicht völlig aus der Welt schaffen.
 

Um aufzuholen,

Vielleicht sollten wir dieselbe Logit-Regression oder eine andere Methode anwenden, anstatt die Durchschnittswerte der Agenten zu ermitteln? Ich denke, die Theorie sagt, dass es funktioniert.

 
mov:

Nachholbedarf,

Vielleicht sollten wir dieselbe Logit-Regression oder eine andere Methode verwenden, anstatt die Durchschnittswerte der Agenten zu ermitteln? Ich meine, in der Theorie funktioniert es so.

Man kann alles verwenden, aber rein theoretisch sind einige Dinge überhaupt nicht offensichtlich und es ist nicht klar, ob es sich lohnt, Zeit darauf zu verwenden (wie auch auf den gesamten Ansatz im Allgemeinen). Zumindest wird es eine Anleitung sein, wie man es nicht machen sollte :)

zur Multikollinearität von Prädiktoren - ich stimme zu. Es ist notwendig, eine Kovarianzmatrix zu erstellen und darauf basierend eine Auswahl zu treffen. Ich werde später darüber nachdenken, wie man es besser machen kann.

 
Danke, ich warte auf Sie.
 
Igor Makanu:

Ich testete es, mein Eindruck ist zweideutig, ich testete es auf einem benutzerdefinierten Chart von der Weierstraß-Funktion mit der Formel generiert.

Theoretisch sollte RandomForest auf diesem benutzerdefinierten Diagramm Einstiegspunkte gefunden haben, die sehr nahe an ZigZag liegen, oder zumindest keine Verlustaufträge haben, auf TF H1 ist die Periodizität klar nachgezeichnet, aber RF hat dieses Muster irgendwie gefunden, aber Verlustaufträge sind auch vorhanden

getestet früher in MT4 auf die gleichen Daten der alten GoldWarrior Expert Advisor (gefunden auf dem englischen Forum) - ein Berater auf ZigZag, in der MT4-Optimierer auf allen TFs bis zu M15 deutlich findet Muster und ausschließlich in + alle Aufträge.

Ich testete einen Indikator Expert Advisor auf die Kreuzung von Regressionslinien (leider habe ich es zu bestellen, kann ich nicht den Code), und dieser Expert Advisor in der Optimierer schnell gefunden Muster auf der Weierstraß-Funktion.

Warum diese Beispiele? - Wenn primitive Methoden Regelmäßigkeiten finden können, dann ist das maschinelle Lernen erst recht verpflichtet, sie zu finden.

Bei allem Respekt vor dem Autor, aber das Ergebnis ist zweifelhaft, bzw. das Beispiel der Arbeit mit RandomForest ist hervorragend. aber es gibt noch Raum für eigene Anstrengungen ;).

ZY: trainiert von 2000.01.01 bis 2001.01.01 getestet von 2001.01.01 bis 2002.01.01

ZY: Skript für benutzerdefiniertes Diagramm beigefügt, Symbolbibliothek in KB

Unbite Weierstrass on one-two, leicht angepasste Version, der ganze Plot ist oos. Habe keinen Sinn darin gesehen, das weiter auszuführen, es ist schon offensichtlich. Aber es hat mich amüsiert :)

Mit dem Markt wird es natürlich nicht funktionieren. Danke für das Skript, der Test war übrigens sehr nützlich, denn ich konnte zunächst nicht verstehen, ob es Fehler in der Logik gab, bei echten Kursen sind die Ergebnisse viel bescheidener


Das lineare Modell kommt ebenso gut zurecht, d.h. für die Vorhersage dieser Funktion ist nicht einmal ein neuronales Netz erforderlich.


Reverse Trades, um das zu überprüfen.

Die Frage nach dem Vorhandensein oder Nichtvorhandensein von Verlustgeschäften ist rein rhetorisch und ein Kompromiss zwischen Genauigkeit und Overfitting.

 
Maxim Dmitrievsky:

Vielen Dank für das Skript, durch die Art und Weise, die Prüfung war sehr nützlich, denn ich konnte nicht verstehen, auf den ersten , wenn es Fehler in der Logik, auf realen Zitate die Ergebnisse sind viel bescheidener

;) ... Ich rede schon seit einem halben Jahr darüber.

Ich bin "kauen" Mathematik, ich habe Nicht-Standard-Ideen - nicht-glatte Analyse und ich war überrascht, herauszufinden, dass eine recht interessante Fiktion lesen "When Genius Fails" von R. Lowenstein - ich las es, um mich abzulenken.

sehr interessiert an Ihrem Code, wenn Sie können, geben Sie mir eine Sneak Peek in PM

 
Igor Makanu:

;) ... Ich spreche schon seit etwa sechs Monaten darüber.

Ich "kaue" auf der Mathematik, ich habe einige Nicht-Standard-Ideen - nicht glatte Analyse und ich war überrascht, eine ziemlich interessante Fiktion lesen "Wenn Genie versagt" von R. Lowenstein zu finden - ich las es, um mich abzulenken.

Ich bin sehr an Ihrem Code interessiert, wenn Sie können, geben Sie mir einen kleinen Einblick in PM

nicht-glatt und nicht-flauschig? :) am Abend werde ich in 1 Datei sammeln, ich werde das gemeinsame Projekt teilen... vielleicht können wir etwas zusammen tun.

 
Maxim Dmitrievsky:

...zur Multikollinearität der Prädiktoren - ich stimme zu. Es ist notwendig, eine Kovarianzmatrix zu erstellen und darauf eine Auswahl zu treffen, später werde ich darüber nachdenken, wie man es besser machen kann

Ich klopfe vielleicht an eine offene Tür, aber da es keine...

Sie empfehlen eine Vorverarbeitung vor der Konvertierung in den Bereich [0,1]:

1. Entfernung der Periodizität, ich habe es in periodicityArrays() gemacht - das Profil, das aus Wochentagen und Stunden für einen Monat besteht, wird vom Bereich abgezogen (obwohl ich es nur für einen Stunden-Zeitrahmen gemacht habe, um es zu versuchen).

2. Entfernung des linearen Trends in linearTrendArrays() wie empfohlen a[i]=a[i]-a[i+1].

3. und hier sollte die Autokorrelationsprüfung sein (noch nicht implementiert)


Die Vorhersagbarkeit nach 1 und 2 Aktionen hat sich deutlich verbessert. Der Code ist beigefügt.
Dateien: