Diskussion zum Artikel "Statistische Verteilungen in MQL5 - Nur das Beste aus R" - Seite 8

[Gelöscht]  

Es folgt der eigentliche Text der permissiven Unterroutine von R:

      ier = 0
      neval = 0
      last = 0
      result = 0.0 e+00
      abserr = 0.0 e+00
      alist(1) = a
      blist(1) = b
      rlist(1) = 0.0 e+00
      elist(1) = 0.0 e+00
      if(epsabs.le.0.0 e+00.and.epsrel.lt.amax1(0.5 e+02*epmach,0.5 e-14))
     *   ier = 6
      if(ier.eq.6) go to 999
c
c           first approximation to the integral
c           -----------------------------------
c
      uflow = r1mach(1)
      oflow = r1mach(2)
      ierro = 0
      call qk21(f,a,b,result,abserr,defabs,resabs)
c
c           test on accuracy.
c
      dres = abs(result)
      errbnd = amax1(epsabs,epsrel*dres)
      last = 1
      rlist(1) = result
      elist(1) = abserr
      iord(1) = 1
      if(abserr.le.1.0 e+02*epmach*defabs.and.abserr.gt.
     *  errbnd) ier = 2
      if(limit.eq.1) ier = 1
      if(ier.ne.0.or.(abserr.le.errbnd.and.abserr.ne.resabs).or.
     *  abserr.eq.0.0 e+00) go to 140
c
c           initialization
c           --------------
c
      rlist2(1) = result
      errmax = abserr
      maxerr = 1
      area = result
      errsum = abserr
      abserr = oflow
      nrmax = 1
      nres = 0
      numrl2 = 2
      ktmin = 0
      extrap = .false.
      noext = .false.
      iroff1 = 0
      iroff2 = 0
      iroff3 = 0
      ksgn = -1
      if(dres.ge.(0.1 e+01-0.5 e+02*epmach)*defabs) ksgn = 1
c
c           main do-loop
c           ------------
c
      do 90 last = 2,limit
c
c           bisect the subinterval with the nrmax-th largest
c           error estimate.
c
        a1 = alist(maxerr)
        b1 = 0.5 e+00*(alist(maxerr)+blist(maxerr))
        a2 = b1
        b2 = blist(maxerr)
        erlast = errmax
        call qk21(f,a1,b1,area1,error1,resabs,defab1)
        call qk21(f,a2,b2,area2,error2,resabs,defab2)
c
c           improve previous approximations to integral
c           and error and test for accuracy.
c
        area12 = area1+area2
        erro12 = error1+error2
        errsum = errsum+erro12-errmax
        area = area+area12-rlist(maxerr)
        if(defab1.eq.error1.or.defab2.eq.error2) go to 15
        if(abs(rlist(maxerr)-area12).gt.0.1 e-04*abs(area12)
     *  .or.erro12.lt.0.99 e+00*errmax) go to 10
        if(extrap) iroff2 = iroff2+1
        if(.not.extrap) iroff1 = iroff1+1
   10   if(last.gt.10.and.erro12.gt.errmax) iroff3 = iroff3+1
   15   rlist(maxerr) = area1
        rlist(last) = area2
        errbnd = amax1(epsabs,epsrel*abs(area))
c
c           test for roundoff error and eventually
c           set error flag.
c
        if(iroff1+iroff2.ge.10.or.iroff3.ge.20) ier = 2
        if(iroff2.ge.5) ierro = 3
c
c           set error flag in the case that the number of
c           subintervals equals limit.
c
        if(last.eq.limit) ier = 1
c
c           set error flag in the case of bad integrand behaviour
c           at a point of the integration range.
c
        if(amax1(abs(a1),abs(b2)).le.(0.1 e+01+0.1 e+03*epmach)*
     *  (abs(a2)+0.1 e+04*uflow)) ier = 4
c
c           append the newly-created intervals to the list.
c
        if(error2.gt.error1) go to 20
        alist(last) = a2
        blist(maxerr) = b1
        blist(last) = b2
        elist(maxerr) = error1
        elist(last) = error2
        go to 30
   20   alist(maxerr) = a2
        alist(last) = a1
        blist(last) = b1
        rlist(maxerr) = area2
        rlist(last) = area1
        elist(maxerr) = error2
        elist(last) = error1
c
c           call subroutine qpsrt to maintain the descending ordering
c           in the list of error estimates and select the
c           subinterval with nrmax-th largest error estimate (to be
c           bisected next).
c
   30   call qpsrt(limit,last,maxerr,errmax,elist,iord,nrmax)
c ***jump out of do-loop
        if(errsum.le.errbnd) go to 115
c ***jump out of do-loop
        if(ier.ne.0) go to 100
        if(last.eq.2) go to 80
        if(noext) go to 90
        erlarg = erlarg-erlast
        if(abs(b1-a1).gt.small) erlarg = erlarg+erro12
        if(extrap) go to 40
c
c           test whether the interval to be bisected next is the
c           smallest interval.
c
        if(abs(blist(maxerr)-alist(maxerr)).gt.small) go to 90
        extrap = .true.
        nrmax = 2
   40   if(ierro.eq.3.or.erlarg.le.ertest) go to 60
c
c           the smallest interval has the largest error.
c           before bisecting decrease the sum of the errors
c           over the larger intervals (erlarg) and perform
c           extrapolation.
c
        id = nrmax
        jupbnd = last
        if(last.gt.(2+limit/2)) jupbnd = limit+3-last
        do 50 k = id,jupbnd
          maxerr = iord(nrmax)
          errmax = elist(maxerr)
c ***jump out of do-loop
          if(abs(blist(maxerr)-alist(maxerr)).gt.small) go to 90
          nrmax = nrmax+1
   50   continue
c
c           perform extrapolation.
c
   60   numrl2 = numrl2+1
        rlist2(numrl2) = area
        call qelg(numrl2,rlist2,reseps,abseps,res3la,nres)
        ktmin = ktmin+1
        if(ktmin.gt.5.and.abserr.lt.0.1 e-02*errsum) ier = 5
        if(abseps.ge.abserr) go to 70
        ktmin = 0
        abserr = abseps
        result = reseps
        correc = erlarg
        ertest = amax1(epsabs,epsrel*abs(reseps))
c ***jump out of do-loop
        if(abserr.le.ertest) go to 100
c
c           prepare bisection of the smallest interval.
c
   70   if(numrl2.eq.1) noext = .true.
        if(ier.eq.5) go to 100
        maxerr = iord(1)
        errmax = elist(maxerr)
        nrmax = 1
        extrap = .false.
        small = small*0.5 e+00
        erlarg = errsum
        go to 90
   80   small = abs(b-a)*0.375 e+00
        erlarg = errsum
        ertest = errbnd
        rlist2(2) = area
   90 continue
c
c           set final result and error estimate.
c           ------------------------------------
c
  100 if(abserr.eq.oflow) go to 115
      if(ier+ierro.eq.0) go to 110
      if(ierro.eq.3) abserr = abserr+correc
      if(ier.eq.0) ier = 3
      if(result.ne.0.0 e+00.and.area.ne.0.0 e+00) go to 105
      if(abserr.gt.errsum) go to 115
      if(area.eq.0.0 e+00) go to 130
      go to 110
  105 if(abserr/abs(result).gt.errsum/abs(area)) go to 115
c
c           test on divergence.
c
  110 if(ksgn.eq.(-1).and.amax1(abs(result),abs(area)).le.
     * defabs*0.1 e-01) go to 130
      if(0.1 e-01.gt.(result/area).or.(result/area).gt.0.1 e+03
     * .or.errsum.gt.abs(area)) ier = 6
      go to 130
c
c           compute global integral sum.
c
  115 result = 0.0 e+00
      do 120 k = 1,last
         result = result+rlist(k)
  120 continue
      abserr = errsum
  130 if(ier.gt.2) ier = ier-1
  140 neval = 42*last-21
  999 return
      end
[Gelöscht]  

Was ist einfacher: ein Unterprogramm in C oder MQL4-MQL5 für 0,5...1 Stunde zu schreiben und es dann JAHRE lang für sich selbst und für andere zu verwenden,

als Option - ein Unterprogramm aus der MQL4-MQL5-Bibliothek verwenden,

oder wochenlang in den Quellen und verrückten Funktions- und Parameternamen von netLib und R-Paketen zu wühlen und zu versuchen, sie zu verstehen, und vor allem in der marsianischen Logik von Fortran-Programmierern - Unter-Physikern?

Wenn Sie ein komplexes Programm schreiben wollen, sollten Sie sich in erster Linie um Einfachheit und Klarheit kümmern, nicht um seine Geschwindigkeit.

Die Arbeitsgeschwindigkeit ist eine SEKUNDÄRE Sache.

Metaquotes weiß, wie man die Dinge klar und verständlich macht. Dafür muss man übrigens ein besonderes Talent haben. Deshalb haben sie in der ersten Runde des Kampfes um ein erschwingliches Handelsterminal und eine Entwicklungsumgebung alle anderen besiegt. Niemand sonst hat es geschafft, es klar, logisch und einfach zu machen.

Also benutzen Sie es! Es ist großartig! Und es ist kostenlos!

333). Und nun eine schlechte Nachricht für San-Sanych, für das R-Paket und möglicherweise für Metaquotes:

Mehrere grundlegende mathematische Funktionen, die für den Handel benötigt werden, werden in Netlib, R und Metaquotes nicht korrekt gezählt.

Ich habe sie korrekt gezählt und das Ergebnis ist positiv. Wenn sie so gezählt werden, wie alle anderen sie zählen, ist das Handelsergebnis negativ oder kaum positiv. Welche Funktionen das sind, verrate ich nicht, tut mir leid. Deshalb ziehe ich es vor, alles selbst zu schreiben und in meiner Arbeit LANGE NAMEN zu verwenden. Es ist leichter zu verstehen, was man gestern selbst geschrieben hat.

Hier ist ein Beispiel:

https://www.mql5.com/en/blogs/post/678673

https://www.mql5.com/en/users/alexeros/blog

Library of Math functions
Library of Math functions
  • 2016.08.29
  • //www.mql5.com/en/users/AlexEros">
  • www.mql5.com
This is an extract from production library of EAs "Graalino-Pro" and "Ocean Breeze". There is a dosen of general math functions here. Everything in this library is PUBLIC DOMAIN (and free). Example...
 
Sergiy Podolyak:

...

Erstaunlich, ich habe zum ersten Mal jemanden getroffen, der eine ähnliche Einstellung zum Schreiben von Programmen hat. Deshalb bin ich heftig im Plus.

Die Hauptargumente der eRaists sind eine riesige Datenbank von Funktionen und sogenannten "Paketen", die ständig ergänzt werden. Beachten Sie, dass alle oder 99 % dieser Leute weder C noch MQL kennen. Sie sind es nicht gewohnt, sich in Code zu vertiefen, sie sind Gegner von "Fahrrädern". Aber aus irgendeinem Grund sagen die eRasts nie, dass R unlesbar ist und dass es praktisch unmöglich oder mit einem enormen Arbeitsaufwand verbunden ist, wenn man etwas selbst korrigieren muss. Sie vergessen die Tatsache, dass es für C und C++ (in dem R selbst geschrieben ist) wahrscheinlich mehr Code gibt als für jede andere Sprache, unzählige Bibliotheken mit Quellcode, die wirklich wie zwei Bytes in MQL übertragen werden.

Wenn Gadzila zum Beispiel von dem Moment an, als er begann, die Codebasis von MQL4 auf MQL5 umzuschreiben, die offenen Mat- und Stat-Bibliotheken aus den C-Quellen umgeschrieben hätte, dann wäre MT5 jetzt die leistungsfähigste Plattform, die für verschiedene Forschungen und fortgeschrittenen Handel bereit ist, aber die Arbeit wird glücklicherweise schon von MQ erledigt.

Übrigens, bevor ich meine GA geschrieben habe, habe ich, wenn nicht hunderte, so doch dutzende von C/C++-Quellen mit codeproject durchgesehen, obwohl meine Programmierkenntnisse kaum über dem Nullniveau lagen. Das heißt, offene Quellcodes von C/C++ ermöglichen es nicht nur, die Theorie und die Herangehensweise an Aufgaben zu studieren, sondern auch etwas Einzigartiges und Neues zu schaffen, selbst für Leute, die weit vom Schreiben von Programmen entfernt sind. Aber selbst R-Spezialisten können oder wollen kaum etwas Neues in R schreiben, es ist einfacher für sie, sich mit dem zufrieden zu geben, was jemand anderes bereits getan hat, in dem Glauben, dass alles richtig funktioniert.

[Gelöscht]  
Andrey Dik:
...

Wenn Gadzila zum Beispiel offene Mat- und Stat-Bibliotheken aus C-Quellen umgeschrieben hätte, seit er die Codebasis von MQL4 auf MQL5 umgeschrieben hat, dann wäre MT5 jetzt die leistungsstärkste Plattform, BEREIT für verschiedene Forschungen und fortgeschrittenen Handel, aber die Arbeit wird bereits getan, zum Glück, von MQ.

Einverstanden.

Aber was bedeutet es "wäre"?

MT4 (und MT5) Terminal ist seit langem ein Lehr- und akademisches Terminal für verschiedene Handelsforschung. Sie preisen es nur nicht an jeder Ecke an, wahrscheinlich ist es ihnen peinlich, dass es kostenlos ist (d.h. angeblich "nicht glaubwürdig").

Aus meiner persönlichen Erfahrung in der Kommunikation mit professionellen Händlern der mittleren Ebene kann ich mit Sicherheit sagen, dass heutzutage neue Handelsalgorithmen zuerst in MQL4 geschrieben werden und dann auf andere kostenpflichtige Terminals mit mehr Handelsinstrumenten und Zugang zu mehr Börsen übertragen werden. Aber das kostet viel mehr: von $250 pro Monat für die Plattform und die Kurse bis zu $1500 pro Monat. Selbst Reuters und Bloomberg mit sehr eingeschränkter Funktionalität für den Algo-Handel kosten etwa 2000 $ pro Monat.

Was die "Fortschrittlichkeit" betrifft, so kann ich sagen, dass ich (wir sind eine Gruppe) das weltweit erste kommerziell erhältliche Handelsprogramm (Expert Advisor) mit CUDA GPU-Beschleunigung für MT4 geschrieben habe.

Und hier ist ein Link zum Forum des Multicharts-Handelssystems (100...200 Dollar pro Monat für das Terminal und die Kurse), wo behauptet wird, dass "DIES UNMÖGLICH IST". Und dass sie von nvidia selbst darüber informiert wurden - d.h. vom Entwickler des CUDA-Subsystems selbst.

http://www.multicharts.com/discussion/viewtopic.php?f=1&t=8067

........................................................................................................................................................................

"Lieber bomberone1,

Die Programmarchitektur von MultiCharts erlaubt es nicht, die Vorteile von Systemen wie CUDA, GPU und anderen zu nutzen. In MC basieren die Berechnungen der aktuellen Werte auf den Berechnungen der vorherigen Werte. Wir haben uns in der Vergangenheit mit CUDA in Verbindung gesetzt und sie haben uns bestätigt, dass ihre Technologie aufgrund des in MC verwendeten Algorithmus nicht verwendet werden kann, um MC-Berechnungen schneller zu machen. Dies ist bei Handelssoftware üblich, da CUDA, GPU und andere normalerweise nicht für den Handel verwendet werden. Uns sind keine Beispiele für ähnliche Software bekannt, die CUDA oder GPU unterstützt."

.........................................................................................................................................................................

Sehen Sie? Sie sagen, es ist unmöglich. Ihre Architektur erlaubt es prinzipiell nicht. Und die Methaquots haben es im Terminal zum Laufen gebracht. Ich denke, das ist lächerlich.

MultiCharts: Trading Software for Automated Trading and Backtesting • View topic - Windows HPC Server 2008 R2 and CUDA
  • www.multicharts.com
Author Message Will multicharts support the HPC technical computing? I'd like to use the power of computing cloud. In the while is it possible use the power of CUDA, the GPU power calculation for backtesting? Mathlab and other many trading software support this function, when will see these on mc? I write here the possibility to use...
 
Sergiy Podolyak:

Ich stimme zu.

Aber was bedeutet es, "WOLLEN" zu sagen?

Das MT4-Terminal (und MT5) ist seit langem ein Lehr- und akademisches Terminal für verschiedene Handelsstudien. Es wird nur nicht an jeder Ecke angepriesen, wahrscheinlich ist es ihnen peinlich, dass es kostenlos ist (d.h. angeblich "nicht glaubwürdig").

Ja, aber es wäre einfacher für diejenigen, die "alles aus der Box" mögen, wie z.B. eRaasts, ihre Forschung ohne auch nur minimalen Aufwand zu betreiben. Das ist es, was ich damit sagen will. Und dass MT eine einzigartig fähige Recherche- und Handelsplattform ist - das ist ja schon lange so.
[Gelöscht]  
Andrey Dik:
Ja, aber für "Alles-aus-der-Kiste"-Enthusiasten, wie die meisten eRastas, wäre es einfacher, ihre Nachforschungen ohne auch nur minimalen Aufwand durchzuführen. Das ist es, was ich sagen will. Und die Tatsache, dass MT eine einzigartig fähige Recherche- und Handelsplattform ist - das gilt eigentlich schon seit langem.

Was bringt es Ihnen, Leute zu beschimpfen, die in die Irre geführt werden? Mögen Sie das R-System nicht? Gehen Sie einfach daran vorbei! Na ja, oder man muss sie 2-3 Mal belehren, diese R-Schniki, und dann vorbeigehen. Es gibt keine perfekten mathematischen Systeme. Genauso wenig wie Trading-Terminals. Ein Profi sollte in erster Linie ein professionelles Werkzeug für seine Arbeit wählen. Deshalb ist es manchmal notwendig, mehrere Tools zu verwenden. Ich habe 8 (acht) Versionen von Subroutinen für CUDA in meinem Build: einfache Präzision, doppelte Präzision, sequentieller Algorithmus, paralleler Algorithmus (das sind 4 Kombinationen von Subroutinen), nur in C, dann eine C-Version mit CUDA und dann eine Lite-Version von Subroutinen in reinem MQL4 - für den MQL5.com Market. Dies ist für die Fehlerprüfung und die Überprüfung der Genauigkeit der Algorithmen notwendig. Alles funktioniert in C, MQL4 und CUDA - fast gleich. San-Sanych drängt schon lange darauf, auch R zu verwenden - Wie? Soll ich auch die 8. oder 9. Version von Unterroutinen schreiben? Warum eigentlich? Um später mit zusätzlichen Parametern und zusätzlichen Fehlern umgehen zu können?

Metaquotes hat damit begonnen, R-Funktionen aus Distributionsfunktionen bedingt zu "klonen" (eigentlich ist der Prozess viel breiter als das R-Paket, das ist gut so). Dies ist notwendig, um durch statistische Tests die anderen statistischen Funktionen zu überprüfen.

Umso mehr dann - warum sollten Programmierer in die verrückte Welt des R-Riesen eintauchen, wenn "wahrscheinlich bald" die gleichen Funktionen in MQL4-5 erscheinen werden ? Wo ist der ökonomische Sinn, die wichtigste Ressource - Zeit - in die Weiterentwicklung von R zu stecken?

Die "allgemeine Akzeptanz" von R inspiriert mich nicht. Ich persönlich habe es in der Wissenschaft schon oft erlebt, dass die "allgemein anerkannte" Autorität sich auf die Seite desjenigen schlägt, der sie anbetet. Aus meiner persönlichen Erfahrung kann ich sagen, dass Handelsberechnungen eine Präzision erfordern, von der die Autoren von R nicht zu träumen wagten. RenTec, die erste und erfolgreichste Firma im vollständigen Algo-Trading, beschäftigt in erster Linie Astrophysiker, also Menschen, die sich mit besonders präzisen Berechnungen beschäftigen. RenTec weiß seit den 1990er Jahren, dass eine Preisreihe eine so dichte Substanz ist, dass es sehr präziser Berechnungen bedarf, um daraus AUTOMATISCH ihre Mikrostruktur zu extrahieren.

 
Sergiy Podolyak:

Was bringt es Ihnen, Leute zu beschimpfen, die fehlgeleitet sind? Mögen Sie das System R nicht? Einfach vorbeigehen! Na ja, oder da werden sie 2-3 mal belehrt, diese R-Schnikows, und dann vorbeigehen. Es gibt keine perfekten mathematischen Systeme. Genauso wenig wie Trading-Terminals. Ein Profi sollte in erster Linie ein professionelles Werkzeug für seine Arbeit wählen. Deshalb ist es manchmal notwendig, mehrere Tools zu verwenden.

Nein, ich beschimpfe Sie nicht, ich nenne Sie beim Namen. Sie können mich einen eMQL-Jast nennen, wenn Sie eRasts mögen.

Ich glaube nicht, dass eRastes einen Fehler machen, wenn sie R für die Forschung wählen, es ist einfacher für sie, das ist alles. Die Einfachheit der vorgefertigten Tools ist es, die sie anzieht. Sie installieren R auf ihrem Computer, wählen ein geeignetes Paket aus den vorgefertigten Paketen, laden ihre Daten und erhalten das Ergebnis - das ist das allgemeine Prinzip. Aber bei MQL müssen Sie etwas anderes schreiben! - Das ist schwierig für sie. Deshalb ist es jetzt so wichtig, dass fertige Pakete in der MT-Standardlieferung erscheinen, es ist genau das, was Leute brauchen, die "out of the box" mögen - es gibt keine Notwendigkeit, nach C-Quellen im ganzen Internet zu suchen (aus einer Milliarde Varianten dessen, was man braucht), und einfach eine fertige Lösung im Terminal selbst zu nehmen.

Bedingt lassen sich eRast und eMQL-ast in Fans von Gerichten aus dem Multicooker und Fans der Improvisation beim Kochen einteilen. Beide sollten einen Platz in MT haben, ich glaube, dass dies der Schlüssel zum Erfolg der Plattform ist - Zugänglichkeit für alle.

 

Ehrlich gesagt, verstehe ich nicht, worum es hier geht.

Schreibt jemand von uns Expert Advisors in R?

Vielleicht will jemand sie auf dem Markt verkaufen?

Schreibt jemand Expert Advisors mit vollem Funktionsumfang in R?

Vielleicht erstellt jemand hybride Varianten, bei denen die "Eingeweide" sowohl in MQL als auch in R geschrieben werden und durch DLLs effektiv miteinander verflochten sind?

Meiner Meinung nach ist die Tatsache, dass es MQL an einigen Funktionen mangelt, ganz natürlich und korrigierbar, aber ist das völlige Fehlen von Handelsfunktionen in R korrigierbar und wer wird es beheben? Warum brauchen die Händler es überhaupt?

(Ich entschuldige mich für meine Laienhaftigkeit).

[Gelöscht]  
Реter Konow:

Ehrlich gesagt, verstehe ich nicht, worum es hier geht.

Schreibt jemand von uns Expert Advisors in R?

Vielleicht will jemand sie auf dem Markt verkaufen?

Schreibt jemand Expert Advisors mit vollem Funktionsumfang in R?

Vielleicht erstellt jemand hybride Varianten, bei denen die "Eingeweide" sowohl in MQL als auch in R geschrieben werden und durch DLLs effektiv miteinander verflochten sind?

Meiner Meinung nach ist die Tatsache, dass MQL einige Funktionen fehlen, ganz natürlich und korrigierbar, aber ist das völlige Fehlen von Handelsfunktionen in R korrigierbar und wer wird es beheben? Warum brauchen Händler es überhaupt?

(Ich entschuldige mich für die Sichtweise eines Laien).

Verzeihen Sie mir. Ich werde es für Sie tun:

Eine Google-Suche nach "R trading strategies" ergibt 69.900.000 Ergebnisse.

Bitte sehr.

 
Sergiy Podolyak:

Verzeihen. Ich werde es für Sie tun:

Eine Google-Suche nach "R-Handelsstrategien" liefert 69.900.000 Ergebnisse.

Bitte sehr.

Und nein... )

Ich liebe den "R -Ansatz", gib mir alles auf einem Tablett.))