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

 
Dr. Trader:

Es sieht kompliziert aus und ich bin mir des Ergebnisses nicht sicher, ich verzichte.
R verfügt über ein GMDH-Paket ("MGUA" auf Englisch).

Das ist schwierig, denn es gibt eine Vielzahl von Algorithmen, und man kann leicht den Überblick verlieren.

Es gibt ein Paket, aber es ist "langweilig".

Ich werde versuchen, es in einfacheren und kürzeren Worten zu erklären...

Ein nicht-physikalisches selbstorganisierendes kombinatorisches Modell ist

eine einfache Suche nach allen möglichen Kombinationen von Elementen der Stichprobe (Prädiktoren) und Überprüfung jeder Iteration dieser Suche bei OOS, da die Prädiktoren Polynome oder Oberschwingungen sind, können solche Kombinationen komplizierter werden, so dass man sozusagen zu einer neuen Ebene übergeht und Kombinationen mit Kombinationen bildet und wieder bei OOS überprüft und wieder zu einer neuen Ebene übergeht und so weiter, bis der minimale Fehler bei OOS gefunden ist, dies ist eine Essenz der Selbstorganisation (wenn ich dort alles richtig verstanden habe)

Was ich vorschlage....

Wir alle wissen, dass jede Funktion in eine Fourier-Reihe zerlegt werden kann, wie in Abb.

ч

Umgekehrt gilt, dass wir mit den richtigen Kombinationen von Oberschwingungen jede gewünschte Funktion erhalten können

Stellen Sie sich nun vor, es gäbe eine Funktion (eine Kurve) oder einen Vektor, nennen Sie ihn, wie Sie wollen ... die ein Marktinstrument vollständig beschreibt und es übertrifft ... Es kann eine intelligente Saisonalität sein, die sich in einer Funktion oder Abhängigkeit von anderen Instrumenten oder Mondzyklen ausdrückt)) es ist absolut unwichtig und wir Sterblichen wissen es nicht, ABER wir können diese Abhängigkeit finden, ohne überhaupt zu wissen, wo wir danach suchen müssen ... Nennen wir diese Abhängigkeit - die den Markt antreibt - weiter Superabhängigkeit NW

Alles, was wir brauchen, ist

1) Nehmen Sie einen angemessenen Bereich von Oberschwingungen

2) ein Ziel erstellen

3) Gehen Sie alle möglichen Kombinationen zwischen den Obertönen durch und beobachten Sie das OOS.

Verstehen Sie, wie einfach und tiefsinnig es ist, dass wir nicht wissen, wo wir die SP suchen sollen, aber wir können sie selbst synthetisch erzeugen!

Es scheint also ein einfacher Oversampling-Algorithmus zu sein, aber als ich ihn verstanden habe, war ich erstaunt...

Aber es gibt ein großes ABER! Es wird Billionen von Kombinationen geben, wir brauchen eine Lösung, und ich brauche Ihre Hilfe.

Vielleicht ist die Genetik ein Weg, um nach guten Kombinationen zu suchen?

Was halten Sie von dieser Idee und ihrer Umsetzung?

BLEEP!!! ......

 

Was Sie hier beschreiben, entspricht dem Ergebnis "gut bei OOS". Zunächst wählen Sie die Modellparameter (harmonische Kombinationen) so aus, dass ein gutes Ergebnis für die Stichprobe erzielt wird. Dann wählt man daraus die Parameter aus, die für die Oos gut sind. Dies ist eine doppelte Anpassung der guten Ergebnisse, und das Modell wird höchstwahrscheinlich bei neuen Handelsdaten unbrauchbar sein.

Mit Kombinationen von Oberschwingungen kann man Kursbewegungen beschreiben, aber das Gleiche kann man auch mit Neuronen oder Wald erreichen. Ich glaube, Sie haben das schon Hunderte von Malen mit Neuronen gemacht und es hat nicht funktioniert, warum glauben Sie, dass das MGUA-Ergebnis positiv sein wird? Das maschinelle Lernen im Devisenhandel kann nicht so einfach wie bei herkömmlichen Problemen eingesetzt werden, da sich das Preisverhalten im Laufe der Zeit ändert und die meisten Abhängigkeiten, die Sie finden und nutzen, sehr schnell wieder verschwinden. Und all diese Modelle sind auf konstante Abhängigkeiten ausgelegt, die sich im Laufe der Zeit nicht ändern, so dass sie bei einem solchen Problem nicht rentabel sind.

 
mytarmailS:

Das ist schwierig, denn es gibt eine Vielzahl von Algorithmen, und man kann leicht den Überblick verlieren.

Es gibt ein Paket, aber es ist "langweilig".

Ich werde versuchen, es in einfacheren und kürzeren Worten zu erklären...

Ein nicht-physikalisches selbstorganisierendes kombinatorisches Modell ist

eine einfache Suche nach allen möglichen Kombinationen von Elementen der Stichprobe (Prädiktoren) und Überprüfung jeder Iteration dieser Suche bei OOS, da die Prädiktoren Polynome oder Oberschwingungen sind, können solche Kombinationen komplizierter werden, so dass man sozusagen zu einer neuen Ebene übergeht und Kombinationen mit Kombinationen bildet und wieder bei OOS überprüft und wieder zu einer neuen Ebene übergeht und so weiter, bis der minimale Fehler bei OOS gefunden ist, dies ist eine Essenz der Selbstorganisation (wenn ich dort alles richtig verstanden habe)

Was ich vorschlage....

Wir alle wissen, dass jede Funktion in eine Fourier-Reihe zerlegt werden kann, wie in Abb.

Umgekehrt gilt, dass wir mit den richtigen Kombinationen von Oberschwingungen jede beliebige Funktion erhalten können, die wir benötigen

Stellen Sie sich nun vor, es gäbe eine Funktion (eine Kurve) oder einen Vektor, nennen Sie ihn, wie Sie wollen ... die ein Marktinstrument vollständig beschreibt und es übertrifft ... Es kann eine intelligente Saisonalität sein, die sich in einer Funktion oder Abhängigkeit von anderen Instrumenten oder Mondzyklen ausdrückt)) es ist absolut unwichtig und wir Sterblichen wissen es nicht, ABER wir können diese Abhängigkeit finden, ohne überhaupt zu wissen, wo wir danach suchen müssen ... Nennen wir diese Abhängigkeit - die den Markt antreibt - weiter Superabhängigkeit NW

Alles, was wir brauchen, ist

1) Nehmen Sie einen angemessenen Bereich von Oberschwingungen

2) ein Ziel erstellen

3) Gehen Sie alle möglichen Kombinationen zwischen den Obertönen durch und beobachten Sie das OOS.

Verstehen Sie, wie einfach und tiefgründig es ist, dass wir nicht wissen, wo wir die SP suchen müssen, aber wir können sie selbst synthetisch erzeugen!

Das ist es, es sieht wie ein einfacher Oversampling-Algorithmus aus, aber als ich ihn verstanden habe, war ich erstaunt...

Aber es gibt ein großes ABER! die Kombinationen werden Billionen betragen, wir brauchen einen Weg, um das zu umgehen und ich brauche Ihre Hilfe dabei

Vielleicht ist die Genetik ein Weg, um nach guten Kombinationen zu suchen?

Was halten Sie von dieser Idee und ihrer Umsetzung?

Ich habe eine solche Idee in meinem Indikator umgesetzt. Das ist sehr ressourcenaufwendig. Ich kann es auf 1000 Barren Geschichte, oder ich kann es auf 10000 Barren Geschichte anpassen. Unterm Strich gilt: Manchmal funktioniert es perfekt und sagt einen Punkt im Preis voraus. Aber zu anderen Zeiten ist es nicht einmal nahe dran. Der Grund dafür ist, dass alle diese Zeiträume nach dem Berechnungszeitpunkt auf dem Markt zu schweben beginnen. Wahrscheinlich ist es möglich, Korrekturen -+ von aktuellen Werten einzugeben, aber bei mir hat es nicht funktioniert.
 
Dr. Trader:

Was Sie hier beschreiben, entspricht dem Ergebnis "gut bei OOS". Zunächst wählen Sie die Modellparameter (harmonische Kombinationen) so aus, dass ein gutes Ergebnis für die Stichprobe erzielt wird. Daraus wählen Sie dann die Parameter aus, die für die Oos gut sind. Dies ist eine doppelte Anpassung an ein gutes Ergebnis, und bei neuen Handelsdaten wird das Modell höchstwahrscheinlich unbrauchbar sein...

Ich habe mit der Idee geschlafen und sie selbst verstanden, es ist ein Blödsinn, es ist nur eine Anpassung...

Aber hier ist die Frage, warum passt nicht alles andere? Sie wissen, dass jede Ausbildung mit OOS eine Anprobe für OOS ist, oder?

Dr. Trader:

Warum glauben Sie, dass das Ergebnis des MGUA positiv ausfallen wird?

Ich selbst verstehe das alles noch nicht, vielleicht werde ich es auch nie verstehen...

Es ist nur so, dass Nikolai mir in der privaten Korrespondenz empfohlen hat, Spektralanalyse zu studieren und sich mit MSUA vertraut zu machen, wenn man etwas Nützliches tun will.

Er sagte, dass er selbst damit angefangen hat, und als er seinen ersten funktionierenden Roboter baute, verwendete er nur zwei Bücher, eines von Ivakhnenk "MSIA" und das andere von Marple "Spectrum Anal".

die Übersetzung der Buchtitel ist nicht korrekt, ich habe sie nur zusammengefasst, um zu verdeutlichen, worüber wir im Allgemeinen sprechen.

Wer ist Nicholas? Abgesehen davon, dass er ein bescheidener und sehr intelligenter Mann ist.

Er hat einen Doktortitel in künstlicher Intelligenz und baut seit etwa 20 Jahren Roboter; seine neuesten Roboter sehen so aus:

я

Er hat diese Netze also schon vor etwa 30 Jahren gesponnen, zu einer Zeit, als wir Worte wie "neuronales Netz" noch nicht kannten ......

Und jetzt empfiehlt dieser Mann nur zwei Dinge: Fourier und Magua, der gesunde Menschenverstand sagt, dass es sich lohnt, darauf zu hören... Hier sind einige meiner Gründe, warum es funktionieren sollte))

 
Maxim Romanow:
Das ist in etwa der Punkt, auf den ich mit dem Indikator hinauswollte. Es ist sehr ressourcenintensiv. Ich kann sie auf die Historie von 1000 Balken oder auf die Historie von 10000 Balken einstellen. Unterm Strich gilt: Manchmal funktioniert es perfekt und sagt einen Punkt im Preis voraus. Aber zu anderen Zeiten ist es nicht einmal nahe dran. Der Grund dafür ist, dass alle diese Zeiträume nach dem Berechnungszeitpunkt auf dem Markt zu schweben beginnen. Sie können wahrscheinlich Korrekturen -+ von den aktuellen Werten eingeben, aber ich habe es nicht verstanden.
Ich verstehe, passend wie passend)) Ich stimme der Tatsache zu, dass ich falsch lag...
 

Frage

es gibt einen Vektor "x" und eine Matrix "y"

wir müssen schnell den euklidischen Abstand zwischen "x" und jeder Zeile der Matrix "y" berechnen

Ich habe die Standardfunktion "dist()" überholt und meine eigene Funktion geschrieben.

штатная

system.time(for(i in 1:nrow(m)) {dist.ve[i] <- dist(rbind(x,m[i,]))})

   user  system elapsed
   4.38    0.00    4.39

самописная

system.time(for(i in 1:nrow(m)) {dist.ve[i] <- euc.dist(x,m[i,])})
   user  system elapsed
   0.65    0.00    0.67

aber das ist nicht genug, ich würde gerne auf die zweite Null beschleunigen 0.0....

Was kann sonst noch getan werden?

Code:

x <- rnorm(10)
m <- matrix(data = rnorm(1000000),ncol = 10)

euc.dist <- function(x1, x2) sqrt(sum((x1 - x2) ^ 2))

dist.ve <- rep(0,nrow(m)) # distance vector
system.time(for(i in 1:nrow(m)) {dist.ve[i] <- dist(rbind(x,m[i,]))})
system.time(for(i in 1:nrow(m)) {dist.ve[i] <- euc.dist(x,m[i,])})
 
mytarmailS:

Aber hier ist die Frage, warum passt dann nicht alles andere? Denn dann stellt sich heraus, dass jede Ausbildung mit OOS-Prüfung für OOS geeignet ist, richtig? wenn nicht, warum nicht?

Die Kreuzvalidierung und der Oos-Test für stationäre Daten (mit konstanten, unveränderlichen Abhängigkeiten) sind nützlich. Bei nicht-stationären Daten ist sie nutzlos.

Sie können z. B. eine Reihe von Modellen mit demselben Algorithmus trainieren, aber mit Daten aus unterschiedlichen Zeiträumen; für jedes Modell können Sie die Gewinne aus Stichproben und Oos ermitteln und die Korrelation dieser beiden Gewinne bestimmen. Für allgemein bekannte Forex-Modelle gibt es in der Regel keine derartige Korrelation, d. h. der Gewinn aus der Stichprobe garantiert nichts, und in diesem Fall ist es sinnlos, eine Kreuzvalidierung durchzuführen, um zu versuchen, die Ergebnisse auf neuen Daten zu verbessern.
Ist die Korrelation hingegen hoch und positiv, dann hat das Modell ein gewisses Potenzial, und Sie können mit Sicherheit eine Kreuzvalidierung durchführen, um die Modellparameter anzupassen und die Ergebnisse zu verbessern.

 

Hier ist ein Beispiel für den vorherigen Beitrag. Wir nehmen die Eröffnungskurse des Eurusd für ein paar Monate, trainieren ein Modell (randomForest) auf ihnen und verwenden sie, um über einen kleinen Zeitraum neue Daten vorherzusagen. Der Zielwert ist die Preiserhöhung für den nächsten Balken (zwei Klassen 0 und 1). Dies alles wird 1000 Mal für verschiedene Zeitintervalle wiederholt, und dann wird die Korrelation ermittelt.

Am Ende sehen wir die Korrelation der Ergebnisse von Training und neuen Daten, in diesem Fall haben wir etwa 0,1, d.h. es sollte etwas im Training geändert werden, dieser Ansatz wird keinen Gewinn bringen. Ein gutes Ergebnis bei den Trainingsdaten ist keine Garantie für ein gutes Ergebnis in der Zukunft.

Mit der Funktion TrainModel können Sie Ihre eigenen Modelle trainieren, eine Kreuzvalidierung durchführen, eine genetische Anpassung vornehmen usw.

Dateien:
 
Dr. Trader:

Hier ist ein Beispiel für den vorherigen Beitrag. Wir nehmen die Eröffnungskurse des Eurusd für ein paar Monate, trainieren ein Modell (randomForest) auf ihnen und verwenden sie, um über einen kleinen Zeitraum neue Daten vorherzusagen. Der Zielwert ist die Preiserhöhung für den nächsten Balken (zwei Klassen 0 und 1). Das alles wird 1000 Mal für verschiedene Zeitintervalle wiederholt, und dann wird die Korrelation ermittelt.

Am Ende sehen wir die Korrelation der Ergebnisse von Training und neuen Daten, in diesem Fall haben wir etwa 0,1, d.h. es sollte etwas im Training geändert werden, dieser Ansatz wird keinen Gewinn bringen. Ein gutes Ergebnis bei den Trainingsdaten ist keine Garantie für ein gutes Ergebnis in der Zukunft.

Sie können die Funktion TrainModel verwenden, um Ihre Modelle zu trainieren, Kreuzvalidierung, genetische Anpassung usw. durchzuführen.

1. warum normalisieren Sie manuell?

2) Warum ist die Korrelation zwischen -1 und 1 gut? nur wenn 1 gut ist, ist -1 sehr schlecht, wenn ich die Idee richtig verstehe, ist -1 eine umgekehrte Korrelation

3) Haben Sie versucht, den Fehler eines trainierten Modells in einem gleitenden Fenster zu überwachen, und wenn es Ihnen nicht passt, das Modell neu zu trainieren und zu sehen, was dann passiert?

4. und die globale Idee, warum alles so schlecht funktioniert, der Markt ist nicht stationär, müssen Sie ein anderes Konzept der Merkmale Bildung zu erarbeiten, vielleicht vollständig auf das Paradigma der logischen Regeln wechseln, ich denke, Sie müssen weg von Zahlen fast vollständig zu bewegen, oder studieren Spektrum Analyse)))))

 

Gestern habe ich die Tüten durchwühlt, um eine Idee zu Ende zu bringen, ich habe nicht die richtige gefunden, aber eine interessante...

Das nennt man "Trend".

https://cran.r-project.org/web/packages/trend/trend.pdf

Das Paket implementiert verschiedene Trendtests und andere Dinge

zum Beispiel die Funktion

mk.test() - gibt Merkmale eines Trends an, z.B. aufwärts oder abwärts, usw...

pettitt.test() - so wie ich es verstehe, findet es den Punkt im Vektor, an dem der Trend begann

Sens.slope() - mit dieser Funktion können die Neigungswinkel des Trends berechnet werden

und eine Menge anderer besonderer Merkmale

Ich denke, solange man den Trend wissenschaftlich beobachten kann, sollte man ihn überprüfen) Ich habe mk.test()$Zg in einem gleitenden Fenster von 200 Werten berechnet, gemäß Clowes, und es stellte sich heraus, dass es so etwas wie ein Indikator ist

Über Null tendiert er nach oben, unter Null tendiert er nach unten.

й

Und was? Es fängt Trends ein und verwirrt die Kursrichtung nicht wie macd-ki und stochastc-ki.... Im Allgemeinen gefällt mir die Tatsache, dass sie immer Positionen in Richtung des Trends eröffnen...

In bestimmten Zeiträumen lässt sich damit sogar gutes Geld verdienen,

с

Wenn ich Chrono nehme, nicht M5, dann wird es vielleicht etwas Nützliches sein.

Karoch, was ich vorschlage, jemand, der einen leistungsfähigen Computer und Zeit, um alle diese Tests für die Tendenz, Steigungen, Winkel, etc. und füttern die MO, vielleicht wird das funktionieren, nur habe ich jetzt einen Computer mit voller Geschwindigkeit läuft, läuft zu verarbeiten, fertig zählen in vier Tagen und der Laptop, auf dem ich jetzt sitzen, kann es nur Seiten aussehen)

Grund der Beschwerde: