Indicador técnico

Predicción de Precios en Trading con Redes Neuronales
MetaTrader4
Predicción de Precios en Trading con Redes Neuronales

Autor: gpwr Historial de Versiones: 26/06/2009: Se añadió un nuevo indicador BPNN Predictor con Suavizado.mq4, en el que los precios se suavizan usando EMA antes de realizar las predicciones. 20/08/2009: Se corrigió el código que calcula la función de activación de las neuronas para evitar excepciones aritméticas; se actualizó BPNN.cpp y BPNN.dll. 21/08/2009: Se añadió la limpieza de memoria al final de la ejecución de la DLL; se actualizó BPNN.cpp y BPNN.dll. Breve Teoría de las Redes Neuronales: Una red neuronal es un modelo ajustable de salidas como funciones de entradas. Está compuesta por varias capas: capa de entrada, que consiste en los datos de entrada capa oculta, que se compone de nodos de procesamiento llamados neuronas capa de salida, que consiste en una o varias neuronas, cuyas salidas son las salidas de la red. Todos los nodos de capas adyacentes están interconectados. Estas conexiones se llaman sinapsis. Cada sinapsis tiene un coeficiente de escalado asignado, por el cual los datos propagados a través de la sinapsis se multiplican. Estos coeficientes de escalado se denominan pesos (w[i][j][k]). En una Red Neuronal de Propagación Adelante (FFNN), los datos se propagan de las entradas a las salidas. Aquí hay un ejemplo de FFNN con una capa de entrada, una capa de salida y dos capas ocultas: La topología de una FFNN a menudo se abrevia de la siguiente manera: &lt;número de entradas&gt; - &lt;número de neuronas en la primera capa oculta&gt; - &lt;número de neuronas en la segunda capa oculta&gt; -...- &lt;número de salidas&gt;. La red anterior puede ser referida como una red 4-3-3-1. Los datos son procesados por las neuronas en dos pasos, que se muestran dentro del círculo con un signo de suma y un signo de paso: Todos los inputs se multiplican por los pesos asociados y se suman Las sumas resultantes son procesadas por la función de activación de la neurona, cuya salida es la salida de la neurona. Es la función de activación de la neurona la que aporta no linealidad al modelo de red neuronal. Sin ella, no hay razón para tener capas ocultas, y la red neuronal se convierte en un modelo autorregresivo lineal (AR). Los archivos de biblioteca incluidos para funciones NN permiten seleccionar entre tres funciones de activación: sigmoide: sigm(x)=1/(1+exp(-x)) (#0) tangente hiperbólica: tanh(x)=(1-exp(-2x))/(1+exp(-2x)) (#1) función racional: x/(1+|x|) (#2) El umbral de activación de estas funciones es x=0. Este umbral puede ser movido a lo largo del eje x gracias a una entrada adicional de cada neurona, llamada entrada de sesgo, que también tiene un peso asignado. El número de entradas, salidas, capas ocultas, neuronas en estas capas y los valores de los pesos de sinapsis describen completamente una FFNN, es decir, el modelo no lineal que crea. Para encontrar los pesos, la red debe ser entrenada. Durante un entrenamiento supervisado, se alimentan a la red varios conjuntos de entradas pasadas y las correspondientes salidas esperadas. Los pesos se optimizan para lograr el menor error entre las salidas de la red y las salidas esperadas. El método más simple de optimización de pesos es la retropropagación de errores, que es un método de descenso de gradiente. La función de entrenamiento Train() utiliza una variante de este método, denominada Retropropagación Mejorada Plus (iRProp+). Este método se describe aquí: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.17.1332 La principal desventaja de los métodos de optimización basados en gradientes es que a menudo encuentran un mínimo local. Para series caóticas como las series de precios, la superficie de error de entrenamiento tiene una forma muy compleja con muchos mínimos locales. Para tales series, un algoritmo genético es un método de entrenamiento preferido. Archivos incluidos: BPNN.dll - archivo de biblioteca BPNN.zip - archivo comprimido de todos los archivos necesarios para compilar BPNN.dll en C++ BPNN Predictor.mq4 - indicador que predice los precios de apertura futuros BPNN Predictor con Suavizado.mq4 - indicador que predice precios de apertura suavizados El archivo BPNN.cpp tiene dos funciones: Train() y Test(). Train() se utiliza para entrenar la red basada en los valores de entrada y salida esperados proporcionados. Test() se usa para calcular las salidas de la red utilizando los pesos optimizados que se encontraron mediante Train(). Aquí está la lista de parámetros de entrada (verde) y salida (azul) de Train(): double inpTrain[] - Datos de entrada para el entrenamiento (arreglo 1D que lleva datos 2D, el más antiguo primero) double outTarget[] - Datos de salida objetivo para entrenamiento (datos 2D como arreglo 1D, el más antiguo primero) double outTrain[] - Arreglo de salida 1D para contener las salidas de la red del entrenamiento int ntr - Número de conjuntos de entrenamiento int UEW - Usar pesos externos para la inicialización (1=usar extInitWt, 0=usar aleatorio) double extInitWt[] - Arreglo de entrada 1D para contener un arreglo 3D de pesos externos iniciales double trainedWt[] - Arreglo de salida 1D para contener un arreglo 3D de pesos entrenados int numLayers - Número de capas incluyendo entrada, ocultas y salida int lSz[] - Número de neuronas en capas. lSz[0] es el número de entradas de la red int AFT - Tipo de función de activación de neuronas (0:sigm, 1:tanh, 2:x/(1+x)) int OAF - 1 habilita función de activación para la capa de salida; 0 desactiva int nep - Número máximo de épocas de entrenamiento double maxMSE - MSE máximo; el entrenamiento se detiene una vez alcanzado el maxMSE Aquí está la lista de parámetros de entrada (verde) y salida (azul) de Test(): double inpTest[] - Datos de prueba de entrada (datos 2D como arreglo 1D, el más antiguo primero) double outTest[] - Arreglo de salida 1D para contener las salidas de la red del entrenamiento (el más antiguo primero) int ntt - Número de conjuntos de prueba double extInitWt[] - Arreglo de entrada 1D para contener un arreglo 3D de pesos externos iniciales int numLayers - Número de capas incluyendo entrada, ocultas y salida int lSz[] - Número de neuronas en capas. lSz[0] es el número de entradas de la red int AFT - Tipo de función de activación de neuronas (0:sigm, 1:tanh, 2:x/(1+x)) int OAF - 1 habilita función de activación para la capa de salida; 0 desactiva Si se debe usar la función de activación en la capa de salida o no (valor del parámetro OAF) depende de la naturaleza de las salidas. Si las salidas son binarias, que a menudo es el caso en problemas de clasificación, entonces se debe usar la función de activación en la capa de salida (OAF=1). Por favor, ten en cuenta que la función de activación #0 (sigmoide) tiene niveles saturados en 0 y 1, mientras que las funciones de activación #1 y #2 tienen niveles de -1 y 1. Si la salida de la red es una predicción de precios, entonces no se necesita una función de activación en la capa de salida (OAF=0). Ejemplos de uso de la biblioteca NN: BPNN Predictor.mq4 - predice los precios de apertura futuros. Las entradas de la red son cambios relativos de precios: x[i]=Open[test_bar]/Open[test_bar+delay[i]]-1.0 donde delay[i] se calcula como un número de Fibonacci (1,2,3,5,8,13,21..). La salida de la red es el cambio relativo predicho del siguiente precio. La función de activación se desactiva en la capa de salida (OAF=0). Entradas del indicador: extern int lastBar - Última barra en los datos pasados extern int futBars - Número de barras futuras a predecir extern int numLayers - Número de capas incluyendo entrada, ocultas y salida (2..6) extern int numInputs - Número de entradas extern int numNeurons1 - Número de neuronas en la primera capa oculta o de salida extern int numNeurons2 - Número de neuronas en la segunda capa oculta o de salida extern int numNeurons3 - Número de neuronas en la tercera capa oculta o de salida extern int numNeurons4 - Número de neuronas en la cuarta capa oculta o de salida extern int numNeurons5 - Número de neuronas en la quinta capa oculta o de salida extern int ntr - Número de conjuntos de entrenamiento extern int nep - Número máximo de épocas extern int maxMSEpwr - establece maxMSE=10^maxMSEpwr; el entrenamiento se detiene < maxMSE extern int AFT - Tipo de función de activación (0:sigm, 1:tanh, 2:x/(1+x)) El indicador traza tres curvas en el gráfico: color rojo - predicciones de precios futuros color negro - precios de apertura de entrenamiento pasados, que se utilizaron como salidas esperadas para la red color azul - salidas de la red para las entradas de entrenamiento BPNN Predictor.mq4 - predice los precios de apertura suavizados futuros. Utiliza suavizado EMA con periodo smoothPer. Configuración Inicial: Copie el archivo BPNN.DLL en C:\Program Files\MetaTrader 4\experts\libraries En MetaTrader: Herramientas - Opciones - Asesores Expertos - Permitir importaciones DLL También puede compilar su propio archivo DLL utilizando los códigos fuente en BPNN.zip. Recomendaciones: Una red con tres capas (numLayers=3: una de entrada, una oculta y una de salida) es suficiente para la gran mayoría de los casos. Según el Teorema de Cybenko (1989), una red con una capa oculta es capaz de aproximar cualquier función continua multivariante a cualquier grado de precisión deseado; una red con dos capas ocultas es capaz de aproximar cualquier función multivariante discontinua. El número óptimo de neuronas en la capa oculta se puede encontrar mediante prueba y error. Se pueden encontrar las siguientes "reglas prácticas" en la literatura: número de neuronas ocultas = (número de entradas + número de salidas) / 2, o SQRT(número de entradas * número de salidas). Mantenga un seguimiento del error de entrenamiento, que es informado por el indicador en la ventana de expertos de MetaTrader. Para generalización, el número de conjuntos de entrenamiento (ntr) debe ser elegido de 2 a 5 veces el número total de pesos en la red. Por ejemplo, por defecto, BPNN Predictor.mq4 utiliza una red 12-5-1. El número total de pesos es (12+1)*5+6=71. Por lo tanto, el número de conjuntos de entrenamiento (ntr) debe ser al menos 142. El concepto de generalización y memorización (sobreajuste) se explica en el gráfico a continuación. Los datos de entrada a la red deben transformarse a estacionarios. Los precios del Forex no son estacionarios. También se recomienda normalizar las entradas al rango de -1..+1. El gráfico a continuación muestra una función lineal y=x (x-entrada, y-salida) cuyas salidas están contaminadas por ruido. Este ruido añadido hace que las salidas de la función medida (puntos negros) se desvíen de una línea recta. La función y=f(x) puede ser modelada por una red neuronal de propagación hacia adelante. La red con un gran número de pesos puede ajustarse a los datos medidos con un error cero. Su comportamiento se muestra como la curva roja que pasa por todos los puntos negros. Sin embargo, esta curva roja no tiene nada que ver con la función lineal original y=x (verde). Cuando esta red sobreajustada se utiliza para predecir valores futuros de la función y(x), resultará en grandes errores debido a la aleatoriedad del ruido añadido. Como intercambio por compartir estos códigos, el autor tiene un pequeño favor que pedir. Si lograste crear un sistema de trading rentable basado en estos códigos, por favor comparte tu idea conmigo enviando un correo electrónico directamente a vlad1004@yahoo.com. ¡Buena suerte!

2009.06.26
Índice de Fuerza Relativa MTF: Potencia tu Análisis Técnico
MetaTrader4
Índice de Fuerza Relativa MTF: Potencia tu Análisis Técnico

El Índice de Fuerza Relativa MTF es un indicador de MetaTrader basado en el conocido RSI. Este índice es un oscilador de momento que mide la velocidad y magnitud del movimiento direccional de los precios, comparando los movimientos de cierre al alza y a la baja. Fue desarrollado por J. Welles Wilder y publicado en la revista Commodities en junio de 1978. En MetaTrader, ya contamos con el Índice de Fuerza Relativa como un indicador técnico estándar. Sin embargo, solo se puede utilizar para el marco temporal actual. A veces, es deseable tener el RSI mostrando marcos temporales más altos. El Índice de Fuerza Relativa MTF que te presento aquí tiene un parámetro adicional: TimeFrame. Con este parámetro, puedes establecer un marco temporal superior del cual el RSI calculará sus valores. Debido a que los valores se derivan de las barras, al usar marcos temporales más altos, notarás que la línea del indicador tiene una forma más áspera. Configuraciones del Índice de Fuerza Relativa MTF: TimeFrame: El valor por defecto es 0, lo que significa el marco temporal actual. Para otros marcos temporales: 1=M1, 5=M5, 15=M15, 30=M30, 60=H1, 240=H4, 1440=D1, 10080=W1, 43200=MN1. RSIPeriod: El valor por defecto es 14, que es el número de períodos para el cálculo. Applied_price: El valor por defecto es 0, lo que significa que se utiliza el precio de cierre para los cálculos. Para otros tipos de precio: 0-CIERRE, 1-APERTURA, 2-MÁXIMO, 3-MÍNIMO, 4-MEDIO, 5-TÍPICO, 6-PESADO. Shift: El valor por defecto es 0. Este parámetro desplaza todo el indicador hacia la derecha en el gráfico un número de barras igual al valor de Shift del marco temporal establecido. Ejemplo: Captura de pantalla del Índice de Fuerza Relativa MTF

2009.05.27
Descubre el MTF MACD: Tu Aliado en el Análisis Técnico
MetaTrader4
Descubre el MTF MACD: Tu Aliado en el Análisis Técnico

El MTF MACD es un indicador de MetaTrader que se basa en el famoso MACD, que significa Convergencia/Divergencia de Medias Móviles. Este indicador de análisis técnico fue creado por Gerald Appel en los años 60 y muestra la diferencia entre una media móvil exponencial (EMA) rápida y una lenta de los precios de cierre. Además, cuenta con una línea de señal que es una media móvil simple (SMA) del valor principal del indicador. El MACD es un indicador que sigue la tendencia y está diseñado para identificar cambios en la misma. Sin embargo, no se recomienda su uso en condiciones de mercado lateral. En MetaTrader, ya tenemos el MACD incluido como un indicador técnico estándar. Sin embargo, este solo se puede utilizar para el marco de tiempo actual. Cuando buscamos tendencias, es muy deseable que el MACD muestre marcos de tiempo más altos. El MTF MACD que te presento aquí tiene un parámetro adicional: el TimeFrame. Con este, puedes establecer un marco de tiempo superior desde el cual el MACD calculará sus valores. Como los valores se derivan de las barras, al usar marcos de tiempo más altos, notarás que las líneas del indicador tienen una forma más rugosa. Ajustes del MTF MACD: TimeFrame El valor por defecto es 0, lo que significa que se utiliza el marco de tiempo actual. Para otros marcos de tiempo: 1=M1, 5=M5, 15=M15, 30=M30, 60=H1, 240=H4, 1440=D1, 10080=W1, 43200=MN1. FastEMA El valor por defecto es 12. Esta es la media móvil exponencial rápida. SlowEMA El valor por defecto es 26. Esta es la media móvil exponencial lenta. Signal El valor por defecto es 9. Esta es la línea de señal y es una media móvil simple. Applied_price El valor por defecto es 0, lo que significa que se utiliza el precio de cierre para los cálculos de la MA. Para otros tipos de precio: 0-CIERRE, 1-APERTURA, 2-MÁXIMO, 3-MÍNIMO, 4-MEDIO, 5-TÍPICO, 6-PESADO. Shift El valor por defecto es 0. Este parámetro desplaza todo el indicador un número de barras especificado desde el marco de tiempo establecido hacia la derecha en el gráfico. Ejemplo: Captura de pantalla del MTF MACD

2009.05.27
Cómo Calcular el Porcentaje de Ganancia/Pérdida en Trading
MetaTrader4
Cómo Calcular el Porcentaje de Ganancia/Pérdida en Trading

¿Alguna vez te has preguntado cuál es el porcentaje de ganancia o pérdida diaria en el trading? Es una pregunta que muchos de nosotros nos hacemos mientras seguimos el movimiento de los precios. En este post, te mostraré cómo puedes visualizar estas métricas en tiempo real y aprovecharlas para tomar mejores decisiones. Autor: Arif E. Nugroho arif_endro@vectra.web.id El problema surge cuando quiero saber cuál es el porcentaje de ganancia o pérdida diaria en el momento actual. Después de investigar, encontré una solución para mostrar los porcentajes de ganancia diaria, semanal y mensual en la ventana del terminal. Esto me ayuda a saber si el precio actual está sobrecomprado o sobrevendido, ya que cada par de divisas tiene un rango de precios específico por día, semana y mes. El indicador que ves arriba muestra el porcentaje de ganancia diario, semanal y mensual. Puedes modificar los colores de este indicador en los parámetros, donde el rojo representa una ganancia negativa y el azul una positiva. También puedes ajustar el tamaño de la fuente cambiando el parámetro FontSize. Además, he añadido una función que muestra el nivel porcentual diario hacia arriba o hacia abajo en incrementos de 0.5%, 1.0%, 1.5% y 2.0%. Esta opción puede activarse a través de los parámetros del indicador 'ShowPriceLabel'; por defecto, esta opción está desactivada. Si decides activarla, el indicador se verá así:

2009.05.19
Indicador para Lectura de Dojis: Mejora tu Análisis Técnico
MetaTrader4
Indicador para Lectura de Dojis: Mejora tu Análisis Técnico

Versión 1 1. Lectura de Dojis: Puedes ajustar la longitud mínima de la mecha superior. Puedes ajustar la longitud mínima de la mecha inferior. 2. Lectura de Gravestone Doji: 2. Lectura de Gravestone Doji: Puedes ajustar la longitud mínima de la mecha superior. Puedes ajustar la longitud máxima de la mecha inferior. 3. Lectura de Dragonfly Doji: 3. Lectura de Dragonfly Doji: Puedes ajustar la longitud máxima de la mecha superior. Puedes ajustar la longitud mínima de la mecha inferior. 4. Alarmas Personalizadas: 4. Puedes configurar una alarma que se active cuando aparezca una nueva vela, si así lo deseas. Versión 2 Ajustes Adicionales: AnAlert: activa esta opción si deseas recibir una alerta al aparecer un nuevo doji. ShowCandleBox: activa esta opción para mostrar el doji en un rectángulo. BoxColor: elige tu color favorito para el rectángulo. ShowStar: activa esta opción para mostrar una estrella sobre la vela. StarColor: elige tu color favorito para la estrella. StarWidth: ajusta el ancho de la estrella según tu preferencia. ShowText: activa esta opción para mostrar el nombre del doji. FontColor: elige el color de la fuente. FontSize: ajusta el tamaño de la fuente. VerticalText: si se activa, el texto se mostrará de forma vertical. MyBrokerHas5Digits: activa esta opción si tu broker utiliza 5 dígitos. FindRegularDoji: activa esta opción para que el indicador busque dojis regulares. MinLengthOfUpTail: define el tamaño mínimo de la mecha superior. MinLengthOfLoTail: define el tamaño mínimo de la mecha inferior. MaxLengthOfBody: define el tamaño máximo del cuerpo. FindDragonflyDoji: activa esta opción para que el indicador busque dragonfly dojis. MaxLengthOfUpTail1: define el tamaño máximo de la mecha superior para dragonfly. MinLengthOfLoTail1: define el tamaño mínimo de la mecha inferior para dragonfly. MaxLengthOfBody1: define el tamaño máximo del cuerpo para dragonfly. FindGravestoneDoji: activa esta opción para que el indicador busque gravestone dojis. MinLengthOfUpTail2: define el tamaño mínimo de la mecha superior para gravestone. MaxLengthOfLoTail2: define el tamaño máximo de la mecha inferior para gravestone. MaxLengthOfBody2: define el tamaño máximo del cuerpo para gravestone. ¡Saludos cordiales! heartnet Visita mi blog

2009.05.19
Primero Anterior 347 348 349 350 351 352 353 354 355 356 357 Siguiente Último