Estrategia de cambio de criptomonedas de RSI oscilante a corto y largo plazo

El autor:¿ Qué pasa?, Fecha: 2023-12-25 13:49:48
Las etiquetas:

img

Resumen general

La Oscillating Long-Short RSI Crypto Switching Strategy es una estrategia de negociación cuantitativa diseñada para criptomonedas. Combina el indicador técnico RSI con el indicador ICHIMOKU para identificar señales largas y cortas durante las oscilaciones de precios y lograr comprar bajo y vender alto. Es adecuado para plazos de tiempo de mediano a largo plazo como 3-4 horas o más.

Estrategia lógica

La estrategia se basa principalmente en los siguientes indicadores y normas:

Indicador ICHIMOKU

  • Línea Tenkan: punto medio del precio más alto y más bajo de las últimas 20 barras
  • Línea Kijun: punto medio del precio más alto y más bajo de los últimos 50 bares
  • Línea Senkou A: punto medio de las líneas Tenkan y Kijun
  • Línea Senkou B: punto medio del precio más alto y más bajo de los últimos 120 bares
  • Línea Chikou: precio de cierre de hace 30 bares

Indicador del RSI

  • Rango de 0 a 100
  • Por encima de 50 indica señal alcista, por debajo de 50 indica señal bajista

Reglas de entrada
Entrada larga: Tenkan cruza por encima de Kijun (cruz dorada) y las rupturas de precios a través de Senkou A & B Lines, con RSI por encima de 50 al mismo tiempo
Entrada corta: Tenkan cruza por debajo de Kijun (cruz de la muerte) y el precio se descompone en Senkou A & B Lines, con RSI por debajo de 50 al mismo tiempo

Reglas de salida
Salida con señal opuesta

La estrategia tiene en cuenta la tendencia a medio y largo plazo, el flujo de capital a corto plazo y las condiciones de sobrecompra/sobreventa para captar oportunidades de reversión durante la oscilación.

Análisis de ventajas

1. Un juicio basado en múltiples indicadores garantiza una alta certeza

La estrategia considera la tendencia y el juicio de soporte / resistencia de ICHIMOKU, las condiciones de sobrecompra / sobreventa de RSI, así como el flujo de capital basado en la dirección del cuerpo de la vela.

2. Adecuado para oscilaciones, con frecuentes ganancias

Esta estrategia puede capturar completamente las oportunidades de reversión durante las oscilaciones y lograr compras frecuentes bajas y ventas altas.

3. Prevenir las subidas de persecución y las bajas de retroceso, riesgo controlable

La estrategia tiene en cuenta de forma exhaustiva las tendencias a medio y largo plazo y las situaciones a corto plazo para evitar el riesgo de perseguir alzas y vencer retrocesos.

Análisis de riesgos

1. Puede perder algunas oportunidades de tendencia

La estrategia se centra principalmente en la reversión, lo que puede conducir a frecuentes cambios en las fases de tendencia prolongadas.

2. símbolo único, incapaz de diversificar el riesgo

La estrategia solo opera con un solo símbolo y no puede diversificarse frente al riesgo sistemático de mercado.

3. Stop loss activado durante movimientos extremos

Durante condiciones de mercado extremas como brechas o picos, el stop loss puede activarse forzando la salida.

Direcciones de optimización

1. Añadir stop loss para una pérdida única más baja

El stop loss móvil o el stop loss porcentual se pueden utilizar para bloquear las ganancias y evitar el retracement completo.

2. Correlación con los índices para diversificar el riesgo de mercado

Busque oportunidades comerciales entre símbolos altamente correlacionados para diversificar el riesgo de mercado sistemático.

Filtros adicionales para reducir las operaciones no válidas

Se pueden añadir filtros como la volatilidad de los precios o los cambios de volumen para evitar señales de reversión inválidas y mejorar la tasa de rentabilidad.

Conclusión

La estrategia de cambio de criptomonedas oscilante de largo corto RSI combina los indicadores ICHIMOKU y RSI para identificar puntos de reversión para las criptomonedas, adecuados para comprar bajo y vender con alto beneficio durante las oscilaciones. También establece reglas de stop loss para controlar el riesgo. La estrategia se puede mejorar aún más optimizando el mecanismo de stop loss, diversificando los riesgos a través de la correlación y agregando filtros condicionales, que vale la pena probar en vivo.


/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-24 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4

strategy(title="Ichimoku + RSI Crypto trending strategy", overlay=true, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, pyramiding=1  )

UseHAcandles    = input(true, title="Use Heikin Ashi Candles in Algo Calculations")
//
// === /INPUTS ===

// === BASE FUNCTIONS ===

haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow   = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low


//Inputs
ts_bars = input(20, minval=1, title="Tenkan-Sen Bars")
ks_bars = input(50, minval=1, title="Kijun-Sen Bars")
ssb_bars = input(120, minval=1, title="Senkou-Span B Bars")
cs_offset = input(30, minval=1, title="Chikou-Span Offset")
ss_offset = input(30, minval=1, title="Senkou-Span Offset")
long_entry = input(true, title="Long Entry")
short_entry = input(true, title="Short Entry")

//Volatility
//vollength = input(defval=1, title="VolLength")
//voltarget = input(defval=0., type=input.float, step=0.1, title="Volatility Target")
//Difference = abs((haClose - haOpen)/((haClose + haOpen)/2) * 100)
//MovingAverage = sma(Difference, vollength)
//highvolatility = MovingAverage > voltarget

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////

middle(len) => avg(lowest(len), highest(len))

// Ichimoku Components
tenkan = middle(ts_bars)
kijun = middle(ks_bars)
senkouA = avg(tenkan, kijun)
senkouB = middle(ssb_bars)

//RSI
change = change(haClose)
gain = change >= 0 ? change : 0.0
loss = change < 0 ? (-1) * change : 0.0
avgGain = rma(gain, 14)
avgLoss = rma(loss, 14)
rs = avgGain / avgLoss
rsi = 100 - (100 / (1 + rs))

ss_high = max(senkouA[ss_offset-1], senkouB[ss_offset-1])
ss_low = min(senkouA[ss_offset-1], senkouB[ss_offset-1])

// Entry/Exit Signals
tk_cross_bull = tenkan > kijun
tk_cross_bear = tenkan < kijun
cs_cross_bull = mom(haClose, cs_offset-1) > 0
cs_cross_bear = mom(haClose, cs_offset-1) < 0
price_above_kumo = haClose > ss_high
price_below_kumo = haClose < ss_low
rsi_bullish = rsi > 50
rsi_bearish = rs < 50
bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and rsi_bullish //and highvolatility
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and rsi_bearish //and highvolatility

strategy.entry("Long", strategy.long, when=bullish and long_entry and time_cond)
strategy.entry("Short", strategy.short, when=bearish and short_entry and time_cond)

strategy.close("Long", when=bearish and not short_entry and time_cond)
strategy.close("Short", when=bullish and not long_entry and time_cond)




Más.