Python para el trading algorítmico - página 18

 

Optimización de la estrategia de bandas de Bollinger de Rayner Teo para obtener mejores resultados



Optimización de la estrategia de bandas de Bollinger de Rayner Teo para obtener mejores resultados

Hoy, nos sumergimos en la optimización de la estrategia Reiner Theo Bollinger Band que se probó previamente en un video. Si no ha visto el video anterior, se recomienda hacerlo antes de continuar con esta parte de optimización. El video proporciona un enlace en la descripción para facilitar el acceso. Además, para aquellos interesados en el aspecto de la codificación, el código de Python también está disponible para descargar a través de un enlace en la descripción.

La estrategia que se está optimizando ha mostrado un potencial prometedor con una tasa de ganancia del 91% y una curva de capital en constante aumento durante una prueba retrospectiva de 10 años. Sin embargo, una de las motivaciones detrás de esta optimización es el bajo número de operaciones observadas durante el backtest. En el transcurso de 10 años, solo se ejecutaron 23 operaciones, con un promedio de alrededor de dos operaciones por año. Para abordar esto, se presentan dos posibles soluciones. El primero implica ejecutar el programa en múltiples acciones simultáneamente, con el objetivo de alrededor de 20 operaciones por año. Sin embargo, este enfoque genera preocupaciones sobre los mercados correlacionados y otros temas relacionados. La segunda solución consiste en reducir el marco de tiempo para aumentar el número de operaciones.

La estrategia incorpora varios indicadores técnicos para generar señales de entrada y salida. Utiliza un indicador de promedio móvil (denominado EMA, promedio móvil exponencial, en el código) y bandas de Bollinger para señales de entrada, mientras que el índice de fuerza relativa (RSI) se usa para señales de salida. El video proporciona más detalles sobre el proceso de ejecución, que no se reiteran aquí.

Pasando al programa en sí, los datos se cargan en la primera celda, centrándose en el marco de tiempo de cuatro horas para el análisis. Se utilizan dos stocks diferentes para la optimización. Los datos se limpian eliminando las velas sin movimiento, donde los precios altos y bajos son iguales. Se añaden indicadores técnicos como la media móvil (ya sea exponencial o simple) y el RSI, y se pueden modificar sus longitudes. En este caso particular, la duración de la media móvil se establece en 900 velas y la duración del RSI se establece en 12. Para los gráficos diarios, se utilizan una EMA de 200 días y un RSI de 2 días para las señales de salida. Los parámetros de las Bandas de Bollinger siguen siendo los mismos que los gráficos diarios, con una longitud de 20 y una desviación estándar de 2,5.

El programa también incluye una comprobación de si las velas se cotizan por encima o por debajo de la media móvil. En este caso, el número se establece en seis, lo que representa seis velas consecutivas por encima o por debajo de la curva de media móvil. Como estamos trabajando con un marco de tiempo de cuatro horas, seis por cuatro es igual a 24 horas. Por lo tanto, si el precio ha estado operando por encima o por debajo de la media móvil durante 24 horas seguidas, se puede concluir una tendencia alcista o bajista. El parámetro de posición porcentual de la orden en el mercado se establece en cero por ciento para aumentar el número de operaciones ejecutadas.

La parte de visualización del programa muestra las Bandas de Bollinger, la curva de promedio móvil y la dirección de la tendencia, que se determina como una tendencia alcista. Las señales de entrada están representadas por puntos morados en el gráfico, lo que indica señales de compra. El video muestra algunos de estos puntos de entrada, enfatizando su efectividad en los mercados de moda. Al seleccionar diferentes posiciones aleatorias dentro del gráfico, se pueden examinar varios puntos de entrada, lo que permite analizar su viabilidad.

El presentador señala que los parámetros de la Banda de Bollinger relacionados con las señales de entrada están funcionando bien, por lo que no es necesario modificarlos en este momento. El foco de la optimización se encuentra en otras partes del algoritmo. Si bien el video no profundiza en todos los detalles del proceso de backtesting, vale la pena señalar ciertos parámetros.

En este proceso de optimización, el umbral RSI para la salida se establece en 45. Este valor de umbral más bajo tiene como objetivo capturar operaciones más cortas y frecuentes al permitir salidas más rápidas. El presentador menciona que la elección del umbral RSI es subjetiva y se puede ajustar según las preferencias individuales y la tolerancia al riesgo.

Para evaluar el rendimiento de la estrategia, el programa calcula varias métricas, incluido el número total de operaciones, la tasa de ganancia, la duración promedio de la operación y la curva de equidad. Estas métricas proporcionan información sobre la eficacia y la rentabilidad de la estrategia.

El proceso de optimización implica ajustar los parámetros de la estrategia para encontrar la combinación óptima que maximice el número de operaciones manteniendo una alta tasa de ganancias. Los parámetros que se están optimizando incluyen la longitud del promedio móvil, la longitud del RSI y el umbral de salida del RSI.

El video demuestra cómo usar un bucle anidado para iterar a través de diferentes combinaciones de parámetros y evaluar el rendimiento de la estrategia para cada combinación. El programa realiza un seguimiento de la combinación de parámetros de mejor rendimiento y muestra las métricas correspondientes y la curva de equidad.

Al ejecutar el proceso de optimización, el presentador descubre que usar una longitud promedio móvil de 700, una longitud RSI de 4 y un umbral de salida RSI de 45 produce los mejores resultados. Estos valores de parámetros aumentan el número de transacciones mientras mantienen una alta tasa de ganancia. El video muestra la curva de equidad generada por la estrategia optimizada, que exhibe una trayectoria ascendente más suave con operaciones más frecuentes en comparación con la versión original.

El presentador concluye destacando la importancia de la optimización para mejorar el rendimiento de las estrategias comerciales. A través de pruebas y ajustes sistemáticos de parámetros, es posible mejorar la rentabilidad y la eficiencia de una estrategia. Sin embargo, es crucial tener cuidado y considerar las limitaciones y los riesgos asociados con la optimización, como el sobreajuste a los datos históricos.

Es importante tener en cuenta que los detalles proporcionados aquí son un resumen del video y, para una comprensión más completa, se recomienda ver el video original, que incluye demostraciones visuales y explicaciones adicionales del proceso de optimización.

Optimizing Rayner Teo's Bollinger Bands Strategy for Better Results
Optimizing Rayner Teo's Bollinger Bands Strategy for Better Results
  • 2022.07.08
  • www.youtube.com
This is a continuation of the previous video on the Bollinger Bands Winning Trading Strategy published by Rayner Teo. The backtest optimization is done in Py...
 

¿Funciona realmente este indicador de Crypto Scalping?



¿Funciona realmente este indicador de Crypto Scalping?

Hoy, vamos a explorar una estrategia de modelado utilizando el precio promedio ponderado por volumen (VWAP) en pruebas retrospectivas en el mercado de Bitcoin. Escribiremos un algoritmo de Python para implementar esta estrategia y analizar los resultados.

Primero, establezcamos el contexto. El VWAP es una herramienta poderosa para el comercio algorítmico, ya que proporciona valores dinámicos de soporte y resistencia. Permanece independiente del marco de tiempo que se utiliza, lo que lo hace ventajoso para el comercio algorítmico, ya que reduce la cantidad de parámetros para optimizar.

En esta estrategia, utilizaremos un marco de tiempo de 15 minutos para los precios comerciales de Bitcoin-dólar estadounidense. Consideraremos dos indicadores: el promedio móvil de 100 días (DMA) y el VWAP. Al analizar los movimientos de precios en relación con estos indicadores, podemos determinar la tendencia del mercado. Cuando un cierto número de velas cotiza por debajo o por encima de la DMA de 100, indica una tendencia bajista o alcista, respectivamente. Del mismo modo, si las velas cotizan por debajo o por encima de la curva VWAP, confirma la dirección de la tendencia.

En una tendencia alcista, solo buscaremos posiciones de compra, mientras que en una tendencia bajista, nos centraremos en posiciones de venta. El punto de entrada de nuestras posiciones se activará cuando el precio esté dentro de una cierta distancia fija de la curva VWAP.

Para implementar esta estrategia en Python, usaremos el paquete pandas_ta para calcular el VWAP y el 100 DMA. Luego crearemos dos nuevas columnas en nuestro marco de datos: la señal EMA y la señal VWAP. La señal de EMA contará el número de velas traseras que caen por debajo o por encima de la curva de EMA para confirmar una tendencia bajista o alcista. De manera similar, la señal VWAP contará el número de velas traseras que están por debajo o por encima de la curva VWAP.

Fusionaremos estas señales en una columna de señal total en nuestro marco de datos, que servirá como disparador para nuestras posiciones de compra y venta. Para posiciones de compra, comprobaremos si la señal total es igual a 2 y no hay operaciones abiertas. También verificaremos si el precio está lo suficientemente cerca de la curva VWAP. De manera similar, para las posiciones de venta, consideraremos una señal total de 1 y verificaremos la distancia del precio de la curva VWAP.

Podemos visualizar las señales en un gráfico, trazando las velas junto con las señales de compra (púrpura) y venta (verde).

Para probar la estrategia, calcularemos el rango verdadero promedio (ATR) como una medida de volatilidad. La distancia de stop loss se establecerá en 0,8 veces el ATR actual, y la distancia de toma de ganancias será el doble de la distancia de stop loss. Con estos parámetros, podemos disparar posiciones de compra y venta, teniendo en cuenta los valores de stop loss y take profit. Comenzaremos con un monto en efectivo de $100,000 y un apalancamiento de 5.

Al ejecutar el backtest, podemos observar los resultados de nuestro sistema comercial. El algoritmo muestra un alto porcentaje de retorno, con un capital final de alrededor de $10 millones después de tres años. En comparación, la estrategia de comprar y mantener solo logró un rendimiento del 248%. Sin embargo, es importante tener en cuenta que el rendimiento del algoritmo fluctúa y puede tener problemas durante ciertos períodos. Esto destaca la necesidad de una adaptación dinámica a las condiciones cambiantes del mercado.

Para evaluar la estabilidad de las acciones, podemos trazar la curva de acciones a lo largo de los años. El algoritmo funcionó excepcionalmente bien durante dos años, pero enfrentó desafíos en el último año. Esto subraya la naturaleza pasiva del algoritmo, que se basa en parámetros fijos y puede requerir ajustes para adaptarse a los cambios del mercado.

La estrategia basada en VWAP que se muestra aquí es una buena inversión de atención y tiempo. Ha demostrado rendimientos significativos durante un largo período, aunque con algunas limitaciones. Se pueden explorar más optimizaciones y la inclusión de filtros e indicadores adicionales para mejorar.

Does this Crypto Scalping Indicator Actually Work!
Does this Crypto Scalping Indicator Actually Work!
  • 2022.06.02
  • www.youtube.com
This video describes a trading strategy using VWAP for Crypto such as the Bitcoin. The strategy algorithm is tested in Python and the code details are explai...
 

Cómo hacer una prueba retrospectiva de una estrategia bursátil usando Python en el S&P 500


Cómo hacer una prueba retrospectiva de una estrategia bursátil usando Python en el S&P 500

Hola a todos, hoy vamos a realizar una prueba detallada de una estrategia de escultura simple utilizando datos históricos del S&P 500. Explicaremos los conceptos básicos de la estrategia y escribiremos el código en Python para realizar pruebas retrospectivas. Tenemos datos de tres años, que deberían proporcionarnos suficiente información para evaluar el desempeño y los resultados de la estrategia.

Como de costumbre, el código de esta estrategia está disponible para descargar a través del enlace en la descripción a continuación. Usaremos un marco de tiempo de 15 minutos para esta prueba, aunque puede experimentar con diferentes marcos de tiempo si lo desea. Los marcos de tiempo más bajos pueden ser más difíciles de controlar debido al aumento del ruido y las fluctuaciones.

La estrategia gira en torno a la identificación de patrones envolventes, que pueden ser señales bajistas o alcistas. Agregaremos dos condiciones para refinar las señales. La primera condición es la altura envolvente mínima, que es la diferencia entre el precio de cierre de la vela anterior y el precio de apertura de la vela envolvente. Estableceremos un requisito de distancia mínima para el precio de apertura de la vela envolvente para validar la señal. En otras palabras, el precio de apertura debe ser superior a la altura envolvente mínima.

La segunda condición es la longitud máxima de la cola de la vela, que se refiere a la longitud de la cola o mecha de la vela. Estableceremos un límite para la longitud máxima de la cola y nos aseguraremos de que sea menor que el parámetro especificado. Esta condición ayuda a filtrar ciertos patrones.

Para aumentar el número de señales a lo largo de nuestro tiempo de negociación, introduciremos una variación del patrón envolvente normal. En lugar de requerir estrictamente que una vela engulla a la anterior, permitiremos que dos o más velas consecutivas logren el engullimiento siempre que estén en la dirección opuesta y cumplan con las condiciones de engullimiento. La cantidad de velas permitidas para lograr la inmersión será una variable en el código, lo que permitirá flexibilidad y experimentación.

En este punto, podemos comenzar a escribir el programa y probar los resultados mediante backtesting. Usaremos un archivo de Jupyter Notebook para esta demostración. Primero, cargamos los datos históricos en un DataFrame llamado df_spy usando la función read_csv. Especificamos el marco de tiempo de 15 minutos y el rango de fechas de 2019 a 2022. El índice de DataFrame se establece en la columna de hora GMT.

A continuación, definimos una función llamada is_engulfing que toma dos parámetros: el DataFrame y el índice de la vela actual. Esta función prueba si la vela logra un patrón envolvente. Establecemos parámetros para el número máximo de velas permitidas para lograr el patrón envolvente, la diferencia envolvente y la longitud máxima de la cola de la vela. La función verifica varias condiciones para patrones envolventes bajistas y alcistas y devuelve una señal de 1 para señales bajistas y 2 para señales alcistas.

Creamos una copia del DataFrame, filtrando velas sin movimiento (donde el máximo es igual al mínimo). Este paso elimina los fines de semana y festivos. Almacenamos los datos filtrados en un DataFrame llamado df. También definimos una nueva lista llamada señal para almacenar las señales para cada fila/vela.

Para cada fila en DataFrame df, calculamos la señal usando la función is_engulfing con el índice correspondiente y DataFrame como parámetros. Almacenamos las señales en la lista de señales. Finalmente, agregamos la lista de señales como una nueva columna en el DataFrame.

Para visualizar las señales, utilizamos una función de trazado que traza el gráfico de velas con puntos debajo o encima de las velas para representar señales alcistas o bajistas. Podemos seleccionar un rango específico de velas para graficar y observar las señales.

Para facilitar la visualización, restablecemos el índice del DataFrame a un índice entero y eliminamos el índice de fecha/hora GMT. Luego seleccionamos un rango de velas para graficar y observar las señales.

Aquí hay un resumen de los pasos involucrados en el backtesting de una estrategia comercial usando gráficos de velas japonesas:

  1. Preparación de datos : obtenga datos de precios históricos para el instrumento financiero deseado (p. ej., acciones, criptomonedas) que incluyan los precios de apertura, máximo, mínimo y cierre para cada período de tiempo (p. ej., minuto, hora, día). Asegúrese de que los datos estén en un formato que se pueda analizar fácilmente.

  2. Definición de estrategia : defina la estrategia comercial en función de los patrones de velas japonesas. Por ejemplo, puede buscar patrones alcistas como un patrón envolvente alcista o patrones bajistas como una estrella fugaz. Determinar las reglas para entrar y salir de operaciones basadas en estos patrones.

  3. Generación de señales : analice los datos históricos de precios y genere señales basadas en la estrategia definida. Identifique la ocurrencia de patrones de velas japonesas específicos que cumplan con los criterios de entrada o salida.

  4. Simulación de cartera : simule la estrategia comercial mediante el seguimiento de una cartera hipotética. Comience con una cantidad fija de capital y simule operaciones en función de las señales generadas. Realice un seguimiento del valor y el rendimiento de la cartera durante todo el período de backtesting.

  5. Evaluación de rendimiento : evalúe el rendimiento de la estrategia comercial utilizando varias métricas, como rentabilidad, rendimientos ajustados al riesgo, reducciones y otras medidas relevantes. Compare el rendimiento de la estrategia con un punto de referencia o estrategias alternativas para evaluar su eficacia.

  6. Visualización : visualice los resultados probados utilizando gráficos de velas japonesas. Trace los datos de precios históricos e indique las señales generadas (puntos de entrada y salida) en el gráfico. Esta visualización puede ayudar a comprender el rendimiento de la estrategia e identificar áreas de mejora.

Siguiendo estos pasos, puede realizar una prueba retrospectiva de una estrategia comercial utilizando gráficos de velas japonesas. Es importante tener en cuenta que el backtesting proporciona un rendimiento histórico y no garantiza resultados futuros. Además, es crucial considerar otros factores, como los costos de transacción, el deslizamiento y las condiciones del mercado al desarrollar e implementar una estrategia comercial.

How to Backtest A Stock Market Strategy Using Python On The S&P 500
How to Backtest A Stock Market Strategy Using Python On The S&P 500
  • 2022.05.26
  • www.youtube.com
This is a high profit trading strategy coded and tested in python. The strategy is easy to use and suitable for beginners, it was tested on SP500 stock marke...
 

Estrategia de acción del precio para el comercio algorítmico en Python



Estrategia de acción del precio para el comercio algorítmico en Python

¡Hola a todos! Bienvenido al tercer video sobre la barra de retroceso de inventario de Huffman. Esta estrategia ha ganado varios concursos comerciales, por lo que pensé en intentar crear una versión automatizada que pueda proporcionar rendimientos positivos durante algunos meses o incluso durante un período más largo. Para mantener este video conciso, recomiendo ver los dos videos anteriores donde explicamos la estrategia en detalle. Puede encontrar el enlace a esos videos en la descripción.

En resumen, la estrategia consiste en identificar barras de retroceso y mantener una pendiente específica para la definición de tendencias. En una tendencia alcista, buscamos una forma particular para las barras, y en una tendencia bajista, buscamos la forma invertida de la barra de retroceso. Sin embargo, en este video, agregaremos una condición más. Requerimos que la barra de retroceso sea más alta (en una tendencia alcista) o más baja (en una tendencia bajista) que las barras anteriores y futuras. Esencialmente, estamos buscando una barra de retroceso que actúe como un punto de pivote, lo que indica una fuerte reacción de los vendedores o compradores que intentan revertir la tendencia.

Implementar esta condición adicional en una estrategia comercial algorítmica es más desafiante que explicar el concepto. En el ejemplo que se muestra, tenemos una tendencia alcista e identificamos una barra de retroceso de Huffman que actúa como un punto de pivote alto. Además, observamos una ruptura por encima del máximo de esta barra de Huffman, lo que indica una probable continuación de la tendencia alcista. Incorporaremos todas estas condiciones a nuestro algoritmo de Python y evaluaremos si mejoran los resultados obtenidos en videos anteriores.

Para proporcionar una breve descripción, cargamos los datos históricos para el par de divisas EUR/USD en un período de tiempo de una hora desde 2003 hasta 2022. Calculamos el promedio móvil exponencial (EMA) y el rango real promedio (ATR), que podría ser útil para establecer valores stop-loss y take-profit. Calculamos la pendiente de la EMA ya que es una de las condiciones para la estrategia de Huffman. Además, presentamos dos nuevos parámetros: las velas de señal total (izquierda y derecha), que determinan el número de velas para comparar con el máximo o mínimo de la vela de Huffman.

El algoritmo define las condiciones para identificar una barra de Huffman en una tendencia alcista o bajista. En este video, agregamos una condición adicional para verificar si la barra de Huffman también actúa como un punto de pivote. Comparamos el mínimo (en una tendencia bajista) o el máximo (en una tendencia alcista) de la barra de Huffman con las velas anteriores y futuras dentro del rango especificado. Si se cumple la condición, asignamos un valor de 1 para una tendencia bajista o 2 para una tendencia alcista y almacenamos las señales en una nueva columna llamada "señal total" en el marco de datos.

Para asegurarnos de que el algoritmo funciona correctamente, trazamos las señales en un gráfico, visualizando los puntos morados que representan las barras de Huffman. Podemos confirmar que el algoritmo está identificando correctamente las barras en función de sus características.

A continuación, incorporamos la señal EMA como señal de confirmación de la dirección de la tendencia. También implementamos la función de señal de ruptura de Huffman, que detecta rupturas por encima o por debajo de las barras de Huffman y asigna señales en consecuencia.

Para realizar una prueba retrospectiva de la estrategia, establecemos los valores de stop-loss y take-profit, que pueden variar según las condiciones específicas y los indicadores utilizados. En este caso, usamos el ATR para definir el stop-loss y una relación take-profit/stop-loss de 1,5. Realizamos el backtest con un depósito inicial de $10,000, un margen de 1:50 y una operación a la vez.

En un principio, los resultados no son satisfactorios, con una rentabilidad del -70% y un gran drawdown. Sin embargo, esto no implica necesariamente que la estrategia o el indicador sea intrínsecamente malo. Destaca la importancia de considerar otros factores, como la gestión del dinero y la selección de valores stop-loss y take-profit, que pueden influir significativamente en el rendimiento de la estrategia.

Para mejorar el rendimiento de la estrategia, podemos optimizar los parámetros y ajustar las reglas de gestión del dinero. En este ejemplo, optimizaremos el parámetro de velas de retorno de señal total, que determina el número de velas para comparar con el máximo o mínimo de la barra de Huffman. Probaremos diferentes valores que van de 2 a 10 y evaluaremos los resultados.

Tras optimizar el parámetro, obtenemos un mejor rendimiento con una rentabilidad del 187% y un drawdown reducido. Esto demuestra la importancia de la optimización de parámetros en las estrategias comerciales algorítmicas.

Para mejorar aún más la estrategia, podemos considerar incorporar filtros o condiciones adicionales. Por ejemplo, podemos implementar un filtro de tendencia usando un marco de tiempo más alto, como el gráfico diario o semanal. Esto puede ayudar a garantizar que las transacciones se realicen solo en la dirección de la tendencia general.

También podemos explorar diferentes estrategias de salida, como trailing stop o niveles dinámicos de obtención de beneficios basados en la acción del precio o la volatilidad. Estos componentes adicionales se pueden probar e integrar en el algoritmo para mejorar potencialmente su rendimiento.

Es importante tener en cuenta que el rendimiento pasado no garantiza resultados futuros. La estrategia debe probarse y validarse exhaustivamente utilizando datos históricos y métodos robustos de backtesting. También es fundamental tener en cuenta los costos de transacción, el deslizamiento y otros aspectos prácticos de la negociación al implementar la estrategia en un entorno de negociación en tiempo real.

En conclusión, la estrategia de barra de retroceso de inventario de Huffman puede ser una herramienta útil para identificar puntos de pivote potenciales y cambios de tendencia en el mercado. Al incorporar condiciones adicionales y optimizar parámetros, podemos mejorar el rendimiento de la estrategia. Sin embargo, es esencial realizar pruebas exhaustivas y considerar otros factores, como la administración del dinero y las estrategias de salida, para desarrollar un sistema comercial integral y efectivo.

Eso concluye nuestro video sobre la implementación de la estrategia de barra de retroceso de inventario de Huffman en Python. Espero que haya encontrado esta serie informativa y útil en sus esfuerzos comerciales. Si tiene alguna pregunta o comentario, no dude en dejarlos a continuación. ¡Gracias por mirar, y feliz comercio!

Price Action Strategy For Algorithmic Trading In Python
Price Action Strategy For Algorithmic Trading In Python
  • 2022.05.12
  • www.youtube.com
This is a continuation of the previous videos, on price action trading strategy, about the Hoffman Inventory Retracement Bar indicator, and the previously in...
 

Cómo codificar la estrategia comercial de la barra de retroceso en Python



Cómo codificar la estrategia comercial de la barra de retroceso en Python

Hola a todos y bienvenidos a esta continuación del método de retroceso de la barra de inventario de Hoffman. En el video anterior, presentamos este método y explicamos el código para detectar formas específicas de velas y tendencias de precios. Si está interesado en el código, puede descargar el archivo de Jupyter Notebook desde el enlace proporcionado en la descripción a continuación.

En este video, usaremos las barras de Hoffman que identificamos anteriormente en una estrategia comercial, probaremos el sistema y evaluaremos los resultados. La estrategia se enfoca en identificar formas de velas específicas en una tendencia alcista o bajista y buscar rupturas por encima del máximo o por debajo del mínimo de estas velas.

Consideremos un ejemplo donde tenemos una tendencia alcista. Detectamos una barra de retroceso de Hoffman donde la cola superior es al menos el 45% del volumen total de la vela. Esto indica que los vendedores están tratando de contrarrestar el movimiento de tendencia alcista. Sin embargo, en la vela siguiente, observamos que el precio de cierre es superior al máximo de la vela de Hoffman anterior. Esto sugiere que los compradores aún son más fuertes en el mercado y es probable que continúen elevando el precio.

Para implementar esta estrategia en Python, iteraremos a través del precio de cierre de cada vela y verificaremos entre sus velas vecinas anteriores si alguna de ellas forma una barra de retroceso de Hoffman. Definiremos un parámetro llamado "back_candles", que determina el número de velas a considerar al buscar la barra de Hoffman. Este parámetro se puede ajustar para experimentar con diferentes valores.

Si se produce una ruptura por encima del máximo o por debajo del mínimo de la vela de Hoffman, colocaremos una posición de compra o venta, respectivamente, según la tendencia actual del precio. También podemos establecer valores de stop-loss y take-profit, que pueden basarse en el rango verdadero promedio (ATR) o en los valores más altos/más bajos de las velas anteriores, según la tendencia del precio.

Ahora escribamos la estrategia en Python y hagamos una prueba retrospectiva utilizando algunos meses de datos históricos para evaluar los resultados. El archivo de Jupyter Notebook contiene el código, que comienza cargando 59 días de datos utilizando el módulo yfinance en un período de 15 minutos. Calculamos la media móvil exponencial (EMA), ATR y la pendiente de la media móvil.

A continuación, identificamos las barras de Hoffman según la pendiente de la media móvil y la forma de las velas. Visualizamos las señales en un gráfico y luego definimos una nueva función llamada "hofmann_break_signal" que toma dos parámetros: el índice de la vela actual y el número de velas traseras a considerar al buscar el patrón de vela de Hoffman.

Dentro de la función, iteramos a través de cada vela y verificamos si se cumplen las condiciones para la barra de Hoffman y la ruptura. Si es así, devolvemos una señal de compra para una tendencia alcista o una señal de venta para una tendencia bajista.

Aplicamos esta función a cada fila del marco de datos y almacenamos los resultados en una serie. Finalmente, visualizamos las señales y comprobamos si las velas de Hoffman se detectan correctamente.

Después de verificar la detección de velas, procedemos a realizar una prueba retrospectiva de la estrategia. Establecemos el stop-loss en función del precio mínimo entre las velas anteriores y tomamos ganancias utilizando una relación relativa al stop-loss. En este ejemplo, utilizamos un enfoque basado en ATR con una tasa de stop-loss de 1,5.

Probamos la estrategia durante los tres meses de datos y calculamos el rendimiento, el porcentaje de operaciones ganadoras y la curva de capital. En esta prueba inicial, el retorno es positivo al 51%, pero la curva de acciones no muestra un aumento estable.

También exploramos un método diferente para establecer niveles de stop-loss y take-profit, considerando el máximo más alto o el mínimo más bajo de las velas anteriores. Sin embargo, en este caso, el rendimiento es negativo en -4.8%, lo que indica que esta estrategia de administración de dinero no funcionó bien.

Tenga en cuenta que esta estrategia no ha sido optimizada en este video. Fue desarrollado rápidamente para demostrar la implementación de Python. Si encuentra interesante esta estrategia, siéntase libre de copiar el código y personalizarlo aún más agregando indicadores técnicos adicionales.

Gracias por ver este video. ¡Estén atentos para el próximo, operen de manera segura y hasta la próxima!

How to Code Retracement Bar Trading Strategy In Python
How to Code Retracement Bar Trading Strategy In Python
  • 2022.05.05
  • www.youtube.com
This video is a continuation of the previous one on the Hoffman Inventory Retracement Bar Automated In Python. This algorithmic trading strategy enabled Hoff...
 

Código de barras de retroceso en Python para operaciones algorítmicas


Código de barras de retroceso en Python para operaciones algorítmicas

Hola, en este video, presentaremos la barra de retroceso de inventario de Huffman y demostraremos cómo automatizar su detección en Python. Si está interesado en el código, puede descargar el archivo de Jupyter Notebook desde el enlace proporcionado en la descripción.

La primera regla de esta estrategia es detectar la tendencia del precio comprobando si la pendiente de la media móvil (MA) de 20 días forma un ángulo de 45 grados con la línea horizontal. Tenga en cuenta que la media móvil de 20 días se usa como ejemplo y puede experimentar con diferentes períodos para el promedio móvil. Si sigue una tendencia bajista, la pendiente negativa también debería formar un ángulo de al menos 45 grados con la línea horizontal. Sin embargo, es importante mencionar que confiar únicamente en este ángulo de 45 grados como señal no tiene sentido matemático, ya que es imposible definir con precisión este ángulo en un gráfico de negociación. El comercio algorítmico proporciona una solución a este problema, que exploraremos más adelante en el video.

La segunda regla de esta estrategia consiste en identificar velas cuya cola sea al menos el 45 % de la longitud total de la vela. Por ejemplo, en una tendencia alcista buscamos velas con una cola superior superior al 45% del movimiento total de la vela. De manera similar, en una tendencia bajista, buscamos velas con una cola inferior superior al 45 % del volumen de la vela. Este patrón de velas indica momentos en los que los vendedores o compradores intentan resistir o revertir la tendencia. Al comprender la dinámica del mercado a través de patrones de velas, podemos definir nuestra estrategia personalizada.

En el ejemplo, identificamos estas velas específicas y esperamos que el mercado supere los valores altos. Cuando una vela se cierra por encima del máximo de una vela de Huffman, indica que los vendedores no pudieron resistir la tendencia de compra y los compradores todavía tienen la ventaja. Esto sugiere que es probable que continúe la tendencia alcista y que podemos entrar en una posición larga con los compradores. Al analizar los resultados de estos supuestos, observamos que, en la mayoría de los casos, el precio sigue nuestras expectativas.

Sin embargo, para determinar el resultado a largo plazo de este indicador, debemos realizar una prueba retrospectiva utilizando nuestro código Python. En este video, nos enfocamos en explicar cómo detectar las velas de Huffman y generar una señal cuando ocurren. En un video separado, utilizaremos este indicador en una estrategia comercial completa y realizaremos una prueba retrospectiva adecuada.

Para comenzar, descargamos los datos usando el módulo yfinance. El ejemplo descarga datos de Euro/USD por un período de 59 días con un marco de tiempo de 15 minutos. Si necesita más datos, puede descargarlos por lotes y concatenar los marcos de datos. Después de descargar los datos, calculamos la media móvil exponencial (EMA) con una longitud de 20 y calculamos la pendiente de la media móvil. Los valores de pendiente se almacenan en una nueva columna llamada pendiente_ema en el marco de datos.

A continuación, calculamos la señal iterando sobre cada fila. Si la pendiente de la vela actual es negativa y supera el límite de pendiente, lo que indica una tendencia bajista, verificamos si la cola inferior de la vela dividida por el rango alto-bajo es mayor que el límite porcentual. Esto significa una vela de Huffman en una tendencia bajista, y la señal total se establece en 1. De manera similar, si la pendiente es positiva y excede el límite de pendiente, lo que indica una tendencia alcista, y la cola superior de la vela dividida por el rango alto-bajo es mayor que el límite porcentual, tenemos una vela de Huffman en una tendencia alcista, y la señal total se establece en 2.

Una vez que calculamos la señal y almacenamos los resultados en una lista llamada señal, la agregamos como una nueva columna llamada tot_signal al marco de datos. Luego podemos visualizar las señales en un gráfico usando Plotly.

Aquí hay una explicación paso a paso de la estrategia de barra de retroceso de inventario de Huffman sin el código:

  1. Descargue los datos de precios: obtenga los datos de precios históricos para el instrumento financiero deseado, como una acción o un par de divisas. Puede usar bibliotecas como yfinance en Python para recuperar los datos.

  2. Calcule la media móvil exponencial (EMA): calcule la EMA de los precios de cierre utilizando un período de tiempo específico. La EMA es un indicador de uso común que ayuda a identificar tendencias y posibles reversiones en los datos de precios.

  3. Calcule la pendiente: calcule la pendiente de la línea EMA en cada punto de datos. La pendiente indica la dirección y la fuerza de la tendencia. Puede usar técnicas matemáticas como gradiente o regresión para calcular la pendiente.

  4. Establecer parámetros: defina los parámetros para la detección de señales. En la estrategia de barra de retroceso de inventario de Huffman, normalmente establece un límite de pendiente y un límite de porcentaje de cola. El límite de pendiente determina el valor de pendiente mínimo para una señal potencial, mientras que el límite de porcentaje de cola establece el porcentaje mínimo del rango de la vela que debe tener la cola superior o inferior.

  5. Identificar señales: iterar a través de los datos y comparar las pendientes actuales y anteriores. Si ambas pendientes están por debajo del límite de pendiente negativa, compruebe si la cola inferior de la vela actual es mayor que el límite de porcentaje de cola. Si es así, márquelo como una señal alcista. De manera similar, si ambas pendientes están por encima del límite de pendiente positiva, verifique si la cola superior de la vela actual es mayor que el límite de porcentaje de cola. Si es así, márquelo como una señal bajista.

  6. Visualice señales: cree un cuadro o gráfico de los datos de precios. Trace las señales en el gráfico para visualizar las velas de Huffman. Puede usar bibliotecas de trazado como Plotly o Matplotlib para crear el gráfico y marcar los puntos de señal.

Recuerde que la estrategia no se limita a estos pasos, y puede personalizarla y refinarla según sus requisitos y preferencias comerciales. Además, la implementación de técnicas de gestión de riesgos, como el establecimiento de órdenes de límite de pérdidas o el dimensionamiento de posiciones, es esencial para una negociación exitosa.

Retracement Bar Coded In Python For Algorithmic Trading
Retracement Bar Coded In Python For Algorithmic Trading
  • 2022.04.28
  • www.youtube.com
This video details the IRB or the inventory retracement bar as described and used by Hoffman and the algorithm that detects this bar in an automated method i...
 

Cómo automatizar patrones comerciales en Python | Patrón de cabeza y hombros



Cómo automatizar patrones comerciales en Python | Patrón de cabeza y hombros

Para automatizar la detección de patrones de cabeza y hombros en Python, podemos seguir los pasos del algoritmo descritos en el texto. Aquí hay una explicación detallada de cada paso:

  1. Detectar puntos de pivote:

    • Este paso implica identificar valores altos y bajos en los datos de precios que son más altos o más bajos que las velas vecinas.
    • Se detectan dos tipos de puntos de pivote: puntos de pivote fuertes y puntos de pivote débiles.
    • Los puntos de pivote fuertes se comparan con una amplia gama de velas vecinas, mientras que los puntos de pivote débiles se comparan con un número menor de velas vecinas.
  2. Visualice puntos de pivote:

    • Los puntos de pivote fuertes y los puntos de pivote débiles detectados se trazan en un gráfico de velas japonesas.
    • Los puntos de pivote fuertes están representados por puntos morados sobre las velas, mientras que los puntos de pivote débiles están representados por puntos rojos debajo de las velas.
  3. Detectar patrón de cabeza y hombros:

    • Para detectar el patrón de cabeza y hombros, iteramos a través de los ID de velas en el rango especificado.
    • Para cada ID de vela, verificamos si es un punto de pivote (ni un pivote fuerte ni un pivote débil) y seguimos adelante.
    • Si se encuentra un punto de pivote fuerte, registramos las coordenadas de los máximos y mínimos dentro de una ventana de velas a ambos lados del pivote.
    • Realizamos un seguimiento de los recuentos de mínimos y máximos antes y después de la vela del pivote central.
    • Si los recuentos de mínimos y máximos son menores que uno en cada lado, la formación del patrón no es posible y pasamos a la siguiente vela.
    • Si los conteos de mínimos y máximos satisfacen la condición, ajustamos una línea de regresión lineal a los mínimos y calculamos su pendiente e intersección.
    • Encontramos el índice de la cabeza dentro de los máximos usando la función argmax.
    • Finalmente, verificamos si se cumplen las condiciones para el patrón de cabeza y hombros:
      • La diferencia entre el máximo del índice de cabeza y el máximo antes de la cabeza debe ser mayor que un umbral.
      • La diferencia entre el máximo del índice de cabeza y el máximo después de la cabeza también debe ser mayor que el umbral.
      • La pendiente absoluta de los mínimos debe ser menor o igual a un umbral.
    • Si se cumplen todas las condiciones, hemos detectado un patrón de cabeza y hombros.
Mencionar técnicas de gestión de riesgos, como establecer órdenes de límite de pérdidas o dimensionamiento de posiciones, es esencial para operar con éxito.
How to Automate Trading Patterns In Python | Head And Shoulders Pattern
How to Automate Trading Patterns In Python | Head And Shoulders Pattern
  • 2022.04.21
  • www.youtube.com
This video details the head and shoulders candles or candlesticks pattern, and an algorithm is automated in Python language to detect this specific form of c...
 

Detección de patrones de precios triangulares en Python | Indicador de comercio algorítmico



Detección de patrones de precios triangulares en Python | Indicador de comercio algorítmico

En este video, exploraremos la detección automática de patrones de triángulos utilizando algoritmos específicos. Presentaremos un método simple para detectar diferentes formas de triángulos de movimiento de precios y escribiremos un código Python para probarlo en datos forex. Al final, trazaremos los patrones descubiertos para visualizar los resultados. Si está interesado en la parte de codificación, puede descargar el archivo de Jupyter Notebook que contiene el código de Python desde el enlace provisto en la descripción del video.

Los patrones triangulares son de particular interés para los comerciantes cuando se utilizan en estrategias comerciales. Por ejemplo, algunos comerciantes operan con la ruptura de triángulos. En los ejemplos que se muestran, el precio sigue una tendencia futura en la dirección de la ruptura. En un ejemplo, el precio salió de los bordes del triángulo, siguiendo una tendencia bajista. En otro ejemplo, el precio salió del borde del triángulo, siguiendo una tendencia alcista. En ambos casos, hubo una continuación de la tendencia de ruptura.

Los pasos del método son los siguientes:

  1. Calcular puntos de pivote: los puntos de pivote son valores de precio que son mayores que sus vecinos. Para mínimos de pivote, el mínimo de una vela debe ser más bajo que los mínimos de un número específico de velas antes y después. Para máximos de pivote, el máximo de una vela debe ser mayor que los máximos del número especificado de velas antes y después.

  2. Ajuste máximos y mínimos en pendientes lineales: para máximos, compare los valores altos y busque una vela central con un máximo que sea mayor que el número especificado de velas antes y después. Para los mínimos, compare los valores bajos y busque una vela central con un mínimo inferior al número especificado de velas antes y después.

  3. Detectar formas de triángulos: dependiendo de la forma de triángulo deseada, identifique patrones basados en las pendientes de máximos y mínimos. Por ejemplo, se puede detectar un triángulo convergente cuando la pendiente máxima es negativa y la pendiente mínima es positiva. Se puede detectar un triángulo descendente cuando la pendiente máxima es negativa y la pendiente mínima es cercana a cero o una línea horizontal.

Ahora, escribamos el código en Python para implementar este método y veamos cómo funciona. El archivo de Jupyter Notebook contiene el código para importar los datos, limpiarlos, calcular los puntos de pivote, visualizar las velas de pivote y detectar patrones de triángulos. Usamos bibliotecas como Pandas, NumPy y Plotly para manejar las tareas de manipulación y visualización de datos.

Después de importar las bibliotecas y los datos necesarios, definimos una función llamada "pivot_id" para identificar los puntos de pivote en función del número especificado de vecinos. Esta función agrega una nueva columna llamada "pivote" al marco de datos, que indica si una vela es un pivote bajo (1) o un pivote alto (2).

Luego definimos una función llamada "points_position" para trazar las velas y agregar puntos por encima y por debajo de ellas en función de su estado de pivote. Esta función utiliza la columna "point_position" para determinar las coordenadas y de los puntos.

Usando la biblioteca de Plotly, trazamos las velas y los puntos de pivote para visualizar los resultados. Esto nos permite verificar que los puntos pivote están correctamente identificados.

A continuación, implementamos el código para detectar patrones de triángulos. Seleccionamos una vela específica y escaneamos un número específico de velas antes de ella para verificar si hay un patrón de triángulo presente en esa área. Iteramos sobre las velas y almacenamos las coordenadas de los máximos y mínimos en matrices NumPy separadas. Luego ajustamos estos puntos en pendientes lineales usando regresión lineal y calculamos las pendientes para máximos y mínimos.

Trazamos las velas, los puntos de pivote y las pendientes de máximos y mínimos para visualizar el patrón triangular. Al verificar las condiciones definidas para la forma del triángulo, como los factores de correlación (r_min y r_max), podemos determinar si existe un patrón de triángulo. Si se cumplen las condiciones, marcamos el patrón de triángulos en la gráfica.

Finalmente, iteramos a través de todas las velas en el conjunto de datos y repetimos el proceso de detección de patrones de triángulos. Cada vez que se encuentra un patrón, almacenamos las coordenadas del triángulo en listas separadas para su posterior visualización.

Al final del código, usamos Plotly para trazar las velas, los puntos de pivote y los patrones de triángulos detectados. Esto proporciona una representación visual de los triángulos identificados en los datos de precios.

Al ejecutar el código y examinar el gráfico, podemos ver los patrones de triángulos detectados y analizar sus formas. Esta información puede ser útil para los comerciantes que deseen incorporar patrones triangulares en sus estrategias comerciales.

Recuerde que el código proporcionado en el archivo de Jupyter Notebook es solo una posible implementación de la detección de patrones de triángulos. Hay varias formas de abordar este problema y puede explorar diferentes algoritmos o modificar el código existente para adaptarlo a sus requisitos específicos.

Triangle Price Pattern Detection In Python | Algorithmic Trading Indicator
Triangle Price Pattern Detection In Python | Algorithmic Trading Indicator
  • 2022.04.14
  • www.youtube.com
This video details the algorithm for triangle price pattern detection in python, this technical indicator can be programmed in python to detect all shapes of...
 

Backtest de Python AlgoTrading: uso de RSI y ADX con media móvil para señales de compra/venta



Backtest de Python AlgoTrading: uso de RSI y ADX con media móvil para señales de compra/venta

¡Hola a todos! En este video, realizaremos una prueba detallada de una estrategia de escultura basada en el índice direccional promedio (ADX) y el indicador de fuerza relativa (RSI), junto con otros indicadores de confirmación. Esta estrategia se anuncia como un enfoque rentable para el scalping. Nos centraremos en los puntos morados ubicados justo debajo de las flechas rojas en el gráfico de precios, que son generados automáticamente por el algoritmo que describiremos.

En este ejemplo específico, los puntos morados representan señales de venta y vale la pena señalar que estas señales son seguidas por una caída en el precio. Esto sugiere que esta estrategia es prometedora, ya que estas señales han resultado en operaciones ganadoras. Para profundizar en el aspecto de la codificación, puede descargar el código de Python, un archivo de Jupyter Notebook, desde el enlace proporcionado en la descripción.

Nuestro objetivo es desarrollar una estrategia de escultura automatizada en Python que nos permita configurar intercambios, dejar el código en ejecución y potencialmente obtener ganancias mientras dormimos. Sin embargo, es importante reconocer que lograr el éxito puede no ser tan simple como parece inicialmente.

Comenzaremos las pruebas en el marco de tiempo de cinco minutos, como se recomienda para esta estrategia en particular. Para determinar la tendencia del precio, utilizaremos la media móvil exponencial (EMA) de 50. Si el precio se negocia por encima de esta curva, indica una tendencia alcista y nos centraremos únicamente en comprar posiciones. Por el contrario, si el precio se negocia por debajo de la EMA 50, indica una tendencia bajista y consideraremos exclusivamente posiciones de venta.

Además, incorporaremos el RSI con un período de 3 y niveles de activación establecidos en 20 y 80. Cuando el RSI cae por debajo de 20, sugiere que el mercado está sobrevendido, lo que activa una señal de compra. Por el contrario, cuando el RSI supera los 80, indica que el mercado está sobrecomprado, lo que genera una señal de venta.

Nuestra estrategia también incorpora el Índice Direccional Promedio (ADX) con un período de cinco. Si el ADX supera los 30, indica una fuerte tendencia, sirviendo como índice de confirmación tanto para las tendencias alcistas como para las bajistas. En ambos casos, estamos buscando niveles por encima de 30.

Cuando se cumplen todas estas condiciones, se genera la primera parte de nuestra señal. Para validar aún más esta señal, emplearemos un enfoque de patrón de velas, buscando específicamente una vela envolvente alineada con la tendencia. Si la tendencia es alcista, buscaremos una vela envolvente alcista; si la tendencia es bajista, buscaremos una vela envolvente bajista.

Afortunadamente, todos estos indicadores pueden automatizarse en Python y probarse en datos históricos. El ejemplo que usaremos se seleccionó aleatoriamente del conjunto de datos. Las observaciones iniciales indican señales positivas, ya que las señales de venta tienden a ir seguidas de una caída del precio, mientras que las señales de compra a menudo van seguidas de un aumento del precio.

Para poner esta estrategia a prueba, emplearemos Python para realizar pruebas retrospectivas y permitir que los resultados determinen su viabilidad. Importaremos los datos históricos para el par de divisas EUR/USD de 2019 a 2022, específicamente usando velas japonesas de cinco minutos. También limpiaremos los datos eliminando los períodos sin actividad comercial, como los fines de semana y los días festivos.

Usando el paquete Pandas TA (Análisis técnico), agregaremos cuatro columnas adicionales a nuestro marco de datos: 50 EMA, RSI con un período de 3, ADX con un período de 5 y Rango verdadero promedio (ATR). Este último se utilizará para calcular la distancia de stop-loss. La señal de tendencia de EMA indicará si las velas cotizan por debajo o por encima de la curva de 50 EMA, determinando si estamos en una tendencia bajista o alcista, respectivamente.

Si estamos en una tendencia bajista, verificaremos si el RSI está por debajo de 20, lo que indica una condición de sobreventa. Si se cumplen las condiciones de tendencia bajista y sobreventa, generaremos una señal de venta.

Del mismo modo, si estamos en una tendencia alcista, comprobaremos si el RSI está por encima de 80, lo que indica una condición de sobrecompra. Si se cumplen tanto la tendencia alcista como la de sobrecompra, generaremos una señal de compra.

Para validar aún más estas señales, buscaremos patrones de velas envolventes alineados con la tendencia. Para una señal de venta, buscaremos una vela envolvente bajista, donde el cuerpo de la vela actual engulle completamente el cuerpo de la vela anterior en dirección descendente. Para una señal de compra, buscaremos una vela envolvente alcista, donde el cuerpo de la vela actual engulle completamente el cuerpo de la vela anterior en una dirección ascendente.

Una vez que se generan las señales, calcularemos la distancia de stop-loss utilizando el rango verdadero promedio (ATR). El ATR proporciona una estimación del rango de precios promedio durante un período específico, lo que puede ayudarnos a determinar un nivel razonable de límite de pérdidas.

En la fase de backtesting, iteraremos a través de los datos históricos y aplicaremos estas reglas para generar y evaluar las señales comerciales. Para cada señal, simularemos una operación, asumiendo que ingresamos a la posición al precio de apertura de la siguiente vela después de que se genera la señal. También definiremos un nivel fijo de toma de ganancias basado en una cierta relación recompensa-riesgo.

Durante la simulación, realizaremos un seguimiento de la ganancia o pérdida de cada operación y calcularemos las métricas de rendimiento clave, como la ganancia total, la pérdida total, la tasa de ganancias y el rendimiento promedio por operación. Esto nos ayudará a evaluar la efectividad de la estrategia y determinar su rentabilidad.

Es importante tener en cuenta que los resultados de las pruebas retrospectivas en datos históricos no garantizan el rendimiento futuro. Las condiciones del mercado pueden cambiar y las estrategias que funcionaron bien en el pasado pueden no funcionar tan efectivamente en el futuro. Por lo tanto, es crucial evaluar y adaptar continuamente las estrategias comerciales en función de las condiciones del mercado en tiempo real.

En conclusión, hemos esbozado una estrategia de escultura basada en el índice direccional promedio (ADX), el indicador de fuerza relativa (RSI) y los patrones de velas envolventes. Hemos discutido el proceso de automatización de esta estrategia utilizando Python y realizando pruebas retrospectivas en datos históricos. Los resultados del backtesting proporcionarán información sobre el rendimiento de la estrategia y ayudarán a evaluar su viabilidad como un enfoque rentable para el scalping.

Python AlgoTrading Backtest: Using RSI and ADX with Moving Average for Buy/Sell Signals
Python AlgoTrading Backtest: Using RSI and ADX with Moving Average for Buy/Sell Signals
  • 2022.04.07
  • www.youtube.com
This is a backtested strategy using the ADX and the RSI, the algotrading code is built in python and the backtest is conducted using backtesting.py package. ...
 

Cómo usar el indicador de volumen para el análisis de la estrategia comercial en Python


Cómo usar el indicador de volumen para el análisis de la estrategia comercial en Python

Hoy, nos embarcamos en un viaje emocionante mientras probamos una estrategia comercial de volumen. Esta estrategia en particular opera en el marco de tiempo diario y es conocida por su seguridad, ya que implica un riesgo mínimo en teoría. Lo he llamado acertadamente la "Estrategia comercial de volumen" debido a su dependencia del volumen y otros indicadores técnicos.

Nuestro objetivo es desarrollar un código que pueda probar automáticamente esta estrategia utilizando datos históricos que abarcan hasta 18 años. Al hacerlo, podemos obtener una comprensión integral del desempeño de la estrategia. Para aquellos interesados en el aspecto de la codificación, pueden encontrar el archivo Jupyter Notebook Python en la descripción del video. Hay un enlace disponible para que descargue el archivo completo que usaremos para esta prueba.

Para comenzar, utilizaremos la media móvil exponencial (EMA) de 200 días como nuestro primer indicador. Si el precio cotiza por debajo de esta curva, significa una tendencia bajista, mientras que operar por encima de la EMA de 200 indica una tendencia alcista. Nuestra primera regla es sencilla: cuando identificamos una tendencia bajista, solo consideraremos las posiciones de venta y, en el caso de una tendencia alcista, nos centraremos únicamente en las posiciones de compra.

Ahora, profundicemos en los detalles de nuestra estrategia. Buscaremos cuatro velas consecutivas que se muevan en sentido contrario a la tendencia predominante, es decir, retrocedan el precio más cerca de la media móvil. Es importante tener en cuenta que la cantidad de velas se puede ajustar según la preferencia del usuario. En nuestro Jupyter Notebook, brindamos la flexibilidad de modificar este parámetro en cualquier momento. Por ahora, nos quedaremos con un mínimo de cuatro velas.

A continuación, examinamos la siguiente vela, que debería alinearse con la dirección de la tendencia. Por ejemplo, si estamos en una tendencia bajista, buscamos una vela bajista. Al final de la jornada bursátil, una vez cerrada la vela, comprobamos su volumen. Si el volumen supera el de la vela anterior, sirve como señal de venta en una tendencia bajista. Por el contrario, en una tendencia alcista, buscamos al menos cuatro velas bajistas consecutivas seguidas de una vela alcista con mayor volumen que la vela anterior. Esto significa una posición de compra.

Ahora viene la parte compleja: determinar los niveles de stop loss y take profit. En este video, exploramos dos enfoques diferentes y evaluamos sus resultados. El primer método implica el uso de una distancia de stop-loss relacionada con el rango verdadero promedio (ATR), como dos o tres veces el ATR de nuestras posiciones de venta o compra. El segundo método considera el máximo más alto entre las velas anteriores como nuestro límite de pérdidas para una posición de tendencia bajista y de venta. El número de velas a considerar para establecer el stop loss es una variable en nuestro programa de Python, lo que nos permite experimentar y probar diferentes escenarios. Por lo general, empiezo con cuatro velas, similar al número utilizado para verificar nuestras señales comerciales. Para una posición de tendencia alcista y de compra, buscamos el mínimo más bajo entre las pocas velas anteriores.

Ahora, examinemos el código y veamos cómo funciona todo junto. En nuestro archivo de Jupyter Notebook, comenzamos importando las bibliotecas necesarias, incluidas Pandas, que usaremos para leer el archivo de datos CSV que contiene los tipos de cambio diarios EUR/USD desde 2003 hasta 2022. Además, cargamos datos para otros activos como las acciones de Amazon, eBay y Volkswagen, ya que también tenemos la intención de probar esta estrategia en el mercado de valores. Dado que estamos trabajando con datos diarios, el conjunto de datos inicial consta de 6858 filas, que se reducirán aún más durante el proceso de limpieza de datos. También nos aseguramos de que los títulos de las columnas se alineen con nuestros requisitos, renombrándolos a "Tiempo", "Abierto", "Alto", "Bajo", "Cerrado" y "Volumen" para mantener la coherencia entre diferentes archivos de datos.

Después de trazar las señales en el gráfico, pasamos a definir nuestros niveles de stop loss y take profit. En este ejemplo, se prueban dos métodos. El primer método consiste en utilizar el rango verdadero promedio (ATR) para determinar la distancia de stop loss. El stop loss se establece en un determinado múltiplo del ATR desde el punto de entrada. El segundo método considera el máximo más alto para las posiciones de venta o el mínimo más bajo para las posiciones de compra entre un número específico de velas anteriores para determinar el nivel de stop loss.

Una vez que se definen los niveles de stop loss y take profit, calculamos las ganancias y pérdidas (P&L) para cada operación. Comprobamos si la señal total es una señal de compra o venta y calculamos el P&L en consecuencia. Si es una señal de compra, calculamos el P&L como la diferencia entre el precio de cierre de la siguiente vela y el precio de entrada. Si es una señal de venta, calculamos el P&L como la diferencia entre el precio de entrada y el precio de cierre de la siguiente vela.

Luego, las pérdidas y ganancias acumuladas se calculan sumando las pérdidas y ganancias comerciales individuales. También calculamos el número total de operaciones y la tasa de ganancias (porcentaje de operaciones ganadoras) en función de las pérdidas y ganancias positivas.

Finalmente, imprimimos los resultados, incluido el total de pérdidas y ganancias, el número de operaciones y la tasa de ganancias.

El código proporcionado en Jupyter Notebook permite una mayor personalización y prueba de la estrategia. Puede modificar parámetros como el número de velas traseras a considerar para la determinación de tendencias, el número de velas anteriores para la generación de señales de precio, el múltiplo de ATR para el cálculo de stop loss y el número de velas anteriores a considerar para la determinación del nivel de stop loss.

El código implementa una estrategia comercial de volumen basada en indicadores técnicos como la media móvil exponencial (EMA) de 200 días, el volumen y los movimientos de precios. Pone a prueba la estrategia durante un período específico de datos históricos y calcula las métricas de rentabilidad y rendimiento.

How To Use The Volume Indicator For Trading Strategy Analysis In Python
How To Use The Volume Indicator For Trading Strategy Analysis In Python
  • 2022.03.24
  • www.youtube.com
Welcome to my video on how to use the volume indicator for trading strategy analysis in Python. In this video, I will be sharing a daily timeframe volume tra...