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

 

Zum Thema, wie man Neuronen von R nach mql übertragen kann:

Ich habe es mit dem Paket nnet gemacht. Sehen Sie sichhttps://cran.r-project.org/web/packages/nnet/index.html an (Paketquelle: nnet_7.3-12.tar.gz). Der Ordner src / nnet.c ist im Archiv enthalten.

Wir brauchen die Funktion fpass, die ersten paar Zeilen vor thisError = 0.0 (dies ist der Beginn der Fehlerberechnung für Backprop, keine Notwendigkeit für einfache Vorhersage)


Dies ist der Code, den wir in unserem EA verwenden können -

   double sigmoid(double sum)
     {
      if(sum<-15.0)
         return (0.0);
      else if(sum>15.0)
         return (1.0);
      else
         return (1.0 / (1.0 + exp(-sum)));
     }

//nnet_hidden - число нейронов в скрытом слое
//выход один
//nnet_weights - массив с весами нейронки взятыми из R после обучения nnet модели

int weights_it=0;
double hiddenLayer[];
ArrayResize(hiddenLayer,nnet_hidden);
for(int i=0; i<nnet_hidden; i++)
 {
  hiddenLayer[i]=nnet_weights[weights_it++];
  for(int j=1; j<=nnet_bars; j++)
    {
     hiddenLayer[i]+=openPrices[j]*nnet_weights[weights_it++];
    }
  hiddenLayer[i]=sigmoid(hiddenLayer[i]);
 }
double prediction=nnet_weights[weights_it++];
for(int i=0; i<nnet_hidden; i++)
 {
  prediction+=hiddenLayer[i]*nnet_weights[weights_it++];
 }
if(!linout)
 {
  prediction = sigmoid(prediction);
 }

dieser Code funktioniert nur, wenn der Modellparameter skip = FALSE ist
Wenn dies nicht der Fall ist oder ein Softmax verwendet wird - suchen Sie nach Unterschieden in der Funktion fpass()


Gewichte (Array nnet_weights) sollten nach dem Training von R selbst kopiert werden

library(nnet)
trainedModel <- nnet(y = 1:10, x = matrix(runif(20),ncol=2), size=10)
nnet_weights <- trainedModel$wts
cat("double nnet_weights[] = {", paste(format(weights,digits=16,scientific=T), collapse=","), "};", file="D:/weights.txt") #сохранить  веса в файлик чтоб оттуда скопипастить в советник
 
О! Das ist doch was. Ein bisschen mehr Arbeit und Sie können es verwenden. Danke! (Lacht)
 

Ein weiterer kleiner einführender Artikel zum Thema Bewehrung, in dem es um Folgendes geht

Es wäre interessant, eine kleine Teamwork- und Brainstorming-Sitzung zu mql zu organisieren und die Erfahrungen auszutauschen.

https://proglib.io/p/trade-learning/

Трейдинг и машинное обучение с подкреплением
Трейдинг и машинное обучение с подкреплением
  • 2018.02.15
  • matyushkin
  • proglib.io
В статье рассмотрено, как машинное обучение с подкреплением может применяться для трейдинга финансовых рынков и криптовалютных бирж. Академическое сообщество Deep Learning в основном находится в стороне от финансовых рынков. В силу ли того, что у финансовой индустрии не лучшая репутация, что решаемые проблемы не кажутся слишком интересными для...
 

Meiner Meinung nach ergibt das Reinforcement Learning in der Regel ein Modell mit einem sehr großen Überhang, und die Kreuzvalidierung ist in diesem Fall nicht die Lösung. Es muss spezielle Mechanismen im Modell selbst geben, die eine Überanpassung verhindern.

Für diejenigen, die mit diesem Thema nicht vertraut sind, eine kurze Erläuterung: Anstelle der üblichen Modellbewertung (Genauigkeit, r2, logloss usw.) wird eine spezielle Fitnessfunktion mit einer eigenen Modellbewertungslogik erstellt. Eine solche Fitnessfunktion kann zum Beispiel den Gewinn eines Modells beim Handel oder die Sharperatio berechnen. Und die Modellparameter werden mit Hilfe eines genetischen Algorithmus ausgewählt.

Es ist interessant, dass der Optimierer in MT4 und MT5 auch nach dem Prinzip des Lernens mit Verstärkung arbeitet - bei jedem Balken (oder sogar Tick) erhält der Expert Advisor aktuelle Werte des Preises und der Indikatoren, trifft einige Entscheidungen, und die endgültige Einschätzung des Expert Advisors wird als Handelsergebnis betrachtet. Die Parameter des Expert Advisors werden durch Genetik ausgewählt, um die Schätzung zu erhöhen.
Anhand der frei verfügbaren Expert Advisors für MT5 können wir deutlich sehen, dass diese Lernmethode viele Verlierer hervorbringt. Aber manchmal sind auch gute EAs gut.

 
Dr. Trader:

Meiner Meinung nach ergibt das Reinforcement Learning in der Regel ein Modell mit einem sehr großen Überhang, und die Kreuzvalidierung wird in diesem Fall nicht helfen. Es muss spezielle Mechanismen im Modell selbst geben, die eine Überanpassung verhindern.

Für diejenigen, die mit diesem Thema nicht vertraut sind, eine kurze Erläuterung: Anstelle der üblichen Modellbewertung (Genauigkeit, r2, logloss usw.) wird eine spezielle Fitnessfunktion mit einer eigenen Modellbewertungslogik erstellt. Eine solche Fitnessfunktion kann zum Beispiel den Gewinn eines Modells beim Handel oder die Sharperatio berechnen. Und die Modellparameter werden mit einem genetischen Algorithmus ausgewählt.

Das Interessante daran ist, dass der Optimierer in MT4 und MT5 auch nach dem Prinzip des Lernens mit Verstärkung arbeitet - bei jedem Balken (oder sogar Tick) erhält der Expert Advisor die aktuellen Werte der Preise und Indikatoren, trifft einige Entscheidungen, und die endgültige Einschätzung des Expert Advisors ist das Ergebnis des Handels. Die Parameter des Expert Advisors werden durch Genetik ausgewählt, um die Schätzung zu erhöhen.
Anhand von frei verfügbaren Expert Advisors für MT5 können wir deutlich sehen, dass diese Lernmethode eine Menge "Verluste" verursacht. Aber manchmal sind gute EAs auch gute EAs.

Es ist eine gute Analogie mit Optimierer, meine früheren Bot war über das, aber es ist zu einfach

Aber im Allgemeinen ist sie es nicht, RL, wenn sie nicht gegen die Genetik ist, betont sie deren Vorteile, z.B. die Möglichkeit, mit nicht-stationären Prozessen zu arbeiten. Insbesondere ist es möglich, Non-Greedy-Fitness-Funktionen zu verwenden, dank derer das Modell ständig lernt, während es läuft und zufällige Schritte macht. Und als Optimierer verwenden wir die NS-Füllung (nicht Genetik).

Dort ist es ein bisschen komplizierter, aber ich habe das Buch noch nicht zu Ende gelesen.

Ihre Aussage über Genetik, Optimierer und RL ist also falsch.

 

*ein Moment der Emotionen und der Philosophie und all dieser Dinge*

Stellen Sie sich einen klaren, sonnigen Tag vor. Sie sitzen im Gras an einem Teich, eine warme Frühlingsbrise weht und lässt das Wasser kräuseln, irgendwo in der Nähe hört man das Rauschen von Enten. In geringer Tiefe schwammen die Fische unter Wasser, berührten manchmal mit ihren Flossen die Oberfläche und zogen Kreise im Wasser. Ihre Nachbarin schöpfte Wasser und ihr Enkel warf Steine ins Wasser und jagte Frösche hin und her. Auf der anderen Seite des Teiches wäscht ein Mann sein Auto.

Der Preis ist wie die Wellen auf dem Wasser bei all der Aufregung, aber auch bei einem Sturm. Wir können den Wellen folgen und versuchen zu erraten, wann das Wasser an einem bestimmten Punkt steigt oder sinkt, aber wenn wir uns nicht an der Umgebung orientieren, werden wir uns meistens irren.

Der zukünftige Preiswert hängt nicht von vergangenen Preisbewegungen ab, sondern von den globalen Prozessen, die vergangene Preisbewegungen verursacht haben und neue verursachen werden.
Man muss nicht nur die Wellen auf dem Wasser beobachten, sondern auch den Wind, die Flugbahn der Fische, den Eimer des Nachbarn usw., dann wird die Art der Wellen auf dem Wasser klar und vorhersehbar sein.

Wenn man also über alle globalen Prozesse, die den Preis beeinflussen, Bescheid weiß, kann man lernen, Vorhersagen zu treffen, und jedes einfache Modell aus dem vorigen Jahrhundert ist ausreichend.
Das Problem ist, dass es in der Regel nur ein Preisdiagramm gibt, und das ist nicht genug.

 

Hier erfahren Sie, wie Sie RL und NN verbinden

 

und ein Vid, es gibt noch einen Teil 2.

Das war's, ich werde nicht mehr spammen, wer Interesse hat, kann es lesen.


 
Die neuronalen Netze in MT sind einfach. Es gibt eine Bibliothek von Microsoft namens CNTK. Es ist für Python, C# und C++ implementiert. Die gesamte Analyse und das Training des Netzes werden in Python durchgeführt, während C++ verwendet wird, um eine DLL zu schreiben, die das trainierte Netz lädt und Berechnungen damit durchführt. Meiner Meinung nach ist dies die beste Option. Die zweite Möglichkeit ist die Verbindung von Python mit MT. Ich habe dafür eine einfache Bibliothek geschrieben. Bibliothek. Wir verbinden es und können alles nutzen, was in Python verfügbar ist. Und es ist eine Menge Material verfügbar. Ich überlege, ob ich in meinem Blog über maschinelles Lernen schreiben soll.
 
Grigoriy Chaunin:
Mit neuronalen Netzen in MT ist alles ganz einfach. Es gibt eine Bibliothek CNTK von Microsoft. Es ist für Python, C# und C++ implementiert. Die gesamte Netzwerkanalyse und das Training werden in Python durchgeführt, während C++ verwendet wird, um eine DLL zu schreiben, die das trainierte Netzwerk lädt und Berechnungen damit durchführt. Meiner Meinung nach ist dies die beste Option. Die zweite Möglichkeit ist die Verbindung von Python mit MT. Ich habe dafür eine einfache Bibliothek geschrieben. Bibliothek. Wir verbinden es und können alles nutzen, was in Python verfügbar ist. Und es ist eine Menge Material verfügbar. Ich überlege, ob ich in meinem Blog über maschinelles Lernen schreiben soll.

es wäre interessant, über Strategien und persönliche Gedanken/Erfahrungen zu lesen... für mich persönlich

denn das meiste, was hier geschrieben wird, ist einfach nur Mist, bei dem es darum geht, einen Haufen Bibliotheken zu durchforsten und herauszufinden, worauf man am besten schreiben sollte... das ist eine Epidemie, und alles wird verschwendet.

Obwohl der Grundgedanke schon vor langer Zeit von fxsaber geäußert wurde - mit dem gleichen Ansatz könnte das Thema genauso gut abgeschlossen werden, weil es ursprünglich falsch ist