Esta estratégia utiliza o indicador de RSI Cumulativo para identificar tendências e tomar decisões de compra e venda quando o valor acumulado do RSI ultrapassa os principais níveis de limiar.
A estratégia é baseada principalmente no indicador de RSI acumulado para decisões de negociação. O indicador de RSI acumulado é o acúmulo de valores de RSI. Ao definir o parâmetro cumlen, os valores de RSI nos últimos dias cumlen são adicionados para derivar o indicador de RSI acumulado. Este indicador pode filtrar o ruído do mercado de curto prazo.
Quando o indicador de RSI Cumulativo cruza acima do trilho superior da Banda de Bollinger, uma posição longa será aberta. Quando o RSI Cumulativo cruza abaixo do trilho inferior da Banda de Bollinger, a posição aberta será fechada.
Além disso, uma opção de filtro de tendência é adicionada. Os negócios longos só serão abertos quando o preço estiver acima da média móvel de 100 dias, o que significa que está em um canal de tendência ascendente. Este filtro evita negócios errados durante as flutuações do mercado.
A estratégia de ruptura do RSI acumulativo tem fluxo lógico suave e identifica com precisão as tendências de médio a longo prazo, filtrando com o RSI acumulativo e adicionando julgamento de tendência. Os resultados do backtest são excepcionais na última década.
/*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()