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 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.
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.
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.
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.
Microsoft R Open, formerly known as Revolution R Open (RRO), is the enhanced distribution of R from Microsoft Corporation. It is a complete open source platform for statistical analysis and data science. The current version, Microsoft R Open 3.3.1, is based on (and 100% compatible with) R-3.3.1, the most widely used statistics software in the...
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:
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.
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 ihm gelungen ist, die Ausführungsgeschwindigkeit einiger Pakete und Funktionen um das bis zu 50-fache (!) zu erhöhen.
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
№
Vertrieb
MQL5-Zeit PDF-Berechnungszeit (µs)
R Berechnungszeit PDF-Berechnungszeit (µs)
PDF R/MQL5
MQL5-Berechnungszeit CDF-Berechnungszeit (µs)
R Berechnungszeit CDF-Berechnungszeit (µs)
CDF R/MQL5
MQL5-Berechnungszeit Quantilzeit (µs)
R Berechnungszeit Quantilberechnungszeit (µs)
Quantil R/MQL5
MQL5-Generierungszeit Generierungszeit der Zufallszahlen (µs)
R Generationszeit Zeit für die Erzeugung von Zufallszahlen (μs)
Zufällig R/MQL5
1
Binomisch
4.39
11.663
2.657
13.65
25.316
1.855
50.18
66.845
1.332
318.73
1816.463
5.699
2
Beta
1.74
17.352
9.972
4.76
15.076
3.167
48.72
129.992
2.668
688.81
1723.45
2.502
3
Gamma
1.31
8.251
6.347
8.09
14.792
1.828
50.83
64.286
1.265
142.84
1281.707
8.973
4
Cauchy
0.45
1.423
3.162
1.33
15.078
11.34
1.37
2.845
2.077
224.19
588.517
2.625
5
Exponential
0.85
3.13
3.682
0.77
2.845
3.695
0.53
2.276
4.294
143.18
389.406
2.72
6
Uniform
0.42
2.561
6.098
0.45
1.423
3.162
0.18
2.846
15.81
40.3
247.467
6.141
7
Geometrisch
2.3
5.121
2.227
2.12
4.552
2.147
0.81
5.407
6.675
278
1078.045
3.879
8
Hypergeometrisch
1.85
11.095
5.997
0.9
8.819
9.799
0.75
9.957
13.28
302.55
880.356
2.91
9
Logistik
1.27
4.267
3.36
1.11
4.267
3.844
0.71
3.13
4.408
178.65
626.632
3.508
10
Weibull
2.99
5.69
1.903
2.74
4.268
1.558
2.64
6.828
2.586
536.37
1558.472
2.906
11
Poisson
2.91
5.974
2.053
6.26
8.534
1.363
3.43
13.085
3.815
153.59
303.219
1.974
12
F
3.86
10.241
2.653
9.94
22.472
2.261
65.47
135.396
2.068
1249.22
1801.955
1.442
13
Chi-Quadrat
2.47
5.974
2.419
7.71
13.37
1.734
44.11
61.725
1.399
210.24
1235.059
5.875
14
Nicht-zentrales Chi-Quadrat
8.05
14.223
1.767
45.61
209.068
4.584
220.66
10342.96
46.873
744.45
1997.653
2.683
15
Nicht-zentral F
19.1
28.446
1.489
14.67
46.935
3.199
212.21
2561.991
12.073
1848.9
2912.141
1.575
16
Nicht-zentrales Beta
16.3
26.739
1.64
10.48
43.237
4.126
153.66
2290.915
14.909
2686.82
2839.893
1.057
17
Negatives Binomial
6.13
11.094
1.81
12.21
19.627
1.607
14.05
60.019
4.272
1130.39
1936.498
1.713
18
Normal
1.15
4.267
3.71
0.81
3.983
4.917
0.7
2.277
3.253
293.7
696.321
2.371
19
Lognormal
1.99
5.406
2.717
3.19
8.819
2.765
3.18
6.259
1.968
479.75
1269.761
2.647
20
T
2.32
11.663
5.027
8.01
19.059
2.379
50.23
58.596
1.167
951.58
1425.92
1.498
21
Nicht-zentral T
38.47
86.757
2.255
27.75
39.823
1.435
1339.51
1930.524
1.441
1550.27
1699.84
1.096
<PDF R/MQL5>
3.474
<CDF R/MQL5>
3.465
<Quantil R/MQL5>
7.03
<Random R/MQL5>
3.13
Aber die angegebene Version wird natürlich getestet. Sowohl für Geschwindigkeit als auch für Leistung.
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
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
voidOnStart()
{
double x=0;
Print(1/x);
}
Natürlich wird das Vorhandensein dieses Parameters Sie nicht vor einem Kompilierungsfehler bewahren, wenn Sie durch eine Konstante 0,0 dividieren
Print(1/0.0);
'0.0' - division by zero in the constant expression s1.mq5 8 12
Wenn dieser Parameter vorhanden ist, gibt der folgende Code Auskunft
Vielen Dank, sehr korrekte Einstellung. Und wenn man Null durch Null teilt, erhält man nan anstelle von inf, und das ist sogar noch korrekter, eine solche Genauigkeit hatte ich gar nicht erwartet!
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