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

 
Uladzimir Izerski #:

Ich kann Ihnen nur raten, nicht dem Weg der falschen Propheten zu folgen.

Ich schon.
 

Frohes neues Jahr!!!

Es ist wichtig, die Kompromisse zwischen Genauigkeit und Effizienz der KI sorgfältig abzuwägen.

Im Allgemeinen scheint mir dies die wichtigste Regel des Lebens zu sein. Es gibt keine Präzision beim Messen ohne Fehler. Und der Fehler hängt vom Zeitpunkt der Messung und der Mittelwertbildung ab.... sozusagen...

 
Nun, sie haben es unter die Lupe genommen und verbannt. Die Hauptsache gelöscht, wie man eine holländische SIM für ein paar Dollar macht))))
 
Valeriy Yastremskiy #:
Nun, sie haben es unter die Lupe genommen und verbannt. Die Hauptsache gelöscht, wie man eine holländische SIM für ein paar Dollar macht))))

und Gott sei Dank).

 

Gibt es irgendwelche Mani-Management-Skripte für mt5?

wie

1) Wenn Sie ein Geschäft abgeschlossen haben, wird der Stop automatisch gesetzt.

2) wenn Sie einen Verlust auf dem Konto erhalten, erlaubt es Ihnen nicht, weitere Geschäfte zu öffnen, etc.

 
mytarmailS #:

Gibt es irgendwelche maniengent Skripte für mt5?

wie

1) wenn Sie einen Handel eingeben, wird der Stop automatisch gesetzt

2) Wenn Sie auf Ihrem Konto einen Verlust erleiden, können Sie keine weiteren Geschäfte mehr eröffnen usw.

Es ist lustig, gerade gestern habe ich gedacht: "Was wäre, wenn MO nicht für die Richtung des Markteintritts, sondern für die Verwaltung verwendet wird, insbesondere, um den Übergang zum Breakeven zu verwalten, Stops und Take-Outs zu setzen".

Es sollte eine Menge solcher Dinge in der Codebasis geben - suchen Sie danach.

 
mytarmailS #:

Alexey, ich denke, du weißt es, aber vielleicht auch nicht. Ich werde dir zeigen, wie Algorithmen funktionieren, die Blätter/Vektoren mit variabler Länge als Eingabe verwenden


Wir haben ein Blatt mit Vektoren variabler Länge, ein Vektor == eine Beobachtung.

Was macht das Modell, der Algorithmus "unter der Haube", wenn er diese Daten nimmt? Er verwandelt sie in eine Matrix.

Da die Matrix bei realen Daten jedoch riesig ist, wandelt der Algorithmus die Daten in eine speichereffiziente dünnbesetzte Matrix um.

Es ist also immer noch eine Matrix unter der Haube.) (Vorsicht Daten)


Alle Warenkörbe sind natürlich auf Vektoren bekannter fester Größe reduziert, die der Anzahl der Artikel im Laden entspricht.

Unser Fall sieht ganz anders aus. Der Einfachheit halber nehmen wir an, die Preise seien eine Folge von Renko-Balken, die jeweils mit 1 oder -1 gekennzeichnet sind. Für jeden Balken an der Position N ist der Merkmalsvektor alle vorherigen Balken - ein Vektor aus 1 und -1 der Länge N-1. Für die Länge des Merkmalsvektors gibt es a priori keine Beschränkungen. Die Verwendung einer (von uns) vorgegebenen festen Anzahl von Balken für die Merkmale ist eine Zwangsmaßnahme. Wir wollen uns von dieser Einschränkung lösen und Algorithmen entwickeln, die mit Vektoren beliebiger Länge umgehen können.

Ich finde rekursive Funktionen als mathematisches Ausgangsmaterial für solche Algorithmen. Sie nehmen als Eingabe einen Vektor beliebiger Größe, werden aber durch Funktionen mit einer festen Anzahl von Argumenten definiert. Das einfachste Beispiel ist der exponentielle Mittelwert.

 
Aleksey Nikolayev #:

Alle Warenkörbe werden natürlich auf Vektoren mit bekannter, vorher festgelegter Größe reduziert, die der Anzahl der Artikel aller Produkte im Geschäft entspricht.

Unser Fall sieht ganz anders aus. Der Einfachheit halber nehmen wir an, die Preise seien eine Folge von Renko-Balken, die jeweils mit 1 oder -1 gekennzeichnet sind. Für jeden Balken an der Position N besteht der Merkmalsvektor aus allen vorherigen Balken - ein Vektor aus 1 und -1 der Länge N-1. Für die Länge des Merkmalsvektors gibt es a priori keine Beschränkungen. Die Verwendung einer (von uns) vorgegebenen festen Anzahl von Balken für die Merkmale ist eine erzwungene Maßnahme. Wir möchten uns von dieser Einschränkung lösen und Algorithmen entwickeln, die mit Vektoren beliebiger Länge umgehen können.

Ich finde rekursive Funktionen als mathematisches Ausgangsmaterial für solche Algorithmen. Sie nehmen als Eingabe einen Vektor beliebiger Größe an, sind aber durch Funktionen mit einer festen Anzahl von Argumenten definiert. Das einfachste Beispiel ist der exponentielle Mittelwert.

Wonach genau wollen Sie suchen und auf welche Weise?

Wir haben zum Beispiel ein Muster, drei Spitzen oder was auch immer (Regel, Ereignis, Muster, Cluster).


Alles, was dazwischen passiert, betrachten wir als Rauschen und lassen es außer Acht.

Wir nehmen einen verrauschten Vektor/eine verrauschte Matrix als Eingabe und prüfen, ob es ein Muster gibt oder nicht....

Betrachten Sie dieses Konzept oder ein anderes?

========================================================

Ich sehe es als eine Abfolge von Ereignissen, die passieren müssen, und sie werden durch logische Regeln beschrieben...

Ereignis == logische Regel.

Zum Beispiel: Wenn Ereignis 1 eingetreten ist und es kein Ereignis 2 gab, dann warten wir auf Ereignis 3 usw. ....

Es gibt also zwei Arten von Regeln/Ereignissen, "Go"-Ereignisse, wenn die Suche fortgesetzt wird, und "Stop"-Ereignisse, wenn alles abgebrochen wird.


Die Architektur ist wie folgt

1) Regeln werden durch eine Grammatik erzeugt

2) der generierte Algorithmus sucht und verbessert die Regeln durch Fitnessfunktionen.

=========================

Hier ist ein Beispiel für eine einfache Grammatik für mehrdimensionale Daten, in diesem Fall OHLC.

library(gramEvol)

Xcolnames <- c("open","high","low","close")

ruleDef <- list(
  res = grule(t(as.data.frame(multi.expr))),
  
  multi.expr = grule( c(single.expr, single.expr, single.expr,
                        single.expr, single.expr, single.expr)),
  
  single.expr = grule(list(r=c( go_rules   = as.character(expression(Expr)),
                                stop_rules = as.character(expression(Expr))))),
  
  
  Expr     = grule(expr, expr & expr ),
  
  expr     = grule(logy_op(one_var,one_var) ),
  one_var  = gsrule('X[<id>,<var_name>]'),
  
  id       = grule(i,numb,i+numb),
  numb     = gvrule(1:10),
  var_name = gvrule(Xcolnames),
  logy_op  = grule(">","<"))

grammarDef <- CreateGrammar(ruleDef)
gr <- GrammarRandomExpression(grammarDef, 1)
rbind.data.frame(eval(gr))


die Regeln, die die Grammatik generiert.

Dieser Block von Regeln ist wie eine einzelne Regel mit einer Reihe von Bedingungen.

"X" ist eine Matrix mit Attributen, die Schleife "i" geht darauf und wählt aus, was ihr gefällt, ein sehr flexibles System.

                                                       go_rules
r   X[i, "low"] < X[2, "close"] & X[i + 3, "low"] > X[i + 2, "low"]
r.1                             X[i + 2, "open"] < X[i + 8, "high"]
r.2   X[2, "open"] < X[i + 3, "high"] & X[i, "high"] < X[8, "high"]
r.3                                   X[1, "low"] < X[i + 8, "low"]
r.4   X[3, "open"] > X[3, "close"] & X[i + 1, "open"] < X[2, "low"]
r.5                                 X[i, "high"] < X[i + 2, "open"]
                                                       stop_rules
r                                    X[i, "open"] > X[2, "close"]
r.1  X[i, "low"] > X[i, "high"] & X[i + 2, "high"] < X[i, "high"]
r.2                                  X[3, "high"] < X[2, "close"]
r.3    X[1, "high"] > X[2, "open"] & X[i, "high"] > X[i, "close"]
r.4                                  X[4, "open"] < X[2, "close"]
r.5 X[i, "high"] < X[1, "high"] & X[2, "low"] < X[i + 2, "close"]

Im Prinzip ist schon alles implementiert, wenn Interesse besteht, kann ich es dir zuwerfen.



PS es gibt keine Beschränkung auf die Größe der Matrix von Attributen, jede Instanz kann beliebig groß sein, die Hauptsache ist hier, dass alle Regeln in der Reihenfolge gearbeitet, es gibt keine Bindung an die Zeit.

 
mytarmailS #:

Wonach genau wollen Sie suchen und auf welche Weise?

Wir haben zum Beispiel ein Muster, drei Spitzen oder was auch immer (Regel, Ereignis, Muster, Cluster).


Alles, was dazwischen passiert, betrachten wir als Rauschen und lassen es außer Acht.

Wir nehmen also einen verrauschten Vektor/eine verrauschte Matrix als Eingabe und prüfen, ob es ein Muster gibt oder nicht....

Ist das ein Konzept, das Sie in Betracht ziehen, oder etwas anderes?

Mein Konzept ist so weit wie möglich gefasst, da es keine besonderen Einschränkungen gibt, und viele Dinge passen darauf. Ihr Beispiel passt wahrscheinlich auch hinein. Besonders wichtig ist die Tatsache, dass es keine fest definierte Musterlänge gibt.

Auf jeden Fall geht es mir darum, dass bei SB die Wahrscheinlichkeit von 1 oder -1 immer 0,5 ist und man nach Stellen suchen sollte, wo die Wahrscheinlichkeit (Häufigkeit) stark von diesem Wert abweicht. In Ihrem Muster könnten das z.B. die Hänge des dritten Peaks sein.

Ich nehme an, dass die Regel "wir befinden uns auf der linken Flanke des dritten Peaks" durch rekursive Funktionen ausgedrückt werden kann. Ich glaube aber nicht, dass sich diese Funktionen einfach explizit ausschreiben lassen, so dass man MO-Algorithmen braucht, um sie zu konstruieren.

 
Aleksey Nikolayev #:

Aber ich glaube nicht, dass man diese Funktionen einfach explizit ausschreiben kann, so dass wir MO-Algorithmen brauchen, um sie zu konstruieren.

Nun, ich habe Ihnen einen Algorithmus vorgeschlagen, der Ihren Anforderungen entspricht


1) keine Zeitbeschränkung, da wir selbst schreiben, was wir brauchen

2) beliebige Logik für die Suche nach Regelmäßigkeiten, da wir selbst schreiben, was wir brauchen

3) beliebige Wahl der Beschreibung der Regelmäßigkeit, entweder durch log. Regeln oder durch Funktionen , da wir selbst schreiben, was wir brauchen.


In meinem vorgeschlagenen Konzept.

werden diese Muster äquivalent sein, und die Muster selbst können von beliebiger Komplexität sein.

     open high low close
[1,]    1    0   0     0
[2,]    0    1   0     0
[3,]    0    0   1     0
[4,]    0    0   0     1
[5,]    0    0   0     0
      open high low close
 [1,]    0    0   0     0
 [2,]    0    0   0     0
 [3,]    1    0   0     0
 [4,]    0    0   0     0
 [5,]    0    0   0     0
 [6,]    0    1   0     0
 [7,]    0    0   1     0
 [8,]    0    0   0     0
 [9,]    0    0   0     0
[10,]    0    0   0     1

und keine AMO kann das tun.

und es gibt "Stopp"-Regeln, und auch das kann kein AMO.

Ich meine ein allgemeines AMO mit tabellarischen Daten als Input.

Grund der Beschwerde: