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

 
ivanivan_11:
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.

 
Dr. Trader:

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.

Ich weiß nicht, warum sie so extrem sind, aber ich spreche nicht von Exoten wie Brasilien, Südafrika, Polen oder Ozeanien.
 
Renat Fatkhullin:

Für Informationen über die Sprache R und den neuen MetaTrader 5 Build 1467:

  • Eine aktualisierte Version der R-ähnlichen Statistikbibliotheken wurde veröffentlicht:

    Statistische Verteilungen in MQL5 - nehmen Sie das Beste aus R und machen Sie es schneller

  • Berechnungen in MQL5 sind 3 bis 7 Mal schneller als in R (selbst wenn man berücksichtigt, dass die Funktionen dort in C++ implementiert sind).
  • Einige R-Funktionen weisen aufgrund alter Optimierungs-/Vereinfachungsmethoden Fehler auf, die zu fehlerhaften Ergebnissen führen
  • Hinzufügen einer Beta-Version von grafischen Bibliotheken ähnlich wie in R, die die Möglichkeit bietet, die Daten wie in R zu visualisieren.
  • Bequeme Funktion ArrayPrint hinzugefügt, die sowohl Standard-Arrays als auch Strukturen wie in R ausgibt


Sie können vom MetaQuotes-Demo-Server auf 1467 aktualisieren.

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.

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

Gamma distribution - Wikipedia
Gamma distribution - Wikipedia
  • en.wikipedia.org
Gamma Parameters Support PDF CDF Mean Median Mode Variance Skewness Excess kurtosis Entropy MGF CF With a shape parameter k and a scale parameter θ. With a shape parameter α = k and an inverse scale parameter β = 1/θ, called a rate parameter. With a shape parameter k and a mean parameter μ = k/β. In each of these three forms...
 
Alexey Burnakov:

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.

> n <- 5> k <- seq(0,1,by=1/n)> gamma_pdf<-dgamma(k, 1,1, log = FALSE)> gamma_cdf<-pgamma(k, 1,1, log = FALSE)> k[1] 0.0 0.2 0.4 0.6 0,8 1,0> gamma_pdf[1] 1,0000000 0,8187308 0,6703200 0,5488116 0,4493290 0,3678794> gamma_cdf[1] 0,0000000 0,1812692 0,3296800 0,4511884 0,5506710 0,6321206

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:


Wolfram|Alpha: Computational Knowledge Engine
  • www.wolframalpha.com
Wolfram|Alpha is more than a search engine. It gives you access to the world's facts and data and calculates answers across a range of topics, including science, nutrition, history, geography, engineering, mathematics, linguistics, sports, finance, music...
 
Quantum:

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

 
ivanivan_11:
und verwendet jemand echte Volumen und Volumenindikatoren?
Siehe https://www.mql5.com/ru/forum/86386/page174#comment_2911488
Машинное обучение: теория и практика (торговля и не только)
Машинное обучение: теория и практика (торговля и не только)
  • www.mql5.com
Добрый день всем, Знаю, что есть на форуме энтузиасты machine learning и статистики...
 

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


Wolfram|Alpha: Computational Knowledge Engine
  • www.wolframalpha.com
Wolfram|Alpha is more than a search engine. It gives you access to the world's facts and data and calculates answers across a range of topics, including science, nutrition, history, geography, engineering, mathematics, linguistics, sports, finance, music...
 
Quantum:

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.