Esta estrategia utiliza el indicador de RSI acumulativo para identificar tendencias y tomar decisiones de compra y venta cuando el valor acumulado de RSI rompe los niveles clave de umbral.
La estrategia se basa principalmente en el indicador de RSI acumulativo para las decisiones comerciales. El indicador de RSI acumulativo es la acumulación de valores de RSI. Al establecer el parámetro cumlen, los valores de RSI durante los últimos días cumlen se suman para derivar el indicador de RSI acumulativo. Este indicador puede filtrar el ruido del mercado a corto plazo.
Cuando el indicador de RSI acumulativo cruza por encima del carril superior de la banda de Bollinger, se abrirá una posición larga. Cuando el RSI acumulativo cruza por debajo del carril inferior de la banda de Bollinger, la posición abierta se cerrará.
Además, se agrega una opción de filtro de tendencia. Las operaciones largas solo se abrirán cuando el precio esté por encima del promedio móvil de 100 días, lo que significa que está en un canal de tendencia al alza. Este filtro evita operaciones erróneas durante las fluctuaciones del mercado.
La estrategia de ruptura del RSI acumulativo tiene un flujo lógico suave e identifica con precisión las tendencias a medio y largo plazo mediante el filtrado con el RSI acumulativo y la adición de juicio de tendencia. Los resultados de las pruebas de retroceso son excepcionales en la última década. Todavía hay margen para mejoras en áreas como el ajuste de parámetros, la adición de indicadores, el enriquecimiento de las condiciones de salida para hacer que la estrategia sea más robusta.
/*backtest start: 2023-09-26 00:00:00 end: 2023-10-26 00:00:00 period: 1h basePeriod: 15m 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/ // @version=5 // Author = TradeAutomation strategy(title="Cumulative RSI Strategy", shorttitle="CRSI Strategy", process_orders_on_close=true, overlay=true, commission_type=strategy.commission.cash_per_contract, commission_value=.0035, slippage = 1, margin_long = 75, initial_capital = 25000, default_qty_type=strategy.percent_of_equity, default_qty_value=110) // Cumulative RSI Indicator Calculations // rlen = input.int(title="RSI Length", defval=3, minval=1) cumlen = input(3, "RSI Cumulation Length") rsi = ta.rsi(close, rlen) cumRSI = math.sum(rsi, cumlen) ob = (100*cumlen*input(94, "Oversold Level")*.01) os = (100*cumlen*input(20, "Overbought Level")*.01) // Operational Function // TrendFilterInput = input(false, "Only Trade When Price is Above EMA?") ema = ta.ema(close, input(100, "EMA Length")) TrendisLong = (close>ema) plot(ema) // Backtest Timeframe Inputs // startDate = input.int(title="Start Date", defval=1, minval=1, maxval=31) startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12) startYear = input.int(title="Start Year", defval=2010, minval=1950, maxval=2100) endDate = input.int(title="End Date", defval=1, minval=1, maxval=31) endMonth = input.int(title="End Month", defval=1, minval=1, maxval=12) endYear = input.int(title="End Year", defval=2099, minval=1950, maxval=2100) InDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0)) // Buy and Sell Functions // if (InDateRange and TrendFilterInput==true) strategy.entry("Long", strategy.long, when = ta.crossover(cumRSI, os) and TrendisLong, comment="Buy", alert_message="buy") strategy.close("Long", when = ta.crossover(cumRSI, ob) , comment="Sell", alert_message="Sell") if (InDateRange and TrendFilterInput==false) strategy.entry("Long", strategy.long, when = ta.crossover(cumRSI, os), comment="Buy", alert_message="buy") strategy.close("Long", when = ta.crossover(cumRSI, ob), comment="Sell", alert_message="sell") if (not InDateRange) strategy.close_all()