Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 197
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ich frage mich nur - nehmen Sie nur Preiswerte und verschiedene Indikatoren von Preisen als Prädiktoren hier? und verwendet jemand echte Volumen und Indikatoren von Volumen?
Ich arbeite mit Preisen, ohne Volumen.
Ich habe versucht, Volumina und ihre Indikatoren zu verwenden, aber es hat nicht funktioniert. Im Devisenhandel gibt es keine echten Volumina, aber es gibt Ticks, die den echten Volumina ein wenig zu entsprechen scheinen, d.h. im Prinzip kann man sie ausprobieren. Das Problem ist jedoch, dass die Historie der Balken und Ticks des Brokers einige "nicht so" Tick-Volumen enthält. Solange sich das Symbol auf dem Marktplatz im laufenden Terminal befindet, gibt es eine korrekte Historie der Tickvolumina für dieses Symbol. Wenn das Symbol aus der Börse entfernt oder das Terminal geschlossen wird, werden die Tickvolumina für diese Balken wie vom Broker angegeben übernommen. Und diese beiden Werte, "vom Terminal eingegeben" und "vom Makler erhalten", sind völlig unterschiedlich, manchmal zehnmal. Jetzt muss ich das Terminal ein paar Monate lang laufen lassen, um die echten Tick-Volumina zu erhalten, nicht die, die mir der Broker gibt, dann kann ich versuchen, sie wieder zu verwenden.
Ich arbeite mit Preisen, ohne Volumen.
Ich habe versucht, Volumina und ihre Indikatoren zu verwenden, aber es hat nicht funktioniert. Im Devisenhandel gibt es keine echten Volumina, aber es gibt Ticks, die den echten Volumina ein wenig zu entsprechen scheinen, d.h. im Prinzip kann man sie ausprobieren. Das Problem ist jedoch, dass die Historie der Balken und Ticks des Brokers einige "nicht so" Tick-Volumen enthält. Solange sich das Symbol auf dem Marktplatz im laufenden Terminal befindet, wird für es die korrekte Historie der Tickvolumina gesammelt. Wenn das Symbol aus der Börse entfernt oder das Terminal geschlossen wird, werden die Tickvolumina für diese Balken wie vom Broker angegeben übernommen. Und diese beiden Werte, "vom Terminal eingegeben" und "vom Makler erhalten", sind völlig unterschiedlich, manchmal zehnmal. Jetzt muss ich das Terminal ein paar Monate lang laufen lassen, um echte Tick-Volumina und nicht die des Brokers zu erhalten, und dann kann ich versuchen, sie wieder zu verwenden.
Für Informationen über die Sprache R und den neuen MetaTrader 5 Build 1467:
Statistische Verteilungen in MQL5 - nehmen Sie das Beste aus R und machen Sie es schneller
Viele neue mathematische und statistische Funktionen, ähnlich wie in R, werden in den nächsten Versionen hinzukommen. Dadurch werden mehr Berechnungen und Visualisierungen direkt im MetaTrader 5 möglich.Sie können vom MetaQuotes-Demo-Server auf 1467 aktualisieren.
Lieber Renat!
Lassen Sie mich auf den Kommentar zu Punkt 6 eingehen. Die entdeckten Berechnungsfehler in R im zitierten Link:Statistische Verteilungen in MQL5 - das Beste aus R herausholen und es schneller machen
Die Prüfung ist für die Gamma-Funktion durchgeführt worden. Die Überprüfung der übrigen Funktionen überlassen wir Ihnen.
Im Namen der Abteilung Data Science, vertreten durch den Manager und zwei Statistiker (ich kann Sie auf PM informieren), teilen wir Ihnen mit, dass die Dichte der Gamma-Verteilung am Nullpunkt streng genommen nicht auf Null reduziert ist.
R schätzt die Dichte am Punkt Null tatsächlich auf 1:
x <- seq(0, 20, 0.5) #support
plot(k, dgamma(x = x, shape = 1, scale = 1, log = FALSE)) #PDF plot
print(dgamma(x = 0.000001, shape = 1, scale = 1, log = FALSE)) #limiting to zero
Es ist jedoch zu erkennen, dass sich die Dichte der Einheit nähert, wenn x gegen Null tendiert.
Darüber hinaus ist laut:
https://en.wikipedia.org/wiki/Gamma_distribution
Bei x = 0, alpha = 1, beta = 1 ergibt der Zähler einen unbestimmten Wert, der den gesamten Bruch ins Ungewisse zieht.
Wir stellen fest, dass die Gamma-Dichte der Verteilung am Punkt Null streng genommen undefiniert ist. Nimmt man die Grenze auf der rechten Seite, ist die Dichte eins.
Vor diesem Hintergrund halten wir die Formulierung "Rechenfehler in R" für nicht korrekt. Genauer gesagt handelt es sich um eine Frage der Konvention: Was ist als gleich dem Ausdruck Null hoch Null zu betrachten? Die Gleichsetzung der Dichte der Gamma-Verteilung mit Null am Punkt Null scheint keine bedingte Praxis zu sein.
Sv.
Alexej
Erklären Sie, dass die Dichte der Gamma-Verteilung am Punkt Null streng genommen undefiniert ist. Und wenn der Grenzwert auf der rechten Seite genommen wird, ist die Dichte gleich eins.
Vor diesem Hintergrund halten wir die Formulierung "Rechenfehler in R" für nicht korrekt. Genauer gesagt ist es eine Frage der Konvention: als den Ausdruck Null mit der Potenz von Null gleichzusetzen. Die Gleichsetzung der Dichte der Gamma-Verteilung mit Null am Punkt Null scheint keine bedingte Praxis zu sein.
Wenn die Dichte (pdf) ungleich Null ist, dann muss auch das Integral (cdf) an diesem Punkt ungleich Null sein, andernfalls ist Null nicht möglich.
Aber cdf=0. Das ist schwer zu erklären.
Bei x=0 ist die pdf per Definition Null:
Wolfram Alpha:
Für nicht zentrale und zentrale Chi-Quadrat-Verteilungen:
Wenn die Dichte (pdf) ungleich Null ist, dann muss auch das Integral (cdf) an diesem Punkt ungleich Null sein, sonst gibt es keine Null.
Aber cdf=0. Das ist schwer zu erklären.
Bei x=0 ist pdf per Definition Null:
Wolfram Alpha:
Für nicht zentrale und zentrale Chi-Quadrat-Verteilungen:
Erklären Sie uns lieber selbst, was 0 ^ alpha - 1 ist, wenn alpha = 1 ist.
Das Integral ist auch dort nicht definiert.... Im Grenzfall ist sie jedoch nahe Null. Frage der Konventionen...
print(pgamma(q = 0.000001, shape = 1, scale = 1, log = FALSE, lower.tail = F)) #right side
print(pgamma(q = 0.000001, shape = 1, scale = 1, log = FALSE, lower.tail = T)) #left side
und verwendet jemand echte Volumen und Volumenindikatoren?
Damit der Grenzwert definiert werden kann, muss er für linke und rechte Ansätze gleich sein, was aber nicht der Fall ist:
http://www.wolframalpha.com/input/?i=Limit%5BPDF%5BGammaDistribution%5B1,1%5D,x%5D,+x-%3E0%5D
Damit der Grenzwert definiert werden kann, muss er für linke und rechte Ansätze gleich sein, was aber nicht der Fall ist:
http://www.wolframalpha.com/input/?i=Limit%5BPDF%5BGammaDistribution%5B1,1%5D,x%5D,+x-%3E0%5D
Es gibt nur einen auf der rechten Seite und das ist 1...
Was Wolfram 0 sagt, ist nicht in letzter Konsequenz die Wahrheit. Ich meine, das Wort "Fehler" in der Formulierung ist überflüssig...
Ich habe einen weiteren Fehler in R gefunden. R dividiert nicht korrekt durch 0.
Hier ist das Skript:
//| test.mq5 |
//| Copyright 2016, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property script_show_inputs
input double div = 0.0;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
Print(1.0/div);
}
//+------------------------------------------------------------------+
Die richtige Antwort in mql lautet.
Null-Division in 'test.mq5' (20,13)
mit Skriptstopp
Falsch, in R:
> 1/0
Inf
mit Skriptfortsetzung
Ich meine das Gleiche wie Alexey - das Verhalten von Programmen unter undefinierten Bedingungen kann unterschiedlich sein, und das ist kein Fehler. So wie die Architektur sein soll, so wird auch das Ergebnis sein.
Eine weitere interessante Beobachtung. Sie können nicht durch Null dividieren. Und aus negativen Zahlen kann man nicht die Wurzel ziehen. Ich weiß noch von der Uni, dass das alles möglich ist, aber darum geht es jetzt nicht, in einfacher Mathematik kann man nicht beides machen.
Warum bricht das gesamte Skript ab, wenn ich in mql durch 0 teile, aber wenn ich eine Wurzel aus einer negativen Zahl ziehe, erhalte ich "-nan(ind)", ohne dass das Skript abbricht, und dieses "-nan(ind)" kann für weitere Berechnungen verwendet werden (es bricht alle weiteren Berechnungen ab)? Hier würde ich in beiden Fällen das gleiche Verhalten des mql-Skripts erwarten.