Aprendiendo a diseñar un sistema comercial basado en RSI
Introducción
Seguro que todos los que están relacionados de alguna forma con el mundo del trading han escuchado alguna vez la frase "Trend is your friend" (La tendencia es tu amiga). Esta aseveración implica comerciar con la tendencia y no comerciar contra la tendencia. Aún así, a veces podemos operar contra la tendencia, por ejemplo, durante las correcciones. Si no sabe qué son las correcciones, no hay problema, hablaremos sobre ellas y sobre la tendencia en las siguientes líneas. Sin embargo, antes deberá comprender que, incluso si opera en contra de la tendencia, hay que tener cuidado y administrar rigurosamente los riesgos, ya que tales operaciones conllevarán un mayor número de estos.
Aquí hablaremos de las tendencias que pueden existir en los mercados. Ya hemos hablado de ellas en varios artículos, y los motivos de que las mencionemos tan a menudo son los siguientes:
- Es importante determinar el movimiento del mercado, ya que tomaremos nuestras decisiones según este.
- La repetición ayuda a profundizar la comprensión y asimilar diferentes aspectos del problema, especialmente cuando se trata en diferentes contextos.
- Quizás esté leyendo mi artículo por primera vez. Por lo tanto, querríamos ofrecer una imagen completa del tema de este artículo en particular.
En primer lugar, es necesario determinar la dirección del mercado (dirección de la tendencia). Antes de aprender a hacer esto, deberemos comprender lo que significa.
Si observamos el mercado, veremos que se pueden dar tres direcciones diferentes en el mercado dependiendo de la acción del precio: tendencia alcista, tendencia bajista y tendencia lateral. Cada tipo de tendencia del mercado se caracteriza por la actividad controladora de ciertos participantes del mismo.
- Tendencia alcista:
Durante esta tendencia, los compradores controlan el mercado la mayor parte del tiempo, lo cual conduce a precios más altos. En este tipo de mercado, el precio sube, haciendo mínimos más altos y máximos más altos.
- Tendencia bajista:
Durante esta tendencia, los vendedores controlan el mercado la mayor parte del tiempo, lo cual provoca el descenso de los precios. En este tipo de mercado, el precio desciende, haciendo mínimos más bajos y máximos más bajos.
- Movimiento lateral:
El movimiento lateral indica un equilibrio entre compradores y vendedores: ninguno de ellos prevalece claramente. Entenderemos por movimiento lateral cualquier movimiento que no se pueda determinar como tendencia alcista ni bajista. A continuación, mostraremos algunos ejemplos de dichos movimientos laterales.
Después de determinar la tendencia, deberemos averiguar si la tendencia es fuerte o débil. Podremos determinar esto con la ayuda del impulso (momentum). El impulso es un concepto usado para medir la velocidad de un movimiento o tendencia del mercado. Este concepto resulta esencial en el comercio y el análisis de los movimientos del mercado. Hay muchas herramientas basadas en el impulso. En este artículo, veremos una de las más populares y utilizadas: el indicador del índice de fuerza relativa o RSI. Asimismo, aprenderemos a usar esta herramienta de manera fácil y efectiva, y crearemos un sistema comercial basado en las estrategias RSI. Temas que trataremos en este artículo:
- Definición de RSI
- Estrategia RSI
- Esquema del sistema de la estrategia RSI
- Sistema comercial RSI
- Conclusión
En estos apartados, aprenderemos mucho sobre esta útil herramienta. Analizaremos el indicador RSI y cómo calcularlo. También nos familiarizaremos con ideas relativas al concepto del indicador. Todo esto se encontrará en la sección "Definición de RSI". Luego analizaremos estrategias basadas en el indicador RSI que pueden resultar útiles en el comercio. En la sección "Esquema del sistema de la estrategia RSI", estudiaremos los esquemas de la estrategia RSI y nos prepararemos para la posterior codificación. Este esquema nos permitirá determinar visualmente qué debe hacer el programa. Finalmente, veremos cómo escribir un programa basado en RSI para que el comercio sea más fácil y eficiente.
En este y todos los demás artículos, usamos la plataforma comercial MetaTrader 5 y el editor de lenguaje integrado MetaQuotes Language Editor: todo el código del programa se escribirá con este editor.
Si aún no ha instalado la plataforma MetaTrader 5, podrá descargarla a través del enlace: https://www.metatrader5.com/es/download
Para obtener más información, lea el anterior artículo de esta serie: "Aprenda por qué y cómo diseñar su sistema de trading algorítmico"
Nota. Todo el contenido de este artículo tiene fines exclusivamente educativos. El lector deberá entender que cualquier cosa que ponga en práctica usando como base este artículo, se realizará por su propia cuenta y riesgo: el autor no garantiza ningún resultado.
Bien, vamos a abordar el tema de hoy, un nuevo bloque de conocimiento que nos ayudará mejorar nuestra forma de comerciar.
Definición de RSI
RSI (Índice de Fuerza Relativa) es un indicador creado por Wells Wilder. El objetivo principal del indicador es medir la fuerza actual de un instrumento comercial en comparación con su historia. Para ello, el indicador compara los cambios de precio en los días de crecimiento y los días de caída.
El indicador RSI es un impulso, muestra la velocidad de un movimiento alcista o bajista del mercado. Se trata de un oscilador de nivel limitado: sus valores oscilan entre los niveles 0 y 100. Es un indicador adelantado porque puede superar a los precios y mostrar un movimiento potencial antes de que este suceda. RSI se desarrolló como una solución a dos de los principales problemas de los indicadores de impulso: la capacidad de absorber movimientos repentinos o erráticos y la capacidad de limitar los valores a un rango de 0 a 100.
RSI muestra:
- Los movimientos potenciales que no se pueden ver analizando solo el gráfico.
- Los niveles de apoyo y resistencia
- Las señales de divergencia que pueden indicar reversiones son divergencias entre el valor RSI y el precio.
- Las fluctuaciones por encima del nivel 70 y por debajo del nivel 30, que pueden advertir sobre posibles reversiones.
El cálculo y construcción del indicador RSI consta de los siguientes pasos:
- Encontramos movimientos positivos o ascendentes a partir de 14 cierres
- Encontramos movimientos negativos o bajistas a partir de 14 cierres
- Promedio (AVG) de 14 movimientos positivos = Suma de movimientos positivos / 14
- AVG de 14 movimientos negativos = Suma de movimientos negativos / 14
- RS = AVG de 14 movimientos positivos / Promedio de 14 movimientos negativos
- RSI = 100 - [100 /(1+RS)]
Vamos a analizar un ejemplo de cálculo para comprender mejor.
- Digamos que tenemos estos cierres de 14 días:
Día | Precio |
---|---|
1 | 100 |
2 | 105 |
3 | 120 |
4 | 110 |
5 | 100 |
6 | 115 |
7 | 120 |
8 | 130 |
9 | 125 |
10 | 135 |
11 | 140 |
12 | 130 |
13 | 140 |
14 | 145 |
Para estos datos, el cálculo de RSI será el siguiente:
Primero, calculamos el movimiento positivo y el movimiento negativo restando cada día al anterior:Día | Precio | Valores positivos | Movimientos negativos |
---|---|---|---|
1 | 100 | 0 | 0 |
2 | 105 | 5 | 0 |
3 | 120 | 15 | 0 |
4 | 110 | 0 | 10 |
5 | 100 | 0 | 10 |
6 | 115 | 15 | 0 |
7 | 120 | 5 | 0 |
8 | 130 | 10 | 0 |
9 | 125 | 0 | 5 |
10 | 135 | 10 | 0 |
11 | 140 | 5 | 0 |
12 | 130 | 0 | 10 |
13 | 140 | 10 | 0 |
14 | 145 | 5 | 0 |
- Suma de movimientos positivos = 80
- Suma de movimientos negativos = 35
- AVG de 14 movimientos positivos = Suma de movimientos positivos / 14
- AVG de 14 movimientos positivos = 80 / 14 = 5.7
- AVG de 14 movimientos negativos = Suma de movimientos negativos / 14
- AVG de 14 movimientos negativos = 35 / 14 = 2.5
- Luego calculamos RS (fuerza relativa):
- RS = AVG de 14 movimientos positivos / AVG de 14 movimientos negativos
- RS = 5,7 / 2,5 = 2,29
- A continuación, calculamos el propio RSI:
- RSI = 100 - [100 / (1 + RS)]
- RSI = 100 - [100 / (1 + 2,29)] = 69,57
- Cálculo del siguiente movimiento promedio:
- Siguiente movimiento positivo promedio = [{(Movimiento positivo promedio anterior * 13) + Movimiento positivo de hoy (si lo hay)}/14]
- Siguiente movimiento negativo promedio = [{(Movimiento negativo promedio anterior * 13) + Movimiento negativo de hoy (si lo hay)}/14]
- Encontramos la fuerza relativa de RS:
- RS = Siguiente movimiento positivo promedio / Siguiente movimiento negativo promedio
- Encontrar RSI:
- RSI = 100 - [ 100 / (1+ RS)]
- Periodo RSI
- Tipo de precio utilizado para calcular el indicador
- Color de línea RSI
- Estilo de línea RSI
- Grosor de la línea
- El nivel 0 es el valor mínimo del rango de lecturas del indicador.
- El nivel 100 es el valor máximo del rango de lecturas del indicador.
- El nivel 30 es la zona de sobreventa.
- El nivel 70 es la zona de sobrecompra.
- Valor RSI < 50 = Comprar
- Valor RSI > 70 = take profit
- Valor RSI > 50 = transacción en corto
- Valor RSI < 30 = take profit
- Durante el movimiento lateral:
- Valor RSI < 30 = comprar
- Valor RSI > 50 = take profit
- Valor RSI > 70 = transacción en corto
- Valor RSI < 50 = take profit
- Estrategia RSI para una tendencia alcista
- Estrategia RSI para una tendencia bajista
- Estrategia RSI para una tendencia lateral
Después calculamos el valor promedio durante 14 días para los movimientos positivos y negativos:
Como resultado, obtenemos:
Estos son los pasos para calcular el primer valor RSI. A continuación, mostraremos cómo se calcula el indicador después del primer cálculo:
Estos son los pasos de cálculo del indicador RSI. Sin embargo, no necesitamos hacer todos estos cálculos manualmente; esta información se ofrece aquí solo para comprender mejor la esencia de RSI. Esta información puede darnos una mejor idea de cómo usar el indicador para obtener mejores resultados comerciales. La plataforma MetaTrader ya tiene un indicador RSI incorporado listo para usar, por lo que no será necesario calcularlo. Podemos iniciar el indicador incorporado directamente en el gráfico y comenzar a utilizarlo. A continuación, mostraremos cómo hacerlo.
Siga unos pocos pasos en el terminal comercial MetaTrader 5:
Una vez seleccionemos el Índice de Fuerza Relativa (RSI) de la lista de osciladores, aparecerá la siguiente ventana de opciones del indicador:
Seleccione las opciones deseadas y clique en Aceptar. El indicador RSI se mostrará en el gráfico:
El indicador RSI se muestra en una ventana aparte, debajo del gráfico principal. Esta ventana muestra cuatro niveles de precios que representan lo siguiente:
Hay un nivel más que no se muestra por defecto: el nivel a la mitad del rango, que es igual a 50.
Estrategia RSI
En esta parte, veremos cómo usar el indicador RSI (índice de fuerza relativa). Para ello, usaremos una estrategia sencilla que diferirá según la dirección del mercado.
Veamos cómo podemos usar RSI durante una tendencia alcista, bajista y lateral. El uso específico está directamente relacionado con la zona de sobrecompra, el rango medio y la zona de sobreventa. En primer lugar, deberemos comprender cómo se comporta RSI durante los diferentes tipos de tendencia en el mercado, ya que es obvio que su comportamiento difiere según el movimiento del mercado. Después de ello, podremos definir estrategias sencillas para cada una de las tendencias. El objetivo principal es aprender a usar dicha estrategia y encontrar nuevas ideas que puedan resultar útiles para el comercio. En esta parte, veremos cómo reacciona RSI ante cada tendencia o tipo de movimiento. Sin embargo, tenga en cuenta que las estrategias se presentan con fines exclusivamente educativos, para mostrar cómo RSI se puede aplicar al análisis de datos de mercado. Asegúrese siempre de poner a prueba cada estrategia antes de usarla al comerciar; algunas estrategias podrían no resultar adecuadas para su estilo de negociación, especialmente en lo que respecta a estrategias educativas.
En este tipo de mercado, la mayoría de las veces, los valores RSI se mueven entre la mitad del rango y el nivel 70 (el nivel de sobrecompra).
Estrategia comercial para una tendencia alcista:
En este tipo de mercado, los valores RSI se mueven entre la mitad del rango y el nivel 30 (nivel de sobreventa) la mayor parte del tiempo.
La estrategia comercial será la siguiente:
RSI se mueve entre los niveles 30 y 70 la mayor parte del tiempo.
La estrategia comercial será la siguiente:
Esquema del sistema de la estrategia RSI
En esta parte, veremos qué instrucciones le daremos a la computadora al comerciar con una estrategia basada en RSI.
Ya hemos analizado 4 estrategias que podemos implementar en forma de sistemas comerciales: comprar en una tendencia alcista, vender en corto en una tendencia bajista, y transacciones largas y cortas en una tendencia lateral. Los esquemas detallados para cada estrategia se muestran a continuación.
Parece que todo está claro aquí. Ahora que hemos preparado los esquemas para cada estrategia que queremos implementar en el sistema comercial, podemos proceder a escribir el programa. Vamos a pasar a la siguiente parte de este artículo y escribir el código del sistema comercial.
Sistema comercial RSI
Ahora veremos cómo codificar un sistema comercial basado en las estrategias comerciales RSI discutidas anteriormente. Primero, abrimos el terminal comercial MetaTrader 5, y luego el IDE (MetaQuotes Language Editor) para escribir códigos presionando F4 o de cualquier otra manera:
También podemos clicar en el botón IDE en la barra de herramientas de MetaTrader 5:
La siguiente ventana aparecerá en el MetaEditor IDE recién abierto:
A continuación, crearemos un nuevo archivo en el que escribiremos el código del sistema comercial:
Seleccione la primera opción para crear un nuevo archivo de asesor. Para obtener más información, lea el anterior artículo de esta serie: "Aprenda por qué y cómo diseñar su sistema de trading algorítmico"
A continuación, mostramos el código para un asesor experto simple basado en RSI que muestra los valores de RSI como comentarios en el gráfico:
//+------------------------------------------------------------------+ //| Simple RSI System.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //Creating array for prices double RSIArray[]; //Identying RSI properties int RSIDef = iRSI(_Symbol, _Period, 14, PRICE_CLOSE); //Sorting prices array ArraySetAsSeries(RSIArray,true); //Identifying EA CopyBuffer(RSIDef,0,0,1,RSIArray); //Calculating EA double RSIValue = NormalizeDouble(RSIArray[0],2); //comment with RSI value on the chart Comment("RSI Value is ",RSIValue); } //+------------------------------------------------------------------+
Ahora vamos a ejecutar el programa creado:
Lo iniciamos clicando dos veces en el archivo y lo arrastramos al gráfico; después de ello, aparecerá la siguiente ventana:
Clique en Aceptar y el programa se ejecutará en el gráfico:
- Estrategia RSI para una tendencia alcista
Así se ve el código:
//+------------------------------------------------------------------+ //| RSI - Uptrend Strategy.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //Creating array for prices double RSIArray[]; //Identying RSI properties int RSIDef = iRSI(_Symbol, _Period, 14, PRICE_CLOSE); //Sorting prices array ArraySetAsSeries(RSIArray,true); //Identifying EA CopyBuffer(RSIDef,0,0,1,RSIArray); //Calculating EA double RSIValue = NormalizeDouble(RSIArray[0],2); //Creating signal according to RSI if(RSIValue<50) Comment ("Uptrend - BUY"); if(RSIValue>70) Comment ("Uptrend - TAKE PROFIT"); } //+------------------------------------------------------------------+
Luego, iniciamos el programa en el gráfico desde la ventana del Navegador, como se muestra a continuación. Asegúrese de que no haya errores o advertencias:
Ejecutamos el código arrastrando el archivo al gráfico o clicando dos veces sobre él, presionamos OK en la ventana del programa y se iniciará en el gráfico:
Genera las siguientes señales:
- Señal de compra:
- Señal de take profit:
- Estrategia RSI para una tendencia bajista
Código
//+------------------------------------------------------------------+ //| RSI - Downtrend Strategy.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //Creating array for prices double RSIArray[]; //Identying RSI properties int RSIDef = iRSI(_Symbol, _Period, 14, PRICE_CLOSE); //Sorting prices array ArraySetAsSeries(RSIArray,true); //Identifying EA CopyBuffer(RSIDef,0,0,1,RSIArray); //Calculating EA double RSIValue = NormalizeDouble(RSIArray[0],2); //Creating signal according to RSI if(RSIValue>50) Comment ("Downtrend - SHORT"); if(RSIValue<30) Comment ("Downtrend - TAKE PROFIT"); } //+------------------------------------------------------------------+
Iniciamos el programa en el gráfico desde la ventana del Navegador, como se muestra a continuación. Asegúrese de que no haya errores o advertencias:
Ejecutamos el código arrastrando el archivo al gráfico o haciendo doble clic sobre él, presionamos OK en la ventana del programa y se iniciará en el gráfico:
El programa en ejecución generará las señales:
- Señal corta:
- Señal de take profit:
- Estrategia RSI para una tendencia lateral
A continuación, mostramos el código para esta estrategia. Para una mejor comprensión, dividiremos la estrategia en dos códigos separados: un programa se implementará para la señal de compra y el take profit, y otro para la señal de venta y el take profit. Ambos funcionarán durante el movimiento lateral:
- Señal de compra
//+------------------------------------------------------------------+ //| RSI - Sideways Strategy - Buy.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //Creating array for prices double RSIArray[]; //Identying RSI properties int RSIDef = iRSI(_Symbol, _Period, 14, PRICE_CLOSE); //Sorting prices array ArraySetAsSeries(RSIArray,true); //Identifying EA CopyBuffer(RSIDef,0,0,1,RSIArray); //Calculating EA double RSIValue = NormalizeDouble(RSIArray[0],2); //Creating signal according to RSI if(RSIValue<30) Comment ("Sideways - BUY"); if(RSIValue>50) Comment ("Sideways - TAKE PROFIT"); } //+------------------------------------------------------------------+
Iniciamos el programa en el gráfico desde la ventana del Navegador, como se muestra a continuación. Asegúrese de que no haya errores o advertencias:
Ejecutamos el código arrastrando el archivo al gráfico o haciendo doble clic sobre él, presionamos OK en la ventana del programa y se iniciará en el gráfico:
El programa en ejecución generará señales como se muestra a continuación:
- Señal de compra:
- Señal de take profit:
- Señal corta:
//+------------------------------------------------------------------+ //| RSI - Sideways Strategy - Short.mq5 | //| Copyright 2022, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //Creating array for prices double RSIArray[]; //Identying RSI properties int RSIDef = iRSI(_Symbol, _Period, 14, PRICE_CLOSE); //Sorting prices array ArraySetAsSeries(RSIArray,true); //Identifying EA CopyBuffer(RSIDef,0,0,1,RSIArray); //Calculating EA double RSIValue = NormalizeDouble(RSIArray[0],2); //Creating signal according to RSI if(RSIValue>70) Comment ("Sideways - SHORT"); if(RSIValue<50) Comment ("Sideways - TAKE PROFIT"); } //+------------------------------------------------------------------+
Luego, iniciamos el programa en el gráfico desde la ventana del Navegador, como se muestra a continuación. Asegúrese de que no haya errores o advertencias:
Ejecutamos el código arrastrando el archivo al gráfico o clicando dos veces sobre él, presionamos OK en la ventana del programa y se iniciará en el gráfico:
El programa en ejecución generará las señales:
- Señal corta:
- Señal de take profit:
Probablemente, esto sea todo en cuanto a la creación y el uso de estrategias simples basadas en el índice de fuerza relativa RSI, uno de los indicadores más populares en el trading. Hemos aprendido a usar este indicador para varias tendencias del mercado.
Insistimos una vez más en que el artículo tiene únicamente fines educativos: solo habla de otra herramienta útil de análisis técnico. Si va a utilizar información de este artículo para su propio comercio, asegúrese de ponerla a prueba antes de usarla: lo que puede resultar útil para alguien podría no serlo para usted, su estrategia comercial o su propio plan.
Conclusión
En este artículo, hemos hablado sobre una de las herramientas más poderosas en el comercio y el análisis técnico: el indicador RSI. Asimismo, hemos aprendido que está relacionado con el concepto de impulso, que es uno de los conceptos más importantes en los movimientos del mercado y el comercio. Además, hemos tratado de explicar la construcción de RSI y los detalles de su cálculo solo para que quede más claro cómo se puede usar este indicador.
Aparte de lo mencionado, el artículo contiene una estrategia simple que se puede usar en el comercio, así como sus variaciones para varios movimientos y tendencias del mercado. Así, ahora ya sabemos cómo usarlo durante una tendencia alcista, bajista y lateral. Hay muchas estrategias diferentes que se pueden usar de forma efectiva y que pueden resultar útiles en el comercio. Por lo tanto, le recomendamos seguir leyendo sobre RSI y otros indicadores.
También hemos aprendido cómo codificar un sistema comercial basado en estas estrategias. MQL5 y la programación en general sirven de gran ayuda para usar varias herramientas comerciales y analíticas útiles de forma eficiente, precisa y sencilla, lo cual nos facilita la vida.
Recomendamos a los lectores que intenten escribir códigos por ellos mismos y pongan en práctica lo que han aprendido de este artículo. Esta práctica mejorará la comprensión y la conciencia de lo que ha aprendido y le proporcionará una buena base para nuevas ideas. Esperamos que el artículo le sea útil y le ayude a alcanzar sus objetivos comerciales.
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/10528
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso