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

 
SanSanych Fomenko:

Lieber Kollege!

Mehrere Seiten lang wird über die Unterschiede zwischen Ihren und den Algorithmen von R an den Rändern des Funktionsbereichs diskutiert. Die Randpunkte sind Randpunkte und in der Praxis könnten die Unterschiede vernachlässigt werden.

Aber in diesem Fall habe ich eine viel wichtigere Frage:

Wo ist die Dokumentation für alle Ihre Funktionen?

Bisher dachte ich, dass wir Ihre Funktion nehmen, dann die Dokumentation von R, da Ihre Funktionen Analogien sind, und uns mit den Teilen der R-Dokumentation befassen, die entweder die Algorithmen beschreiben oder zu den von R bereitgestellten Links führen. R verfügt über eine sehr hochwertige Dokumentation und einen Referenzapparat.

Im Laufe der Diskussion habe ich herausgefunden, dass sich Ihre Funktionen von R unterscheiden - es handelt sich um andere Funktionen, deren Algorithmen auf anderen Quellen beruhen. In dem Artikel selbst steht nichts darüber, es gibt keine Dokumentation. Und wir erfahren es von Renat in einem ganz anderen Zusammenhang.

In der Praxis können wir eine eindeutige Schlussfolgerung ziehen, dass der Code nicht von R auf MQL5 portiert werden kann.

Und hier ist der Grund dafür.

Das liegt daran, dass Sie den Artikel nicht gelesen haben und die mehrfache Wiederholung übersehen haben:

  1. Wir haben Unit-Tests in den Quellcode eingefügt, die die Korrektheit der Berechnungen beweisen.
  2. Wir haben viel Arbeit in die vollständige Korrektheitsprüfung gesteckt, die es uns ermöglicht hat, R-Fehlern auf den Grund zu gehen
  3. Bei unserer Arbeit haben wir die Ergebnisse in MQL5, Wolfram Alpha und R ständig überprüft
Im Gegensatz zu Ihnen haben wir den Quellcode von R analysiert, jede Funktion im Detail untersucht, einige Funktionen bis zum 46-fachen beschleunigt, einen Artikel geschrieben und uns bereit erklärt, dafür zu antworten.

Stattdessen gelingt es den Kritikern, Aussagen über die alte Hefe ihrer Kenntnisse und ihres Vertrauens in R zu machen, ohne den Artikel selbst aufmerksam zu lesen. Und zwar ohne den Versuch, Testskripte mit Beweisen auszuführen.

 

Damit es keine Missverständnisse gibt:

  1. Die Übersetzung/Ähnlichkeit der oben genannten R-Funktionen ist korrekt
  2. Die Verwendung der Logik von R in MQL5 ist fast identisch, und der Code ist in MQL5 klarer
  3. Der gesamte Code der genannten Funktionen in MQL5 wird im sauberen Quellcode präsentiert, einschließlich der Check-Unit-Tests (wo sind die in R?)
  4. Die Berechnungen in MQL5 sind viel schneller als in R
  5. Unsere Fachleute sind gut in Mathematik und genauso gut (oder besser) als diejenigen, die R schreiben.
Dies ist der Beginn einer langen Reise zur Einführung komplexer Mathematik in die Standardbibliothek MQL5. Jetzt sind Alglib, Fuzzy und Stat da.

Heute werden wir eine Grafikbibliothek veröffentlichen, die der Plot-Bibliothek von R ähnelt. Es gibt bereits eine funktionale Erweiterung der Stat-Bibliotheksmatten-Funktionalität in Form von Dutzenden neuer Funktionen.

 
Quantum:

Zur Zeit gibt es eine Beschreibung der Funktionen im Artikel https://www.mql5.com/ru/articles/2742


Ich danke Ihnen, ich verstehe Ihren Standpunkt.

PS.

Soweit ich weiß, haben Sie die Dokumentation zu Normal und anderen Funktionen in R gesehen, so dass ich keine Kopie einfügen und mit Ihrem Link vergleichen werde.

 
Renat Fatkhullin:

Das liegt daran, dass Sie den Artikel nicht gelesen haben und die mehrfache Wiederholung übersehen haben:

  1. Wir haben Unit-Tests in den Quellcode eingefügt, die die Korrektheit der Berechnungen belegen
  2. Wir haben viel Arbeit in die vollständige Korrektheitsprüfung gesteckt, die es uns ermöglicht hat, R-Fehlern auf den Grund zu gehen
  3. Bei unserer Arbeit haben wir die Ergebnisse in MQL5, Wolfram Alpha und R ständig überprüft
Im Gegensatz zu Ihnen haben wir den Quellcode von R analysiert, jede Funktion im Detail untersucht, einige Funktionen bis zum 46-fachen beschleunigt, einen Artikel geschrieben und uns bereit erklärt, dafür zu antworten.

Stattdessen gelingt es den Kritikern, Aussagen über die alte Hefe ihrer Kenntnisse und ihres Vertrauens in R zu machen, ohne den Artikel selbst aufmerksam zu lesen. Und zwar ohne den Versuch, Testskripte mit Beweisen auszuführen.

Vielen Dank, Ihr Standpunkt ist für mich klar.

PS.

Dies ist das zweite Mal, dass Sie mir vorwerfen, ich hätte den Artikel nicht gelesen.

Ich habe es gelesen, außerdem habe ich einen Fehler in der Funktion gefunden (Rückgabe eines Skalars statt eines Vektors), den Sie korrigiert haben und nun ist dieser Fehler verschwunden.

 
SanSanych Fomenko:

Danke, Ihr Standpunkt ist für mich klar.

PS.

Dies ist das zweite Mal, dass Sie mir vorwerfen, ich hätte den Artikel nicht gelesen.

Ich habe es gelesen, außerdem habe ich einen Fehler in der Funktion gefunden (Rückgabe eines Skalars statt eines Vektors), den Sie korrigiert haben, und jetzt ist dieser Fehler nicht mehr vorhanden.

Dies ist eine Gegenmaßnahme zu Ihrem Kommentar "In der Praxis ist die Schlussfolgerung, dass die Migration von Code von R zu MQL5 unmöglich ist".

Vielleicht haben Sie einen alten Artikel gelesen und nicht den neuen von gestern. Es gab keinen Fehler - es gab eine Version mit skalarer Rückgabe (vor langer Zeit) und wir haben Vektor-Funktionen hinzugefügt. Die Bibliothek ist seit dem alten Artikel stark gewachsen und wurde im Wesentlichen neu geschrieben.

Ich hatte Recht - Sie haben den neuen Artikel nicht gelesen.

Ich hoffe, dass es keine Gespräche mehr über "Sie haben diese Funktionen nicht und haben sie selbst erfunden" geben wird.
 
Alexey Burnakov:

Was die t-Verteilung betrifft, so habe ich diesen Fehler mit der neuesten Version von R reproduziert, bin aber nicht auf das Wesentliche des Algorithmus eingegangen. Ich gebe zu, dass die Korrektur wirklich notwendig war.

Ich werde versuchen, eine Frage an das R-Support-Team zu stellen.

Artikel "Computing discrete mixtures of continuous distributions" ist auf der Website des Autors verfügbar.

Die Autoren des Artikels sagen, dass das Problem im Konvergenzkriterium der Reihe liegt.


Die Implementierung des von ihnen vorgeschlagenen Rekursionsalgorithmus 7.2 https://github.com/neurodebian/afni_removeme_eventually/blob/master/nct.c

Die Wiederholungsberechnung ist jedoch fehlerhaft. Zum Beispiel für die Beta-Funktion:


#include <Math\Stat\Math.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   double a=1;
   double b=1;
   double r_beta=MathBeta(a,b);
   for(int j=0; j<40; j++)
     {
      if(j>0)
        {
         r_beta*=((a+j-1)/(a+b+j-1));
        }
      double beta=MathBeta(a+j,b);
      PrintFormat("%d   error=%5.20e",j,beta-r_beta);
     }
  }

2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 0 error=0.00000000000000000000e+00
2016.11.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 1 error=-5.55111512312578270212e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 2 error=0.00000000000000000000000000e+00
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 3 error=1.11022302462515654042e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 4 error=1.38777878078144567553e-16
2016.11.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 5 error=-2.22044604925031308085e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 6 error=2.22044604925031308085e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 7 error=1.66533453693773481064e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 8 error=-2.91433543964103591861e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 9 error=-1.24900090270330110798e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 10 error=-2.77555756156289135106e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 11 error=-1.24900090270330110798e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 12 error=5.68989300120392726967e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 13 error=-2.91433543964103591861e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 14 error=-5.55111512312578270212e-17
2016.11.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 15 error=-4.85722573273505986435e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 16 error=-1.87350135405495166196e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 17 error=5.27355936696949356701e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 18 error=-1.04083408558608425665e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 19 error=-3.400058018291454190505e-16
2016.11.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 20 error=-3.26128013483639733749e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 21 error=4.57966997657877072925e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 22 error=-3.19189119579732505372e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 23 error=1.52655665885959024308e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 24 error=5.55111512312578270212e-17
2016.11.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 25 error=-6.24500451351650553988e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 26 error=-2.70616862252381906728e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 27 error=4.85722573273505986435e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 28 error=4.64905891561784301302e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 29 error=8.32667268468867405318e-17
201611.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 30 error=-9.02056207507939689094e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 31 error=-2.98372437868010820239e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 32 error=2.22044604925031308085e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 33 error=2.74086309204335520917e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 34 error=-3.43475248243407804694e-16
201611.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 35 error=2.08166817117216851329e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 36 error=4.16333634234433702659e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 37 error=8.673617379889403547206e-17
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 38 error=-1.21430643318376496609e-16
2016.11.11 12:28:30.015 RecurrentBeta (EURUSD,H1) 39 error=-2.18575157973077693896e-16

Für die CDF-Berechnung mag die Genauigkeit ausreichen, aber für die Quantilumrechnung mit hoher Genauigkeit ist sie möglicherweise nicht ausreichend.

Daher haben wir im Quantil-Algorithmus eine direkte Summierung ohne Rekursionsberechnungen verwendet.

 
Renat Fatkhullin:

Dies ist eine Gegenmaßnahme zu Ihrer Skizze "In der Praxis gibt es eine eindeutige Schlussfolgerung, dass eine Code-Migration von R zu MQL5 unmöglich ist".

Ich hoffe, dass es kein Gerede mehr über "Sie haben diese Funktionen nicht und Sie haben sie selbst erfunden" geben wird.

Ich habe die schlechte Angewohnheit, zu lesen, bevor ich über etwas schreibe. "Ich habe mich nie an solchen Beschimpfungen beteiligt; ich habe nur das Wesentliche meines Themas dargelegt.

Es stellt sich heraus, dass ich Ihnen meinen Standpunkt nicht klar machen kann, und das ist nicht das erste Mal.

Deshalb, ohne mich.

Ich wünsche Ihnen von Herzen Glück, Renat!

 

Meine Herren, was ist das Argument für 100.500 Seiten? Wer kennt sich in Mathe besser aus? Was macht es für Sie prinzipiell für einen Unterschied, ob die Funktion in 0 definiert ist oder nicht, ob ein Fehler in R in den Artikel geschrieben wird oder nicht. Das ist so, als ob Ihr Kind hier besprochen wird und gesagt wird, dass es ein totaler ... ist und Sie stehen mit Ihrer ganzen Brust für es ein.

Nehmen Sie es als gegeben und verwenden Sie die eingebauten Funktionen in mt5, fragen Sie die Entwickler nach neuen Funktionen, wenn etwas fehlt, schreiben Sie Ihre eigenen. Sie sollten die eingebauten Funktionen von mt5 nutzen, die Entwickler nach neuen Funktionen fragen, und wenn Sie etwas vermissen, Ihre eigenen schreiben.

 
Vielen Dank für Ihre Teilnahme @SanSanych Fomenko, aber Sie haben keinen unserer Standpunkte widerlegt, und die vorliegende Skizze scheitert.
 
Renat Fatkhullin:

Damit es keine Missverständnisse gibt:

  1. Die Übersetzung/Ähnlichkeit der oben genannten R-Funktionen ist korrekt
  2. Die Verwendung der Logik von R in MQL5 ist fast identisch, und der Code ist in MQL5 klarer
  3. Der gesamte Code der genannten Funktionen in MQL5 wird im sauberen Quellcode präsentiert, einschließlich der Check-Unit-Tests (wo sind die in R?)
  4. Die Berechnungen in MQL5 sind viel schneller als in R
  5. Unsere Fachleute sind gut in Mathematik und genauso gut (oder besser) als diejenigen, die R schreiben.
Dies ist der Beginn einer langen Reise zur Einführung komplexer Mathematik in die Standardbibliothek MQL5. Jetzt sind Alglib, Fuzzy und Stat da.

Heute werden wir eine Grafikbibliothek veröffentlichen, die der Plot-Bibliothek von R ähnelt. Wir arbeiten bereits an der Erweiterung der Funktionalität der Mattenbibliothek Stat in Form von Dutzenden neuer Funktionen.

es ist nur ein Feiertag