Estrategia de negociación con múltiples indicadores RSI


Fecha de creación: 2023-11-28 15:03:53 Última modificación: 2023-11-28 15:03:53
Copiar: 1 Número de Visitas: 668
1
Seguir
1617
Seguidores

Estrategia de negociación con múltiples indicadores RSI

Descripción general

La estrategia de negociación de indicadores RSI múltiples utiliza varios indicadores RSI en combinación para identificar oportunidades de negociación y realizar un seguimiento de tendencias. La estrategia utiliza de 1 a 5 indicadores RSI de forma flexible para determinar el momento de entrada y salida en función de los valores de los indicadores.

Principio de estrategia

La estrategia utiliza entre 1 y 5 indicadores RSI seleccionados por los parámetros de entrada, y cada indicador RSI puede configurarse independientemente para el número de períodos y el límite de los parámetros. La intensidad de la señal se determina por el número de períodos RSI que desencadenan la señal de compra cuando cualquier indicador RSI está por debajo del límite correspondiente.

Análisis de las ventajas

La mayor ventaja de esta estrategia es que puede evaluar simultáneamente indicadores RSI de varios períodos, juzgar tendencias y oportunidades de reversión de varias dimensiones, mejorar la precisión de las decisiones de negociación. Además, la estrategia permite la libre configuración de los parámetros de los indicadores RSI, que se pueden ajustar a diferentes mercados, lo que puede ampliar la adaptabilidad de la estrategia.

Análisis de riesgos

El principal riesgo de esta estrategia es que puede haber conflictos de señales cuando se juzga una combinación de múltiples indicadores RSI. Por ejemplo, el RSI de corto plazo genera una señal de compra, pero el RSI de largo plazo sigue siendo un estado de sobreventa, en este caso, se necesita tomar una decisión sobre qué señal es la más adecuada para combinar la propia experiencia del comerciante. Además, el indicador RSI es susceptible a ser engañado por la situación de la oscilación, lo que requiere ser verificado con un indicador auxiliar o una cuenta de grandes fondos.

Dirección de optimización

La estrategia puede considerar la inclusión de indicadores auxiliares de tendencias como las medias móviles o las bandas de Brin para verificar las señales RSI y mejorar la precisión de los juicios. Además, también se puede considerar la inclusión de un determinado algoritmo de aprendizaje automático que utilice un método de puntuación multifactor para determinar automáticamente la fiabilidad de las señales de entrada y cierre.

Resumir

La estrategia de negociación de indicadores RSI múltiples es muy innovadora en general, ya que la flexibilidad de la combinación de indicadores y la configuración de parámetros permite adaptarse rápidamente a los cambios en el mercado. El diseño de funciones modulares agregadas también permite un gran espacio para optimizar la estrategia.

Código Fuente de la Estrategia
/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018
//@version=2

strategy(title = "Noro's Symphony Strategy v1.1", shorttitle = "Symphony str 1.1", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 20)

//Settings

//needlong = input(true, defval = true, title = "Long")
//needshort = input(true, defval = true, title = "Short")

capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
usersi1 = input(true, defval = true, title = "Use RSI 1")
rsiperiod1 = input(4, defval = 4, minval = 2, maxval = 100, title = "RSI 1 Period")
rsilimit1 = input(20, defval = 20, minval = 2, maxval = 50, title = "RSI 1 Limit")
usersi2 = input(true, defval = true, title = "Use RSI 2")
rsiperiod2 = input(7, defval = 7, minval = 2, maxval = 100, title = "RSI 2 Period")
rsilimit2 = input(25, defval = 25, minval = 2, maxval = 50, title = "RSI 2 Limit")
usersi3 = input(true, defval = true, title = "Use RSI 3")
rsiperiod3 = input(14, defval = 14, minval = 2, maxval = 100, title = "RSI 3 Period")
rsilimit3 = input(30, defval = 30, minval = 2, maxval = 50, title = "RSI 3 Limit")
usersi4 = input(false, defval = false, title = "Use RSI 4")
rsiperiod4 = input(21, defval = 21, minval = 2, maxval = 100, title = "RSI 4 Period")
rsilimit4 = input(35, defval = 35, minval = 2, maxval = 50, title = "RSI 4 Limit")
usersi5 = input(false, defval = false, title = "Use RSI 5")
rsiperiod5 = input(28, defval = 28, minval = 2, maxval = 100, title = "RSI 5 Period")
rsilimit5 = input(40, defval = 40, minval = 2, maxval = 50, title = "RSI 5 Limit")
cf = input(false, defval = false, title = "Use color filter")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From Day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To Day")

//RSI
rsi1 = rsi(close, rsiperiod1)
rsi2 = rsi(close, rsiperiod2)
rsi3 = rsi(close, rsiperiod3)
rsi4 = rsi(close, rsiperiod4)
rsi5 = rsi(close, rsiperiod5)

//Signals
up1 = rsi1 < rsilimit1 and usersi1  
up2 = rsi2 < rsilimit2 and usersi2
up3 = rsi3 < rsilimit3 and usersi3
up4 = rsi4 < rsilimit4 and usersi4
up5 = rsi5 < rsilimit5 and usersi5

str = up5 ? 5 : up4 ? 4 : up3 ? 3 : up2 ? 2 : up1 ? 1 : str[1]
up = up1 or up2 or up3 or up4 or up5
exit = (rsi1 > rsilimit1 and str == 1) or (rsi2 > rsilimit2 and str == 2) or (rsi3 > rsilimit3 and str == 3) or (rsi4 > rsilimit4 and str == 4) or (rsi5 > rsilimit5 and str == 5)
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

//Background
col = up ? lime : na
bgcolor(col, transp = 0)

//Trading
if up and (close < open or cf == false)
    strategy.entry("Long", strategy.long, lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
 
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()