Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 199
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
Erläutern Sie dann in der Reihenfolge der Wörtlichkeit, wie bei einer gleichmäßigen, kontinuierlichen Verteilung die Dichte am Extrempunkt positiv ist und das Integral Null ist: https://en.wikipedia.org/wiki/Uniform_distribution_(kontinuierlich)
Zurück zur ursprünglichen Aussage über R-Fehler in dem Artikel.
Wir sind der Meinung, dass es Fehler gibt und dass diese durch Nachlässigkeit bei der Umsetzung verursacht werden.
Die Sache ist die, dass @Quantum eine reine Implementierung und vollständige Überprüfung der analogen mathematischen Bibliothek von R in MQL5 ist.
Dies ist nicht die Argumentation eines Theoretikers. Und er greift tief in die Tasche, wenn er Unit-Tests schreibt, die sicherstellen, dass die Bibliothek korrekt ist.
Man sollte nicht a priori davon ausgehen, dass in R alles richtig ist. Im Gegenteil, ich würde sagen, dass, selbst wenn es eine C++-Implementierung der Funktionen gibt, alles ziemlich primitiv ist. Und in Bezug auf die Geschwindigkeit können Sie sehen, dass die MQL5-Bibliothek im Quellcode auf unserem Compiler im Durchschnitt um den Faktor 3 gewinnt.
Wir haben uns die Mühe gemacht, alles noch einmal zu überprüfen und dabei offensichtliche Fehler gefunden. Diese Fehler haben sich bestätigt:
Schauen Sie sich bitte die Daten der Veröffentlichungen an. Sie werden sehen, wie die Arbeit mit den Ratschlägen der Wissenschaftler voranschreitet.
Außerdem wäre es ein Fehler, @Quantum nicht als Wissenschaftler zu betrachten.
Lieber Renat!
Ich habe folgende Fragen zu Ihren letzten Beiträgen, die für mich eine grundsätzliche Angelegenheit sind:
1. Nach dem Datum der Veröffentlichung Ihres Artikels zu urteilen, ist es das Jahr 2003. Natürlich gibt es auch bei R, wie bei jedem anderen Softwaresystem, Fehler, und bei der Veröffentlichung wird immer eine Liste mit Korrekturen veröffentlicht. Gleichzeitig hat R immer die geringe Anzahl von Fehlern aufgrund der extrem großen Anzahl von Benutzern als Vorteil von R hervorgehoben. Und hier wurde seit 2003 ein Fehler im Algorithmus auf der Publikationsebene festgestellt, der bis heute nicht behoben wurde. Das ist für mich nicht klar.
Haben Sie bei R eine Anfrage zu diesem Thema gestellt?
2. ich würde gerne den Code sehen, mit dem die Leistung von R und MQL5 verglichen wurde.
Ich danke Ihnen im Voraus dafür.
Lieber Renat!
Ich habe folgende Fragen zu Ihren letzten Beiträgen, die für mich grundlegend sind:
1. Nach dem Datum der Veröffentlichung des Artikels zu urteilen, handelt es sich um 2003. Natürlich gibt es auch bei R, wie bei jedem anderen Softwaresystem, Fehler, und bei der Veröffentlichung wird immer eine Liste mit Korrekturen veröffentlicht. Gleichzeitig hat R immer betont, dass die geringe Anzahl von Fehlern aufgrund der extrem großen Anzahl von Nutzern ein Vorzug von R ist. Und hier wurde seit 2003 ein Fehler im Algorithmus auf der Publikationsebene entdeckt, der bis heute nicht behoben wurde. Das ist für mich nicht klar.
Es ist elementar und absolut klar.
Jeder macht Fehler - das ist das Geschäft von Entwicklern. Wir machen eine Menge Fehler und lassen uns nicht entmutigen.
Dieser Fehler in R ist nur auf Unachtsamkeit und das Vertrauen in eine Grundfunktion zurückzuführen, die die anderen Funktionen durcheinander gebracht hat. Sie wird korrigiert werden.
Haben Sie eine Anfrage an R zu diesem Thema gestellt?
Wir haben Tests durchgeführt, beim Schreiben der Bibliothek alles im Detail untersucht, ständig MQL5 - Wolfram Alpha - R verglichen, unsere Ergebnisse gezeigt und sind bereit, dafür öffentlich einzustehen. Natürlich haben wir drei große Skripte mit Unit-Tests und einem Benchmark an unser Mathematik-Paket angehängt (das sich im Quellcode befindet).
Ich bin sicher, @Quantum wird einen Fehlerbericht in R schreiben. Der aktualisierte Artikel wurde erst vor ein paar Stunden veröffentlicht.
Ich würde gerne den Code sehen, der die Leistung von R und MQL5 vergleicht.
Der Benchmark-Code für MQL5 befindet sich in \Scripts\UnitTests\Stat\TestStatBenchmark.mq5 und den R-Code finden Sie am Ende des Artikels Statistische Verteilungen in MQL5 - das Beste aus R nehmen und schneller machen, siehe "Anhang". Ergebnisse der Berechnung der Zeitachse statistischer Funktionen".
Stellen Sie sicher, dass Sie ein Upgrade auf MetaTrader 5 Build 1467 durchführen, indem Sie sich mit dem MetaQuotes-Demo-Server verbinden, bitte. In diese Betaversion haben wir die neue Bibliothek und alle Testskripte aufgenommen.
Das ist elementar und völlig verständlich.
Jeder macht Fehler - das liegt in der Natur des Entwicklers. Wir machen eine Menge Fehler und lassen uns nicht entmutigen.
Dieser Fehler in R ist nur auf Unachtsamkeit und Vertrauen in eine Grundfunktion zurückzuführen, die andere Funktionen vermasselt hat. Sie wird korrigiert werden.
Wir haben Tests durchgeführt, beim Schreiben der Bibliothek alles im Detail untersucht, ständig die Ergebnisse zwischen MQL5 - Wolfram Alpha - R verglichen, unsere Ergebnisse gezeigt und sind bereit, dafür öffentlich einzustehen. Natürlich haben wir drei große Skripte mit Unit-Tests und einem Benchmark an unser Mathematik-Paket angehängt (das sich im Quellcode befindet).
Ich bin sicher, @Quantum wird einen Fehlerbericht in R schreiben. Der aktualisierte Artikel wurde erst vor ein paar Stunden veröffentlicht.
Den Benchmark-Code in MQL5 finden Sie in \Scripts\UnitTests\Stat\TestStatBenchmark.mq5 und den Code in R finden Sie am Ende des Artikels Statistical Distributions in MQL5 - take the best from R and make it faster in "Appendix. Ergebnisse der Zeitberechnung für statistische Funktionen".
Stellen Sie sicher, dass Sie ein Upgrade auf MetaTrader 5 Build 1467 durchführen, indem Sie sich mit dem MetaQuotes-Demo-Server verbinden, bitte. In diese Betaversion haben wir die neue Bibliothek und alle Testskripte aufgenommen.
Ich kann mir noch kein eigenes Urteil über den Leistungsvergleich bilden. Und das ist eine Frage des Prinzips.
Die Sache ist die, dass R eine ideale Umgebung für die Entwicklung ist - ein Interpreter in einem Wort. Aber der Code, der während der Entwicklung existiert, unterscheidet sich sehr stark vom Arbeitscode - um ein Vielfaches der Anzahl der Zeilen. Der Arbeitscode hingegen ist sehr kurz und sehr umfangreich. Daher sollte man auf alle Funktionen von Paketen zurückgreifen, die für Handelsentscheidungen sinnvoll sind, z.B. Randomforest, die rechenintensive Algorithmen verwenden, Matrixoperationen, Belastung aller Kerne....
PS.
Sie verwenden eine veraltete Version von R. Sie sollten R Version 3.3.1 (2016-06-21) von MRAN - Microsofn R Open Website nehmen. Dabei ist es zwingend erforderlich, MKL zu installieren. Microsoft behauptet in der erwähnten R-Veröffentlichung, dass es die Ausführungsgeschwindigkeit einiger Pakete und Funktionen um das bis zu 50-fache (!) erhöhen konnte.
Ich kann mir noch kein Urteil über den Leistungsvergleich bilden. Und das ist eine Frage des Prinzips.
Die Sache ist die, dass R eine ideale Umgebung für die Entwicklung ist - ein Interpreter in einem Wort. Aber der Code, der während der Entwicklung existiert, unterscheidet sich sehr stark vom Arbeitscode - um ein Vielfaches der Anzahl der Zeilen. Der Arbeitscode hingegen ist sehr kurz und sehr umfangreich. Deshalb sollte man auf Funktionen aus Paketen zurückgreifen, die bei Handelsentscheidungen sinnvoll sind, z.B. Randomforest, die rechenintensive Algorithmen verwenden, Matrixoperationen, Belastung aller Kerne....
Wir übersetzen R-Merkmale methodisch in MQL5. Und zwar so, dass sich das Wesen der Funktionsaufrufe als sehr ähnlich erweist.
Hier ein Beispiel für den Schriftverkehr in dem Artikel:
Uniform
Wir versuchen, den Code aus R in Bezug auf Größe und Zeitaufwand nahezu identisch mit dem Code in MQL5 zu machen.
Morgen werden wir die grafische Bibliothek als Beta-Version freigeben und gleich große Teile des Codes in R und MQL5 zusammen mit Bildern demonstrieren.
Ich bezweifle, dass die Standardversion von R plötzlich schneller wird - der Code dort ändert sich nicht viel. Natürlich können einige Funktionen beschleunigt werden, insbesondere Matrixfunktionen. Und Ihre Aussage bestätigt meine Meinung, dass der Code in R im Hinblick auf die Leistung eher schlampig geschrieben ist.
Wenn Sie den Artikel lesen, werden Sie sehen, dass wir selbst bei grundlegenden Funktionen ohne Multithreading und MKL Geschwindigkeitssteigerungen von bis zu 46x erreicht haben:
Die Berechnungen wurden auf einem Intel Core i7-4790, 3,6 Ghz CPU, 16 GB RAM, Windows 10 x64 durchgeführt. Ergebnisse der Berechnungszeit in Mikrosekunden
PDF-Berechnungszeit (µs)
PDF-Berechnungszeit (µs)
R/MQL5
CDF-Berechnungszeit (µs)
CDF-Berechnungszeit (µs)
R/MQL5
Quantilzeit (µs)
Quantilberechnungszeit (µs)
R/MQL5
Generierungszeit der Zufallszahlen (µs)
Zeit für die Erzeugung von Zufallszahlen (μs)
R/MQL5
Aber die angegebene Version wird natürlich getestet. Sowohl für Geschwindigkeit als auch für Leistung.
Sie haben Unrecht mit der "falschen Antwort".
...
In der MQL-Dokumentation findet sich beispielsweise ein Beispiel für den Arkussinus und die Aussage, dass arcsine(2) = unendlich ist. Dies ist nicht korrekt. Genau: arcsinus(2) = NaN, d.h. kein numerischer Wert, arcsinus(1) = Inf, aber fehlende Notierungen während des Handels = NA, d.h. sie sollten (oder könnten am Wochenende) sein und sind es nicht.
Ich habe ihn mit einer gewissen Ironie über falsche Antworten geschrieben. Ich hätte einen Smiley hinzufügen sollen... Ich habe am Ende hinzugefügt, dass es sich in beiden Fällen nicht um einen Fehler handelt, da das Verhalten des Compilers und des Interpreters in nicht-defenierten Funktionsbereichen vollständig von der Systemarchitektur und den Entwicklern abhängig ist. In diesem Fall ist es natürlich besser, nan zurückzugeben.
Ich meine, rufen Sie keine Funktion mit Parametern auf, für die sie nicht definiert ist, und vergleichen Sie dann die Ergebnisse mit einer anderen Bibliothek, sonst können Sie Hunderte von "Fehlern" finden.
Übrigens ist das Beispiel mit dem Arcsinus interessant.
mql -
MathArcsin(1) = MathArcsin(2) = -nan(ind)
Wolfram -
Arcsin(1) = Pi/2
Arcsin(2) = etwas Komplexes. Es gibt keine Lösung mit einem gültigen Ergebnis.
R -
asin(1) = Pi/2
asin(2) = nan (die Antwort gilt für reelle Zahlen)
asin(2+0i) = etwas Komplexes, wie in wolfram
wiki sagt, dass asin(1) immer noch definiert ist(https://en.wikipedia.org/wiki/Inverse_trigonometric_functions), können Sie einen Fehlerbericht an servicedesk schreiben.
Aber asin(2) ist eine undefinierbare Region, sie ist OK und passt überall.
Und noch einmal zum letzten Beitrag - Division durch 0 in einfacher Mathematik ist unmöglich, also ist es logisch, dass das mql-Skript mit Fehler abstürzt, keine Bugs hier. Aber es ist sehr seltsam, eine solche Akribie, um die Genauigkeit der Ergebnisse bis zu 16 Dezimalstellen zu sehen, und zurück nan oder Inf bei der Division durch Null aus irgendeinem Grund ist es unmöglich. Imho müssen Inf zurück und nicht quälen Entwickler mit plötzlichen Abstürzen ihrer Skripte.
Um die Kontrolle der Realwert-Division zu deaktivieren, verwenden Sie den Parameter FpNoZeroCheckOnDivision=1 im Abschnitt [Experts] der Datei metaeditor.ini
Wenn dieser Parameter vorhanden ist, erzeugt der folgende Code inf
Natürlich wird das Vorhandensein dieses Parameters Sie nicht vor einem Kompilierungsfehler bewahren, wenn Sie durch eine Konstante 0,0 dividieren
'0.0' - division by zero in the constant expression s1.mq5 8 12
Renat, war diese Übertragung einiger Funktionen von R nach mql wirklich die Überraschung, von der du gesprochen hast?
Nein.
Überraschung macht keinen Sinn, wir werden alles innerhalb von MQL5 und MetaTrader 5 machen.
Wenn dieser Parameter vorhanden ist, gibt der folgende Code Auskunft