Discusión sobre el artículo "Distribuciones Estadísticas en MQL5: tomando lo mejor de R" - página 8

[Eliminado]  

Y lo que sigue es el propio texto de la subrutina permisiva de 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
[Eliminado]  

Que es mas facil: escribir una subrutina en C o MQL4-MQL5 por 0.5...1 hora y luego usarla por años para ti y para la gente,

como opción - usar una subrutina de la librería MQL4-MQL5,

o escarbar durante semanas en fuentes y locos nombres de funciones y parámetros del paquete netLib y R, tratando de entenderlos, y especialmente en la lógica marciana de los programadores de Fortran - ¿subfísicos?

Si quieres escribir un programa complejo, lo primero que debe importarte es la simplicidad y la claridad, no su velocidad.

La velocidad de funcionamiento es algo SECUNDARIO.

Metaquotes sabe cómo hacer las cosas claras y comprensibles. Hay que tener un talento especial para eso, por cierto. Por eso derrotaron a todos en el primer asalto de la lucha por un terminal de trading y un entorno de desarrollo asequibles. Nadie más consiguió hacerlo de forma clara, lógica y sencilla.

Así que ¡úsalo! ¡Es genial! ¡Y es gratis!

333). Y ahora algunas malas noticias para San-Sanych, para el paquete R y posiblemente para Metaquotes:

Varias funciones matemáticas básicas que son necesarias para el comercio no se cuentan correctamente en Netlib, R y Metaquotes.

Yo las cuento correctamente y me dan resultados positivos. Si se cuentan como todo el mundo las cuenta, el resultado del trading es negativo o apenas positivo. No te voy a decir qué funciones son, lo siento. Por eso prefiero escribirlo todo yo y usar NOMBRES LARGOS en mi trabajo. Es más fácil entender lo que uno mismo escribió ayer.

Aquí tienes un ejemplo:

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:

...

Increíble, primera vez que conozco a alguien con una actitud similar a la de escribir programas. Por eso soy ferozmente más.

Los principales argumentos de eRaists son una enorme base de datos de funciones y los llamados "paquetes", que se reponen constantemente. Hay que tener en cuenta que todas o el 99% de estas personas no saben nada de C ni de MQL. No están acostumbrados a escarbar en el código, son detractores de las "bicicletas". Pero, por alguna razón, los eRast nunca dicen que R es ilegible y que si necesitas corregir algo por ti mismo, es prácticamente imposible hacerlo o implica enormes costes de mano de obra. Se olvidan del hecho de que para C y C++ (en los que el propio R está escrito) hay probablemente más código que para cualquier otro lenguaje, innumerables librerías con código fuente que se transfieren a MQL realmente como dos bytes.

Si Gadzila, por ejemplo, desde el momento en que empezó a reescribir la base de código de MQL4 a MQL5, hubiera reescrito las librerías open mat y stat a partir de fuentes en C, entonces a estas alturas MT5 sería la plataforma más potente lista para investigaciones varias y trading avanzado, pero el trabajo ya lo está haciendo, afortunadamente, MQ.

Por cierto, antes de escribir mi AG, revisé si no cientos, si docenas de fuentes C/C++ con codeproject, aunque mis conocimientos de programación apenas superaban el nivel cero. Es decir, los códigos fuente abiertos de C/C++ permiten no sólo estudiar la teoría y los enfoques de las tareas, sino también crear algo único y nuevo incluso para personas alejadas de la escritura de programas. Pero incluso los especialistas en R difícilmente pueden o quieren escribir algo nuevo en R, les resulta más fácil conformarse con lo que ya ha hecho otra persona creyendo que todo funciona correctamente.

[Eliminado]  
Andrey Dik:
...

Si Gadzila, por ejemplo, hubiera reescrito open mat y stat libraries de fuentes C desde que empezó a reescribir el codebase de MQL4 a MQL5, entonces ahora MT5 sería la plataforma más potente LISTA para diversas investigaciones y trading avanzado, pero el trabajo ya lo está haciendo, afortunadamente, MQ.

De acuerdo.

Pero, ¿qué significa "sería"?

El terminal MT4 (y MT5) lleva mucho tiempo siendo un terminal docente y académico para diversas investigaciones de trading. Simplemente no lo vocean en cada esquina, probablemente les avergüence su gratuidad (es decir, su supuesta "no credibilidad").

Por mi experiencia personal de comunicación con traders profesionales de nivel medio, puedo decir con seguridad que hoy en día los nuevos algoritmos de trading se escriben primero en MQL4, y luego se transfieren a cualquier otro terminal de pago con más instrumentos de trading y acceso a más bolsas. Pero cuesta mucho más: desde 250 dólares al mes por la plataforma y las cotizaciones hasta 1500 dólares al mes. Incluso Reuters y Bloomberg, con funcionalidades muy limitadas para algo-trading, cuestan unos 2000 $ al mes.

En cuanto a lo "avanzado", puedo decir que yo (somos un grupo) escribí el primer programa de trading disponible comercialmente en el mundo (Expert Advisor) con aceleración en GPU CUDA para MT4.

Y aquí hay un enlace al foro del sistema de trading Multicharts (100...200 dólares al mes por el terminal y las cotizaciones), donde afirman que "ESTO ES IMPOSIBLE". Y que se lo dijo la propia nvidia, es decir, el propio desarrollador del subsistema CUDA.

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

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

"Estimado bomberone1,

El programa achitechture de MultiCharts no permite aprovechar sistemas como CUDA, GPU y otros. En MC los cálculos de los valores actuales se basan en los cálculos de los valores anteriores. Hemos contactado con CUDA en el pasado y nos han confirmado que su tecnología no puede ser utilizada para hacer los cálculos de MC más rápidos debido al algoritmo utilizado en MC. Lo cual es común para el software de comercio, ya que normalmente CUDA, GPU y otros no se utilizan para el comercio. No conocemos ningún ejemplo de software similar que soporte CUDA o GPU".

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

¿Lo veis? Dicen que es imposible. Su arquitectura en principio no lo permite. Y los Methaquots lo tienen funcionando en el terminal. Me parece ridículo.

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:

Estoy de acuerdo.

Pero, ¿qué significa decir "DEBERÍA"?

El terminal MT4 (y MT5) es desde hace tiempo un terminal académico para diversos estudios de trading. Simplemente no lo vocean en cada esquina, probablemente les avergüence su gratuidad (es decir, su supuesta "no credibilidad").

Sí, pero sería más fácil para los que les gusta "todo a la carta", como eRaasts, llevar a cabo sus investigaciones sin el más mínimo esfuerzo. A eso me refiero. Y el hecho de que MT es una plataforma de investigación y negociación con una capacidad única - esto ha sido cierto durante mucho tiempo.
[Eliminado]  
Andrey Dik:
Sí, pero para los entusiastas del "todo fuera de la caja", como la mayoría de los eRastas, sería más fácil hacer su investigación sin ni siquiera un mínimo esfuerzo. Eso es lo que estoy diciendo. Y el hecho de que MT es una plataforma de investigación y negociación con una capacidad única - eso es realmente cierto desde hace mucho tiempo.

¿Cuál es el punto o el beneficio para usted de llamar a la gente nombres que están equivocados? ¿No te gusta el sistema R? ¡Simplemente pasa de él! Bueno, o hay 2-3 veces para educarlos, estos R-schniki, y luego pasar de largo. No hay sistemas matemáticos perfectos. Así como terminales de comercio. Un profesional debe elegir una herramienta profesional para su trabajo en primer lugar. Es por eso que a veces es necesario utilizar varias herramientas. Tengo 8 (ocho) versiones de subrutinas para CUDA en mi build: precisión simple, precisión doble, algoritmo secuencial, algoritmo paralelo (son 4 combinaciones de subrutinas), sólo en C, luego una versión en C con CUDA, y luego una versión Lite de subrutinas en MQL4 puro - para el Mercado MQL5.com. Esto es necesario para la comprobación de errores y para comprobar la exactitud de los algoritmos. Todo funciona en C, MQL4 y CUDA - casi igual. Desde hace tiempo San-Sanych insta a todos a utilizar también R - ¿Cómo? ¿Debo escribir también la 8ª o 9ª versión de subrutinas? ¿Por qué? ¿Para lidiar con parámetros adicionales y errores adicionales más tarde?

Metaquotes comenzó condicionalmente hablando "clonando" funciones R de funciones de distribución (en realidad el proceso es mucho más amplio que el paquete R, esto es bueno). Esto es necesario para verificar mediante pruebas estadísticas las otras funciones estadísticas.

Tanto más entonces - ¿por qué los programadores deben sumergirse en el loco mundo del behemoth R, si "probablemente pronto" las mismas funciones aparecerán en MQL4-5 ? ¿Dónde está el sentido económico de gastar el principal recurso - el tiempo - en enchufar R?

La "aceptación general" de R no me inspira. Personalmente, lo he visto muchas veces en la ciencia - cuando la autoridad "universalmente reconocida" sale en el lado del que la adora. Por mi experiencia personal, puedo decir que los cálculos comerciales requieren una precisión que los autores de R nunca soñaron. RenTec, la primera y más exitosa empresa de algo-trading completo, emplea en primer lugar a astrofísicos, es decir, a personas dedicadas a cálculos especialmente precisos. RenTec sabe desde los años 90 que una serie de precios es una sustancia tan densa que se requieren cálculos muy precisos para extraer de ella AUTOMÁTICAMENTE su microestructura.

 
Sergiy Podolyak:

¿Qué sentido o beneficio tiene para ti insultar a la gente que está equivocada? ¿No te gusta el sistema R? ¡Pasen de largo! Bueno, o hay 2-3 veces que los educan, estos R-schnikovs, y luego pasan de largo. No hay sistemas matemáticos perfectos. Así como terminales de comercio. Un profesional debe elegir una herramienta profesional para su trabajo en primer lugar. Por eso a veces es necesario utilizar varias herramientas.

No, no te insulto, te llamo por tu nombre. Puedes llamarme eMQL-jasta, si te gustan los eRastos.

No creo que los eRastes vayan desencaminados al elegir R para investigar, les resulta más fácil, eso es todo. La sencillez de las herramientas ya hechas es lo que les atrae. Instalas R en tu ordenador, eliges un paquete adecuado de entre los ya preparados, cargas tus datos, obtienes el resultado - ese es el principio general. Pero en MQL hay que escribir algo más. - Es difícil para ellos. Por eso es tan importante ahora que los paquetes listos aparecen en la entrega estándar de MT, es como exactamente lo que la gente que le gusta "fuera de la caja" necesita - no hay necesidad de buscar fuentes C en todo el Internet (de un billón de variantes de lo que necesita), y sólo toma una solución lista en el propio terminal.

Condicionalmente eRast y eMQL-ast se pueden dividir en fans de los platos de multicooker y fans de la improvisación en la cocina. Ambos deben tener un lugar en MT, creo que esta es la clave del éxito de la plataforma - accesibilidad para todos.

 

Sinceramente, no entiendo a qué viene la discusión.

¿Alguno de nosotros escribe Expert Advisors en R?

¿Quizás alguien quiere venderlos en el mercado?

¿Alguien escribe Expert Advisors completos en R?

¿Quizás alguien crea variantes híbridas, donde las "tripas" están escritas tanto en MQL como en R, y están efectivamente entrelazadas a través de DLLs?

En mi opinión, el hecho de que MQL pueda carecer de algunas funcionalidades es bastante natural y corregible, pero ¿es corregible la completa falta de funcionalidades de trading en R y quién lo arreglará? ¿Por qué los traders las necesitan?

(Pido disculpas por mi amateurismo).

[Eliminado]  
Реter Konow:

Sinceramente, no entiendo a qué viene la discusión.

¿Alguno de nosotros escribe Expert Advisors en R?

¿Quizás alguien quiere venderlos en el mercado?

¿Alguien escribe Expert Advisors completos en R?

¿Quizás alguien crea variantes híbridas, donde las "tripas" están escritas tanto en MQL como en R, y están efectivamente entrelazadas a través de DLLs?

En mi opinión, el hecho de que MQL pueda carecer de algunas funcionalidades es bastante natural y corregible, pero ¿es corregible la completa falta de funcionalidades de trading en R y quién lo arreglará? ¿Por qué los traders las necesitan?

(Pido disculpas por mi opinión de profano).

Perdonadme. Yo lo haré por usted:

Una búsqueda en Google de "R trading strategies" arroja 69.900.000 resultados.

De nada.

 
Sergiy Podolyak:

Perdonar. Yo lo haré por ti:

Una búsqueda en Google de "R trading strategies" devuelve 69.900.000 resultados.

De nada.

Y no... )

Me encanta el "R -approach", dámelo todo en bandeja)).