Ok, así que estoy escribiendo una clase que calculará una media móvil simple en una lista de precios. Calcula el promedio de cada N número de precios sin calcular los primeros N-1 días. Esto es lo que tengo: Lo probé haciendo un objeto de clase en la shell x Simplemovingaverage (3, 1,2,3,4,5,6,7,8,9,10) y luego haciendo el método de cálculo por x. calcular la salida que obtuve fue: Así que de mi lista de números su único cálculo hasta 7,8,9 el último número debe ser 9 porque thats el promedio de 8,9,10 y también sólo debe haber 3 ceros desde N Es 3. Esta es la salida que estoy buscando: pidió 18 de febrero a las 5:32 exactamente que necesito n-1 ceros, con n como 3 tengo dos ceros. El cero es simplemente decir que se puede calcular un promedio móvil simple en n días sin el primer n-1. Cuando cambio el cero a 3939 un espacio vacío que me da 2 espacios vacíos y luego los promedios a partir de 3 que es lo que necesito. Cuando pongo el 1 me da 1 espacio vacío y un cero antes de que comience a calcular el promedio de 3. Creo que mal entendido el papel de los ceros. Ndash user2423347 Feb 18 14 at 7:40 Lo justo, thx. No quiero quitarle importancia al tema, el objetivo era manejar SMA usando una clase. Sólo pensé que podría haber algunos como yo que prefieren mantener las cosas simples, yo uso esas líneas en el código de negociación algorítmica. Sólo tienes que enviar una lista de números (flotadores en mi caso) y un tamaño de ventana de lookback (integer) y it39ll devolver el valor de la media móvil simple actual. Ahora mismo uso 3 sma39s así que encuentro que práctico / conveniente / flexible. Lo que no vemos es que la lista de precios se agrega con un precio para cada barra de negociación antes de ser enviada a esa función. Espero que ayude. Ndash gseattle Jul 24 14 at 9:02 Youve consiguió un fuera por un error. Intente esto: Así que esto podría ilustrar lo que está pasando un poco Así que el problema es que el operador pythons list slice regresa a i en el ejemplo anterior pero no i, (en este ejemplo devuelve i-3, i-2 e i - 1) Por ejemplo, hemos introducido previamente cómo crear promedios móviles usando python. Este tutorial será una continuación de este tema. Un promedio móvil en el contexto de la estadística, también llamado promedio de balanceo / funcionamiento, es un tipo de respuesta de impulso finito. En nuestro tutorial anterior hemos trazado los valores de los arrays xyy: Let8217s traza x en contra de la media móvil de y que llamaremos yMA: Primero, let8217s ecualizar la longitud de ambos arrays: Y para mostrar esto en contexto: Gráfico: Para ayudar a entender esto, let8217s trazar dos relaciones diferentes: x vs yy x vs MAy: El promedio móvil aquí es la parcela verde que comienza a las 3: Compartir esto: Como este: Navegación de los artículos relacionados Deja un comentario Cancelar respuesta Very useful Me gustaría leer la última parte sobre grandes conjuntos de datos Espero que llegará pronto 8230 d bloggers como este: Backtesting un promedio móvil Crossover en Python con pandas En el artículo anterior sobre Investigación Backtesting Ambientes En Python Con Pandas creamos una investigación orientada a objetos Basado en backtesting y probado en una estrategia de pronóstico aleatorio. En este artículo vamos a hacer uso de la maquinaria que introdujimos para llevar a cabo una investigación sobre una estrategia real, a saber, el Media Crossover móvil en AAPL. Estrategia de crossover de media móvil La técnica de crossover de media móvil es una estrategia de impulso simplista extremadamente conocida. A menudo se considera el ejemplo de Hello World para el comercio cuantitativo. La estrategia descrita aquí es larga solamente. Se crean dos filtros sencillos simples de media móvil, con periodos de retroceso variables, de una serie de tiempo particular. Las señales para comprar el activo ocurren cuando la media móvil de retroceso más corto excede la media móvil de retroceso más larga. Si el promedio más largo excede posteriormente el promedio más corto, el activo se vende de nuevo. La estrategia funciona bien cuando una serie de tiempo entra en un período de fuerte tendencia y luego invierte lentamente la tendencia. Para este ejemplo, he elegido Apple, Inc. (AAPL) como la serie de tiempo, con un breve lookback de 100 días y un largo lookback de 400 días. Este es el ejemplo proporcionado por la biblioteca de comercio algorítmico zipline. Por lo tanto, si queremos implementar nuestro propio backtester debemos asegurarnos de que coincide con los resultados en zipline, como un medio básico de validación. Implementación Asegúrese de seguir el tutorial anterior aquí. Que describe cómo se construye la jerarquía de objetos inicial para el backtester, de lo contrario el código siguiente no funcionará. Para esta implementación en particular he utilizado las siguientes bibliotecas: La implementación de macross. py requiere backtest. py del tutorial anterior. El primer paso es importar los módulos y objetos necesarios: Como en el tutorial anterior, vamos a subclase la clase base abstracta de la estrategia para producir MovingAverageCrossStrategy. Que contiene todos los detalles sobre cómo generar las señales cuando los promedios móviles de AAPL se cruzan entre sí. El objeto requiere una ventana corta y una ventana larga sobre la cual operar. Los valores se han fijado a valores predeterminados de 100 días y 400 días respectivamente, que son los mismos parámetros utilizados en el ejemplo principal de tirolesa. Los promedios móviles se crean mediante el uso de la función rollingmean de los pandas en las barrasCerrar el precio de cierre de la acción AAPL. Una vez que se han construido los promedios móviles individuales, la serie de señales se genera ajustando la colum igual a 1,0 cuando el promedio móvil corto es mayor que el promedio móvil largo, o 0,0 de lo contrario. A partir de esto, los pedidos de posiciones se pueden generar para representar señales comerciales. El MarketOnClosePortfolio está subclasificado de Portfolio. Que se encuentra en backtest. py. Es casi idéntica a la implementación descrita en el tutorial anterior, con la excepción de que las operaciones se llevan a cabo ahora en una base Close-to-Close, en lugar de una base Open-to-Open. Para obtener más información sobre cómo se define el objeto Portfolio, consulte el tutorial anterior. He dejado el código en la integridad y para mantener este tutorial autónomo: Ahora que las clases MovingAverageCrossStrategy y MarketOnClosePortfolio se han definido, una función principal se llamará para vincular todas las funciones. Además, el desempeño de la estrategia será examinado a través de un gráfico de la curva de equidad. El objeto de DataReader de pandas descarga los precios de OHLCV de las acciones de AAPL para el período del 1 de enero de 1990 al 1 de enero de 2002, momento en el que las señales DataFrame se crean para generar las señales de sólo larga duración. Posteriormente, la cartera se genera con una base de capital inicial de 100.000 USD y los rendimientos se calculan sobre la curva de patrimonio. El paso final es utilizar matplotlib para trazar un gráfico de dos cifras de los precios de AAPL, superpuestos con las medias móviles y las señales de compra / venta, así como la curva de equidad con las mismas señales de compra / venta. El código de trazado se toma (y se modifica) a partir del ejemplo de implementación de tirolesa. La salida gráfica del código es la siguiente. Hice uso del comando IPython paste para ponerlo directamente en la consola IPython mientras estaba en Ubuntu, de modo que la salida gráfica permaneció en la vista. Las barras de color rosa representan la compra de la acción, mientras que los downticks negros representan la venta de nuevo: Como se puede ver la estrategia pierde dinero durante el período, con cinco operaciones de ida y vuelta. Esto no es sorprendente teniendo en cuenta el comportamiento de AAPL en el período, que estaba en una ligera tendencia a la baja, seguido por un aumento significativo a partir de 1998. El período de retroceso de las señales de media móvil es bastante grande y esto afectó el beneficio del comercio final , Que de otro modo podría haber hecho rentable la estrategia. En los artículos siguientes crearemos un medio más sofisticado de analizar el rendimiento, así como describir cómo optimizar los períodos de retroceso de las señales individuales de media móvil.
No comments:
Post a Comment