Como estamos hablando de la velocidad de cálculo y no de la diferencia en el rendimiento del algoritmo, deberíamos comparar funciones simples. Los indicadores adjuntos siguen siendo indicadores, cuya validez de cálculo es el punto de controversia aquí. Debemos tomar una función simple e implementarla de dos maneras: como un indicador personalizado y como una función que se llame en el código. Ya he hecho y escrito sobre ello - Sobrela velocidad de cálculo de los indicadores en MQL4.
Veo dos diferencias en los ejemplos: el test se llama como una función (en lugar de insertarse directamente en el código) y el contenido del test es más pobre (no hay manejo de arrays). Por tanto, la respuesta a la pregunta de si se debe utilizar iCustom sigue pareciendo depender de la situación. P.D. En mi ejemplo no hay una diferencia tan esencial en el número de operaciones para dos variantes - el "código de servicio" funciona una vez, y los bucles son los mismos.
1. El estilo de programación procedimental sólo es superado por la programación modular y la orientada a objetos. Por lo tanto, poner el algoritmo de cálculo en una función separada es un paso lógico.
¿Y por qué hay que trabajar con arrays en una función incorporada? Estamos hablando de la diferencia en el coste de llamar a una función personalizada incrustada en el código y a una función externa llamada a través de iCustom().
Rosh: 1. El estilo de programación procedimental sólo es superado por la programación modular y la orientada a objetos. Por lo tanto, poner el algoritmo de cálculo en una función separada es un paso lógico.
¿Y por qué hay que trabajar con arrays en una función incorporada? Estamos hablando de la diferencia en el coste de llamar a una función personalizada incrustada en el código y a una función externa llamada a través de iCustom().
1. es exactamente la eficacia resultante para los grandes proyectos. Sólo es inferior en términos de velocidad. 2. De manera similar. Lo que me interesa es la eficacia final. En el caso de MQL, suele ser el tiempo necesario para el desarrollo más el tiempo necesario para las pruebas en el probador. Aunque los segundos extra de espera para que el terminal cargue la cuenta real también pueden ser muy costosos. Me refiero a los nervios, no todo el mundo tiene la visión correcta sobre el comercio :)
Como puede ver, el uso de una función separada está justificado: la diferencia de tiempo para un ciclo de mil millones de pases es de sólo un segundo. Pero es mucho más fácil desarrollar el código.
Una de las implementaciones de regresión lineal, el grado del polinomio es 20, el número de puntos de cálculo y el desplazamiento del punto de partida se establece...
la salida se realiza mediante un canal cuya profundidad se establece en puntos... a una profundidad de 0 sólo se emite la propia curva de regresión
Aquí está el indicador test.mq4
Este es el script que mide la velocidad de cálculo del algoritmo de prueba
a través de iCustom() y a través de la llamada a test().
P.D. En mi ejemplo no hay una diferencia tan esencial en el número de operaciones para dos variantes - el "código de servicio" funciona una vez, y los bucles son los mismos.
¿Y por qué hay que trabajar con arrays en una función incorporada? Estamos hablando de la diferencia en el coste de llamar a una función personalizada incrustada en el código y a una función externa llamada a través de iCustom().
1. El estilo de programación procedimental sólo es superado por la programación modular y la orientada a objetos. Por lo tanto, poner el algoritmo de cálculo en una función separada es un paso lógico.
¿Y por qué hay que trabajar con arrays en una función incorporada? Estamos hablando de la diferencia en el coste de llamar a una función personalizada incrustada en el código y a una función externa llamada a través de iCustom().
2. De manera similar. Lo que me interesa es la eficacia final. En el caso de MQL, suele ser el tiempo necesario para el desarrollo más el tiempo necesario para las pruebas en el probador. Aunque los segundos extra de espera para que el terminal cargue la cuenta real también pueden ser muy costosos. Me refiero a los nervios, no todo el mundo tiene la visión correcta sobre el comercio :)
Y aquí están los resultados del guión.
Como puede ver, el uso de una función separada está justificado: la diferencia de tiempo para un ciclo de mil millones de pases es de sólo un segundo. Pero es mucho más fácil desarrollar el código.
Aquí tienes más información sobre cómo encontrar los parámetros de una regresión lineal. Tomado de aquí - Canal de Regresión Lineal
Y aquí hay una función que implementa el algoritmo descrito (tal vez alguien pueda usarla):
La función se llama así:
Algo anda mal en el reino danés.
He tenido que borrar mi post anterior. Hay un error en el algoritmo.
Sé que mucha gente utiliza este procedimiento, pero .... no puede encontrar la razón del error AYUDA a mí.
Aquí está el guión. Los coeficientes A y B se calculan dos veces.
El resultado es el siguiente
intercepción = -3,33333333 pendiente = 5,00000000
intercepción = -1102,16914108 pendiente = 0,00000091
Y aquí está lo mismo, pero calculado en MathCad. En azul los resultados coinciden, en rojo no (.
En Mathcad estas son funciones incorporadas, por lo que lo más probable es un error en MT4, pero ¿dónde?
Algo anda mal en el reino danés.
He tenido que borrar mi post anterior. Hay un error en el algoritmo.
Sé que mucha gente utiliza este procedimiento, pero .... no puede encontrar la razón del error AYUDA a mí.
Aquí está el guión. Los coeficientes A y B se calculan dos veces.
El resultado es el siguiente
intercepción = -3,33333333 pendiente = 5,00000000
intercepción = -1102,16914108 pendiente = 0,00000091
Y aquí está lo mismo, pero calculado en MathCad. En azul los resultados coinciden, en rojo no (.
Esta es una función incorporada en Mathcad, por lo que lo más probable es un error en MT4, pero ¿dónde?
Esto es lo que muestra Excel 2007
Por lo tanto, puede ser necesario comprobar Matcad.
Una de las implementaciones de regresión lineal, el grado del polinomio es 20, el número de puntos de cálculo y el desplazamiento del punto de partida se establece...
la salida se realiza mediante un canal cuya profundidad se establece en puntos... a una profundidad de 0 sólo se emite la propia curva de regresión