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.
La estrategia se basa principalmente en los siguientes indicadores y normas:
Indicador ICHIMOKU
Indicador del RSI
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.
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.
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.
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.
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)