![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Hola dennisj2,
¿estás seguro de que realmente necesitas tu fórmula?
Tal vez intente primero buscar otros filtros como Kalman, Ehlers, Gauss, Jurik (JMA), DEMA. La mayoría de ellos se derivan de los filtros de frecuencia de paso bajo (físicos) y la mayoría de ellos han encontrado su camino en el código mt4.
¿Puede ser que un JMA (hay muchas variaciones) con un período más largo haga lo que usted está buscando?
¿Tienes algún enlace que pueda investigar?
SDC - usted está ahora en el mismo nivel que yo - la fórmula de regresión lineal que encontré funciona - y hay dos fórmulas claramente diferentes que encontré que producen resultados idénticos. Estas fórmulas son grandes si la regresión lineal (una línea de tendencia recta) es lo que estábamos después.
Primero, algo de material de referencia:
Microsoft: http://office.microsoft.com/en-us/excel-help/linest-HP005209155.aspx
IntegralCalc: https: //www.youtube.com/watch?v=1pawL_5QYxE&noredirect=1
Dada la ecuación de regresión lineal y = mx + b:
Donde y = precio, (por ejemplo, Close[x])
y x = índice (por ejemplo, Bar[x])
y m = Pendiente (el coeficiente aplicado a cada par (x,y))
y b = Intercepción Y (el valor base de la intercepción Y aplicado a cada par (x,y))
Método A: Desde IntegralCalcMétodo B: Desde Microsoft (donde x(overbar) e y(overbar) son medias)
Incluso la fórmula de la línea de tendencia de regresión polinómica a la enésima potencia es relativamente fácil de aplicar:
Dada la fórmula: y = m1*x1 + m2*x2 + m3*x3 + ... + b
Donde las variables x, y, m y b llevan la misma definición descrita en la ecuación lineal.
Parece que lo tengo todo, ¿qué falta?
Lo que falta es el cálculo de la m (pendiente) y la b (intersección Y) para una regresión polinómica; la ecuación lineal para calcular estos valores no se aplica a una regresión polinómica. Por lo que he aprendido, la regresión polinómica requiere una fórmula que calcula los mínimos cuadrados basada en un sistema de ecuaciones polinómicas utilizando una matriz. Mira los gráficos de ejemplo de arriba. En el primer gráfico, las líneas polinómicas(6) son absolutamente inmaculadas: los máximos y los mínimos están claramente definidos. Con estos datos, seré capaz de mantener las operaciones más tiempo de lo que lo hago hoy en día, duplicando y potencialmente triplicando mi promedio de pips por operación.
En el segundo gráfico, muestro los resultados del método poly(6) frente al método i-regr que utiliza una matriz de gauss para resolver los coeficientes de pendiente - y, no hace falta decir, es bastante inútil debido a la latencia sustancial del método. Por otra parte, una media móvil simple es aún peor - el SMA es demasiado sensible durante las correcciones intermedias del mercado que podrían causar una reacción excesiva de mi EA.
Estoy dispuesto a pagar a alguien para desarrollar un verdadero indicador de regresión polinómica - pero, los resultados deben reflejar absolutamente los resultados que produce Excel. La función LINEST() es una caja negra en la que se utiliza mucho vudú para calcular los coeficientes. Simplemente, necesito entender este vudú.
Actualización: He adjuntado un archivo que muestra el método implementado en Excel.
He codificado una regresión lineal hace un tiempo aquí es el enlace a mi código: Regresión lineal Aunque no garantizo que sea 100% correcta, creo que identifiqué un problema con el uso del índice x cero en los cálculos que arreglé algún tiempo después.
También codifiqué una versión móvil de eso, la versión móvil crea una parábola similar a una media móvil suavizada porque en cada barra sólo dibuja la última coordenada de la línea de regresión lineal.
He estado tratando de aprender a usar un poli nominal de 2do grado para su línea. He pensado que si podemos hacerlo con una cuadrática podemos ampliarlo con una de 6º grado.
Voy a leer tus enlaces y ver si puedo aprender algo,
He codificado una regresión lineal hace un tiempo aquí es el enlace a mi código: Regresión lineal Aunque no garantizo que sea 100% correcta, creo que identifiqué un problema con el uso del índice x cero en los cálculos que arreglé algún tiempo después.
También codifiqué una versión móvil de eso, la versión móvil crea una parábola similar a una media móvil suavizada porque en cada barra sólo dibuja la última coordenada de la regresión lineal.
He estado tratando de aprender a usar un poli nominal de 2do grado para su línea. He pensado que si podemos hacerlo con una cuadrática podemos ampliarlo con una de 6º grado.
Voy a leer tus enlaces a ver si aprendo algo,
SDC: Estoy de acuerdo - una cuadrática podría no ser suficiente, pero estoy tendiendo a creer que una cúbica podría ser suficiente para ampliar a grados superiores.
¿Tienes algún enlace que pueda investigar?
y luego uno de los nombres..
Puede ser que usted agregue un filtro (de paso bajo).
Algunos están en la base de código mt4 - algunos sólo no y no debemos publicar enlaces externos..
Solo hay que recordar que la regresión es un ajuste de curvas y como alguien ya señaló las regresiones repintan. No estoy seguro de qué valor predictivo tiene el ajuste de curvas puro. De mis propios experimentos su valor predictivo no era muy bueno.
Rocketman,
Estoy de acuerdo contigo en parte, en que los modelos de regres ión tienden a repintar las tendencias históricas y no son muy fiables. Este es claramente el caso del indicador i-regr - he estado observando el rendimiento de este indicador en vivo los últimos días y puedo decir honestamente que este indicador no ofrece ningún valor por tres razones: 1) es hipersensible a las correcciones de corto plazo, y 2) su severa latencia (con el EA e-regr) para el momento en que el indicador pinta el punto de entrada del límite inferior para las posiciones largas, o el límite superior para las posiciones cortas, el mercado se ha movido mucho más allá de los puntos de entrada y, en la mayoría de los casos, es contrario a la tendencia del mercado, y 3) a partir de la observación solamente, cuando el mercado se dirigió al alza, el indicador estaba apuntando a la baja, y viceversa por lo que su uso como un indicador de tendencia direccional es 50% confiable en el mejor de los casos.
La semana pasada el USDJPY rondaba la zona de 102,35-102,50, i-regr mostraba una tendencia del mercado a la baja (se había curvado hacia abajo y se estaba moviendo hacia abajo), e-regr emitió una venta, entonces el indicador sólo 5 períodos después cambió a largo y volvió a pintar como si siempre hubiera estado largo mientras el USDJPY avanzaba a 104,20)
En apoyo del punto de que los indicadores de tipo repintado no ofrecen ningún valor y no son fiables - dado lo que he visto trabajar en las librerías MQL4 disponibles, le aseguro que entiendo la frustración expresada por aquellos que han trabajado con estos indicadores - dado lo que tenemos, nada funciona. Dicho esto, todavía no he visto un indicador de regresión polinómica fiable que calcule hasta el 6º grado. También aseguraré que cuando tengamos una regresión polinómica fiable, los resultados serán espectaculares.
Rocketman,
Estoy de acuerdo contigo en parte, en que los modelos de regresión tienden a repintar las tendencias históricas y no son muy fiables. Este es claramente el caso del indicador i-regr - he estado observando el rendimiento de este indicador en vivo los últimos días y puedo decir honestamente que este indicador no ofrece ningún valor por tres razones: 1) es hipersensible a las correcciones de corto plazo, y 2) su severa latencia (con el EA e-regr) para el momento en que el indicador pinta el punto de entrada del límite inferior para las posiciones largas, o el límite superior para las posiciones cortas, el mercado se ha movido mucho más allá de los puntos de entrada y, en la mayoría de los casos, es contrario a la tendencia del mercado, y 3) a partir de la observación solamente, cuando el mercado se dirigió al alza, el indicador estaba apuntando a la baja, y viceversa por lo que su uso como un indicador de tendencia direccional es 50% confiable en el mejor de los casos.
La semana pasada el USDJPY rondaba la zona de 102,35-102,50, i-regr mostraba una tendencia del mercado a la baja (se había curvado hacia abajo y se estaba moviendo hacia abajo), e-regr emitió una venta, entonces el indicador sólo 5 períodos después cambió a largo y volvió a pintar como si siempre hubiera estado largo mientras el USDJPY avanzaba a 104,20)
En apoyo del punto de que los indicadores de tipo repintado no ofrecen ningún valor y no son fiables - dado lo que he visto trabajar en las librerías MQL4 disponibles, le aseguro que entiendo la frustración expresada por aquellos que han trabajado con estos indicadores - dado lo que tenemos, nada funciona. Dicho esto, todavía no he visto un indicador de regresión polinómica fiable que calcule hasta el 6º grado. También aseguraré que cuando tengamos una regresión polinómica fiable, los resultados serán espectaculares.
No soy un matemático, pero mi experiencia con cualquier forma de regresión no era muy bueno. Como usted nota que hay muchas maneras de hacer regresiones que en última instancia puede resultar en un mejor ajuste de la curva estadística. Pero la cuestión sigue siendo su poder de predicción.
Si realmente quieres ir al grano con estas cosas, entonces tienes que investigar R y probar algunas de las regresiones avanzadas disponibles (busca en Google ARIMA, ARCH/GARCH, etc): http://talksonmarkets.files.wordpress.com/2012/09/time-series-analysis-with-arima-e28093-arch013.pdf
Yo me pasé semanas con estas cosas y también investigué la cointegración y mi éxito fue casi nulo.
No creo que la codificación de MQL4 esté a la altura de este análisis estadístico avanzado.
bueno, hmmm hmmm.....
I don't think MQL4 coding is up to the task for this advanced statistical analysis.
http://rosettacode.org/wiki/Polynomial_regression
Resolver una regresión P6 (polinómica de 6º grado) es resolver un sistema de 6 ecuaciones con 6 variables sobre una función numérica discreta, lo que quizás no es sencillo, pero no es imposible de hacer.
Puedo mirar más tarde qué método se utiliza exactamente en i_regr.mq4.
Tengo que estar de acuerdo, este era el punto de mi primer comentario. Porque ... ¿qué estamos haciendo? Estamos ajustando con parte de la curva aleatoria (el PA (Price Action) real) a P6, en este caso. ¿Y luego esperamos que el siguiente punto de PA actúe como si fuera una continuación de esta curva?
OK, parece que Dennis está utilizando esta curva como función de transformación de pequeña latencia de PA, y esto tiene algún sentido, sin embargo, ¿qué tan bueno puede ser esto? Esto debe hacerse en un TF más alto debido a la filtración de ruido, y no creo que sea posible evitar las pérdidas cuando PA entra en el rango que es el problema con este tipo de estrategia de negociación.
Bueno, el i-regr no funciona tan mal. Para verlo en acción, basta con utilizar el modo visual de backtest de e-regr.mq4 y soltar el indicador en la ventana de prueba.
Supongo que utiliza algún tipo de regresión rápida o interpolación, pero su resultado no es tan malo. Sigue el PA y se adapta a la curva.
Tus puntos:
1) todos los indicadores lo son. esto suele solucionarse con la adición de otro tipo de indicador como filtro, o mayor TF.
2) bien, con un mejor ajuste de la curva la latencia mejorará. pero el problema principal no es la latencia sino los criterios de entrada de e-regr. ¿disparo contra tendencia en los bordes del canal de tamaño constante? sin recuperación adecuada para el cambio de tendencia? sin una verdadera gestión del dinero? ridículo.
mi idea principal sería la entrada/salida en el cambio de dirección de la curva de regresión, pero todavía no estoy seguro de cómo un indicador completo de repintado sería bueno para esto.
De todos modos, tuve la impresión de que usted está utilizando la intersección de dos curvas de regresión con diferente coeficiente de determinación para la entrada / salida
Sí, como dijo Graziani, podemos codificar cualquier cosa en mql4, todo se reduce a lo bien que entendamos cómo implementar esta matemática.
En cuanto al repintado, eso no será un problema, la única barra que nos importa es la barra cero, la barra de negociación del precio actual. La forma en que yo codificaría esto (suponiendo que podamos resolver las matemáticas) es que la ecuación se realizará en los precios de las últimas n barras, el valor resultante para la barra cero se dibujará, la línea en todas las barras anteriores se dejará como estaba desde el cálculo anterior. Por un lado, no hay necesidad de reajustar toda la línea a cualquier historial del gráfico cuando sólo podemos operar en la barra cero y, por otro lado, mostraría un historial real de cómo se aplicó la línea a cada barra cuando era la barra de precios en vivo.
Desde el enlace que publicó Dennis Regresión Polinominal me pareció muy interesante desde el punto de vista de un indicador adaptativo.
"En la regresión polinómica, se añaden diferentes potencias de la variable X (X, X2, X3...) a una ecuación para ver si aumentan el r2 de forma significativa. Primero se realiza una regresión lineal, ajustando una ecuación de la forma Y=a+bX a los datos. Luego se ajusta a los datos una ecuación de la forma Y=a+b1X+b2X2, que produce una parábola. La r2 siempre aumentará cuando se añada un término de orden superior, pero la cuestión es si el aumento de la r2 es significativamente mayor de lo esperado debido al azar. A continuación, se ajusta una ecuación de la forma Y=a+b1X+b2X2+b3X3, que produce una línea en forma de S, y se comprueba el aumento de r2. Esto puede continuar hasta que añadir otro término no aumente r2 de forma significativa"
Esto podría ser todo lo que necesitamos saber para codificarlo, fíjate en que el autor escribe y=a+b1X+b2X2 en lugar de y=ax2+bx+c ? Eso era lo que me despistaba, pensaba que c tenía que ser un coeficiente totalmente diferente. Al parecer, según este artículo, los coeficientes c,d,e,f,g en y=ax6+bx5+cx4+dx3+ex2+fx+g están directamente relacionados con b que ya sabemos por la regresión lineal, es la pendiente.
Dicho esto, me resulta difícil creer que sea realmente tan sencillo. ¿Por qué escribir a,b,c,d,e,f,g, coeficientes si realmente se puede escribir como y=a+b1X+b2X2+b3X3+b4X4+b5X5+b6X6? Además, como dijo Dennis, otros artículos parecen sugerir que el intercepto de la pendiente, como en una regresión lineal, no se aplica a la polirregresión. A veces me pregunto si no se inventan estas cosas sobre la marcha.
Aparte de eso, el artículo parece implicar r2 puede ser utilizado para medir qué tan bien la línea se ajusta a la curva de datos mientras estamos probando los aumentos de la ecuación polinominal por grado,
Estoy pensando que r2 podría tener algo que ver con la varianza? ¿Puede alguien decir qué es r2 con seguridad?