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

 
elibrarius:

Verfehlt)

Ein weiterer Punkt: Wenn Sie z. B. nicht 0, sondern z. B. 0,5 nehmen, wird der Wert auch bei Ihrer Methode von Probe zu Probe "schwanken".

Nur die manuelle Einstellung des Bereichs für jeden Eingang ist hilfreich. Aber es ist nicht klar, wie sie zu bestimmen ist. Zum Beispiel, um die Daten ein Jahr lang zu überprüfen und 1-5% der Ausreißer zu verwerfen. Und arbeiten Sie im Laufe des Jahres mit ihnen zusammen. Aber in einem Jahr werden sie sich ändern.


Ja, Sie müssen zuerst die maximal verfügbare Stichprobe nehmen und den Multiplikator ermitteln (bei mir heißt er aus irgendeinem Grund Multiplikator :)

Und wenn eine neue Probe plötzlich einen höheren Wert hat... nun, dann müssen Sie durch diesen Wert dividieren. Aber das passiert selten, wenn wir Inkremente mit einer kleinen Verzögerung nehmen, z.B. close[0]/close[10]... und mit close[0]/close[100] kann es schon häufiger vorkommen... aber ich denke, es gibt schon eine Ausnahme, vor allem wenn wir NS periodisch neu trainieren

Ich habe keine Zeit, über 0,5 nachzudenken. :)

 

Es sollten nur Prädiktoren verwendet werden, die eine BEZIEHUNG zur Zielvariablen haben. Ob "linear" oder "nicht-linear" ist unerheblich, unerheblich für das sehr präzise formulierte "eine Beziehung haben".

Um die Bedeutung von "eine Beziehung haben" noch einmal zu verdeutlichen, möchte ich ein Beispiel anführen, das ich in diesem Thread schon mehrfach genannt habe.


Zielgruppe: die Bevölkerung, mit zwei Klassen: Männer und Frauen

Nehmen wir einen Prädiktor: Kleidung. Sie hat zwei Werte: Hosen und Röcke.

Bei solchen Klassen und einem solchen Prädiktor wird ein Teil des Prädiktors die eine Klasse vorhersagen und der andere Teil die andere nach dem Prinzip "Hosen-Männer", "Röcke-Frauen". Im Idealfall kann eine fehlerfreie Klassifizierung erstellt werden.

Wendet man dieses System auf die Schotten an, so kommt es zu Überschneidungen bei den von beiden Geschlechtern getragenen "Röcken". Diese Überschneidung ergibt eine Obergrenze für den Fehler, die nicht überwunden werden kann.


Es ist obligatorisch, das Modell mit zwei verschiedenen Zeitdateien zu testen: vor dem 1. Januar und nach dem 1. Januar.

In der ersten Datei: Teach, Test und "out-of-sample". Wenn alle drei Fehlerwerte annähernd gleich sind, führen Sie die zweite Datei aus - der Fehler sollte nicht wesentlich (nicht mehr als 10 %) von den ersten drei abweichen.

WIRD DIESES MODELL NICHT NEU TRAINIERT.


PS.

Wenn Sie Prädiktoren einbeziehen, die für das Ziel nicht relevant sind, z. B. "Kaffeesatz", kann der Fehler drastisch reduziert werden. Ich für meinen Teil ziehe keine Modelle in Betracht, bei denen der Fehler weniger als 10 % beträgt. Aber es ist immer dasselbe: Der Fehler in der zweiten Datei ist ein Vielfaches des Fehlers in der ersten Datei. Das Modell ist REBUILD, es hat einige Werte aus dem Rauschen aufgenommen, um den Klassifizierungsfehler zu verringern, und in der Zukunft werden solche Werte höchstwahrscheinlich nicht existieren, oder werden, oder in Zeiten.... Dieses Modell hat keine Vorhersagekraft.

 
SanSan Fomenko:

In der ersten Datei: Lernen, Testen und "Out-of-sample". Wenn alle drei Fehlerwerte in etwa gleich sind, führen Sie die zweite Datei aus - der Fehler sollte nicht viel (nicht mehr als 10 %) von den ersten drei abweichen.

Was ist der Unterschied zwischen

1) ein "out of sample"-Abschnitt aus der ersten Datei + eine weitere "out of sample"-Datei

2) und eine "außerhalb der Stichprobe", aber ein größerer Abschnitt einschließlich der zweiten Datei?

Ich denke, das Ergebnis wird dasselbe sein. Wenn in der ersten Variante alles schlecht ist, werden die gleichen Daten in der zweiten Variante alles ruinieren.

 

Nun, in der Regel gibt es drei Abschnitte in der NS-Ausbildung. Einen Trainingsbereich, einen Testbereich und einen Kontrollbereich. Wenn der Fehler im Testabschnitt innerhalb der normalen Grenzen liegt, wird das Modell nicht neu trainiert. IMHO.

 
Mihail Marchukajtes:

Die NS-Ausbildung besteht im Allgemeinen aus drei Abschnitten. Einen Trainingsbereich, einen Testbereich und einen Kontrollbereich. Wenn der Fehler im Testabschnitt innerhalb der normalen Grenzen liegt, wird das Modell nicht neu trainiert. IMHO.

Ich stimme zu, aber warum SanSanych einen vierten Abschnitt (den zweiten Büroabschnitt) einführt, ist unklar. Es ist nämlich möglich, die eine auf die andere zu erweitern.
 
elibrarius:

Was ist der Unterschied zwischen

1) ein "out of sample"-Abschnitt aus der ersten Datei + eine weitere "out of sample"-Datei

2) und einen größeren Abschnitt "außerhalb der Stichprobe", der die zweite Datei enthält?

Ich denke, die Ergebnisse werden die gleichen sein. Wenn in der ersten Datei etwas nicht stimmt, dann werden die gleichen Daten auch in der zweiten Datei nicht funktionieren.


Die erste Datei wird nach dem Zufallsprinzip in drei Teile geteilt, d. h., Stücke von Trainings-, Test- und Kontrollproben werden nach Datum gemischt. Das ist im realen Handel nicht der Fall.

Aber die zweite ist eine Nachahmungstransaktion: Wir handeln immer NACH dem Ausbildungsabschnitt. Im Gegensatz zu Ihrer Ansicht unterscheiden sich die Ergebnisse der zweiten Datei sehr oft von denen der ersten - das Modell ist übertrainiert und ungeeignet für die Verwendung.

 
Grigoriy Chaunin:

https://github.com/RandomKori/Py36MT5 Hier sind die Quellen der Python-Bibliothek für MT5. Das einzige Problem besteht bei Arrays. Die Übergabe eines Arrays oder der Empfang eines Arrays funktioniert nicht korrekt. Ich habe den DLL-Code in Visual Studio debuggt. Dort funktioniert alles. Die Frage ist, ob es sich um einen Terminalfehler handelt. Ich habe nicht geschrieben, wie man mit der Bibliothek arbeitet. Das hat keinen Sinn. Niemand braucht sie ohne Arrays. Obwohl vielleicht schraubte in pythom.mqh Datei Helfen Sie mir, es herauszufinden. Alle werden von Nutzen sein.

Gute Idee und nützliche MT5-Bibliothek, aber es ist ziemlich mühsam, sie mit einer Python-Skriptdatei zu synchronisieren.

Ich denke, es ist besser, MQL-Variablen direkt mit Python-Variablen über ein lokales Wörterbuch zu synchronisieren und Python-Codefragmente direkt von String-Konstanten im EA-Code auszuführen.

Ich habe den Test versucht, Kompilieren bcc64 von der Kommandozeile und es funktioniert gut in Python 3.6:

#include <stdio.h>
#include "python.h"
#pragma link "python36.lib"

int main(int argc, char **argv)
{
  Py_Initialize();
  PyObject* main = PyImport_AddModule("__main__");
  PyObject* global = PyModule_GetDict(main);
  PyObject* local = PyDict_New();

  int a, b = 2, c = 2; // synchronize python variables and calc a = b * c
  PyDict_SetItemString(local, "b", PyLong_FromLong(b));
  PyDict_SetItemString(local, "c", PyLong_FromLong(c));
  a = PyLong_AsLong(PyRun_String("b * c", Py_eval_input, global, local));
  printf("%d*%d=%d\n",b,c,a);

  PyRun_SimpleString("import sys"); // import python sys and read version
  printf(_PyUnicode_AsString(PyRun_String("sys.version", Py_eval_input, global, local)));

  Py_Finalize();
  return 0;
}

Es wäre schön, diese Funktionalität zu Ihrer Bibliothek hinzuzufügen, war ich über meine eigene zu schreiben, aber leider für jetzt bin ich mit P-Netz-Bibliothek für Python beschäftigt.

Übrigens habe ich über dieses neue neuronale Netzwerk hier in einem Zweig geschrieben. Nach vorläufigen Ergebnissen von Tests an Beispielen mit Fisher's Iris wird es um drei Größenordnungen schneller trainiert als DNN in TensorFlow, bei gleichen Testergebnissen.

 
SanSanych Fomenko:

Die erste Datei wird nach dem Zufallsprinzip in drei Teile aufgeteilt, d. h., Stücke von Trainings-, Test- und Kontrollproben werden nach Datum gemischt. Dies ist im realen Handel nicht der Fall.

Aber die zweite ist eine Nachahmungstransaktion: Wir handeln immer NACH dem Ausbildungsabschnitt. Im Gegensatz zu Ihrer Ansicht unterscheiden sich die Ergebnisse der zweiten Datei sehr oft von denen der ersten - das Modell ist übertrainiert und nicht zweckmäßig.

Ich lege die ersten 3 Teile immer in eine Reihenfolge. Und wenn die 3. schlecht ist, ist das Modell übertrainiert.
 

Denken Sie daran, dass jede Datensicherung den Eintritt des Modells in den Kampf verzögert. Dies wirkt sich unmittelbar auf die Qualität der empfangenen Signale nach....

Ich persönlich habe mich für die folgende Methodik entschieden. Ich habe das mit Kaufsignalen erhaltene Modell umgekehrt und es mit demselben Teil des Marktes, aber mit Verkaufssignalen, getestet. So verliere ich keine kostbare Zeit und kann die Fähigkeiten des Modells angemessen einschätzen. IMHO

 
SanSanych Fomenko:

Die erste Datei wird nach dem Zufallsprinzip in drei Teile aufgeteilt, d. h., Stücke von Trainings-, Test- und Kontrollproben werden nach Datum gemischt. Dies ist im realen Handel nicht der Fall.

Aber die zweite ist eine Nachahmungstransaktion: Wir handeln immer NACH dem Ausbildungsabschnitt. Im Gegensatz zu Ihrer Ansicht unterscheiden sich die Ergebnisse der zweiten Datei sehr oft von den Ergebnissen der ersten Datei - das Modell ist übertrainiert und nicht zweckmäßig.


Für Prognosesysteme ist die Reihenfolge, in der die Daten eintreffen, wichtig. Für die Klassifizierung, NO.

Grund der Beschwerde: