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

 

Canales de tendencia de precios automatizados en Python



Canales de tendencia de precios automatizados en Python

Hola a todos, gracias por acompañarnos hoy para este video. Nos complace presentar un algoritmo en Python que detecta canales de movimiento de precios. Puede descargar el código como un archivo de Jupyter Notebook desde el enlace en la descripción a continuación.

En primer lugar, el crédito es para el Sr. o la Sra. M de la sección de comentarios por proponer esta idea. Agradecemos su paciencia ya que ha sido más de un mes de espera. Esperamos que este video no te decepcione.

Antes de comenzar, aclaremos el propósito de este canal. Nuestro objetivo es proporcionar contenido educativo, por lo que no proporcionaremos simplemente programas para que los descargue y use como una caja negra. En cambio, nuestro objetivo es explicar el proceso de pensamiento y cómo se construyó el programa. Al final de este video, debería poder crear su propio algoritmo, inspirado en el que se presenta aquí, e incluso agregar sus propias extensiones.

Sin embargo, es importante reconocer las limitaciones de los modelos numéricos cuando se aplican a entornos dinámicos y no lineales como el mercado. Las tendencias y predicciones de precios siguen siendo un campo de estudio abierto, con investigaciones en curso que intentan encontrar los mejores enfoques. El mercado es muy dinámico y las tendencias y su velocidad de cambio pueden variar con el tiempo. Por lo tanto, acepte las limitaciones y complejidades inherentes a la predicción de movimientos de precios.

Ahora, profundicemos en el algoritmo. El algoritmo que presentamos se basa en información simple recopilada a través de este canal y nuestra imaginación. El enfoque implica posicionarnos en una vela o fecha específica y mirar hacia atrás en el tiempo para un cierto número de velas.

Dividimos este tiempo en partes iguales o ventanas de tiempo. En cada ventana, identificamos los puntos de precio más altos y más bajos, conocidos como máximos y mínimos. Repetimos este proceso para todas las ventanas de tiempo y ajustamos los puntos mínimos y máximos en ajustes polinómicos separados de primer grado, que son líneas rectas.

Sin embargo, estas pendientes no necesariamente envuelven el precio porque pasan por los puntos. Para abordar esto, necesitamos mejorar los valores de intercepción de estas pendientes. Hay maneras diferentes de hacer esto. Un enfoque consiste en ajustar las intersecciones para que las curvas pasen por puntos específicos, como el punto mínimo más cercano a la mitad de la ventana de tiempo o los puntos más altos y más bajos que se encuentran dentro de la ventana.

Otro aspecto a considerar es la duración de la ventana de tiempo. Dependiendo de su preferencia, puede elegir diferentes valores para el número de velas traseras. Por ejemplo, puede tomar 30 barras detrás de la vela actual más o menos 20 barras, lo que permite que el programa deambule dentro de ese rango. Luego, el programa evaluará diferentes pendientes y devolverá el número de velas que proporcionan la situación más paralela entre las dos pendientes, lo que indica la detección de un canal.

Hemos proporcionado un archivo de Jupyter Notebook que puede descargar desde el enlace en la descripción del video. El archivo incluye el código Python para implementar el algoritmo. Para comenzar, importamos la biblioteca de pandas y cargamos los datos de un archivo CSV que contiene datos de velas japonesas frente al dólar de 2003 a 2021.

A continuación, buscamos los máximos y mínimos dentro de la ventana de tiempo definida por el número de velas traseras. Cortamos la ventana en ventanas más pequeñas y encontramos los puntos máximo y mínimo dentro de cada ventana. Estos puntos se almacenan en matrices numpy.

Después de obtener los mínimos y máximos, usamos la función numpy polyfit para ajustar los puntos a las líneas polinómicas de primer grado. Los resultados, que incluyen las pendientes y las intersecciones, se almacenan en variables.

Para visualizar las pendientes, trazamos el gráfico de velas y agregamos las líneas correspondientes a las pendientes. En esta etapa, es posible que las pendientes no se ajusten perfectamente al precio, pero proporcionan un ajuste razonable.

Para mejorar el ajuste, podemos modificar las intersecciones de las pendientes. Un enfoque es ajustar las intersecciones para que pasen por los puntos más altos y más bajos dentro de cada ventana de tiempo. Calculamos los puntos más altos y más bajos dentro de la ventana de tiempo y actualizamos las intersecciones de las pendientes en consecuencia.

Para determinar el canal óptimo, iteramos a través de diferentes valores del número de velas traseras y evaluamos el paralelismo entre las dos pendientes. Calculamos el ángulo entre las dos pendientes y comprobamos si cae dentro de un umbral predefinido. Si es así, lo consideramos un canal válido y almacenamos el número de velas traseras y el ángulo para su posterior análisis.

Finalmente, podemos visualizar los canales detectados trazando el gráfico de velas y superponiendo las líneas correspondientes a los canales. Esto proporciona una representación visual de los canales de movimiento de precios identificados.

Es importante tener en cuenta que este algoritmo es un enfoque simplificado y es posible que no capture todos los tipos de canales de movimiento de precios. El mercado es complejo y puede haber varios patrones y dinámicas que van más allá del alcance de este algoritmo. Sin embargo, este algoritmo sirve como punto de partida para detectar canales y puede ampliarse o personalizarse según los requisitos y preferencias individuales.

Le recomendamos que descargue el archivo de Jupyter Notebook y explore el código en detalle. Experimente con diferentes parámetros, pruébelo en diferentes conjuntos de datos y vea cómo funciona. Siéntase libre de modificar y mejorar el algoritmo para adaptarlo a sus necesidades e ideas.

Esperamos que este video y el código que lo acompaña le brinden información e inspiración para desarrollar su propio algoritmo de detección de canales. Recuerde, la clave es comprender los conceptos subyacentes y adaptarlos a sus necesidades específicas y condiciones de mercado.

Gracias por mirar, y esperamos sus comentarios y preguntas. ¡Feliz codificación!

Price Trend Channels Automated In Python
Price Trend Channels Automated In Python
  • 2021.10.30
  • www.youtube.com
This video is about detecting price trend and price channels and how to automate this process in Python. The algorithm is presented and explained then the co...
 

Cómo codificar un Trail Stop en Python Estrategia Backtesting



Cómo codificar un Trail Stop en Python Estrategia Backtesting

Hoy, tengo un emocionante tutorial de codificación para ti en Python. Aprenderemos cómo implementar un tope dinámico en nuestra estrategia comercial y analizaremos su impacto en nuestro capital y rendimientos. Si eres nuevo en este canal, te recomiendo que veas los videos anteriores de esta lista de reproducción, en especial los últimos dos o tres, donde discutimos la estrategia en detalle. También puede encontrar el código de Python en el cuaderno de Júpiter, que está disponible para descargar desde el enlace en la descripción. Esto le permitirá ajustar los parámetros y experimentar por su cuenta.

Antes de sumergirnos en la parte de la codificación, recapitulemos brevemente la estrategia que usaremos. En pocas palabras, hemos automatizado la detección de niveles de soporte y resistencia, así como la identificación de patrones de velas que ocurren alrededor de estos niveles. En base a estas señales, ejecutaremos nuestras órdenes comerciales. Por ejemplo, si identificamos una señal de compra, como un patrón envolvente alcista precedido por una vela de fuerte rechazo, entraremos en una posición larga. Para gestionar el riesgo, necesitamos establecer una orden de stop-loss, que determina la pérdida máxima que estamos dispuestos a tolerar. Tradicionalmente, el stop-loss se fija a cierta distancia del precio de entrada. Sin embargo, en este tutorial, lo reemplazaremos con una parada final.

Un tope dinámico sigue el movimiento del precio en la dirección rentable, lo que nos permite capturar más ganancias durante una tendencia alcista. En nuestro ejemplo, dado que estamos en una posición de compra, el trailing stop se moverá junto con el precio a medida que sube, manteniendo una cierta distancia detrás de él. Sin embargo, si el precio intenta revertirse y alcanza el nivel de stop-loss, nuestra operación se cerrará para evitar más pérdidas. Este mecanismo de tope dinámico ayuda a maximizar las ganancias, especialmente durante las tendencias de precios prolongadas, en lugar de utilizar un nivel fijo de toma de ganancias que podría limitar nuestras ganancias potenciales.

Ahora, apliquemos este concepto a nuestra estrategia discutida previamente. Usaremos el mismo programa que detallamos antes. Si no está familiarizado con él, consulte la lista de reproducción y mire los últimos dos o tres videos, que cubren los patrones de velas japonesas y la automatización de la detección de niveles de soporte y resistencia. La única diferencia esta vez es que, en lugar de utilizar un stop-loss fijo o un take-profit, implementaremos el trailing stop. Hacia el final de este tutorial, probaré la estrategia y demostraré los rendimientos potenciales que se pueden lograr con este método de parada dinámica.

Para comenzar, cargamos nuestros datos, que es el gráfico de velas diario para el par de divisas EUR/USD de 2003 a 2021. Tenemos un conjunto de funciones que ayudan a detectar niveles de soporte y resistencia, así como varios patrones de velas como patrones envolventes, estrellas fugaces y patrones de rechazo. Si está interesado en los detalles de implementación de estas funciones, consulte los videos anteriores.

A continuación, generamos nuestras señales comerciales. Una señal de compra se denota con un valor de 2, una señal de venta con 1, y si no hay señal, el valor se establece en 0. Esta información se agrega como una nueva columna en nuestro marco de datos. Así es como se ve nuestro marco de datos ahora, con columnas para el precio de apertura, máximo, mínimo, precio de cierre, volumen (que no usaremos en esta estrategia) y la columna de señal.

Para probar nuestra estrategia, utilizaremos el paquete de backtesting presentado en el último video de esta lista de reproducción. Definimos una clase llamada "MyCandleStrategy" que hereda de la clase "Strategy" proporcionada por el paquete de backtesting. Anulamos dos funciones: "inicializar" y la siguiente función llamada en cada vela. En la función de inicialización, definimos la variable "stop_loss_trail", que representa la distancia (en pips) para nuestro tope dinámico. Se puede experimentar con este valor para encontrar el valor óptimo de parada móvil para nuestra estrategia.

En la siguiente función, implementamos la lógica para nuestro trailing stop. Comenzamos comprobando si tenemos una posición abierta. Si lo hacemos, calculamos el nivel actual de stop-loss restando el valor del trailing stop del precio más alto desde que ingresamos a la posición. Esto asegura que el nivel de stop-loss quede detrás del precio a medida que sube. Luego verificamos si el precio actual ha alcanzado o ha caído por debajo del nivel de stop-loss. Si es así, cerramos la posición y actualizamos nuestras estadísticas comerciales.

Ahora que hemos implementado la lógica de parada dinámica, podemos proceder a ejecutar el backtest y analizar los resultados. Aquí hay un ejemplo de cómo ejecutar el backtest e imprimir la curva de equidad: Esto generará un gráfico que muestra la curva de equidad de nuestra estrategia con el tope dinámico aplicado. También puede acceder a otras métricas y estadísticas de rendimiento proporcionadas por el paquete de backtesting para evaluar el rendimiento de la estrategia.

Finalmente, para afinar el valor del tope dinámico, puede iterar sobre un rango de valores y ejecutar múltiples pruebas retrospectivas para comparar los resultados. Esto le ayudará a encontrar el valor óptimo de trailing stop que maximice sus retornos.

Con esto concluye nuestro tutorial sobre la implementación de un trailing stop en nuestra estrategia comercial. Recuerde experimentar con diferentes valores y probar la estrategia a fondo antes de aplicarla al comercio real. Si tiene alguna pregunta o necesita más ayuda, no dude en preguntar. ¡Feliz codificación y feliz comercio!

How To Code A Trail Stop In Python Strategy Backtesting
How To Code A Trail Stop In Python Strategy Backtesting
  • 2021.10.22
  • www.youtube.com
Trailing stop, or stop loss strategy is presented and coded in python for algorithmic trading methods. The strategy is Backtested showing high profitability...
 

Cómo hacer una prueba retrospectiva de una estrategia comercial en Python



Cómo hacer una prueba retrospectiva de una estrategia comercial en Python

Hola a todos y bienvenidos a otro video. Hoy, me gustaría discutir un tema que es muy importante para nuestras estrategias comerciales, que es el backtesting. Hasta ahora, hemos presentado diferentes estrategias y nos hemos basado únicamente en recuentos estadísticos para verificar la confiabilidad de las estimaciones de nuestro modelo para el comercio. Sin embargo, el backtesting de nuestra estrategia aporta información adicional, que es la cantidad de beneficio que se puede obtener en un tiempo determinado.

Este porcentaje de ganancia es importante para definir si estás considerando algún tipo de inversión en tu estrategia. Antes de continuar, como siempre, el código es un cuaderno Jupyter Python que puedes descargar desde el enlace en la descripción de este video. Este tema fue propuesto por uno de sus mensajes, así que gracias nuevamente por compartir sus pensamientos. Estamos obteniendo ideas realmente interesantes de sus comentarios y pido disculpas si no tuve tiempo para discutir todas las ideas propuestas, pero estoy manteniendo una lista y creo que las cubriremos en el futuro.

Ahora, hablemos de las herramientas de backtesting. Hay muchas bibliotecas disponibles en línea, pero personalmente prefiero codificar mis propias funciones. De esta manera, sé exactamente lo que sucede dentro de mi código, especialmente cuando se trata de realizar pruebas retrospectivas. Necesitamos algo fiable y robusto. Sin embargo, entre los paquetes propuestos, tenía dos opciones. Uno estaba usando un paquete llamado "vectorbt", que encontré un poco difícil de aprender en un par de horas y comenzar a usarlo para mis propias estrategias. La documentación era escasa y tuve que buscar en foros y ejemplos en línea para encontrar muchos detalles. Aunque tiene un gran potencial y ofrece muchas opciones, no quería pasar un mes familiarizándome con las funciones necesarias solo por probar una estrategia simple.

Entonces, para este video, elegí la segunda opción, que es un paquete llamado "backtesting.py". En mi opinión, ofrece un enfoque más simple. Ahora, saltemos a ello y veamos cuánto dinero habría hecho nuestra estrategia. Para este ejemplo, voy a probar la estrategia anterior que discutimos en el video de detección automática de resistencia y soporte y detección de patrones de velas japonesas. Estos son dos indicadores que combinaremos y usaremos en este video.

Primero, cargaré y limpiaré los datos. Luego, aplicaré las funciones de soporte y resistencia para la detección. Si es la primera vez que ve este canal, le recomiendo que regrese y revise los videos anteriores sobre cómo detectar funciones de soporte y resistencia, así como el que explica cómo detectar patrones envolventes, estrellas fugaces, hombre colgado y otros patrones de velas.

A continuación, calculamos nuestra señal, ya sea una señal de compra, una señal de venta o ninguna señal, según el enfoque mencionado anteriormente. Etiquetamos ambas señales y llenamos una columna en nuestro marco de datos. Podemos verificar la cantidad de señales que obtuvimos solo para asegurarnos de que nuestras funciones funcionan correctamente.

Ahora, cambiaré los títulos de las columnas para que sean compatibles con el paquete backtesting.py. Este paso distingue entre mayúsculas y minúsculas, por lo que debemos asegurarnos de que los nombres coincidan exactamente. Luego, selecciono una serie de filas con las que trabajar.

Después de configurar nuestro marco de datos, pasamos a la parte más interesante: definir nuestra estrategia y hacer un backtesting. Importaré las bibliotecas requeridas, incluido el módulo de "estrategia", y eliminaré el ejemplo en el cruce de promedios móviles lentos versus rápidos.

A continuación, defino una nueva clase llamada "MyCandlesStrategy" que amplía la clase "Estrategia" y anula sus dos métodos abstractos: __init__ y next. El método __init__ se utiliza para inicializar las primeras variables o funciones al comienzo de la estrategia. Se ejecuta solo una vez, idealmente para calcular previamente cualquier indicador y señal de la que dependa la estrategia.

En general, el backtesting es un aspecto crucial de las estrategias comerciales, ya que proporciona información valiosa sobre la rentabilidad potencial de una estrategia durante un período de tiempo específico. En este video, profundizaremos en el backtesting y su importancia para nuestras estrategias comerciales.

Antes de continuar, como de costumbre, el código para esta discusión está disponible como un cuaderno Jupyter Python, que puede descargar desde el enlace provisto en la descripción del video. Uno de nuestros espectadores sugirió el tema del backtesting, y agradezco las interesantes ideas y comentarios que recibo de todos ustedes. Aunque es posible que no tenga la oportunidad de discutir todas las ideas propuestas de inmediato, mantengo una lista y me esfuerzo por cubrirlas en videos futuros.

Cuando se trata de herramientas de backtesting, existen numerosas bibliotecas disponibles en línea. Si bien no estoy familiarizado con todos ellos, personalmente, prefiero codificar mis propias funciones. Este enfoque me permite tener un control y una comprensión completos del funcionamiento interno del código, lo cual es particularmente crucial para el backtesting. Necesitamos una solución robusta y confiable para evaluar nuestros modelos comerciales.

Entre los paquetes sugeridos, tenía dos opciones. El primero fue un paquete llamado "Vectorbt", que, aunque potente y rico en funciones, tuvo una curva de aprendizaje empinada. La documentación de este paquete era algo limitada y tuve que buscar en foros y ejemplos en línea para recopilar la información necesaria. Si bien Vectorbt tiene un potencial inmenso, no quería dedicar demasiado tiempo a familiarizarme con sus funciones con el único fin de probar una estrategia simple en este video.

Por lo tanto, opté por la segunda opción, un paquete llamado "backtesting.py". En mi opinión, este paquete ofrece un enfoque más simple para el backtesting, haciéndolo más adecuado para nuestras necesidades. Dicho esto, profundicemos y veamos cuántas ganancias habría generado nuestra estrategia.

En este ejemplo, probaré la estrategia anterior que discutimos, que involucraba la detección automática de niveles de resistencia y soporte, así como la detección de patrones de velas japonesas. Estos dos indicadores se combinarán para formar nuestra estrategia. Para una explicación detallada de la detección de niveles de soporte y resistencia y patrones de velas japonesas, le animo a ver los videos correspondientes en nuestro canal.

Para empezar, cargamos y limpiamos los datos como de costumbre. A continuación, implementamos las funciones de soporte y resistencia para la detección. Si es nuevo en este canal, le recomiendo que consulte los videos anteriores sobre detección de soporte y resistencia e identificación de patrones de velas japonesas para una mejor comprensión.

Una vez que hemos calculado nuestras señales, que determinan si se trata de una situación de compra, venta o ausencia de señal, contamos el número de señales para asegurarnos de que nuestras funciones funcionan correctamente.

En el futuro, debemos ajustar los nombres de las columnas en nuestro DataFrame para que sean compatibles con el paquete "backtesting.py". Es esencial respetar la distinción entre mayúsculas y minúsculas y las convenciones de nomenclatura requeridas por el paquete. Además, seleccionamos una serie de filas y hacemos los cambios de columna necesarios.

Para resumir, nuestro DataFrame contiene las siguientes columnas: tiempo, apertura, precios máximos, mínimos y de cierre, así como el volumen (que no usaremos en este momento) y la columna de señal que calculamos anteriormente.

A continuación, definimos una función de señal que devuelve la columna de señal de nuestro DataFrame. Esta función será necesaria más adelante cuando definamos nuestra clase de estrategia.

Ahora llegamos a la parte más interesante, donde definimos nuestra estrategia y realizamos backtesting. Para lograr esto, seguimos las pautas provistas en la documentación de backtesting.py. Sugieren que una nueva estrategia debería extender la clase Strategy y anular sus dos métodos abstractos: init y next.

El método init se encarga de inicializar las variables y funciones requeridas por la estrategia. Se invoca antes de que se ejecute la estrategia y, por lo general, se usa para calcular previamente los indicadores o señales en los que se basa la estrategia. Al sobrecargar esta función, podemos definir los indicadores necesarios utilizando las funciones regulares de Python y los ejemplos proporcionados en la documentación de backtesting.py.

En nuestro método init, definimos los indicadores necesarios para nuestra estrategia. En este caso, usaremos la función de señal que creamos anteriormente para obtener la columna de señal de nuestro DataFrame. También establecemos la tarifa de comisión en cero, ya que no consideraremos ninguna tarifa comercial para este ejemplo.

El siguiente método es el corazón de nuestra estrategia. Se llama para cada barra comercial y es responsable de tomar las decisiones comerciales en función de las condiciones actuales del mercado. En nuestra implementación, verificamos si hay una señal de compra (la señal es igual a 1) y actualmente no tenemos una posición. Si se cumplen estas condiciones, entramos en una posición larga (compra).

De manera similar, si hay una señal de venta (la señal es igual a -1) y tenemos una posición larga, salimos de la posición (vender). No consideramos posiciones cortas en este ejemplo, por lo que solo tenemos señales de compra y venta.

Una vez que hemos definido nuestra estrategia, creamos una instancia de la misma y pasamos nuestro DataFrame y la función de señal como argumentos. Luego creamos una instancia de la clase Backtest del paquete backtesting.py, pasando nuestra instancia de estrategia y DataFrame como argumentos.

Finalmente, ejecutamos el backtest llamando al método de ejecución en nuestra instancia de Backtest. Este método ejecuta la estrategia y produce los resultados.

Los resultados incluyen varias métricas de rendimiento, como el rendimiento total, el rendimiento anualizado, la reducción máxima y más. Podemos acceder a estas métricas utilizando los atributos correspondientes de la instancia de Backtest.

Además de las métricas de rendimiento, la instancia de Backtest proporciona varias funciones de trazado para visualizar los resultados. Podemos trazar la curva de capital, que muestra el crecimiento de la cuenta comercial a lo largo del tiempo, así como otros gráficos útiles, como las reducciones y el registro comercial.

En nuestro ejemplo, trazamos la curva de equidad e imprimimos el resumen de los resultados del backtest, incluidas las métricas de rendimiento.

Después de ejecutar el código, podemos observar el gráfico de la curva de equidad, que muestra el crecimiento de nuestra cuenta comercial a lo largo del tiempo. El resumen de los resultados del backtest proporciona información valiosa sobre el desempeño de nuestra estrategia.

Al realizar una prueba retrospectiva de nuestra estrategia, podemos evaluar su rentabilidad y evaluar su desempeño. Este proceso nos permite obtener información sobre la efectividad de nuestro modelo comercial y tomar decisiones informadas sobre su uso potencial en escenarios comerciales reales.

Eso concluye nuestra discusión sobre backtesting usando el paquete backtesting.py. Espero que haya encontrado este video informativo y que le haya brindado un enfoque práctico para probar sus estrategias comerciales. Recuerde experimentar con diferentes estrategias, indicadores y parámetros para encontrar los que mejor se adapten a sus objetivos comerciales.

Como siempre, siéntete libre de dejar comentarios, preguntas o sugerencias para futuros videos. Su retroalimentación es muy apreciada. ¡Gracias por mirar, y nos vemos en el próximo video!

How To Backtest A Trading Strategy in Python
How To Backtest A Trading Strategy in Python
  • 2021.10.07
  • www.youtube.com
In this video I am presenting a backtesting method using the backtesting.py package. We will backtest a winning strategy using python, we already detailed th...
 

Estrategia de comercio de acción de precio automatizada en Python



Estrategia de comercio de acción de precio automatizada en Python

En este video, discutiremos una estrategia comercial que utiliza patrones de velas japonesas y niveles de soporte y resistencia. El objetivo principal de esta estrategia es automatizar el proceso de detección de patrones de acción del precio y aplicarlo a los datos históricos del euro frente al dólar estadounidense.

Para comenzar, echemos un vistazo a los componentes clave de esta estrategia. Los patrones de velas son representaciones gráficas de los movimientos de precios en forma de barras o velas. Estos patrones brindan información valiosa sobre el sentimiento del mercado y posibles cambios de tendencia. Al analizar estos patrones, los comerciantes pueden tomar decisiones informadas sobre cuándo ingresar o salir de las operaciones.

Los niveles de soporte y resistencia, por otro lado, son puntos de precio específicos donde el mercado ha mostrado históricamente una tendencia a revertirse o detenerse. Estos niveles actúan como barreras psicológicas para los comerciantes y pueden usarse para identificar posibles puntos de entrada y salida.

Ahora, pasemos a la implementación de esta estrategia en Python. Usaremos datos históricos del euro frente al dólar estadounidense, que se pueden obtener de varias fuentes de datos financieros o API. Para este ejemplo, supondremos que ya hemos recopilado y preprocesado los datos necesarios.

Automatizaremos la estrategia utilizando Python y algunas bibliotecas populares. El primer paso es importar las bibliotecas requeridas, incluidos pandas para la manipulación de datos, matplotlib para el trazado y talib para los indicadores de análisis técnico. Talib es una biblioteca ampliamente utilizada que proporciona una colección de funciones de análisis técnico, incluido el reconocimiento de patrones de velas japonesas.

Una vez que se importan las bibliotecas, podemos cargar los datos históricos en un DataFrame de pandas. El DataFrame debe contener las columnas necesarias, como fecha, apertura, máximo, mínimo, cierre y volumen. Estas columnas se usan comúnmente en el análisis técnico y son necesarias para calcular indicadores y patrones.

A continuación, podemos definir una función para detectar patrones de velas japonesas. En este ejemplo, nos centraremos en un patrón simple, el patrón envolvente alcista. Este patrón ocurre cuando una pequeña vela bajista es seguida por una vela alcista más grande que engulle por completo a la vela anterior. La función iterará sobre el DataFrame e identificará instancias del patrón envolvente alcista.

Para potenciar la estrategia, también podemos incorporar niveles de soporte y resistencia. Estos niveles se pueden identificar manualmente analizando el gráfico de precios históricos o utilizando técnicas de análisis técnico. En este ejemplo, supondremos que ya hemos identificado los niveles relevantes de soporte y resistencia y los hemos almacenado en un DataFrame separado.

Una vez que tengamos los patrones de velas japonesas y los niveles de soporte y resistencia, podemos proceder a automatizar la estrategia. Recorreremos el DataFrame y comprobaremos si la barra actual cumple las condiciones para un patrón envolvente alcista y si el precio actual está cerca de un nivel de soporte. Si se cumplen estas condiciones, generamos una señal de compra.

Por el contrario, si la barra actual cumple las condiciones para un patrón envolvente bajista y el precio actual está cerca de un nivel de resistencia, generamos una señal de venta. Estas señales se utilizarán para activar órdenes de compra o venta en un entorno comercial real.

Para visualizar los resultados de nuestra estrategia, podemos trazar el gráfico de precios histórico con los patrones de velas y los niveles de soporte y resistencia identificados. Esto nos ayudará a comprender la efectividad de nuestra estrategia e identificar cualquier área de mejora.

Finalmente, podemos evaluar el desempeño de nuestra estrategia al realizar una prueba retrospectiva en los datos históricos. El backtesting consiste en simular operaciones basadas en datos históricos y evaluar la rentabilidad y el riesgo de la estrategia. Podemos calcular varias métricas de rendimiento, como el rendimiento total, el rendimiento anualizado, la reducción máxima y más.

Al realizar una prueba retrospectiva de nuestra estrategia, podemos obtener información sobre su rendimiento y tomar decisiones informadas sobre su uso potencial en escenarios comerciales reales. Es importante tener en cuenta que el backtesting es un paso crucial en el desarrollo de la estrategia, ya que nos ayuda a evaluar la viabilidad y rentabilidad de nuestro enfoque.

Este video presenta una estrategia comercial simple que combina patrones de velas japonesas y niveles de soporte y resistencia. La estrategia se automatizó y probó en Python utilizando datos históricos del euro frente al dólar estadounidense. Al aprovechar estas técnicas de análisis técnico, los comerciantes pueden identificar potencialmente oportunidades comerciales rentables y tomar decisiones informadas en los mercados financieros.

Automated Price Action Trading Strategy In Python
Automated Price Action Trading Strategy In Python
  • 2021.09.09
  • www.youtube.com
This video presents a simple trading strategy using candlestick patterns and support and resistance values. The strategy can be automated for price action d...
 

Detección automatizada de soporte y resistencia en PYTHON



Detección automatizada de soporte y resistencia en PYTHON

Hola a todos, y bienvenidos de nuevo a este video. En este video, brindaremos una explicación detallada de cómo automatizar la detección de niveles de soporte y resistencia usando Python. Esta idea fue propuesta por uno de los comentarios, así que muchas gracias por eso. Como de costumbre, no olvide que el programa está disponible para descargar desde el enlace en la descripción a continuación. Es un archivo de Jupyter Notebook que puede usar para sus propios experimentos. Es posible que desee probar esto en diferentes monedas o diferentes períodos de tiempo, y también puede modificar las variables proporcionadas en el código.

Si bien es fácil identificar visualmente los niveles de soporte y resistencia mirando un gráfico de movimiento de precios, definirlos mediante programación puede parecer complicado. Sin embargo, con un algoritmo adecuado, el proceso puede automatizarse. Es importante notar que el algoritmo que presentamos en este video no es el único para detectar niveles de soporte y resistencia. Existen diferentes enfoques, pero hemos elegido uno que es relativamente simple de implementar en el código.

La figura que ves aquí se produjo usando el código que vamos a explicar, y como puedes ver, los niveles de soporte y resistencia fueron detectados correctamente por nuestro programa. Este enfoque funciona para cualquier moneda y en cualquier condición de mercado. Sin embargo, no es un algoritmo perfecto y es posible que observe que no se detectaron algunos niveles. Abordaremos esto más adelante en el video.

La idea básica detrás de la definición de los niveles de soporte y resistencia es mirar hacia atrás dentro de un cierto período de tiempo, como un mes o dos, dependiendo de cuántos niveles desee incluir en su estrategia. Cuantos más datos tengas, más niveles descubrirás. Por ejemplo, si está considerando un gráfico diario como el que se muestra aquí y desea continuar con una operación en una fecha específica, miraría hacia atrás dentro de un marco de tiempo determinado, como un mes, para descubrir los niveles de soporte y resistencia que ocurrió durante ese período. Esto es lo que simularemos en nuestro programa al considerar un período de tiempo limitado para la detección de nivel. Si tratáramos de detectar niveles de soporte y resistencia utilizando todos los datos disponibles, terminaríamos con una gran cantidad de niveles, lo cual no es práctico para una estrategia comercial. Por lo tanto, es mejor centrarse en unos pocos meses anteriores a la fecha actual.

Ahora vamos a sumergirnos en el algoritmo en sí. Para los niveles de soporte, buscaremos un cierto número de mínimos decrecientes que preceden a la vela de interés. La vela de interés debe tener un valor bajo más bajo que las otras velas. Además, necesitamos tener tres mínimos crecientes después de la vela de interés. Cuando se cumplen todas estas condiciones para un grupo de velas, podemos identificar un nivel de soporte, que se define como el precio más bajo entre estas velas. El mismo principio se aplica a los niveles de resistencia. Necesitamos tener máximos crecientes antes de la vela de interés y un máximo más alto para la vela de interés. Entonces, deberíamos tener máximos decrecientes después de la vela de interés. Esto nos permite encontrar el nivel de resistencia, que es el precio más alto entre estas velas.

Un parámetro interesante en esta etapa es cuántas velas debemos considerar antes y después de la vela de interés. Esto se puede personalizar según las preferencias del usuario, y sería bueno experimentar con diferentes valores. En nuestro programa, los definimos como dos variables llamadas n1 y n2. El índice de la vela de interés está representado por la variable l.

Ahora, veamos cómo podemos implementar este algoritmo en Python. Usaremos un Jupyter Notebook para esta demostración. Primero, importamos las bibliotecas necesarias, incluidos pandas para la manipulación de datos. Cargamos los datos usando la función read_csv y, en este ejemplo, estamos usando los gráficos diarios EUR/USD desde 2003 hasta 2021, que son aproximadamente 18 años de datos.

A continuación, utilizaremos los niveles de soporte y resistencia almacenados en las listas ss y rr para trazar líneas en el gráfico de velas japonesas. Recorreremos cada nivel de soporte en ss y agregaremos una línea horizontal al gráfico en ese nivel de precio. De manera similar, recorreremos cada nivel de resistencia en rr y agregaremos una línea horizontal para cada nivel. Esto facilitará la visualización de los niveles de soporte y resistencia en relación con el movimiento del precio.

Al ejecutar el código, generará un gráfico de velas con los niveles de soporte que se muestran como líneas discontinuas de color púrpura y los niveles de resistencia que se muestran como líneas discontinuas azules. El gráfico proporcionará una representación visual de los niveles de soporte y resistencia detectados, lo que facilitará la identificación de los niveles de precios clave para las decisiones comerciales.

Recuerde, el algoritmo presentado aquí es uno de varios enfoques para detectar niveles de soporte y resistencia. Puede experimentar con diferentes valores de n1 y n2 para ver cómo afectan la detección y combinación de niveles. Además, puede modificar la condición para fusionar niveles ajustando el valor de umbral en el código.

Tenga en cuenta que la detección automática de niveles de soporte y resistencia es una herramienta útil, pero debe usarse junto con otras técnicas de análisis técnico y conocimientos del mercado para tomar decisiones comerciales informadas.

Automated Support and Resistance Detection in PYTHON
Automated Support and Resistance Detection in PYTHON
  • 2021.08.19
  • www.youtube.com
This video describes an algorithm to detect support and resistance levels in python language. 🍓 If you want to follow structured courses with more details a...
 

Análisis automatizado de patrones de acción de precios en Python


Análisis automatizado de patrones de acción de precios en Python

Este video brinda una explicación sobre cómo combinar patrones de análisis de velas japonesas en Python y verificar la cantidad de señales y la precisión de las predicciones de acción del precio. Los métodos son compatibles con el comercio automatizado. Un buen método para buscar una señal relativamente fuerte de los movimientos de acción del precio, análisis de velas, patrones envolventes, análisis de acción del precio.

00:00 Introducción a las velas de acción del precio
00:35
Estrella fugaz, Martillo, Hombre colgado, Patrón envolvente
03:10 Detección de acción de precio de Python
12:13 Resultados del análisis de la acción del precio
18:45 Trazado de velas de precio en Python

Automated Price Action Patterns Analysis In Python
Automated Price Action Patterns Analysis In Python
  • 2021.08.05
  • www.youtube.com
This video provides an explanation on how to combine Candlestick Analysis Patterns in Python and check the number of signals as well as the accuracy of the p...
 

Patrones envolventes de acción de precios automatizados en Python



Patrones envolventes de acción de precios automatizados en Python

Hola a todos, y bienvenidos de nuevo a este video. En la discusión de hoy, nos centraremos en las velas envolventes, específicamente en los patrones envolventes alcistas y bajistas. Para aquellos de ustedes que ya están familiarizados con estos patrones, entienden su importancia como indicadores en el comercio.

Para analizar la validez de estos patrones, utilizaremos datos históricos del par de divisas EUR/USD que abarcan aproximadamente 10 años. Nuestro objetivo es aplicar técnicas estadísticas simples en Python para determinar si estos patrones tienen un significado estadístico o si son simplemente un mito. Esta información es crucial, especialmente si está considerando incorporar patrones de velas en su estrategia comercial como indicadores.

Para su comodidad, puede encontrar el código completo utilizado en este análisis siguiendo el enlace proporcionado en la descripción a continuación. El código está disponible como un archivo de Jupyter Notebook, lo que le permite relajarse y disfrutar de este video mientras explora el código simultáneamente.

Los patrones envolventes se pueden observar en dos formas diferentes. El patrón alcista ocurre cuando varias velas de tendencia bajista son seguidas por una sola vela de tendencia alcista. Esta vela de tendencia alcista comienza en o por debajo del precio de cierre de la última vela de tendencia bajista y cierra por encima del precio de apertura de la vela anterior. Este patrón generalmente indica una próxima tendencia alcista en el mercado.

Por otro lado, el patrón envolvente bajista es el opuesto simétrico del patrón alcista. Ocurre cuando las velas de tendencia alcista son seguidas por una vela envolvente bajista. Una vela envolvente bajista comienza en o por encima del precio de cierre de la vela anterior y cierra por debajo del precio de apertura de la misma vela. Este patrón significa un próximo movimiento a la baja en el precio.

En este video, nuestro objetivo es verificar si estas afirmaciones son ciertas. Nuestro objetivo es determinar si estos patrones realmente indican comportamientos específicos del mercado. Por lo general, un patrón envolvente alcista sugiere que los compradores son más fuertes que los vendedores en el mercado, mientras que un patrón envolvente bajista sugiere lo contrario. Para lograr esta verificación, escribiremos código Python para detectar velas envolventes alcistas y bajistas. Posteriormente, analizaremos las siguientes velas (que van de una a tres velas o más) para determinar si el precio se mueve en la dirección esperada.

Para ser más precisos, consideraremos el precio de cierre de la última vela envolvente. En el caso de un patrón envolvente alcista, consideraremos los valores altos de las velas posteriores y calcularemos la diferencia entre los precios máximo y de cierre de la vela envolvente. Esto dará como resultado tres valores distintos, que denotaremos como "d". A continuación, probaremos si alguna de estas diferencias supera cierto límite, representado por una variable que definiré. Este límite se puede establecer en 20, 30 o 40 pips, según sus preferencias. Luego calcularemos el porcentaje de veces que esta diferencia excede el límite de pips.

De manera similar, para el patrón envolvente bajista, consideraremos los valores bajos de las velas posteriores. Compararemos la diferencia entre el precio de cierre de la vela envolvente y estos valores bajos con la variable X. Una vez más, estamos buscando instancias donde esta diferencia exceda X. En esencia, estamos evaluando si el precio supera una tendencia alcista o bajista. umbral dentro de dos a tres velas siguiendo el patrón envolvente. Calcularemos el porcentaje de instancias en las que el precio se comporta como se esperaba después de que ocurran estos patrones.

Es importante tener en cuenta que solo una de estas diferencias debe superar la variable X. No estamos exigiendo que las tres diferencias superen este límite de pips simultáneamente. Por lo tanto, si el precio cae por debajo del valor de cierre de la vela envolvente por un número específico de pips, la predicción de este patrón se considera exitosa. El mismo principio se aplica al patrón envolvente alcista, pero en dirección ascendente.

Ahora, procedamos a verificar el código de Python y observar su comportamiento.

Si estoy haciendo esto para la tendencia igual a uno, es decir, para el patrón envolvente bajista y la predicción de tendencia bajista, puedo calcular la precisión sumando los valores en la columna de resultados donde la tendencia es igual a uno y dividiéndola por el número total de señales para el patrón envolvente bajista. Del mismo modo, puedo calcular la precisión del patrón envolvente alcista y la predicción de la tendencia alcista.

Ahora, creemos una nueva función llamada "calculate_precision" que tome el marco de datos como entrada y calcule la precisión para ambos patrones. Primero, inicializamos las variables "bearish_signals" y "bullish_signals" para contar el número total de señales para cada patrón. Luego, iteramos a través del marco de datos e incrementamos el contador de señal correspondiente según el valor de la señal.

A continuación, calculamos la precisión del patrón envolvente bajista sumando los valores en la columna de resultados donde la tendencia es igual a uno y dividiéndolos por el número total de señales bajistas. Hacemos lo mismo para el patrón envolvente alcista y la predicción de tendencia alcista.

Finalmente, devolvemos los valores de precisión para ambos patrones. Ahora, llamemos a esta función en nuestro marco de datos para calcular la precisión.

Después de calcular la precisión, podemos imprimir los resultados para ver qué tan bien se alinean nuestras predicciones con la tendencia real. Es importante tener en cuenta que estos valores de precisión se basan en los parámetros y condiciones específicos que hemos establecido en nuestro código. Puede experimentar con diferentes parámetros y condiciones para optimizar la precisión de su estrategia comercial específica.

En conclusión, este video se centró en los patrones envolventes de velas en el comercio y tuvo como objetivo determinar si estos patrones tienen un significado estadístico o si son simplemente un mito. Al analizar los datos históricos del par de divisas EUR/USD utilizando Python, detectamos patrones de velas envolventes bajistas y alcistas y examinamos el comportamiento de la tendencia posterior dentro de un número específico de velas. Mediante el cálculo de la precisión, obtuvimos información sobre la exactitud de nuestras predicciones. Recuerde considerar las limitaciones de este análisis y continúe refinando su estrategia comercial en función de sus propias preferencias y objetivos.

Gracias por mirar, y no olvide consultar el enlace en la descripción del video para descargar el código completo en el formato de Jupyter Notebook. ¡Disfrute de su viaje comercial y la mejor de las suertes en sus esfuerzos!

Engulfing Price Action Patterns Automated in Python
Engulfing Price Action Patterns Automated in Python
  • 2021.07.08
  • www.youtube.com
This video describes the Engulfing Candlestick Patterns, bullish and bearish engulfing candles and statistics are carried out in python to check if these pat...
 

Estrategia de velas japonesas automatizada en Python | probando la estrella fugaz



Estrategia de velas japonesas automatizada en Python | probando la estrella fugaz

En la sesión de hoy, profundizaremos en el fascinante mundo de los patrones de velas japonesas y aprenderemos a programarlos en Python. Nuestro objetivo es crear un código que pueda identificar patrones específicos y potencialmente detectar reversiones de tendencias de precios. Además, realizaremos pruebas retrospectivas en una estrategia que utiliza señales de velas japonesas, empleando un enfoque estadístico simple para evaluar las posibilidades de desarrollar un bot automatizado ganador basado en predicciones de velas japonesas. Si está intrigado por este contenido, puede descargar el archivo del programa desde el enlace provisto en la descripción a continuación. Esperamos que disfrute de esta sesión informativa.

Antes de continuar, aclaremos que este video asume que ya tiene algún conocimiento sobre los patrones de velas japonesas. No entraremos en detalles explicando cada patrón ya que nos centraremos en las formas más conocidas. Tenga en cuenta que esta lista no es exhaustiva, ya que existen muchos más patrones. Por ahora, nos ceñiremos a lo básico. Es posible que ya esté familiarizado con el Doji, que representa un mercado indeciso. Otro patrón importante es la estrella fugaz, caracterizada por una larga cola sobre el cuerpo de la vela. Puede presentarse de dos formas, pero lo que más importa es la presencia de la cola larga. Cuando encuentra una estrella fugaz durante una tendencia alcista, podría indicar un cambio de tendencia, lo que sugiere un cambio a una tendencia bajista. De manera similar, tenemos el patrón del Martillo, que es similar a la Estrella Fugaz pero invertida. Significa un punto de rechazo durante una tendencia alcista, con una cola inferior larga. Este patrón sugiere que la tendencia alcista está llegando a su fin y que puede seguir un retroceso de la tendencia bajista.

Continuando, analicemos el patrón Bullish Engulfing. Esto ocurre durante una tendencia bajista, donde la última vela roja está completamente cubierta por una vela ascendente más grande. Este patrón de reversión señala el final de la tendencia bajista y el comienzo de una tendencia alcista. Por el contrario, tenemos el patrón envolvente bajista, que es lo opuesto al patrón envolvente alcista. Ocurre durante una tendencia alcista, donde una vela alcista es seguida por una vela más grande, cubriendo la anterior. Esto indica el final de la tendencia alcista y el comienzo de una tendencia bajista. Tenga en cuenta que hay varios otros patrones de velas que no cubriremos en detalle aquí, como los Tres cuervos, entre otros. Sin embargo, en este video, nos centraremos específicamente en los patrones Shooting Star y Hammer, particularmente cuando una tendencia bajista se revierte en una tendencia alcista.

Los patrones Shooting Star y Hammer son mis favoritos personales debido a su clara indicación de la reacción del mercado a una tendencia alcista. Es evidente que los vendedores han entrado en el mercado, rechazando un nivel de precios específico. Es por eso que tiendo a confiar más en estos patrones que en otros. Por supuesto, las preferencias individuales pueden variar, dependiendo de cómo utilice y combine estos patrones con otros indicadores o estrategias. Para el propósito de este video, consideremos a la Shooting Star como un ejemplo convincente de rechazo de precios y la fuerte reacción de los vendedores, lo que le da a esta Vela su forma distintiva. Nos centraremos en codificar este patrón en Python y enseñar a nuestro bot a reconocer dichos patrones. Si bien puede extender los conceptos que discutiremos a otros patrones que le interesen, nuestro enfoque principal estará en la estrella fugaz y el martillo.

Es importante tener en cuenta que confiar únicamente en los patrones de velas japonesas no es suficiente para generar señales precisas de compra o venta. Estos patrones deben combinarse con sus indicadores favoritos. En nuestro caso, los combinaremos con el Índice de Fuerza Relativa (RSI). Puede optar por incorporar diferentes indicadores técnicos o incluso un análisis fundamental junto con los patrones de velas japonesas. El uso de velas japonesas por sí solo no es completo.

Para evaluar la tasa de éxito de nuestro enfoque de predicción, debemos combinarlo con el RSI en combinación con el patrón de velas japonesas para agregar una confirmación adicional a la señal. Un valor RSI más alto indica una presión de compra más fuerte, lo que se alinea con el posible cambio de tendencia sugerido por el patrón de estrella fugaz.

Si se cumplen todas las condiciones, podemos generar una señal de compra. Asignamos un valor de 1 a la columna de señal para la fila correspondiente en el marco de datos. De lo contrario, asignamos un valor de 0, lo que indica que no hay señal. Este proceso se repite para cada fila en el marco de datos, escaneando efectivamente todo el conjunto de datos para identificar posibles señales de compra.

A continuación, pasamos a definir los niveles de stop loss y take profit para las señales de compra identificadas. Calculamos el valor de stop loss restando el rango verdadero promedio (ATR) del precio de compra. El ATR proporciona una medida de la volatilidad y ayuda a determinar una distancia adecuada para el stop loss. Un ATR más amplio indica un mercado más volátil, lo que requiere un stop loss más grande, mientras que un ATR más pequeño sugiere un mercado menos volátil, lo que permite un stop loss más ajustado.

Para el nivel de toma de ganancias, multiplicamos la relación de toma de ganancias-stop loss (que establecemos en 2) por el ATR y lo sumamos al precio de compra. Esto asegura que el nivel de toma de ganancias esté el doble del precio de compra que el nivel de límite de pérdidas. El nivel de obtención de beneficios representa el objetivo de beneficio potencial para la operación.

Ahora que tenemos las señales de compra y los niveles correspondientes de stop loss y take profit, podemos proceder con la prueba retrospectiva de la estrategia. Iteramos a través de cada fila en el marco de datos y simulamos las operaciones en función de las señales generadas.

Si el precio alcanza el nivel de stop loss primero, lo consideramos una operación perdedora. Por el contrario, si el precio alcanza primero el nivel de toma de ganancias, lo consideramos una operación ganadora. Realizamos un seguimiento del número de operaciones ganadoras y perdedoras.

Para evaluar el rendimiento de la estrategia, calculamos la tasa ganadora como el porcentaje de operaciones ganadoras del total de operaciones. En este caso, dado que establecemos la relación Take Profit-Stop Loss en 2, cada operación ganadora compensa dos operaciones perdedoras. Por lo tanto, para tener un sistema ganador, necesitamos acertar al menos el 34% de las veces.

Es importante tener en cuenta que esta evaluación no tiene en cuenta los costos comerciales, como las tarifas y los valores de intercambio nocturno. Además, este es un ejemplo simplificado y, en el comercio del mundo real, es esencial considerar otros factores, como las condiciones del mercado, la gestión de riesgos y el análisis general del mercado.

Al combinar patrones de velas japonesas, RSI y un enfoque sistemático para la gestión comercial, nuestro objetivo es desarrollar una estrategia comercial que pueda generar operaciones rentables. Sin embargo, es crucial probar y validar minuciosamente la estrategia utilizando datos históricos y considerar un análisis de mercado continuo para adaptarse a las condiciones cambiantes del mercado.

En conclusión, este video tutorial proporciona una introducción a la programación de patrones de velas japonesas en Python, demuestra cómo reconocer patrones específicos y describe un enfoque de backtesting para evaluar el rendimiento de una estrategia basada en estos patrones. Es una oportunidad para explorar el potencial de los patrones de velas japonesas como herramienta para predecir reversiones de tendencias de precios y desarrollar bots comerciales automatizados.

Automated Candlestick Strategy in Python | testing the shooting star
Automated Candlestick Strategy in Python | testing the shooting star
  • 2021.04.21
  • www.youtube.com
This video is a walkthrough coding the candlestick patterns in Python language. After a general introduction we focus mainly on the shooting star rejection p...
 

Evite errores comunes en el comercio algorítmico y el aprendizaje automático



Evite errores comunes en el comercio algorítmico y el aprendizaje automático

¿Alguna vez se ha preguntado cómo sería tener un bot comercial ganador que ejecute operaciones rentables en su nombre mientras duerme o disfruta de su tiempo libre? Tal vez haya pasado horas, meses o incluso años tratando de descifrar el código y encontrar ese programa escurridizo que podría revolucionar su estilo de vida.

Cuando se trata de aprendizaje automático, muchas personas creen que tiene el poder de hacer maravillas en varios campos, como el marketing y las ventas. Sin embargo, hay dos áreas en las que el aprendizaje automático todavía tiene dificultades: la predicción de datos meteorológicos y la previsión del mercado de precios. La naturaleza altamente aleatoria de los números en estos campos dificulta la predicción precisa de precios utilizando solo el aprendizaje automático.

Pero aquí está el problema: es posible predecir precios utilizando el aprendizaje automático, pero solo si se combina con una estrategia comercial adecuada. Esto significa que el tipo de predicción que haga debe alinearse con la estrategia comercial que emplee.

Ahora, profundicemos en algunos errores comunes que pueden obstaculizar el éxito de su modelo comercial y qué puede hacer para evitarlos.

Error n.º 1: ajustar los valores de los precios a un modelo de aprendizaje automático como regresor. Intentar predecir el próximo valor de mercado ingresando directamente valores de precio en un regresor de aprendizaje automático es un error común de principiante. Si bien este enfoque puede funcionar bien para valores correlacionados, como predecir los precios de la vivienda en función del área de superficie, no se aplica a los mercados bursátiles o de divisas. Estos mercados no muestran una correlación clara con la variable tiempo por sí sola, lo que hace que la regresión directa sea ineficaz.

Error #2: Usar valores absolutos como entrada del modelo. Usar precios brutos o valores de indicadores técnicos como entrada es otro escollo. Proporcionar simplemente precios de apertura, cierre, altos y bajos, junto con promedios móviles y otros indicadores, no garantiza predicciones precisas de precios futuros. Nuestros cerebros procesan la información de manera diferente, enfocándose en la imagen general y las pendientes de los movimientos de precios en lugar de valores individuales. De manera similar, su modelo debe considerar las tendencias y patrones generales en lugar de puntos de datos individuales.

Error n.º 3: Muestreo de datos mediante la división aleatoria de datos de prueba de tren. Si bien la división aleatoria de pruebas de trenes es una práctica común en el aprendizaje automático, puede ser problemática cuando se trabaja con análisis de series temporales, especialmente en mercados de precios. La división aleatoria de los datos para el entrenamiento y la prueba puede llevar a una situación en la que el conjunto de prueba se parece mucho al conjunto de entrenamiento. Esta similitud puede hacer que el modelo parezca preciso durante el backtesting, pero que no funcione bien con nuevos datos en vivo.

Error #4: confiar únicamente en el análisis técnico. Si bien los indicadores técnicos juegan un papel importante en los modelos de aprendizaje automático, confiar solo en ellos no es suficiente para el éxito a largo plazo. Es crucial considerar factores externos, como calendarios económicos y eventos importantes, que pueden afectar significativamente el comportamiento del mercado. Ignorar estos factores puede conducir a resultados deficientes y desacreditar un modelo sólido.

Error #5: No considerar una estrategia que se ajuste a la precisión del modelo. La precisión del modelo por sí sola no determina su rentabilidad. La combinación de la precisión del modelo con una estrategia comercial optimizada, como una proporción favorable de toma de ganancias y detención de pérdidas, puede convertir un modelo aparentemente perdedor en uno rentable. Una precisión superior al 33 % puede ser suficiente si se combina con la estrategia correcta.

Error #6: Saltarse una estrategia de entrada y confiar únicamente en las predicciones del modelo. Incluso si su modelo ofrece predicciones precisas, saber cuándo ingresar al mercado y ejecutar operaciones es crucial. Definir una estrategia de entrada al mercado que complemente las predicciones del modelo es esencial para maximizar las ganancias. Una predicción de tendencia correcta no es suficiente si ingresa al mercado en el momento equivocado y se detiene antes de alcanzar su objetivo.

Error #7: No considerar las tarifas y comisiones comerciales. Ignorar las tarifas y las comisiones puede tener un impacto significativo en la rentabilidad de su estrategia comercial. Si bien una estrategia ganadora puede tener una ligera ventaja, las tarifas comerciales pueden erosionar esas ganancias. Es importante tener en cuenta las tarifas al diseñar su estrategia, como cerrar operaciones en el mismo día para evitar las tarifas nocturnas o de fin de semana.

A continuación, es crucial realizar una prueba retrospectiva de su modelo durante un período prolongado. Probar su modelo bajo diferentes condiciones de mercado es esencial para asegurar su efectividad. No confíe únicamente en el rendimiento a corto plazo, ya que puede no reflejar la viabilidad a largo plazo del modelo. Trate de realizar una prueba retrospectiva de su modelo durante un mínimo de seis meses y evalúe si produce ganancias positivas de manera constante.

Por último, evite impacientarse e interferir con las transacciones. Un modelo de alta precisión tiende a esperar señales fuertes antes de ejecutar operaciones. Si bien esto puede hacer que pierda algunas oportunidades, es importante no interferir con las decisiones del modelo. Evite abrir nuevas operaciones o cerrar las existentes por impaciencia. A veces, tener cero operaciones es mejor que hacer una operación perdedora.

En conclusión, estas ideas deberían ayudarlo a mejorar su experiencia comercial. Recuerde que si su algoritmo aún no está listo para el mercado, es mejor no concentrarse demasiado en él. Tómese un descanso, pida una buena porción de pizza caliente y recuerde divertirse.

Avoid Common Mistakes in Algorithmic Trading And Machine Learning
Avoid Common Mistakes in Algorithmic Trading And Machine Learning
  • 2021.03.05
  • www.youtube.com
This video presents 9 very common mistakes that every algorithmic trader might fall in especially when using Machine Learning models to predict price movemen...
 

Cómo calcular indicadores técnicos para operar usando pandas



Cómo calcular indicadores técnicos para operar usando pandas

Hola a todos, y bienvenidos de nuevo a este video. Hoy, nos sumergiremos en el análisis de los precios del mercado de divisas utilizando Python y exploraremos si las estadísticas pueden revelar alguna correlación entre los indicadores técnicos y la dirección futura de los precios. No necesita ser un experto en comercio o programación para seguirlo, pero sería útil cierta familiaridad con los indicadores técnicos básicos como los promedios móviles y el indicador de fuerza relativa (RSI). Si está aquí para obtener una introducción rápida a las aplicaciones de aprendizaje automático en el comercio, también está en el lugar correcto, ya que simplificaremos las cosas.

En este video, cubriremos los siguientes temas:

  1. Descarga de datos de cambio de divisas: Visitaremos el sitio web cascope.com y seleccionaremos la fuente de datos históricos, específicamente para el par de divisas USD/CHF (dólar estadounidense frente a franco suizo). Elegiremos el marco de tiempo de velas por hora para nuestros datos.

  2. Cargar datos en Python usando pandas: Usaremos la función read_csv de la biblioteca pandas para cargar el archivo descargado en un DataFrame de pandas. También verificaremos si los datos se cargaron correctamente al inspeccionar las últimas cinco filas del DataFrame.

  3. Limpieza de datos y análisis inicial: Comprender los datos es crucial, por lo que los limpiaremos eliminando filas con volumen cero y comprobando los valores que faltan. Además, realizaremos un breve análisis estadístico para identificar patrones o correlaciones dentro de los datos.

  4. Adición de indicadores técnicos: Importaremos las bibliotecas necesarias, incluidas numpy y pandas_ta (análisis técnico de pandas), que proporciona varios indicadores de análisis técnico. Agregaremos varios indicadores a nuestro DataFrame, como el rango verdadero promedio (ATR), RSI, promedios móviles y calcularemos sus pendientes.

  5. Definición del objetivo: Para hacer predicciones basadas en indicadores técnicos, necesitamos definir nuestro objetivo. En lugar de predecir el precio promedio futuro, que puede ser un desafío, clasificaremos las tendencias en tres categorías: al alza, a la baja y sin tendencia clara.

  6. Trazado de histogramas: Visualizaremos las distribuciones de varias características usando histogramas. Esto incluye volumen, ATR, RSI, precios medios, promedios móviles, pendientes y las categorías objetivo. Los histogramas proporcionarán una descripción general rápida de los datos y ayudarán a identificar cualquier valor atípico.

  7. Análisis del RSI: nos centraremos en el RSI como indicador de tendencia y crearemos marcos de datos separados para las tres categorías objetivo: tendencias al alza, a la baja y poco claras. Trazaremos histogramas para los valores RSI en cada categoría para ver si hay diferencias distinguibles.

Sin embargo, tenga en cuenta que confiar únicamente en el RSI puede no ser suficiente para predecir con precisión las tendencias de precios. Se recomienda explorar otros indicadores técnicos o combinaciones de indicadores para obtener una ventaja en la predicción de tendencias de precios.

Eso concluye el contenido de este video. Espero que encuentres la información útil. Si tiene alguna pregunta específica o necesita más aclaraciones, no dude en preguntar en la sección de comentarios. ¡Feliz codificación!

How To Calculate Technical Indicators For Trading Using Pandas
How To Calculate Technical Indicators For Trading Using Pandas
  • 2021.02.22
  • www.youtube.com
If you're a beginner looking to learn how to calculate technical indicators and download price history, then you don't want to miss this video! These indicat...
Razón de la queja: