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

 

Estrategia de Scalping RSI automatizada probada en Python



Estrategia de Scalping RSI automatizada probada en Python

Hoy vamos a probar una estrategia de scalping basada en el RSI (Índice de Fuerza Relativa). La estrategia incorpora dos indicadores: la Media Móvil Exponencial (EMA) y el RSI. Realizaremos una prueba retrospectiva utilizando el código Python, que puede descargar desde el enlace que se proporciona en la descripción del video.

Para el backtest, utilizaremos tres versiones diferentes de la estrategia basadas en diferentes marcos de tiempo: una para velas de un minuto, otra para velas de 15 minutos y una tercera para velas de una hora. El enfoque de este video estará en el marco de tiempo de 15 minutos, pero cubriremos las tres versiones.

La estrategia sigue reglas específicas. Primero, analizamos el precio actual en relación con el 200 EMA. Si el precio se negocia por encima de la EMA de 200, lo consideramos una tendencia alcista. Por el contrario, si el precio cotiza por debajo de la EMA de 200, lo consideramos una tendencia bajista. En una tendencia alcista, solo buscamos posiciones de compra, mientras que en una tendencia bajista, solo buscamos posiciones de venta.

A continuación, examinamos los valores RSI de dos velas consecutivas. Inicialmente, usamos un RSI de dos velas para el marco de tiempo de un minuto. Sin embargo, dado que realizar pruebas retrospectivas durante varios años con velas de un minuto generaría una gran cantidad de datos, comenzaremos con el marco de tiempo de 15 minutos. En este caso, podemos ajustar la longitud del RSI a tres o cuatro velas, según el marco de tiempo. Para el marco de tiempo de un minuto, usaremos un RSI de dos velas y niveles de prueba por debajo de 10 y por encima de 90.

En una tendencia alcista, esperamos que el RSI caiga por debajo de 10 antes de ejecutar una posición de compra. Para posiciones de venta, esperamos que el RSI suba por encima de 90. Estos niveles de RSI actúan como puntos de entrada para nuestras operaciones. El video proporciona ejemplos visuales de cómo la estrategia identifica las posiciones de entrada en función del precio y los criterios RSI.

El siguiente paso es determinar los valores de stop-loss y take-profit para las operaciones. Se pueden utilizar varios métodos, como stop-loss de distancia fija, distancia de stop relacionada con ATR o valores de stop dinámico. De manera similar, el take-profit se puede establecer a una distancia fija o relacionada con la distancia de stop-loss con una determinada relación de take-profit/stop-loss.

Para evaluar la efectividad de la estrategia, escribimos código Python para realizar pruebas retrospectivas de datos de uno a tres años. Además, presentamos un paso para verificar la solidez de la estrategia probándola con nuevos datos que se han mantenido separados para evitar sesgos.

El video procede a analizar el código en un Jupyter Notebook. Comienza cargando los datos, limpiándolos eliminando las entradas de volumen cero (que indican fines de semana o feriados bancarios) y calculando los valores de 200 EMA y RSI. El rango verdadero promedio (ATR) también se calcula para la determinación de la distancia potencial de stop-loss.

Una vez que se calculan las señales necesarias, el video demuestra la visualización de estas señales en un gráfico. Las velas de precio, la curva EMA 200 y las posiciones de entrada (compra y venta) se trazan para analizar visualmente el comportamiento de los indicadores.

Después de analizar las señales, el video explica la importancia de realizar una prueba retrospectiva de la estrategia durante un período prolongado para evaluar su rentabilidad. Inicialmente, la estrategia se probó durante períodos más cortos, pero el resultado varió. Por lo tanto, las pruebas retrospectivas durante un período más largo son cruciales para evaluar la eficacia general de la estrategia.

El video enfatiza la necesidad de realizar pruebas retrospectivas y verificar el desempeño de la estrategia durante un período significativo. Al examinar los resultados finales del backtest, podemos determinar si la estrategia es rentable y sólida.

Automated RSI Scalping Strategy Tested In Python
Automated RSI Scalping Strategy Tested In Python
  • 2022.03.17
  • www.youtube.com
An Automated RSI Scalping Strategy is presented and backtested using python algorithmic trading over 3 years of data showing positive returns. The Test deta...
 

Estrategia de especulación con patrón de velas Backtest en Python



Estrategia de especulación con patrón de velas Backtest en Python

En este video, analizaremos y demostraremos una estrategia de esculpido simple que se basa en los conceptos presentados en los dos videos anteriores. Si está interesado en los detalles específicos y el código de Python para esta estrategia, puede encontrar un enlace en la descripción del video.

La estrategia que estamos utilizando gira en torno a tres medias móviles exponenciales (EMA): rápida, media y lenta. Al analizar la alineación de estos EMA, podemos estimar si la tendencia del precio es al alza o a la baja. En una tendencia alcista, la EMA rápida está por encima de la EMA media, que está por encima de la EMA lenta. Por el contrario, en una tendencia bajista, el orden se invierte.

Para comprar posiciones en una tendencia alcista, buscamos velas que abran por debajo y cierren por encima de la EMA rápida. Por otro lado, para vender posiciones en una tendencia bajista, buscamos velas que abran por encima y cierren por debajo de la EMA rápida. El video proporciona ejemplos de velas que cumplen con estos criterios para comprar posiciones en una tendencia alcista.

La estrategia ha sido previamente probada y optimizada utilizando una cuenta apalancada con una relación de apalancamiento de 1:100. La prueba se llevó a cabo durante un período de tres años, lo que resultó en un porcentaje de devolución del 445 % y una tasa de ganancias del 55 %. Sin embargo, es importante tener en cuenta que la estrategia mostró grandes períodos de reducción y la curva de capital no se mantuvo estable durante el período de tres años.

Para mejorar la estrategia, se introduce una condición adicional. Además de las velas que cruzan la EMA rápida, ahora consideramos la longitud de las mechas de las velas. Si se trata de una tendencia alcista, la vela debería tener una cola inferior muy corta, lo que indica un fuerte impulso alcista. De manera similar, en una tendencia bajista, la vela no debería tener una cola alta. Esta condición tiene como objetivo filtrar las señales con un impulso débil.

Para evaluar la efectividad de esta condición adicional, la estrategia se prueba con Python. El código fuente para el backtesting se proporciona en un archivo de Jupyter Notebook, que se puede descargar desde el enlace en la descripción del video.

El backtesting se realiza utilizando los datos del gráfico de 15 minutos del Euro/USD de 2019 a 2022, que cubre tres años de datos. Los datos se preprocesan eliminando velas con volumen cero y restableciendo el índice del marco de datos. Los tres promedios móviles (50, 100 y 150) y el rango verdadero promedio (ATR) se agregan al marco de datos.

La estrategia genera señales en base a la alineación de las medias móviles, y la señal total se obtiene identificando velas que cruzan la EMA rápida en la misma dirección que la tendencia. El video demuestra cómo se pueden visualizar estas señales en los gráficos.

Se prueban diferentes métodos para establecer valores stop loss y take profit. Estos incluyen distancia fija, distancias relacionadas con ATR, stop loss dinámico y stop loss observado desde el precio. Los resultados de cada método se comparan antes y después de agregar la tercera condición.

Cuando se agrega la tercera condición, la estrategia muestra mejoras significativas en todos los métodos probados. El método de stop loss y take profit de distancia fija produce un rendimiento del 1805 % con una tasa de ganancia del 59 %. El método relacionado con ATR logra un rendimiento del 249 % y una tasa de ganancias del 51 %. El método trailing stop loss, que anteriormente era perdedor, ahora produce un rendimiento del 394 % y una tasa de ganancias del 42,5 %. Por último, el stop loss observado en el precio, que también estaba perdiendo, ahora genera un rendimiento del 373 % con una tasa de ganancias del 49 %.

Además de rendimientos mejorados, las curvas de equidad para todos los métodos muestran una tendencia ascendente general, lo que indica un rendimiento más estable y positivo en comparación con los resultados anteriores.

El video enfatiza que esta estrategia no se presenta como un sistema comercial completo, sino como una ilustración del impacto de agregar la condición de mecha baja.

El video concluye destacando algunos puntos importantes a considerar al usar esta estrategia:

  1. La estrategia que se muestra en el video es un ejemplo simplificado y no debe considerarse un sistema comercial completo. Sirve como una ilustración de cómo agregar ciertas condiciones puede mejorar el rendimiento de una estrategia.

  2. Los resultados del backtesting no son indicativos del rendimiento futuro. Si bien la estrategia mostró mejores rendimientos durante el período de prueba, las condiciones del mercado pueden cambiar y es posible que los resultados anteriores no se reproduzcan en el futuro.

  3. Es esencial realizar pruebas y optimizaciones exhaustivas antes de aplicar cualquier estrategia al comercio real. El backtesting le permite evaluar el desempeño de la estrategia bajo diferentes condiciones de mercado y refinar sus parámetros para obtener mejores resultados.

  4. La gestión de riesgos es crucial. Establecer adecuadamente los niveles de stop loss y take profit es esencial para proteger su capital y administrar el riesgo. El video demostró diferentes métodos para establecer estos niveles, pero es importante tener en cuenta su tolerancia al riesgo y el tamaño de la cuenta al determinar los valores apropiados.

  5. La disciplina emocional es necesaria para el comercio exitoso. Cíñete a tu estrategia y evita tomar decisiones impulsivas basadas en las fluctuaciones del mercado a corto plazo.

  6. Considere otros factores e indicadores que pueden complementar esta estrategia. Ninguna estrategia única funciona a la perfección en todas las condiciones del mercado, por lo que es beneficioso combinar múltiples indicadores y técnicas para un análisis más completo.

  7. Monitoree y evalúe continuamente el desempeño de su estrategia. A medida que cambian las condiciones del mercado, puede ser necesario adaptar y perfeccionar su enfoque para seguir siendo rentable.

Recuerde, operar en los mercados financieros conlleva riesgos y es importante informarse, buscar asesoramiento profesional y practicar con precaución antes de comprometer fondos reales. El video sirve como un recurso educativo, y depende de usted explorar más y personalizar la estrategia para que se adapte a su estilo de negociación y tolerancia al riesgo.

Scalping Strategy With CandleStick Pattern Backtest In Python
Scalping Strategy With CandleStick Pattern Backtest In Python
  • 2022.03.10
  • www.youtube.com
This is a scalping Trading Strategy optimization using CandleStick Wick length pattern to confirm price momentum along with 3 moving exponential averages to ...
 

Prueba retrospectiva simple de la estrategia comercial de especulación de EMA en Python (Parte 1)


Prueba retrospectiva simple de la estrategia comercial de especulación de EMA en Python (Parte 1)

Hoy, nos embarcamos en un viaje para probar estrategias de scalping. Sé que muchos de ustedes han estado solicitando esto últimamente, y debo admitir que, por lo general, evito los marcos de tiempo bajos y el scalping porque considero que es un enfoque arriesgado y, a menudo, emocionalmente agotador.

Sin embargo, cuando se trata de métodos algorítmicos, las cosas pueden ser más fáciles. Con los algoritmos, podemos probar nuestra estrategia y tener una comprensión clara de los resultados esperados. Entonces, con suerte, no habrá sorpresas desagradables ya que nuestro modelo ya está probado. Como de costumbre, el código de Python está disponible para descargar desde el enlace en la descripción del video si está interesado en la parte de codificación. De lo contrario, simplemente puede disfrutar del video y ver qué tipo de resultados podría generar nuestra estrategia.

Para empezar, he elegido algo relativamente simple: utilizaremos tres medias móviles exponenciales. Uno es rápido, otro es medio y el tercero es lento. Usaremos estos promedios móviles para detectar tendencias. Cuando estos promedios móviles se alinean en un orden específico (rápido por encima del medio por encima del promedio lento), tenemos una tendencia alcista. Por el contrario, el orden opuesto indica una tendencia bajista.

Para garantizar la precisión de las tendencias, también he agregado una condición más. Las pendientes de estas curvas deben apuntar en la misma dirección. En una tendencia alcista, las tres curvas deberían tener pendientes positivas, y en una tendencia bajista, las pendientes deberían ser negativas.

Una vez que tengamos una señal de tendencia clara, buscaremos nuestro punto de entrada. Por ejemplo, si estamos buscando una posición de compra, esperaremos una vela que abra por debajo de la media móvil rápida y cierre por encima de ella. Esta vela indica la continuación de la tendencia alcista y sirve como punto de entrada.

El aspecto interesante aquí es que podemos codificar todo esto en Python y probar la estrategia. Inicialmente, no nos enfocaremos mucho en la optimización ya que quiero que este video sea conciso. Sin embargo, en un video futuro, intentaremos optimizar los parámetros y ver si podemos lograr una combinación ganadora en nuestras operaciones.

Ahora, profundicemos en el código de Python y examinemos los resultados del backtesting. Usaremos el par de divisas euro/USD con velas de 15 minutos de 2019 a 2022. El marco de datos consta de 105 000 filas, y cada fila representa una vela de 15 minutos. Limpiamos el marco de datos eliminando filas con un volumen de cero, que corresponde a fines de semana y días libres cuando no hay movimientos de mercado.

A continuación, importamos el módulo pandas_ta (Pandas Technical Analysis) y calculamos los tres promedios móviles diferentes: EMA 50, EMA 100 y EMA 150. También calculamos las pendientes de estos promedios móviles utilizando una ventana móvil de 10 velas.

En esta etapa, nuestro marco de datos incluye los precios de apertura, máximo, mínimo y cierre, el volumen, tres medias móviles y sus pendientes correspondientes. Ahora podemos comprobar las condiciones para la detección de tendencias. Si la media móvil rápida está por debajo de la media móvil media, y la media móvil media está por debajo de la media móvil lenta, y las tres pendientes son negativas, indica una tendencia bajista. Por el contrario, si la media móvil rápida está por encima de la media móvil media, la media móvil media está por encima de la media móvil lenta y las tres pendientes son positivas, indica una tendencia alcista. Estas condiciones se agregan como columnas en nuestro marco de datos.

Para visualizar las señales en nuestros gráficos, definimos una función que traza puntos por encima o por debajo de las velas en función de la señal total. La señal total representa los puntos de entrada, donde 1 indica una señal de venta y 2 indica una señal de compra. Las posiciones de los puntos se agregan como una columna en el marco de datos.

Trazamos las señales y las velas japonesas para un rango específico de velas.

Trazamos las señales y las velas para un rango específico de velas, lo que nos permite analizar visualmente el rendimiento de la estrategia. Los círculos verdes indican señales de compra, mientras que los círculos rojos indican señales de venta. Esta representación visual nos ayuda a comprender cómo se habría desempeñado la estrategia en tiempo real.

Después de visualizar las señales, calculamos el rendimiento de la estrategia. Comenzamos con un capital de $10,000 e iteramos a través de cada vela. Si recibimos una señal de compra, entramos en una posición larga con un tamaño fijo. Si recibimos una señal de venta, salimos de la posición larga y calculamos la ganancia/pérdida en función del cambio en el precio desde la entrada. Realizamos un seguimiento de la ganancia/pérdida acumulada y el número de operaciones ejecutadas.

Al final del período de backtesting, calculamos la ganancia/pérdida total, el número de operaciones ganadoras, el número de operaciones perdedoras, el porcentaje ganador y la ganancia/pérdida promedio por operación.

En el video, presento los resultados del backtesting para la estrategia dada. Tenga en cuenta que los resultados son específicos para el período de tiempo y el par de divisas elegidos. La estrategia puede funcionar de manera diferente en otras condiciones de mercado o con diferentes parámetros.

Para resumir los resultados, el backtesting muestra que la estrategia se desempeñó relativamente bien, generando un rendimiento positivo durante el período de backtesting. Sin embargo, es importante tener en cuenta que el rendimiento pasado no es indicativo de resultados futuros, y es posible que se requieran pruebas y optimización adicionales.

Simple EMA Scalping Trading Strategy Backtest In Python (Part 1)
Simple EMA Scalping Trading Strategy Backtest In Python (Part 1)
  • 2022.02.24
  • www.youtube.com
Simple scalping Trading strategy using 3 exponential moving averages backtested in python, the scalping strategy is explained and the python code also in Jup...
 

Backtest de estrategia comercial de especulación de EMA simple en Python (optimización de la parte 2)



Backtest de estrategia comercial de especulación de EMA simple en Python (optimización de la parte 2)

¡Hola! Bienvenido de nuevo a este video, que es una continuación de nuestro video anterior. En este video, nuestro objetivo es optimizar la estrategia de esculpir que se presentó anteriormente. Para recapitular brevemente, nos centraremos en optimizar el parámetro llamado 'retroceso n', que determina el número de velas a considerar al calcular las pendientes de los promedios móviles. Al variar el número de velas, como 20, 10 o 5, podemos calcular la pendiente promedio de estos promedios móviles. Además, exploraremos la posibilidad de agregar condiciones en las pendientes de la media móvil, como probar pendientes inferiores a un umbral específico, como -10 a -4. Al experimentar con estos parámetros, nuestro objetivo es crear un mejor filtro para identificar tendencias.

Además, exploraremos diferentes enfoques de gestión comercial, incluidos los valores fijos de stop loss y take profit, trailing stop loss y stop loss y take profit relacionados con ATR (Average True Range). Al examinar estos diferentes enfoques, esperamos determinar qué estrategia de gestión comercial produce los resultados más favorables.

Es importante tener en cuenta que este sistema de modelado no está diseñado para estilos comerciales rápidos, ya que estamos trabajando con un marco de tiempo de 15 minutos. Sin embargo, el mismo sistema se puede probar en plazos más cortos, aunque puede ser más desafiante debido al mayor ruido del mercado.

Antes de sumergirnos en el código, se recomienda que vea el video anterior donde explicamos la estrategia en detalle. Esto le proporcionará una mejor comprensión del proceso de optimización que estamos a punto de presentar.

Ahora, pasemos a nuestro archivo de Jupyter Notebook. Comenzamos creando un marco de datos y limpiando los datos. A continuación, calculamos tres promedios móviles diferentes y calculamos las pendientes de estos promedios móviles. Aquí es donde comenzamos a probar nuestra estrategia.

Inicialmente, consideramos una ventana móvil de 10 velas, lo que significa que promediamos la pendiente de los promedios de movimiento rápido, medio y lento utilizando los datos de estas 10 velas. Ejecutamos este código para asegurarnos de que todo funciona correctamente, incluidas las señales que presentamos en el video anterior.

Para facilitar las pruebas, establecemos una escala de tiempo considerando que cuatro velas representan una hora, dado que estamos trabajando con velas de 15 minutos. Con esta configuración, podemos seleccionar una porción específica de nuestro marco de datos para probar nuestra estrategia. Por ejemplo, podemos elegir un período de tres meses especificando el índice inicial como 37.000 y seleccionando la duración correspondiente.

Después de cargar los datos del período seleccionado, podemos ejecutar nuestro backtest. Nuestro tamaño de lote inicial se establece en el 30 % de nuestro capital y consideramos un límite de pérdida de 40 pips y una ganancia de 45 pips. También aplicamos un margen de 1 sobre 100, lo que refleja una cuenta apalancada con un saldo en efectivo de 100 como punto de partida.

Al ejecutar el backtest, observamos un rendimiento del 107% para el período de tres meses. Sin embargo, para garantizar la solidez de nuestro modelo, es crucial probar la estrategia en diferentes intervalos de tiempo. Al cambiar el índice de inicio, podemos seleccionar varios períodos y evaluar el rendimiento. Por ejemplo, probamos un índice inicial diferente de 47 y ejecutamos el backtest, lo que arroja un rendimiento del 30%.

Podemos repetir este proceso con diferentes índices iniciales para analizar el desempeño de la estrategia a lo largo de múltiples períodos. Sin embargo, para probar durante períodos más largos, debemos seleccionar una porción más pequeña de nuestro marco de datos. Por ejemplo, podemos elegir una porción de 10 o 12 meses para evaluar el desempeño anual.

Probando la estrategia durante un año completo, logramos un retorno del 100%, duplicando efectivamente la cantidad inicial. Si bien esto es positivo, la frecuencia de operaciones es relativamente baja, con solo 193 operaciones durante el año. La tasa de ganancias es de alrededor del 44%, lo que indica margen de mejora.

Para mejorar nuestra estrategia, exploraremos diferentes valores para el parámetro "back rolling n". Al probar diferentes números de velas, como 20, 10 o 5, podemos evaluar su impacto en el desempeño de nuestra estrategia. Por ejemplo, podemos modificar nuestro código para establecer el valor "back rolling n" en 20 y volver a ejecutar el backtest.

Al probar con un "retroceso n" de 20, observamos un rendimiento del 90% para el período de tres meses, ligeramente inferior a nuestra configuración inicial de 10. Esto sugiere que un "retroceso n" más pequeño puede ser más efectivo en capturar tendencias a más corto plazo.

A continuación, introducimos condiciones adicionales basadas en las pendientes de las medias móviles. Por ejemplo, podemos implementar el requisito de que las pendientes de las tres medias móviles sean inferiores a -4. Esto significa que solo ingresamos a una operación si las tres pendientes son negativas y están por debajo de -4. Modificamos nuestro código en consecuencia y ejecutamos el backtest.

Al implementar las condiciones adicionales, podemos refinar aún más nuestra estrategia. Tras la prueba, observamos un rendimiento del 127 % durante el período de tres meses, lo que indica una mejora en comparación con nuestros resultados iniciales. Sin embargo, es importante tener en cuenta que estas condiciones también pueden reducir la frecuencia de las operaciones, ya que proporcionan un filtro más estricto.

Ahora exploremos diferentes enfoques de gestión comercial. Comenzamos implementando una estrategia de stop loss fijo y toma de ganancias, donde establecemos valores predeterminados para ambos parámetros. Por ejemplo, podemos establecer un stop loss fijo de 40 pips y un take profit de 45 pips. Después de modificar el código y ejecutar el backtest, analizamos los resultados.

Con el enfoque de stop loss fijo y toma de ganancias, observamos un rendimiento del 95% para el período de tres meses. Si bien esto es ligeramente inferior a nuestros resultados iniciales, proporciona un sistema de gestión de riesgos controlado. Sin embargo, es importante evaluar el desempeño durante períodos más largos y diferentes condiciones de mercado para evaluar su efectividad.

A continuación, exploramos una estrategia de trailing stop loss. En lugar de utilizar valores fijos, el stop loss se ajusta dinámicamente a medida que la operación progresa a nuestro favor. Por ejemplo, podemos establecer un stop loss dinámico de 30 pips, lo que significa que si el precio se mueve a nuestro favor 30 pips, el stop loss se mueve al punto de equilibrio. Modificamos nuestro código en consecuencia y volvemos a ejecutar el backtest.

Con el enfoque de trailing stop loss, logramos un rendimiento del 120% para el período de tres meses. Esto demuestra el potencial de ajustar dinámicamente el stop loss para proteger las ganancias y maximizar las ganancias. Sin embargo, es esencial evaluar su desempeño en diferentes períodos de tiempo y condiciones de mercado para garantizar su solidez.

Finalmente, exploramos una estrategia de gestión comercial basada en el rango verdadero promedio (ATR). El ATR proporciona una medida de la volatilidad del mercado, que se puede utilizar para establecer niveles de stop loss y take profit. Al incorporar el ATR en nuestra estrategia, podemos adaptar nuestra gestión de riesgos a las condiciones de mercado predominantes. Modificamos nuestro código para implementar los niveles de stop loss y take profit basados en ATR y ejecutamos el backtest.

Al incorporar los niveles de stop loss y take profit basados en ATR, logramos un rendimiento del 110% para el período de tres meses. Esto indica la eficacia potencial de adaptar nuestra gestión de riesgos a la volatilidad del mercado.

En conclusión, a través del proceso de optimización, exploramos diferentes parámetros y enfoques de gestión comercial para mejorar nuestra estrategia de esculpido. Al variar el parámetro "retroceso n", implementando condiciones adicionales basadas en pendientes promedio móviles y explorando diferentes técnicas de gestión comercial, pudimos mejorar el rendimiento de la estrategia. Sin embargo, es importante realizar más pruebas en diferentes marcos de tiempo, condiciones de mercado y evaluar la solidez de la estrategia antes de aplicarla en operaciones reales.

Simple EMA Scalping Trading Strategy Backtest In Python (Part 2 Optimization)
Simple EMA Scalping Trading Strategy Backtest In Python (Part 2 Optimization)
  • 2022.03.03
  • www.youtube.com
This is a continuation of the previous video, here we optimize our simple EMA Scalping trading strategy and we try to backtest the different parameters sets ...
 

Estrategia comercial de alto rendimiento utilizando el efecto de apalancamiento



Estrategia comercial de alto rendimiento utilizando el efecto de apalancamiento

Hola a todos y bienvenidos de nuevo a mi canal. Hoy vamos a profundizar en un tema que no hemos tratado antes: el apalancamiento. Debo admitir que he sido bastante escéptico al respecto debido a los riesgos inherentes que implica. Sin embargo, quiero enfatizar que estos videos son principalmente para fines educativos. No estoy recomendando que adopte ciegamente un sistema de comercio apalancado sin comprender completamente sus implicaciones. Entonces, en este video, tomaremos una estrategia comercial utilizada anteriormente que ya hemos discutido en videos anteriores y exploraremos los efectos de incorporar apalancamiento en nuestro sistema comercial.

Comencemos con una breve introducción sobre cómo funciona el apalancamiento. Normalmente, el apalancamiento está representado por una relación, como 1:10 hasta 1:1000, aunque es más común encontrar relaciones entre 1:10 y 1:50. Esto significa que si tiene una cuenta con $ 1,000, se le permitirá comprar o vender posiciones con un valor de hasta $ 10,000 si elige una relación de apalancamiento de 1:10. Al aumentar el índice de apalancamiento, digamos a 1:50, los mismos $1,000 en su cuenta le permitirían realizar compras por un valor de hasta $50,000. Las opciones de apalancamiento específicas disponibles para usted dependen de su corredor, el país en el que opera, las regulaciones y otros factores relacionados con su tipo de cuenta.

Sin embargo, es importante tener en cuenta que el apalancamiento tiene sus costos. Si bien puede aumentar sus ganancias potenciales, también aumenta los riesgos y puede agotar rápidamente el saldo de su cuenta. Los principiantes a menudo son el objetivo de los comerciantes o corredores más grandes que se aprovechan de su falta de experiencia. Es fundamental tener esto en cuenta.

Hay dos reglas clave a tener en cuenta al usar el apalancamiento. Primero, el apalancamiento puede ayudar a aumentar las ganancias si su estrategia tiene una alta tasa de ganancias. Por el contrario, también aumentará sus pérdidas si su estrategia tiene una tasa de ganancia baja. La definición de una tasa ganadora alta o baja depende de varios factores, como el tipo de estrategia, los valores de stop loss y take profit, y su enfoque de administración de dinero. Recuerde siempre que el apalancamiento tiene un precio. Si puede comprar o vender posiciones con 100 veces la cantidad de dinero que posee, significa que sus fondos están allí principalmente para cubrir posibles pérdidas, que pueden ocurrir rápidamente cuando se opera con cantidades significativamente mayores.

En este video, utilizaremos Python para probar la estrategia que discutimos anteriormente. Comenzaremos verificando los rendimientos utilizando una cuenta comercial normal y luego introduciremos una cuenta apalancada en nuestra estrategia comercial algorítmica. Haremos una prueba retrospectiva de estas variaciones, examinaremos los resultados y evaluaremos las ventajas y los riesgos asociados con el uso de una cuenta apalancada. La ventaja de usar Python es que podemos modificar cualquier parámetro a nuestro gusto y observar los efectos en nuestro porcentaje de retorno. Este poder computacional nos permite probar y obtener información sobre las ventajas y desventajas de usar una cuenta apalancada.

El código de Python que usaremos es similar al código usado en el video anterior sobre el enfoque de martingala en el comercio. La celda inicial implica cargar y limpiar los datos, restablecer el índice y realizar otros pasos necesarios. No dedicaré mucho tiempo al código hoy, ya que lo hemos cubierto en videos anteriores. Utilizaremos las funciones de soporte y resistencia, junto con el reconocimiento de patrones de velas japonesas, para detectar cambios de tendencia y generar señales comerciales. Para esta estrategia, nos centraremos en los patrones de velas de rechazo que se producen cerca de los niveles de soporte o resistencia como posibles señales de cambio de tendencia.

High Return Trading Strategy Using Leverage Effect
High Return Trading Strategy Using Leverage Effect
  • 2022.02.17
  • www.youtube.com
Here we Backtest an Algorithmic Trading Strategy using Python on a Leverage Account. The leverage can be a variable depending on the strategy you are intend...
 

Backtest algorítmico de la estrategia comercial de swing de Martingale en Python



Backtest algorítmico de la estrategia comercial de swing de Martingale en Python

Hoy vamos a profundizar en el tema fascinante del enfoque martingala cuando se combina con una estrategia comercial ganadora. Si aún no ha visto nuestro video anterior sobre el método martingala u otros videos en este canal que describen la estrategia que usaremos, le recomiendo que los revise primero. Estos videos cubren los niveles de soporte y resistencia, los patrones de velas y brindan una base sólida para comprender nuestro enfoque en este video. Incluiré algunos enlaces en la descripción del video para su conveniencia.

Además, para aquellos que estén interesados, pueden descargar el código de Python que estoy usando para probar esta estrategia desde el enlace provisto en la descripción. Este código le permitirá seguir y explorar los resultados por sí mismo.

Ahora, hagamos un resumen rápido para aquellos que son nuevos en nuestro canal o simplemente se unen a nosotros. El método martingala consiste en duplicar el tamaño de nuestra posición cada vez que cerramos una operación perdedora. La idea detrás de este enfoque es recuperar las pérdidas anteriores con una gran victoria. En un video anterior, explicamos y aplicamos el método martingala a una estrategia comercial completamente aleatoria que elige aleatoriamente entre posiciones de compra y venta.

En este video, estamos adoptando un enfoque diferente. Aplicaremos el método martingala a una estrategia comercial ganadora. Nuestra estrategia consiste en identificar niveles de soporte y resistencia, así como patrones de velas específicos que indiquen posibles cambios de tendencia. Cuando detectamos un patrón de vela cerca de un nivel de soporte o resistencia, ejecutamos nuestra operación en consecuencia. Los valores de stop-loss y take-profit se determinan en función de una relación denominada relación take-profit/stop-loss.

Ahora, es importante tener en cuenta que los resultados de esta estrategia ya se probaron en videos anteriores y han mostrado retornos positivos. El objetivo aquí es ver si podemos aumentar aún más las ganancias agregando el enfoque martingala a esta estrategia.

Bien, profundicemos en el código de Python. Primero, cargamos y limpiamos los datos diarios de EUR/USD de 2003 a 2021 para este video. Luego verificamos si el marco de datos se carga correctamente imprimiendo la cola del marco de datos.

A continuación, tenemos las funciones para detectar niveles de soporte y resistencia, que usaremos en nuestro programa. Si necesita una explicación detallada de estas funciones, consulte nuestros videos anteriores.

También tenemos otras funciones llamadas niveles "is_engulfing", "is_star" y "close_to_resistance" o "close_to_support". Estas funciones nos ayudan a identificar patrones de velas japonesas específicas y determinar si están cerca de los niveles de soporte o resistencia. Estos patrones se utilizarán para generar nuestras señales comerciales.

En la celda de generación de señales, generamos nuestras señales en función de los patrones de velas que detectamos. Si encontramos un patrón envolvente bajista o cualquier otra señal de venta cerca de un nivel de resistencia, lo consideramos una señal de venta y asignamos un valor de 1 a la columna de señal en nuestro marco de datos. De manera similar, si encontramos un patrón envolvente alcista o cualquier otra señal de compra cerca de un nivel de soporte, lo consideramos una señal de compra y asignamos un valor de 2 a la columna de señal. En todos los demás casos, el valor de la señal es 0, lo que indica que no hay señal.

Ahora, podemos incluir el paquete backtesting.py para probar nuestra estrategia. Definimos una función llamada "señal" que devuelve los valores de señal para cada fila en nuestro marco de datos. Esta función se usa dentro de nuestra clase personalizada llamada "CandleStrategy", que hereda de la clase de estrategia del módulo backtesting.py.

En nuestra clase CandleStrategy, inicializamos el tamaño de nuestra posición comercial en 0,05, lo que representa el 5 % del capital que tenemos. Operamos con este tamaño de posición cada vez que recibimos una señal.

Si el valor de la señal es 1 (señal de venta), verificamos si tenemos posiciones abiertas. Si lo hacemos, cerramos la posición existente y establecemos el tamaño de la posición en cero. Luego, ingresamos una nueva posición corta con el tamaño de posición definido anteriormente.

Por otro lado, si el valor de la señal es 2 (señal de compra), seguimos un proceso similar. Verificamos si tenemos posiciones abiertas, las cerramos si es necesario e ingresamos una nueva posición larga con el tamaño de posición predefinido.

Ahora, definimos nuestros niveles de take-profit y stop-loss. El nivel de toma de ganancias se calcula multiplicando el precio de entrada por la relación de toma de ganancias/stop-loss. El nivel de stop-loss se calcula multiplicando el precio de entrada por el valor negativo de la relación take-profit/stop-loss. Estos valores aseguran que nuestro nivel de toma de ganancias esté más alejado del precio de entrada que el nivel de stop-loss.

Finalmente, ejecutamos nuestro backtest usando la clase CandleStrategy e imprimimos los resultados. Calculamos varias métricas de rendimiento, como el rendimiento total, el rendimiento diario promedio, la reducción máxima y la cantidad de operaciones ejecutadas.

Ahora, ejecutemos el backtest y analicemos los resultados.

Después de ejecutar el backtest, podemos observar los resultados. El rendimiento total, el rendimiento diario promedio y la reducción máxima son métricas importantes para evaluar el rendimiento de nuestra estrategia.

En nuestro caso, la rentabilidad total es del 256,17%, lo que significa que nuestra inversión inicial se ha multiplicado por más del doble. La rentabilidad diaria media es del 0,04 %, lo que indica una rentabilidad positiva constante durante el período de backtesting. La reducción máxima es del 10,98%, lo que representa la mayor caída en la curva de acciones desde un pico hasta un punto bajo posterior.

Estos resultados indican que nuestra estrategia comercial ganadora, combinada con el enfoque martingala, ha sido rentable durante el período de prueba. Sin embargo, es importante tener en cuenta que el rendimiento pasado no es indicativo de resultados futuros, y esta estrategia debe evaluarse y validarse a fondo antes de usarla en operaciones reales.

En conclusión, el enfoque martingala, cuando se combina con una estrategia comercial ganadora, puede mejorar potencialmente la rentabilidad general de la estrategia. Sin embargo, es esencial considerar cuidadosamente los riesgos involucrados, como el potencial de grandes reducciones y la necesidad de capital suficiente para sostener múltiples duplicaciones del tamaño de las posiciones.

Gracias por acompañarme en este video, y espero que lo haya encontrado informativo y útil. Si tiene alguna pregunta o sugerencia, déjela en los comentarios a continuación. No olvide dar me gusta y suscribirse a nuestro canal para obtener más estrategias comerciales y tutoriales. ¡Feliz comercio!

Martingale Swing Trading Strategy Algorithmic Backtest In Python
Martingale Swing Trading Strategy Algorithmic Backtest In Python
  • 2022.02.10
  • www.youtube.com
Python algorithmic strategy used for backtesting the Martingale Swing Trading Strategy, a winning indicator that was presented in previous videos. Martingale...
 

Backtesting de la estrategia comercial Martingale para operaciones algorítmicas



Backtesting de la estrategia comercial Martingale para operaciones algorítmicas

Hoy, vamos a discutir el enfoque Martingale, que se puede incorporar a cualquier estrategia comercial para compensar las operaciones perdedoras. Haremos una prueba retrospectiva de este método usando Python y profundizaremos en las ventajas y riesgos involucrados al implementar Martingale.

Imaginemos entrar en un casino con veinte dólares en el bolsillo y decidir jugar a la ruleta, apostando únicamente a los colores. Apostaremos un dólar al rojo o al negro. Si nuestra primera apuesta al rojo pierde, nos quedaremos con 19 dólares. En la próxima ronda, duplicaremos nuestra apuesta a dos dólares ya que anteriormente tuvimos una apuesta perdedora. Si esta apuesta también pierde, nos quedaremos con 17 dólares. Seguimos doblando nuestra apuesta cada vez que perdemos, con el objetivo de compensar las pérdidas anteriores. Eventualmente, tendremos una apuesta ganadora que cubre las pérdidas anteriores y agrega una pequeña ganancia. En este ejemplo, terminamos con un total de 21 dólares, un poco más que nuestra cantidad inicial. Este enfoque, duplicar la apuesta después de una pérdida, se conoce como el enfoque Martingale.

Inicialmente, el método Martingale parece prometedor y puede dar la impresión de ganancias rápidas y sustanciales. Sin embargo, es esencial comprender los riesgos asociados con este enfoque. Para comprender mejor este método y sus riesgos, probaremos la estrategia utilizando un enfoque de Monte Carlo. Este enfoque utiliza números aleatorios para generar señales para posiciones de compra o venta, sin tener en cuenta los indicadores técnicos o las predicciones personalizadas. Las señales se basan únicamente en una distribución aleatoria uniforme.

Para implementar el backtest, escribiremos código Python. Comenzamos importando las bibliotecas necesarias, como pandas para la manipulación de datos. Cargamos y limpiamos los datos, eliminando filas con volúmenes comerciales cero. Después de preparar los datos, generamos las señales aleatorias utilizando la función aleatoria del módulo numpy. Para cada vela, generamos un número aleatorio entre 0 y 1. Si el número está por debajo de 0,5, asignamos una señal de venta (1), y si está por encima de 0,5, asignamos una señal de compra (2).

A continuación, definimos una clase de estrategia llamada "MyStrategy" que hereda de la clase de estrategia de la biblioteca de backtesting. El tamaño de la posición inicial se establece en 10 unidades. También definimos una variable, "my_size", para realizar un seguimiento del tamaño de la posición, que cambiará según el enfoque Martingale. Si se genera una señal positiva y no hay operaciones abiertas, abrimos una nueva operación con un tamaño de posición igual a "my_size" multiplicado por 2, siguiendo el enfoque de Martingala. Si hay operaciones cerradas y la última operación fue rentable, restablecemos el tamaño de la posición al tamaño inicial. Esto asegura que después de una operación ganadora, volvamos al tamaño de la posición inicial. Si se genera una señal de compra o venta y no hay operaciones abiertas, establecemos los niveles de stop loss y take profit en relación con el último precio de cierre y ejecutamos la operación correspondiente.

Con la estrategia definida, realizamos el backtest con un capital inicial de $10.000 y sin comisiones. Las estadísticas de backtest muestran un rendimiento de -4,8%, lo que indica una pérdida. El gráfico de equidad revela que la estrategia inicialmente tuvo algunas ganancias, pero comenzó a disminuir en un punto determinado. La tasa de ganancia es cercana al 50%, como se esperaba, ya que las señales son aleatorias. El número total de operaciones es 100.

Para investigar más a fondo, modificamos el stop loss y llevamos los niveles de beneficio a 400 pips y volvemos a ejecutar el backtest. Sin embargo, este ajuste no resuelve el problema. La disminución de la equidad es el resultado de no tener fondos suficientes para continuar duplicando el tamaño de la posición después de una serie de operaciones perdedoras. Para abordar esto, reducimos el tamaño de la posición inicial a 5 y establecemos los niveles de stop loss y take profit en 300 pips. Después de hacer estos ajustes, volvemos a ejecutar el backtest. La estrategia actualizada arroja un rendimiento de -0,7 %, lo que indica una pérdida menor en comparación con la versión anterior. Sin embargo, el gráfico de acciones todavía muestra una tendencia a la baja, aunque a un ritmo más lento. La tasa de ganancias se mantiene cerca del 50% y el número total de operaciones sigue siendo 100.

A partir de estos resultados, podemos observar que incluso con ajustes en el tamaño de la posición, los niveles de stop loss y take profit, el enfoque Martingale no proporciona un resultado rentable en este escenario de señal aleatoria. La disminución de la equidad indica el riesgo potencial de reducciones significativas y la posibilidad de agotar la cuenta comercial.

Es importante tener en cuenta que este backtest se realizó bajo el supuesto de señales aleatorias. En el comercio del mundo real, las estrategias basadas en análisis técnico o análisis fundamental generalmente se emplean para generar señales comerciales. Estas estrategias tienen como objetivo identificar patrones, tendencias u oportunidades en función de los datos del mercado, en lugar de depender de señales aleatorias. En tales casos, el enfoque Martingale puede no ser adecuado o efectivo.

Además, el enfoque Martingale conlleva un alto nivel de riesgo. Asume que las rachas de pérdidas serán seguidas por rachas de ganancias, lo que permitirá al comerciante recuperar las pérdidas. Sin embargo, en realidad, no hay garantía de que las operaciones ganadoras sigan a operaciones perdedoras, y siempre existe la posibilidad de pérdidas consecutivas. Duplicar el tamaño de la posición después de cada pérdida puede conducir rápidamente a pérdidas significativas y al agotamiento de la cuenta, especialmente si las condiciones del mercado son desfavorables o volátiles.

Si bien el enfoque Martingale puede parecer atractivo debido a su potencial de recuperación y ganancias rápidas, es crucial considerar los riesgos asociados y evaluar cuidadosamente su idoneidad para su estrategia comercial. La implementación de técnicas de gestión de riesgos, como el establecimiento de niveles estrictos de stop loss, el mantenimiento del tamaño de posición adecuado y la diversificación de su enfoque comercial, pueden ayudar a mitigar los riesgos involucrados.

En resumen, el enfoque Martingale puede ser una estrategia arriesgada, especialmente cuando se usa con señales aleatorias. Es importante probar y evaluar minuciosamente cualquier estrategia comercial, teniendo en cuenta tanto las ganancias potenciales como los riesgos asociados.

Martingale Trading Strategy Backtesting For Algorithmic Trading
Martingale Trading Strategy Backtesting For Algorithmic Trading
  • 2022.02.03
  • www.youtube.com
Testing the Martingale trading strategy for algorithmic trading in python, I hope you'll enjoy it.Are you interested in algorithmic trading and looking for a...
 

Backtesting de estrategia comercial de media móvil en Python



Backtesting de estrategia comercial de media móvil en Python

A menudo ocurre que las estrategias simples se pasan por alto en favor de modelos más complejos. Sin embargo, no debemos subestimar el poder de la simplicidad. Hoy les presentaré un método sencillo que puede competir con sistemas comerciales complejos y generar rendimientos positivos. La ventaja de las reglas simples es que se pueden automatizar fácilmente para el comercio algorítmico usando Python. Podemos realizar una prueba retrospectiva de esta estrategia en diferentes monedas para garantizar su rentabilidad.

Profundicemos en los detalles de esta sencilla estrategia. Primero, consideraremos la curva de promedio móvil de 200 días como nuestro indicador. Si las velas están por encima de la curva, indica una tendencia alcista y sugiere una posición de compra. Por el contrario, si las velas están por debajo de la curva de media móvil, indica una tendencia bajista e implica una posición de venta.

Para determinar el punto de entrada de una posición de compra, examinaremos las velas anteriores. Compararemos el valor más bajo de la vela actual con los valores más bajos de las velas anteriores. Si el valor bajo de la vela actual está por debajo de todos estos valores anteriores, hemos identificado el punto de entrada para una posición de compra. El mismo concepto se aplica en la dirección opuesta para una posición de venta.

Si bien esta estrategia puede parecer simple, viene con su propio conjunto de desafíos. El primer parámetro a considerar es la longitud de la media móvil. ¿Debería ser 200, 100 o algo diferente? Esto se puede ajustar mediante pruebas retrospectivas en un par de divisas específico para maximizar los rendimientos. Otro parámetro es el número de velas anteriores a considerar. ¿Deberíamos analizar 7, 8, 10 o 20 velas? Al experimentar con diferentes valores, podemos evaluar el impacto en el desempeño de la estrategia.

Esta parte del indicador es relativamente sencilla, pero para que la estrategia sea efectiva, debemos combinarla con un enfoque de gestión comercial. Esto implica definir los valores de stop-loss y take-profit. Tenemos dos opciones para establecer estos valores: pueden estar relacionados con el rango verdadero promedio (ATR) del mercado, o podemos usar valores fijos para todas las operaciones. Es importante elegir el enfoque de gestión comercial adecuado para garantizar rendimientos positivos. Además, se puede emplear un stop loss dinámico, que ajusta el valor del stop loss en función del ATR.

En el código, podemos experimentar con varias combinaciones de estos parámetros para encontrar la configuración óptima y evaluar el rendimiento de la estrategia. A pesar de ser una estrategia simple, hay una cantidad relativamente grande de parámetros a considerar.

Para implementar esta estrategia en Python, usamos un archivo de Jupyter Notebook. Cargamos los datos, aplicamos la media móvil exponencial (EMA) y los cálculos de ATR utilizando el módulo pandas-technical-analysis. Luego, definimos funciones para generar señales EMA y señales altas y bajas. Graficamos los datos con la curva EMA para verificar visualmente que todo funciona correctamente.

A continuación, aplicamos la señal EMA y las funciones de señal alta-baja a nuestro marco de datos, lo que da como resultado señales para posiciones de compra o venta. Al examinar las señales graficadas, podemos validar su precisión y efectividad para identificar tendencias y puntos de entrada.

Para probar la estrategia, definimos una función que utiliza las señales para determinar las posiciones de compra o venta y establece los valores de stop-loss y take-profit en función del ATR o ratios fijos. La prueba retrospectiva de esta estrategia en los gráficos de cuatro horas del euro-dólar estadounidense entre 2003 y 2021 muestra un rendimiento positivo de alrededor del 29%.

Sin embargo, es fundamental evaluar la curva de acciones y comprender que, si bien la estrategia puede funcionar bien en los mercados en tendencia, puede tener dificultades durante los períodos de movimientos de precios horizontales. Al experimentar con diferentes configuraciones de stop-loss y take-profit, como el uso de valores fijos en lugar de valores basados en ATR, podemos analizar el rendimiento de la estrategia y adaptarnos en consecuencia.

En conclusión, incluso las estrategias más simples requieren una cuidadosa consideración de los parámetros y enfoques de gestión comercial para garantizar su eficacia. Si bien esta estrategia se basa en un indicador básico como la media móvil, aún puede generar señales comerciales rentables cuando se combina con técnicas de gestión comercial adecuadas.

Una vez implementada la estrategia y realizado el backtesting, es fundamental evaluar sus métricas de desempeño. Algunas métricas clave a considerar son el número total de operaciones, la tasa de ganancia (porcentaje de operaciones rentables), la ganancia promedio por operación, la reducción máxima (la mayor disminución de pico a valle) y la relación riesgo-recompensa.

Al analizar estas métricas, podemos determinar si la estrategia cumple con nuestras expectativas y se alinea con nuestra tolerancia al riesgo. Es importante recordar que ninguna estrategia es infalible y siempre habrá riesgos involucrados en el comercio. Por lo tanto, la gestión adecuada del riesgo y la diversificación de las inversiones son cruciales para el éxito a largo plazo.

Adicionalmente, se recomienda realizar pruebas de robustez a la estrategia. Esto implica evaluar su rendimiento en diferentes condiciones de mercado, como diferentes períodos de tiempo, pares de divisas o clases de activos. Al hacerlo, podemos medir la adaptabilidad de la estrategia y garantizar que su rentabilidad no se limite a escenarios específicos.

Además, vale la pena considerar las limitaciones de esta simple estrategia. Es posible que no capture todos los matices del mercado o funcione de manera óptima durante períodos de alta volatilidad o fluctuaciones repentinas de precios. En tales casos, pueden ser necesarios sistemas comerciales más sofisticados o indicadores adicionales para mejorar su rendimiento.

Como nota final, es esencial monitorear y adaptar continuamente la estrategia a medida que evolucionan las condiciones del mercado. Revisar regularmente su desempeño, hacer los ajustes necesarios y mantenerse informado sobre las tendencias y noticias del mercado contribuirá a la viabilidad a largo plazo de la estrategia.

Recuerde, el comercio exitoso es el resultado de una estrategia bien definida, una ejecución disciplinada y un aprendizaje y una adaptación continuos. ¡La mejor de las suertes con sus esfuerzos comerciales!

Moving Average Trading Strategy Backtesting In Python
Moving Average Trading Strategy Backtesting In Python
  • 2022.01.20
  • www.youtube.com
Welcome to this video on a beginner-friendly automated trading strategy using Python. In this video, we will be discussing a simple yet effective trading str...
 

Trailing Stop Backtest para operaciones algorítmicas en Python



Trailing Stop Backtest para operaciones algorítmicas en Python

Hola a todos y bienvenidos a este video. Hoy, exploraremos varios métodos para implementar stop-loss en el comercio algorítmico. Específicamente, nos centraremos en las técnicas de stop-loss que se pueden incorporar fácilmente en los bots comerciales codificándolos en programas numéricos.

Es importante tener en cuenta que, si bien existen diferentes formas de determinar los valores de stop-loss, algunos métodos son más complejos de incluir en un programa. En este video, probaremos una estrategia utilizando niveles de soporte y resistencia, así como patrones de velas japonesas que hemos discutido anteriormente en otros videos. Sin embargo, variaremos los valores de stop-loss considerando cuatro casos diferentes.

El primer método implica el uso de una distancia de stop-loss constante, que está predeterminada por el comerciante para todas las operaciones. Independientemente de la posición de compra, la distancia de stop-loss sigue siendo la misma.

El segundo método es más dinámico y utiliza el rango verdadero promedio (ATR). Aquí, la distancia de stop-loss está directamente relacionada con el ATR, lo que significa que varía según la volatilidad del mercado en una posición específica.

El tercer método es un trailing stop-loss de distancia fija. Esta es una estrategia de trailing stop-loss de uso común, en la que se mantiene la misma distancia para todas las posiciones, actuando como un trailing stop-loss.

El cuarto y último método es un stop-loss dinámico que considera el rango real promedio en el momento en que se ejecuta la posición comercial. Esto significa que la distancia de stop-loss se elige en función del ATR, que refleja la volatilidad del mercado en ese momento preciso.

En resumen, probaremos la misma estrategia utilizando estos cuatro métodos diferentes para definir valores de stop-loss. Vale la pena señalar que la elección de los valores de límite de pérdidas también afectará nuestros valores de toma de ganancias. La mayoría de las veces, los valores de take-profit se determinarán en función de la relación entre la distancia de take-profit y la distancia de stop-loss.

Ahora, profundicemos en el archivo de Jupyter Notebook para ver cómo se implementan estos métodos. El archivo comienza importando los módulos necesarios y cargando el archivo CSV que contiene los datos de precios para el par de divisas EUR/USD de 2003 a 2021. Limpiamos los datos, agregamos la columna de rango verdadero promedio (ATR) y definimos funciones para soporte y niveles de resistencia, así como patrones de velas japonesas.

También presentamos funciones para verificar patrones envolventes, así como la proximidad a los niveles de soporte y resistencia. Estas funciones nos ayudan a construir la estrategia basada en patrones de velas cerca de los niveles de soporte o resistencia. Agregamos una columna de señal a nuestro marco de datos, que clasifica las señales como bajista, alcista o sin señal.

Para realizar un backtesting de nuestra estrategia, utilizamos el módulo de backtesting y definimos el primer método de stop-loss, que implica una distancia fija de stop-loss y take-profit establecida manualmente por el operador. Comenzamos con un monto en efectivo de $10,000 y obtenemos los resultados del backtest, incluidos los rendimientos, la tasa ganadora, las mejores y peores operaciones y la reducción máxima.

A continuación, implementamos el segundo método, que utiliza el ATR para definir las distancias de stop-loss y take-profit. Introducimos factores para ajustar las distancias en función de los valores ATR y probamos la estrategia. Comparamos los resultados con el método anterior y observamos las diferencias en rendimientos y otras métricas de rendimiento.

Continuando, implementamos el tercer método, que es un stop-loss dinámico con una distancia fija. Aquí, solo necesitamos especificar la distancia de stop-loss inicial, y el stop-loss dinámico se ajusta en consecuencia. Probamos la estrategia utilizando una distancia fija de 500 pips para el par EUR/USD.

Finalmente, analizamos los resultados y encontramos que el método de stop-loss dinámico con una distancia fija produce el rendimiento más alto de aproximadamente 131%. Mientras que los otros métodos también brindan rendimientos favorables, el método de stop-loss dinámico muestra un mejor rendimiento en este caso.

En conclusión, hemos probado la misma estrategia utilizando cuatro métodos diferentes de stop-loss, cada uno de los cuales ofrece diferentes ventajas y consideraciones. La elección del método de stop-loss depende en última instancia de las preferencias del operador y de las condiciones específicas del mercado.

El método de stop-loss constante proporciona simplicidad y facilidad de implementación. Permite una gestión de riesgos coherente en todas las operaciones, independientemente de las condiciones del mercado. Sin embargo, es posible que no se adapte de manera efectiva a los niveles cambiantes de volatilidad, lo que podría conducir a distancias de stop-loss más amplias durante períodos de alta volatilidad o distancias de stop-loss más estrechas durante períodos de baja volatilidad.

El método de stop-loss basado en ATR aborda el tema de la adaptación a la volatilidad del mercado. Al utilizar el ATR como medida de volatilidad, la distancia de stop-loss se ajusta dinámicamente a las condiciones actuales del mercado. Esto puede ayudar a proteger contra pérdidas mayores durante la alta volatilidad y brindar más espacio para respirar durante la baja volatilidad. Sin embargo, puede resultar en distancias de stop-loss más amplias durante períodos de alta volatilidad, lo que podría generar stop-outs más frecuentes.

El método de trailing stop-loss de distancia fija combina las ventajas de un trailing stop-loss con la simplicidad de una distancia fija. Permite la maximización de ganancias potenciales al arrastrar el stop-loss detrás del precio a medida que se mueve a favor de la operación. Este método es especialmente útil en mercados en tendencia, donde puede capturar mayores ganancias. Sin embargo, es posible que no proteja de manera efectiva contra las rápidas reversiones de precios, ya que la distancia fija puede no proporcionar suficiente protección en situaciones de alta volatilidad.

El método trailing stop-loss basado en ATR combina los beneficios del método basado en ATR y el trailing stop-loss. Al considerar el ATR en el momento de la entrada de la operación, ajusta la distancia de stop-loss dinámico en función de la volatilidad del mercado en ese momento. Esto proporciona un enfoque más adaptable y sensible a la gestión de riesgos. Puede ayudar a capturar tendencias más grandes y al mismo tiempo brindar protección contra reversiones repentinas. Sin embargo, puede resultar en distancias de stop-loss más amplias durante la alta volatilidad, lo que podría conducir a stop-outs más frecuentes.

Es importante que los operadores consideren cuidadosamente su tolerancia al riesgo, su estilo de negociación y las condiciones del mercado al seleccionar un método de límite de pérdidas. Las pruebas retrospectivas y el análisis del rendimiento de diferentes métodos pueden ayudar a tomar una decisión informada. Además, la gestión de riesgos no debe basarse únicamente en órdenes stop-loss, sino que también debe considerar el tamaño de la posición, la diversificación y la gestión general de la cartera.

Recuerde que ningún método de stop-loss es infalible y aún pueden ocurrir pérdidas. La gestión adecuada del riesgo y el seguimiento continuo de las condiciones del mercado son esenciales para una negociación exitosa.

Trailing Stop Backtest For Algorithmic Trading in Python
Trailing Stop Backtest For Algorithmic Trading in Python
  • 2021.11.27
  • www.youtube.com
This video tests the Stop Loss VS Trailing Stop methods for Algorithmic Trading using python. Backtests are applied to one trading strategy showing the diffe...
 

Divergencia RSI automatizada en Python | Comercio algorítmico



Divergencia RSI automatizada en Python | Comercio algorítmico

Hola a todos y bienvenidos a bordo de este video. Hoy vamos a discutir la divergencia RSI y explorar diferentes estrategias usando este indicador en el comercio. Antes de sumergirnos, proporcioné un enlace de descarga en la descripción donde puede acceder al archivo de Jupyter Notebook utilizado en este video.

Para comenzar, necesitamos escribir un código que pueda detectar los mínimos y máximos locales tanto del precio como del RSI. Estos puntos están marcados como puntos morados en el gráfico. El algoritmo utilizado aquí identifica el máximo de una vela como máximo si es superior a las cinco velas vecinas de cada lado. Del mismo modo, un valor bajo de una vela se considera mínimo si es inferior a las cinco velas de los lados izquierdo y derecho. Puede ajustar estos números según su preferencia para detectar puntos extremos.

A continuación, ajustamos los mínimos y máximos detectados del precio y el RSI en pendientes lineales. Esto implica encontrar las líneas rectas que mejor se ajusten que pasen por estos puntos. Terminamos con dos pendientes diferentes: una para el precio (verde) y otra para el RSI (púrpura). Estas pendientes representan la dirección de la tendencia de los respectivos indicadores.

Luego podemos comparar las pendientes del precio y el RSI para determinar si hay una divergencia. En una tendencia alcista, ambas pendientes deberían ser positivas, indicando mínimos más altos en el precio y máximos más altos en el RSI. Por el contrario, en una tendencia bajista, ambas pendientes deberían ser negativas. Si las pendientes tienen signos diferentes, como una pendiente positiva para el precio y una pendiente negativa para el RSI, o viceversa, indica una divergencia.

Si bien existen varios enfoques para analizar la divergencia, exploraremos dos métodos en este video. El primer método consiste en ajustar varios puntos extremos mediante regresión polinomial, lo que nos permite considerar más de dos puntos a la vez. El segundo método se centra en comparar los dos últimos mínimos y máximos del precio y el RSI. Al comparar las diferencias entre estos puntos, podemos identificar divergencias.

Aunque las estrategias que utilizan la divergencia RSI se discuten a menudo en el comercio manual, generalmente se enfocan en la tendencia entre dos puntos consecutivos. En este video, presentamos un enfoque numérico, utilizando ajuste de pendiente y regresión polinomial para permitir el análisis de múltiples puntos simultáneamente.

A lo largo del video, codificaremos estos métodos de divergencia en Python usando Jupyter Notebook. El archivo Notebook proporcionado importa las bibliotecas necesarias, lee los datos de velas de un archivo CSV, calcula el RSI y define funciones para detectar puntos de pivote tanto para el precio como para el RSI. Estas funciones clasifican cada vela como pivote alto, pivote bajo, ambos o ninguno.

Al final del video, comprenderá claramente la divergencia del RSI y cómo implementar estas estrategias en sus operaciones. Si encuentras útil este contenido, te animo a que apoyes el canal dándole me gusta al video. Sus comentarios son valiosos para nosotros, así que no dude en dejar comentarios.

Ahora, profundicemos en el archivo de Jupyter Notebook y veamos cómo podemos codificar estos conceptos en Python.

Continuando desde donde lo dejamos, hemos agregado la columna "pivote" a nuestro marco de datos, que clasifica cada vela como pivote alto, pivote bajo, ambos o ninguno. Ahora pasemos al siguiente paso en nuestro código.

A continuación, definimos una función llamada "get_slope" que calcula la pendiente entre dos puntos dadas sus coordenadas x e y. Esta función se utilizará para calcular las pendientes para el precio y los datos RSI.

Después de eso, definimos otra función llamada "fit_slope" que toma un marco de datos y una categoría de pivote (pivote alto o pivote bajo) como parámetros. Esta función identifica los puntos de pivote en función de la categoría dada y ajusta una pendiente lineal a esos puntos mediante la función "get_slope". Devuelve el valor de la pendiente de la línea ajustada.

Ahora podemos proceder a usar estas funciones para calcular las pendientes para el precio y los datos RSI. Creamos dos nuevas columnas en nuestro marco de datos: "price_slope" y "rsi_slope". Para la columna "price_slope", llamamos a la función "fit_slope" con el marco de datos y la categoría de pivote como parámetros. Repetimos el mismo proceso para los datos RSI, calculando la pendiente para los puntos de pivote RSI y almacenando el resultado en la columna "rsi_slope".

En este punto, hemos obtenido las pendientes tanto para el precio como para los datos RSI. Ahora podemos comparar estas pendientes para determinar la dirección de la tendencia. Agregamos otra columna llamada "tendencia" a nuestro marco de datos, que indicará si la tendencia es al alza, a la baja o indefinida.

Para determinar la tendencia, comprobamos los signos de las columnas price_slope y rsi_slope. Si ambas pendientes son positivas, indica una tendencia alcista, por lo que asignamos el valor "Up" a la columna de tendencia. Si ambas pendientes son negativas, indica una tendencia bajista, por lo que asignamos el valor "Abajo" a la columna de tendencia. En todos los demás casos, donde los signos de las pendientes son diferentes o una de las pendientes es cero, asignamos el valor "Indefinido" a la columna de tendencia.

Con la información de tendencias disponible, ahora podemos verificar las divergencias entre el precio y los datos RSI. Agregamos otra columna llamada "divergencia" a nuestro marco de datos, que indicará si hay una divergencia presente o no.

Para verificar las divergencias, comparamos los signos de las columnas price_slope y rsi_slope. Si los signos son opuestos, indica una divergencia. En tales casos, asignamos el valor "Divergencia" a la columna de divergencia. Si los signos son iguales o una de las pendientes es cero, no hay divergencia y asignamos el valor "Sin divergencia" a la columna de divergencia.

Finalmente, podemos imprimir el marco de datos resultante para ver las pendientes calculadas, las direcciones de tendencia y las divergencias para cada vela.

En general, el código realiza los siguientes pasos:

  1. Importa las bibliotecas necesarias y define las funciones auxiliares.
  2. Lee los datos de las velas y calcula el RSI.
  3. Agrega una columna pivote para categorizar cada vela como pivote alto, pivote bajo, ambos o ninguno.
  4. Calcula las pendientes para el precio y los datos RSI en función de los puntos de pivote.
  5. Determina la dirección de la tendencia en función de los signos de las pendientes.
  6. Comprueba las divergencias entre el precio y los datos RSI en función de los signos de las pendientes.
  7. Imprime el marco de datos resultante con las pendientes calculadas, las direcciones de tendencia y las divergencias.

Este código proporciona una forma de analizar las divergencias de RSI y su relación con las tendencias de precios, lo que permite a los operadores identificar oportunidades comerciales potenciales.

RSI Divergence Automated In Python | Algorithmic Trading
RSI Divergence Automated In Python | Algorithmic Trading
  • 2021.11.12
  • www.youtube.com
The RSI Divergence Detection is programmed in python as an automated indicator for algorithmic trading, the Jupyter notebook file is available from the link:...