Sunday, 29 October 2017

Promedio Móvil Exponencial Excel Vba


Media móvil Este ejemplo le enseña cómo calcular el promedio móvil de una serie de tiempo en Excel. Una gran ventaja se utiliza para suavizar las irregularidades (picos y valles) para reconocer fácilmente las tendencias. 1. En primer lugar, echemos un vistazo a nuestra serie de tiempo. 2. En la ficha Datos, haga clic en Análisis de datos. Nota: no puede encontrar el botón Análisis de datos Haga clic aquí para cargar el complemento Herramientas de análisis. 3. Seleccione Media móvil y haga clic en Aceptar. 4. Haga clic en el cuadro Rango de entrada y seleccione el rango B2: M2. 5. Haga clic en el cuadro Interval y escriba 6. 6. Haga clic en el cuadro Rango de salida y seleccione la celda B3. 8. Trazar un gráfico de estos valores. Explicación: dado que establecemos el intervalo en 6, el promedio móvil es el promedio de los 5 puntos de datos anteriores y el punto de datos actual. Como resultado, los picos y valles se suavizan. El gráfico muestra una tendencia creciente. Excel no puede calcular el promedio móvil para los primeros 5 puntos de datos porque no hay suficientes puntos de datos anteriores. 9. Repita los pasos 2 a 8 para el intervalo 2 y el intervalo 4. Conclusión: Cuanto mayor sea el intervalo, más se suavizarán los picos y los valles. Cuanto más pequeño es el intervalo, más cerca están las medias móviles de los puntos de datos reales. Aquí hay un código que debe ser útil para aquellos que utilizan análisis técnicos en el comercio y desea probar estrategias en Excel. Calcula la media móvil simple, linealmente ponderada y exponencial. Además, presentaré y explicaré los pasos para crear el formulario y el código VBA. Inserte un UserForm 8211 Nombre: MAForm Agregar cuatro etiquetas de los controles de la caja de herramientas 8211 Subtítulos según la pantalla de impresión anterior Agregue un ComboBox para la selección del tipo de media móvil. Se nombró comboTypeMA Añadir dos controles RefEdit para el rango de entrada y el rango de salida. Agregar un cuadro de texto para seleccionar el período de media móvil. Añada dos botones: Nombre: botónSubmit, Caption: Submit y Name: buttonCancel, Caption: Cancel Para generar la lista desplegable para la selección de tipo MA y cargar el formulario de usuario, Se insertará con el siguiente código. Los elementos de ComboBox se rellenarán con los tipos de promedios móviles y se cargará el formulario de usuario. Option Explicit Sub loadMAForm () Con MAFormboTypeMA. RowSource. AddItem Simple. AddItem Ponderado. AddItem Final exponencial con MAForm. Show End Sub A continuación se muestra el código atribuido al botón Enviar. Private Sub buttonSubmitClick () Dim inputRange, outputRange As Range El inputRange contendrá la serie de precios utilizada para calcular las MA y el outputRange se rellenará con los valores de las medias móviles. Dim inputPeriod As Integer Se declara el periodo de media móvil. Dim inputAddress, outputAddress As String Los rangos de entrada y salida se declaran como cadena. Si comboTypeMA. Value ltgt Exponential y comboTypeMA. Value ltgt Simple y comboTypeMA. Value ltgt ponderado True Then MsgBox Seleccione un tipo de media móvil de la lista. RefInputRange. SetFocus Exit Sub Esta parte del procedimiento impone las primeras restricciones con respecto a los datos enviados. Si el tipo de media móvil no está contenido en la lista desplegable, el procedimiento no pasará al siguiente paso y se solicitará al usuario que lo seleccione de nuevo. ElseIf RefInputRange. Value Then MsgBox Seleccione el rango de entrada. RefInputRange. SetFocus Salir Sub ElseIf RefOutputRange. Value Then MsgBox Seleccione el rango de salida. RefOutputRange. SetFocus Exit Sub ElseIf RefInputPeriod. Value Then MsgBox Por favor, seleccione el período de media móvil. RefInputPeriod. SetFocus Salir Sub ElseIf Not IsNumeric (RefInputPeriod. Value) Then MsgBox El periodo de media móvil debe ser un número. RefInputPeriod. SetFocus Exit Sub End Si se crean otras restricciones. El rango de entrada, el rango de salida y el período de entrada no deben estar en blanco. Además, el período de media móvil debe ser un número. InputAddress RefInputRange. Value Set inputRange Rango (inputAddress) outputAddress RefOutputRange. Value Conjunto outputRange Range (outputAddress) inputPeriod RefInputPeriod. Value Los argumentos para los rangos inputRange y outputRange serán inputAddress y outputAddress declarados como cadenas. Si inputRange. Columns. Count ltgt 1 Entonces MsgBox El rango de entrada puede tener sólo una columna. RefInputRange. SetFocus Exit Sub El inputRange debe contener sólo una columna. ElseIf inputRange. Rows. Count ltgt outputRange. Rows. Count Then MsgBox El rango de salida tiene un número diferente de filas que el rango de entrada. RefInputRange. SetFocus Exit Sub End If El inputRange y outputRange deben tener un número igual de filas. Dim RowCount As Entero RowCount inputRange. Rows. Count Dim cRow As Entero ReDim inputarray (1 Para RowCount) Para cRow 1 Para RowCount inputarray (cRow) inputRange. Cells (cRow, 1).Valor A continuación cRow array de entrada se declara como array e it8217s elementos Corresponden a los valores de cada fila del rango de entrada. Si inputPeriod gt RowCount Then MsgBox Número de observaciones seleccionadas es amplificador amp RowCount y el período es amplificador amp ampPeriod. El rango de entrada debe tener una cantidad mayor o igual de elementos que el período seleccionado. RefInputRange. SetFocus Exit Sub End Si se agrega otra restricción 8211 El rango de entrada debe tener una cantidad mayor o igual de elementos que el período. Si inputPeriod lt 0 Entonces MsgBox El periodo de media móvil debe ser mayor que 0. RefInputPeriod. SetFocus Exit Sub End If El periodo de media móvil debe ser mayor que cero. ReDim outputarray (inputPeriod To RowCount) As Variant También se determinan las dimensiones del array de outputarray. El límite inferior de la matriz es el valor inputPeriod y el límite superior es el valor de RowCount (el número de elementos en el inputRange). Debajo de la parte del procedimiento calculó la media móvil simple, si la selección para comboTypeMA es simple. SMA ----------------------------------------- Si comboTypeMA. Value Simple Then Dim i , J As Integer Dim temp As Doble Para i inputPeriod Para RowCount temp 0 Para j (i - (inputPeriod - 1)) Para i temp temp (j) Next j outputarray (i) temp / inputPeriod outputRange. Cells (i, 1 ).Value outputarray (i) Siguiente i outputRange. Cells (0, 1).Value SMA (amp inputPeriod amp) Básicamente, el procedimiento calcula el promedio móvil de los últimos números x (x igual al inputPeriod), empezando por el elemento Del array de entrada igual a inputPeriod. A continuación se muestra un ejemplo simplificado, que muestra cada paso del procedimiento. En este ejemplo, hay cuatro números (no01, no02, no03 y no04) de la fila 1 a la fila 4 y el promedio móvil es 3. Después de calcular cada nueva media móvil, cada celda de la salidaRange tomará el valor de la Matriz de salida Y después de calcular los promedios móviles, en la celda sobre outputRange se insertará un título que contenga el tipo y período de media móvil. Esta próxima parte calculará el promedio móvil exponencial. EMA ------------------------------------------ ElseIf comboTypeMA. Value Exponential Then Dim Alpha As Doble alpha 2 / (inputPeriod 1) Para j 1 Para inputPeriod temp temp inputarray (j) Siguiente j outputarray (inputPeriod) temp / inputPeriod Primero se determina el valor de alpha. Debido a que en el cálculo, el valor de la EMA se basa en la EMA anterior, la primera será la media móvil simple. Para i inputPeriod 1 Para RowCount outputarray (i) outputarray (i - 1) alfa (inputarray (i) - outputarray (i - 1)) Next i Comenzando con la segunda media móvil, se calcularán basándose en la fórmula anterior: EMA anterior más alfa multiplicado por la diferencia entre el número actual del array de entrada y el valor EMA anterior. Para i inputPeriod Para RowCount outputRange. Cells (i, 1).Value outputarray (i) Siguiente i outputRange. Cells (0, 1).Value EMA (amp inputPeriod amp) Al igual que el código para SMA, el outputarray se rellenará y La celda por encima de la matriz de salida representará el tipo y el período de la media móvil. A continuación se muestra el código para calcular la media móvil ponderada. WMA ------------------------------------------ ElseIf comboTypeMA. Value Weighted Then Dim Temp2 As Integer Para i inputPeriod Para RowCount temp 0 temp2 0 Para j (i - (inputPeriod - 1)) Para i temp temp (j - i inputPeriod) temp2 temp2 (j - i inputPeriod) Next j outputarray (i ) (1).Value WMA (amp inputPeriod amp) End If La siguiente tabla contiene los pasos para calcular cada variable utilizada para El cálculo de WMA. Al igual que en el ejemplo anterior, en éste hay para los números en el inputRange. Y el período de entrada es 3. A continuación se muestra el código final del procedimiento, que descarga el formulario de usuario. Descargar MAForm End Sub El siguiente procedimiento es para el botón Cancelar. Se agregará en el mismo módulo. Private Sub buttonCancelClick () Descargar MAForm End Sub, donde 2 / (1 n) El subíndice t se utiliza para indicar el tiempo, p. T-1 se refiere al periodo antes de t y n, que ha de ser especificado por el usuario, se refiere al período de mediación de la EMA. Por ejemplo, el equivalente EMA de un promedio móvil simple de 3 periodos tiene n de 3. Cuanto mayor sea el valor de n, más pequeño se vuelve. Esto resulta en un mayor (1-) y más EMA t-1 se conserva en EMA t. El primer valor de EMA en una serie de tiempo puede ser asumido como un simple promedio móvil de n días de precios. Algunos usuarios también pueden preferir comenzar el primer valor de la EMA a partir del segundo período en adelante donde EMA en el período 2 x Período 2 Precio (1 8211) x Período 1 Precio. Los usuarios deben entender que el promedio móvil exponencial es en realidad una expansión en serie infinita donde los precios anteriores tienen un peso cada vez menor en EMA t. Considere lo siguiente: Esto da como resultado que la EMA sea más sensible y menos volátil que su promedio móvil simple equivalente. Una discusión más detallada de esto se puede encontrar en mi artículo sobre filtros en finanzas y análisis técnico. Método A utiliza funciones, mientras que el método B utiliza procedimientos secundarios para calcular CMF. El método B es más rápido y más flexible. Pegue este código en su ventana de código ThisWorkBook en VBA. Haga clic derecho en este libro de trabajo en el Explorador de proyectos y haga clic en Ver código. Private Sub WorkbookOpen () El resto pertenece a cualquier módulo Tells Excel para incluirlos en la lista de funciones, añadir descripciones a ellos y crear una nueva categoría llamada Technical Indicators. Macro Application. MacroOptions: EMA, Descripción: Devuelve el promedio móvil exponencial. Amp Chr (10) amp Chr (10) amp Selecciona los últimos periodos EMA o el precio de los últimos periodos si el período actual es el primero. Amp Chr (10) amp Chr (10) amp Seguido por el precio actual y n. El factor de desintegración de la media móvil exponencial se calcula como α2 / (n1), Función Pública EMA (EMAY, día, precio, n) EMA precio alfa (1 - alfa ) EMAYesterday Una vez que haya terminado con lo anterior, puede calcular el promedio móvil exponencial escribiendo en cualquier celda EMA (Last Period EMA, Current Price, n). Ingrese el precio del último período como EMA de último período si está computando la primera EMA de su conjunto de datos. Para ejecutar el método B, tiene que copiar el sub Runthis de la página en línea de acumulación / distribución en su módulo. También debe ejecutar EMA desde el sub Runthis. Agregue la siguiente línea al sub Runthis Colóquela justo antes de End Sub Y deshabilite todas las demás macros que Runthis llamará Este submarcado empezará a calcular EMA desde t2 en adelante Sub EMA (close1 Como Range, output As Range, n As Long) close0 close1 1, 1).Address (False, False) close1a close1 (2, 1).Address (False, False) salida1 salida (1, 1) 1 amperio n amp) amperio amp close1a (1/2 amp (1 amperio n)) salida amp 1 salida (2, 1).Valor 2 / Amp)) amp close0 Al igual que lo que acaba de leer Digg o Tipd it. El objetivo de Finance4Traders es ayudar a los comerciantes a empezar por llevar a la investigación imparcial y las ideas. Desde finales de 2005, he estado desarrollando estrategias de negociación sobre una base personal. No todos estos modelos son adecuados para mí, pero otros inversores o comerciantes pueden encontrarlos útiles. Después de todo, las personas tienen diferentes metas y hábitos de inversión / negociación. Así, Finance4Traders se convierte en una plataforma conveniente para difundir mi trabajo. (Lea más acerca de Finance4Traders) Por favor, utilice este sitio web de manera apropiada y considerada. Esto significa que debe citar Finance4Traders por lo menos proporcionando un enlace a este sitio si le sucede a utilizar cualquiera de nuestro contenido. Además, no se le permite hacer uso de nuestro contenido de una manera ilegal. Usted debe también entender que nuestro contenido se proporciona sin ninguna garantía y usted debe verificar independientemente nuestro contenido antes de confiar en ellos. Hacer referencia a la política de contenido del sitio y la política de privacidad al visitar este sitio. Una estrategia comercial es muy similar a una estrategia corporativa. Estudiar críticamente sus recursos le ayudará a tomar decisiones más efectivas. (Leer más) 8226 Entender los indicadores técnicos Los indicadores técnicos son más que simples ecuaciones. Los indicadores bien desarrollados, cuando se aplican científicamente, son en realidad herramientas para ayudar a los comerciantes a extraer información crítica de los datos financieros. (Leer más) 8226 Por qué prefiero utilizar Excel Excel presenta los datos visualmente. Esto hace que sea mucho más fácil para usted entender su trabajo y ahorrar tiempo. (Leer más)

No comments:

Post a Comment