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

 
СанСаныч Фоменко #:

Können Sie mir ein Beispiel für eine AO nennen? Ich hatte den Eindruck, dass die Suche nach einem Lehrer ein Stück Arbeit ist und sich für die Automatisierung eignet.

Man kann...

Man muss es so einfach und reproduzierbar wie möglich machen, wenn es Interesse gibt...

Es würde ein wenig Zeit in Anspruch nehmen.

 
mytarmailS #:

können Sie...

Wir müssen das Beispiel so einfach und reproduzierbar wie möglich gestalten, falls Interesse besteht...

Sie brauchen ein wenig Zeit

Das ist für mich sehr interessant. Meine Suche nach einem Lehrer ist ein langer und schmerzhafter Prozess.

 
mytarmailS #:

Ihr Problem ist ein Optimierungsproblem, bei dem nach unbekannten Parametern gesucht wird.

Hier ist der EINZIGE Artikel, den Sie brauchen, um https://www.mql5.com/ru/articles/2225 zu studieren.


Wenn Sie AMO unterrichten wollen, um den Gewinn zu maximieren und den Drawdown zu minimieren:


brauchen Sie

1) eine Fitnessfunktion erstellen, eine Funktion, die Gewinne und Verluste aus Handelssignalen zählt.

2) einen beliebigen MO-Algorithmus, der Signale für den Handel erzeugt, für die Fitnessfunktion (S.1)

3) ein beliebiger Optimierungsalgorithmus (genetisch, Partikelschwarm, Churn), der Signale als Ziele für AMO erzeugt (S.2).


Algorithmus wie dieser

1) AO erzeugt ein Ziel für AMO

2) AMO wird auf dieses Ziel trainiert

3) AMO erstellt eine Prognose von Handelssignalen

4) Die Handelssignale werden von FF bewertet und ergeben ein Ergebnis

5) das FF-Ergebnis wird von AO bewertet und weiter maximiert/minimiert und so weiter im Kreis, bis ein akzeptables Ergebnis erzielt wird.


==========

AO - Optimierungsalgorithmus

AMO - Algorithmus für maschinelles Lernen

FF - Fitnessfunktion

=========


ps. Wenn Sie mit Neuronka und nicht mit einem AMO arbeiten wollen, können Sie die Gewichte mit Hilfe von AO ändern, ohne Targeting zu lernen.

Vielen Dank dafür!

Diese Formulierung der Antwort führte sofort zu der Frage nach der Konkretisierung des manuellen Handels, wo die Klarheit und Konkretheit der Signale, ihre Vielfalt und übermäßige Flexibilität fehlen. Das heißt, es gibt Stoff zum Nachdenken.

 
СанСаныч Фоменко #:

Das ist für mich sehr interessant. Meine Suche nach einem Lehrer ist ein langer und schmerzhafter Prozess.

Hier ist der Code für das Lehren des Rendom-Waldes mit Hilfe von AO,

die Fitnessfunktion (UNSER ZIEL) ist es, ein schönes/stabiles Gewinnwachstum zu finden, nämlich die maximale Korrelation zwischen der Bilanzdynamik und der geraden Wachstumslinie

#  install.packages(c("randomForest","GA"))
library(randomForest)
library(GA)


#  создаю фейковые данные для простоты воспроизводимости
price <- cumsum(rnorm(100))
X <- embed(price,dimension = 10)[,10:1]
X <- t(apply(X,1,scale))
price <- tail(price,nrow(X))

#  настройка графики
par(mar=c(2,2,2,2))
layout(1:2)

#  запускаю генетический алгоритм
#  который "придумывает" такой таргет полсе обучения на котором
#  АМО даст самый красивый прирост капитала
best_res <- 0
GA <- ga(type = "real-valued",
         fitness = fitness, 
         lower = rep(-5,nrow(X)),
         upper = rep( 5,nrow(X)),
         popSize = 100,
         maxiter = 50,
         run = 20)


Hier ist der Code der Funktionen zur Berechnung von Gewinn und FF.

#  простая функция которая считает прибыль ( возможно не верно :)  ) 
count_equity <- function(trade_signal, price)  cumsum(c(diff(price),0)*trade_signal)

#  ФФ которая берет выход из АО и обучает АМО
fitness <- function(ga_out){
  
  target <- ga_out
  set.seed(123)
  rf <- randomForest(target~., X, ntree=100)
  pr <- predict(rf,X)
  
  trade_signal <- sign(pr)
  balance <- count_equity(trade_signal = trade_signal,price = price)
  res <- cor(balance, 1:length(balance))
   
  #  просто графика, необезательный елемент
  if(res>best_res){
    best_res <<- res
    plot(price,t="l",main="price")
    color <- ifelse(trade_signal==1,3,2)
    points(price,col=color,lwd=5,pch=20)
    plot(balance,t="l",col=4,main="balance")
  }
  return(res)
}



Hier ist das Ergebnis: AO hat ein solches Ziel für AMO gefunden, dass wir, wenn wir seine Signale handeln, ein schönes Gewinnwachstum erhalten.


 
Elvin Nasirov #:

Ich danke Ihnen!

Diese Antwort führte sofort zu der Frage nach der Konkretisierung des manuellen Handels, wo die Klarheit und Konkretheit der Signale, ihre Vielfalt und übermäßige Flexibilität fehlen. Das heißt, es gibt Stoff zum Nachdenken.

Ich kann meinen manuellen Handel immer noch nicht konkretisieren....

 
mytarmailS #:

Hier ist der Code für den Unterricht des Rendom Forrest mit AO-Tools,

Fitnessfunktion (UNSER ZIEL) - Finden eines schönen/stabilen Gewinnwachstums, d. h. die maximale Korrelation zwischen der Bilanzdynamik und einer geraden, steigenden Linie


Hier ist der Code für die Gewinn- und FF-Berechnungsfunktionen



Hier ist das Ergebnis, AO hat ein solches Ziel für AMO gefunden, dass wir, wenn wir seine Signale handeln, einen schönen Gewinnzuwachs erhalten werden


Und? ) Wie wirkt es sich auf das Ergebnis bei neuen Daten aus? Es wird ohne ff durch einfaches Markup gemacht.
 
Elvin Nasirov #:

Ich würde nicht sagen, dass ich faul bin, andere Markups zu machen, ich probiere verschiedene Varianten aus, und da ich kein Experte für maschinelles Lernen bin, versuche ich, wenn mir eine Idee in den Sinn kommt, zumindest einige Varianten von Beispielen mit Versuchen zu finden, das Ergebnis zu erreichen.

Als ich versuchte, eine parametrische Version der Lösung mit ihren eigenen Werten der Indikatoren zu machen, aber es stellte sich heraus, dass es so viele Varianten des Satzes von Werten der Indikatoren, dass mit aktuellen Rechenleistung Auswahl der Parameter wird fast 10 Jahre durchgeführt werden).

Ich war überrascht, als ich die Formulierung "jeden profitablen TS vom Markt nehmen" las. Ich habe diese Option nicht einmal in Betracht gezogen, da ich dachte, dass es sie nicht gibt.

Das ist alles eine Art komplizierte Wahrnehmung. Man muss die Ineffizienz finden. Wenn Sie sie nicht selbst finden können, suchen Sie sie bei anderen. Es gibt Signale mit Geschichte auf dem Markt.
 
Maxim Dmitrievsky #:
Was soll's? ) Es ist ein einfaches Markup ohne FF.

Wenn es so einfach wäre, gäbe es keine AO und FF...


Wenn wir genau wissen, was wir brauchen, und verstehen, wie wir es algorithmisieren können, können wir es mit Markup machen.

Und es gibt Fälle, in denen wir einfach nur sagen wollen : "Ich weiß nicht, wie es aussehen soll, aber lass es gut aussehen ".

Alles, was wir beschreiben können, ist gut/schlecht, und das ist es, was in der FF steht.


Hier ist ein Beispiel für eine Aufgabe:

Die Aufgabe besteht darin, ein AMO so zu trainieren, dass es bei neuen Daten zu einer der Klassen keine Fehler in seinen Vorhersagen macht, eine der Klassen darf überhaupt keine Fehler machen...

Wie kann man ein solches Markup erstellen?


 
mytarmailS #:

Wenn es so einfach wäre, gäbe es keine AO und FF.


Wenn man genau weiß, was man braucht, und versteht, wie man es algorithmisieren kann, kann man Markup verwenden.

Und es gibt Fälle, in denen wir einfach nur sagen wollen - ich weiß nicht, wie es aussehen soll, aber mach, dass es gut aussieht .

Alles, was wir beschreiben können, ist gut/schlecht, und das ist es, was in die FF eingebaut ist.


Hier ist ein Beispiel für eine Aufgabe:

Die Aufgabe besteht darin, AMO so zu trainieren, dass es bei neuen Daten für eine der Klassen keinen Fehler in seinen Vorhersagen macht, wobei es einer der Klassen verboten ist, überhaupt einen Fehler zu machen....

wie kann man das mit Markup machen?


Nach dem Markup wirft man die Verlustgeschäfte in die dritte Klasse, und man erhält dieselbe flache Kurve.
Und wie kann die Auswahl von Optimierungskriterien etwas für neue Daten tun? Sie ist ein Mittel zur Verbesserung eines vorgefertigten TS. Die benutzerdefinierten Verluste suchen und sehen, was es bei neuen Daten gibt? Auch das ist keine gute Idee.
 
Maxim Dmitrievsky #:
Nach der Markierung wirft man die Verlustgeschäfte in die 3. Klasse, und man erhält die gleiche glatte Kurve.

So viel Code muss man für diese Klassen schreiben, sie rauswerfen, neu trainieren...

In FF schreibe ich nur 2 Zeilen, bestrafe für einen Klassenfehler und belohne für eine richtige Antwort, und das war's, und dann fantasiert es, wie es das von selbst macht und braucht nicht einen Berg von Code....


OK, das war einfach, ein weiteres Beispiel für eine Aufgabe

Die AMO-Eingabe ist der Eurodollar, und ich möchte, dass die Ausgabe eine Reihe ist , die

1) kointegriert mit dem Pfund

2) wenn wir Arbitrage AMO Reihe / Pfund handeln, so dass es einen Gewinn gibt.

Wie kann dies durch Markup getan werden?

Maxim Dmitrievsky #:
Optimierung kann etwas für neue Daten tun?

so wie bei der regulären MO, wir trainieren und schauen mit einem Auge auf die Strecke, mit dem anderen auf den Test.