Esta estrategia utiliza los principios de sobrecompra y sobreventa del indicador RSI y combina el RSI de varios ciclos para generar señales, realizando operaciones de ciclo cruzado. La estrategia juzga las señales de sobrecompra y sobreventa de acuerdo con los ajustes del ciclo del RSI, y utiliza la media móvil del RSI para filtrar para evitar señales incorrectas.
La estrategia genera principalmente señales comerciales a través de los juicios de sobrecompra y sobreventa del indicador RSI. RSI significa Índice de Fuerza Relativa, su fórmula es: RSI = 100 - (100 / (1 + RS)), donde RS es la relación de las ganancias promedio de cierre sobre las pérdidas promedio de cierre durante un período. El índice RSI oscila entre 0 y 100, generalmente considerado como sobreventa por debajo de 30 y sobrecompra por encima de 70.
La estrategia establece un parámetro alto sobrecompra y un parámetro bajo sobreventa. Cuando el RSI es mayor que sobrecompra, se juzga como sobrecomprado. Cuando el RSI es menor que sobreventa, se juzga como sobrevendido. Los valores predeterminados de sobrecompra y sobreventa en la estrategia son 70 y 30 respectivamente.
Para generar señales de compra y venta, la estrategia utiliza la línea promedio móvil del indicador RSI para filtrar. Cuando el RSI cruza su línea promedio móvil, se genera la señal de compra Es_compra. Cuando el RSI cruza por debajo de su línea promedio móvil, se genera la señal de venta Es_venta. El parámetro promedio móvil periodos_media es predeterminado para 14 períodos.
Después de generar señales de compra y venta, la estrategia abre posiciones para operaciones largas o cortas. Además, la estrategia también establece stop loss y take profit en porcentaje para evitar pérdidas excesivas y bloquear las ganancias.
Utilice el indicador RSI para juzgar las condiciones de sobrecompra y sobreventa, evitando perseguir máximos y vender mínimos.
Aplicar la media móvil del indicador RSI para filtrar para evitar señales falsas.
Combinar las configuraciones de varios ciclos del indicador RSI para generar señales comerciales más estables.
Establecer mecanismos de stop loss y obtener ganancias para controlar eficazmente los riesgos.
La lógica de la estrategia es simple y clara, fácil de entender y modificar.
Parámetros personalizables, adaptables a diferentes productos y ciclos.
El indicador RSI tiene un efecto de retraso, puede perder el mejor momento para la reversión de precios.
La media móvil causa retrasos en las señales de negociación, incapaz de capturar las inversiones de tendencia a tiempo.
Los parámetros fijos de sobrecompra y sobreventa no son lo suficientemente flexibles y deben ajustarse para diferentes ciclos y productos.
La configuración incorrecta de stop loss y take profit puede dar lugar a pérdidas o pérdidas de ganancias.
Las posiciones largas y cortas son sólo 1 lote, incapaces de utilizar plenamente los fondos para el comercio de diferencias.
Combinar otros indicadores como MACD, KD para el juicio de la señal de negociación.
Aplicar una media móvil adaptativa para rastrear las tendencias.
Establecer parámetros dinámicos de sobrecompra y sobreventa, ajustar basado en la volatilidad del mercado.
Optimizar los algoritmos de stop loss y take profit, como el stop loss posterior.
Añadir un mecanismo de gestión de posiciones, ajustar dinámicamente las posiciones en función del tamaño del capital.
Añadir filtrado de tendencias para evitar operaciones frecuentes en mercados de rango.
Prueba posterior para optimizar los parámetros y seleccionar la combinación óptima de parámetros.
Esta estrategia se basa en los principios de sobrecompra y sobreventa del indicador RSI, utiliza promedios móviles para filtrar para generar señales comerciales, realizando el comercio típico de ciclos cruzados. La estrategia tiene una estructura lógica clara y configuraciones de parámetros, adaptables a diferentes productos y ciclos a través del ajuste de parámetros, lo que la convierte en una estrategia de trading de ciclos cruzados confiable y efectiva.
/*backtest start: 2023-09-01 00:00:00 end: 2023-09-30 23:59:59 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/ // © samuelkanneman //@version=4 strategy("RSI KANNEMAN") //////Entrada/////// i_startTime = input(title="Start Date Filter", defval=timestamp("01 Nov 2020 13:30 +0000"), type=input.time, tooltip="Date & time to begin trading from") i_endTime = input(title="End Date Filter", defval=timestamp("1 Nov 2022 19:30 +0000"), type=input.time, tooltip="Date & time to stop trading") sobrecompra= input(70, title="Sobre Compra", type=input.integer ,minval=50, maxval=100 ) sobreventa= input(30, title="Sobre Venta", type=input.integer ,minval=0, maxval=50 ) l1=hline(sobrecompra) l2=hline(sobreventa, color=color.purple) periodos= input(14, title="Periodos", type=input.integer ,minval=1, maxval=50 ) periodos_media= input(14, title="Logintud media movil", type=input.integer ,minval=1, maxval=200 ) var SL =0.0 var TP=0.0 StopLoss = input(2.0, title="SL %", step=0.2) TakeProfit = input(5.0, title="TP %", step=0.2) //////Proceso/////// mi_rsi=rsi(close,periodos) mm_rsi=sma(mi_rsi,periodos_media) Es_compra= crossover(mm_rsi,sobreventa) Es_venta= crossunder(mm_rsi,sobrecompra) comprado= strategy.position_size > 0 vendido = strategy.position_size < 0 //time to test dateFilter = true //timePeriod = time >= timestamp(syminfo.timezone, 2020, 11, 1, 0, 0) // long if (not comprado and Es_compra and dateFilter ) // realizar long cantidad = strategy.equity/hlc3 strategy.entry ("compra", strategy.long , cantidad) SL := close*(1-(StopLoss/100)) TP := close*(1+(TakeProfit/100)) if close >= TP strategy.close ("compra" , comment="Salto TP") if (comprado and Es_venta ) strategy.close ("compra" , comment="Sobre Venta") if close <= SL strategy.close ("compra" , comment="Salto SL") // short if (not vendido and Es_venta and dateFilter ) // realizar short cantidad = strategy.equity/hlc3 strategy.entry ("venta", strategy.short , cantidad) SL := close*(1+(StopLoss/100)) TP := close*(1-(TakeProfit/100)) if close <= TP strategy.close ("venta" , comment="Salto TP") if (vendido and Es_compra ) strategy.close ("venta" , comment="Sobre Compra") if close >= SL strategy.close ("venta" , comment="Salto SL") ///////Salida////// fill(l1,l2) plot(mi_rsi) plot(mm_rsi, color=color.yellow) bgcolor(Es_compra ? color.blue : na , transp=0) bgcolor(Es_venta ? color.red : na , transp=0) // 1d 70 22 5 4 3 15 6 meses //1h 70 20 6 4 5 7 1 mese //15m 70 20 5 4 4 7 1 semana