Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 1072

 
Maxim Dmitrievsky:

Ja, es ist nur meine Transformationsfunktion mit cos und zufälligem Grad, kein Kernel

RDF speichern eigene Struktur, wenn Datei, so dass, wenn zu viele Proben oder Funktionen - Dateien können zu groß sein, Im nicht sicher über Millionen Agenten :) Sie können jedoch den Klassifizierungsfehler verringern und die Stabilität des Modells erhöhen, indem Sie die Anzahl der Agenten mit verschiedenen Merkmalen erhöhen.

Nächster Moment - meiner Erfahrung nach sind größere Daten != bessere Genauigkeit bei neuen Daten. Wenn die Prädiktoren schlecht sind, wird das Ergebnis genauso schlecht sein

gdmh kann auch mit extrem kleinen Datensätzen arbeiten und ist für zukünftige Daten gut geeignet.

Aber... wir können ein einfaches Modell wie logistische Regression + gdmh (anstelle von RDF) anwenden, so dass der Lernprozess sehr schnell ist, aber ich weiß nicht, wie es um die Genauigkeit bestellt ist

Was GMDH betrifft, so habe ich Ihnen genau das gesagt, als Sie GMDH zum ersten Mal erwähnten. Da GMDH selbst als neuronales Netz fungiert, wird hier kein RDF verwendet.

 
Maxim Dmitrievsky:

Ja, es gibt Unterschiede. Um eine Entscheidung mit RDF zu treffen, muss sie alle Knoten und Blätter durchlaufen. Wenn die RDF-Struktur also groß ist, wird jede Entscheidung mehr Zeit in Anspruch nehmen.

Auf diese Weise ist es besser, extrem schnelle Modelle (schnell gelernte NN) mit schneller Reaktion zu verwenden. Oder bessere Hardware, einschließlich GPU

Ein weiteres Problem: RDF reagiert empfindlich auf Rauschen in den Daten, so dass es fast immer zu einer Überanpassung kommt. Um diesen Einfluss des Rauschens zu reduzieren, ist es sinnvoll, eine LDA- oder PCA-Schicht in den Algorithmus einzubetten.

Dies ist also keine so triviale Aufgabe, wie es auf den ersten Blick scheinen mag.

Sie meinen, Ihre aktuelle Implementierung von RDF und Ihre vorherige Version von RDF sind völlig unterschiedlich? Verwendet diese RDF-Version Richtlinien oder etwas anderes? Bei den ".rl"-Dateien bin ich mir nicht sicher. Ich dachte, diese wären ähnlich wie die "Mtrees"-Dateien Ihrer früheren Version.

Ich möchte sehen, wie es mit der Ausbildung und den Tests weitergeht. Mir ist aufgefallen, dass die Modelle und Agenten bei sehr großen Werten nicht richtig zu funktionieren scheinen. Ich habe zum Beispiel die Agenten auf 100 und die Modelle auf 100 gesetzt. Die Agenten funktionierten, aber die Modelle hörten bei 50 für jeden Agenten auf zu funktionieren. Ich weiß nicht, aus welchem Grund.

Übrigens teste ich meinen Algo nur mit RDF, da Sie den grundlegenden Code bereits implementiert haben, denn ich habe Tausende und Abertausende verschiedene Kombinationen von Optimierungen und Tests in Ihrer vorherigen Version durchgeführt und daher habe ich ein durchgehendes Verständnis Ihrer vorherigen Version von RDF. Andernfalls muss ich den kompletten Code für den "Monte Carlo"-Algo, der in "ALPHA ZERO" verwendet wird, schreiben, um ihn in meinen Algo zu integrieren, was einige Zeit dauern kann, da ich kein erfahrener Programmierer bin.

 
Maxim Dmitrievsky:

Hallo, versuchen Sie zunächst, diesen Code zu entschlüsseln:

Hier lernen wir RDF mit je 1 Merkmal (1 Eingabe) und speichern die besten Merkmalsnummern in einem sortierten Array (Modelle). Als nächstes können wir die wenigen besten

Nächster Schritt - wir müssen jeden besten Prädiktor mit anderen kombinieren und erneut auf Fehler überprüfen und das Ergebnis speichern. In diesem Schritt können wir einige Polynomgleichungen anwenden

Ok, mal sehen, wie man GMDH mit diesem Code implementiert.

Je mehr Sie den Code erklären können, desto schneller kann ich eine Brücke finden. Eigentlich ist mein Problem, ich bin ein wenig schwach in der Syntax von einigen grundlegenden C++-Konzepte wie Klasse, Objekte, Arrays usw. und damit, ich nehme mehr Zeit, um diese Konzepte zu verstehen, die Umsetzung, sonst hätte ich direkt die Klasse-Datei von GMDH geschrieben und an Sie.

Wie auch immer, lassen Sie mich sehen.

Bitte erklären Sie mir diese 3 Zeilen richtig. Ich denke, hier müssen wir die GMDH anwenden:

        m[i].Set(0,RDFpolicyMatrix[i][bf]); 
        m[i].Set(1,RDFpolicyMatrix[i][bf+1]);
        m[i].Set(2,RDFpolicyMatrix[i][bf+2]);

Ich meine, bitte kommentieren Sie diese 3 Zeilen

Ich glaube, in meinem vorherigen Code habe ich einen kleinen Fehler in der Schleife gemacht. Also ich denke, hier ist die Brücke zur Verfügung gestellt, wenn Sie genau wissen, was Sie über RDF geschrieben haben:))... denn ich weiß nicht viel über die Matrix-Implementierung...

 ///---Remaining values of Y starting from Y_1
  for(int i=1;i<3;i++)
  m[i]=CalculateNeuron(a);///---Calculate individual value of Y_1,Y_2,Y_3,...to feed to RDF inputs
 
 
Maxim Dmitrievsky:

Dies ist ein 2D-Array (Matrix), "alglib"-Bibliotheksformat, wir füllen es einfach mit der Nummer des Prädiktors (bf) (Index 0 der Matrix), die nächsten (1,2) sind die Ausgabewerte... Fehler hier :) wir müssen Werte mit den Indizes "features" und "features-1" setzen

m - unsere aktuelle Matrix hat 1 Merkmale und 2 Ausgaben, aberRDFpolicyMatrix enthält alle Merkmale und Ausgaben

fest

können Sie hier nachlesen http://www.alglib.net/dataanalysis/generalprinciples.php#header0

Ok, das ist also ein Missverständnis... ich schaue mir den Code noch einmal an, wie man ihn mit GMDH verknüpft...

Wenn Sie die Idee haben, informieren Sie mich einfach, damit ich meine Zeit nicht mit Nachdenken verschwenden muss:))

Ich denke, RDF und GMDH sind sich ähnlich und daher wird es schwierig, sie miteinander zu integrieren...

Lassen Sie mich noch einmal nachdenken....

 
Maxim Dmitrievsky:

nein, es ist leicht zu integrieren ... wir ändern mit gdmh nur Eingangsvektoren, nur einige Transformationen

Im nächsten Schritt wird geprüft, welche Gruppen von Prädiktoren mit welchen anderen kombiniert werden (nur einige wenige aus der vorherigen Auswahl)

Dann kann diese Schleife alles für die Merkmalsumwandlung tun, auf die Sie sich beziehen:

Als nächstes folgt die Funktion zur Berechnung von Neuron:

Dann ist Y_Final=Y_All+Y_0;

Wir haben die Eingaben nun in 3 Teile zerlegt und können sie bei Bedarf auf eine beliebige Anzahl erweitern...

Hier sind die Eingaben die Merkmale oder Prädiktoren und die Gewichte sind zufällige Gewichte... wir können diese anfangs von der Zufallsfunktion nehmen und später werden diese nach dem Training im RDF gespeichert

 
Maxim Dmitrievsky:

versuchen, es jetzt für Matrix neu zu machen ))

aber... Wir brauchen hier keine Summierung, sondern separate Prädiktoren für jeden Schritt, wir erweitern einfach unsere Matrix für zusätzliche Merkmale und fügen sie hinzu, und überprüfen die Fehler erneut

Ok, gib mir etwas Zeit und sei bald bereit

Kein Problem, entfernen Sie einfach das "+"-Zeichen für separate Prädiktoren und Sie erhalten individuelle Prädiktoren:

/// --- Remaining values ​​of Y starting from Y_1 
  for ( int a = 1 ; a < 3 ; a ++) 
  Y_All [a]=CalculateNeuron (a); /// --- Calculate the individual value of Y_1, Y_2, Y_3, ... to feed to RDF inputs...Here feature transformation done

Aber wenn Sie bessere Möglichkeiten haben, ist das auch großartig:)). Denn dies wird sehr langsam sein aufgrund mehrerer for-Schleifen... Also eine sehr grobe Implementierung:))

Ich habe diesen Code in nur einer Stunde geschrieben, und deshalb mag ich ihn nicht einmal:))

Matrix kommt mir nicht in den Sinn:)))))))))))))))))))))))))))))))))
 
Maxim Dmitrievsky:

hehe... Wie wäre es mit einer Sortierung der 2D-Matrix? :)

Außerdem möchte ich Sie bitten, in der endgültigen Version des EA zumindest ein paar weitere Varianten von Prädiktoren zu implementieren:

1. einige Indikatoren für Oszillatoren

2. einige Trendindikatoren

3. einige Lautstärkeanzeigen

4. einige Indikatoren aus höheren Zeitrahmen (guter Filter für verrauschte Signale)

5. einige direkte Abschlusspreise

Ansonsten muss ich Sie immer wieder fragen, wenn ich etwas hinzufügen muss :)))...

Wenn es in der Lage ist, bei jeder Kerze sofort von einem System auf ein anderes umzuschalten, wenn sich der Markt verändert, dann wird es wirklich großartig!... Das war eigentlich das ursprüngliche Ziel, das ich von dieser Version erwartet habe, als Sie Spline, Feature-Transformationen und Kernel-Trick usw. erwähnten... Der Kernel-Trick hätte dazu beigetragen, die Berechnung auch auf einem regulären Server für große Daten viel schneller zu machen... So müssen wir uns jetzt nur auf perfekt trainierte Modelle und schnelle Transformationen verlassen...

Übrigens, aus den letzten 2 Tagen der Vorwärts-Tests muss ich sagen, dass diese Version von RDF etwas stabiler und zuverlässiger zu sein scheint als die vorherige Version von RDF...Ich meine, dass die Vorwärts-Tests etwas mit dem Backtesting übereinstimmen...aber die vorherige Version war meistens über-angepasst mit Optimierungsdaten

 
Maxim Dmitrievsky:

In der vorherigen Version war es nur ein Konzept mit Grundideen

Sie können anstelle von Schlusskursen auch einen oder mehrere Indikatoren selbst hinzufügen.

Nein, nicht ein Indikator... Ich meine, ich bin verwirrt, wenn ich mehrere Indikatoren gleichzeitig in der Array-Schleife von "ag1.agent" anwende.

Was sollte ich anstelle von"ArraySize(ag1.agent)" verwenden, wenn ich insgesamt 100 Merkmale verwende, aber 50 für Close und 50 für High

for(int i=0;i<ArraySize(ag1.agent);i++)///---here
     {   
      CopyClose(_Symbol,0,0,50,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }
for(int i=0;i<ArraySize(ag1.agent);i++)///---here
     {   
      CopyHigh(_Symbol,0,0,50,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }

Ist der obige Code also korrekt für die Deklaration des Agenten wie unten?

CRLAgents *ag1=new CRLAgents("RlExp1iter",5,100,50,regularize,learn);///----Here

Nun, ich war die erste Person, die sich in Ihrem englischen Forum geäußert hat:)))....seit diesem Tag habe ich mindestens mehr als 20.000 verschiedene Tests und Optimierungen auf allen meinen Servern und allen Arten von Einstellungskombinationen durchgeführt, und daher habe ich ein besseres Verständnis des Gesamtkonzepts... aber mein Hauptproblem ist, dass ich manchmal sogar bei einfachem Code stecken bleibe....

Und ich kann Ihnen versprechen, dass selbst wenn dieser Algorithmus im Laufe der Zeit etwas konvergieren kann, ich den Code so optimieren kann, dass er mindestens 2 bis 3 Mal besser ist als das, was Sie veröffentlichen werden :))... alles nur aus meiner Erfahrung und meinen Beobachtungen :)).

Oder ist der unten stehende Code korrekt?

Or

for(int i=0;i<50;i++)///---here
     {   
      CopyClose(_Symbol,0,0,50,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }
for(int i=50;i<100;i++)///---here
     {   
      CopyHigh(_Symbol,0,0,50,ag1.agent[i].inpVector);
      normalizeArrays(ag1.agent[i].inpVector);
     }
 
Maxim Dmitrievsky:

Vielen Dank... Jetzt glaube ich, dass ich mehr Indikatoren machen kann: ))))))))

 
Maxim Dmitrievsky:

Oder wie hier, etwas einfacher

Ja, das gefällt mir... Das ist mein Typ :))

Das vorige Beispiel ist sehr bedingt und kann nicht mehr Prädiktoren enthalten ....

Übrigens, ich habe diese Methode für zufällige Kerzensimulationen verwendet... aber ich muss die Einstiegs- und Ausstiegskurse auch für das Training ändern und bin daher verwirrt...

Für jetzt werde ich versuchen, diese Indikator-Methoden ... und testen Sie es und später werde ich versuchen, die Kerze Simulation Methode ... da, wenn es erfolgreich sein wird dann, dass die letzte Version eines maschinellen Lernens EA jemals in Forex-Markt erstellt werden: ))))

Grund der Beschwerde: