Esta estratégia implementa operações de avanço rápido com base no indicador RSI e na EMA dos corpos de velas.
Calcular o indicador RSI com o período 7 e utilizar o RMA para a aceleração.
Calcular a EMA do tamanho do corpo do candelabro com o período 30 como referência para o tamanho do corpo.
Se o RSI cruzar acima da linha limite (padrão 30) e o corpo da vela atual for maior que 1/4 do tamanho médio do corpo, vá longo.
Se o RSI cruzar abaixo da linha limite (padrão 70) e o corpo da vela atual for maior que 1/4 do tamanho médio do corpo, vá curto.
Se já estiver em posição, feche quando o RSI cruzar a linha limite.
Parâmetros como comprimento do RSI, limite, preço de referência podem ser configurados.
Parâmetros como período EMA do corpo, multiplicador chroot de posição aberta podem ser configurados.
O número de cruzes RSI pode ser configurado.
Utilize o atributo de reversão do RSI para capturar reversões em tempo hábil.
A RMA acelera a formação do RSI para inversões mais sensíveis.
Filtrar pequenas consolidações de alcance com grandes corpos de candelabro.
Os dados de backtest suficientes garantem a fiabilidade.
Os parâmetros personalizáveis adaptam-se aos diferentes ambientes de mercado.
Lógica simples e clara.
O RSI tem um viés de backtest, desempenho real a ser validado.
Os grandes organismos não podem filtrar completamente os mercados agitados.
Os parâmetros padrão podem não se adequar a todos os produtos, sendo necessária otimização.
A taxa de vitórias pode não ser alta, precisa de suportar perdas consecutivas mentalmente.
Risco de falha no avanço, precisa de um stop loss oportuno.
Otimizar os parâmetros do RSI para diferentes períodos e produtos.
Otimizar o período de EMA do corpo para suavizar o tamanho do corpo.
Optimize o multiplicador de corpo para posições abertas para controlar a frequência de entrada.
Adicione stop loss em movimento para garantir a taxa de vitória.
Adicionar um filtro de tendência para evitar a negociação contra tendência.
Otimizar a gestão do dinheiro para controlar os riscos.
Em resumo, esta é uma estratégia de reversão muito simples e direta. Utiliza tanto o atributo de reversão do RSI quanto o ímpeto de grandes corpos de velas para entrar rapidamente durante reversões de mercado. Embora os resultados do backtest pareçam bons, o desempenho real ainda não foi validado. A otimização de parâmetros e o controle de risco são necessários ao aplicá-lo.
/*backtest start: 2023-09-23 00:00:00 end: 2023-10-23 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "Noro's Fast RSI Strategy v1.2", shorttitle = "Fast RSI str 1.2", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period") limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit") rsisrc = input(close, defval = close, title = "RSI Price") rb = input(1, defval = 1, minval = 1, maxval = 5, title = "RSI Bars") fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Fast RSI fastup = rma(max(change(rsisrc), 0), rsiperiod) fastdown = rma(-min(change(rsisrc), 0), rsiperiod) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) uplimit = 100 - limit dnlimit = limit //RSI Bars ur = fastrsi > uplimit dr = fastrsi < dnlimit uprsi = rb == 1 and ur ? 1 : rb == 2 and ur and ur[1] ? 1 : rb == 3 and ur and ur[1] and ur[2] ? 1 : rb == 4 and ur and ur[1] and ur[2] and ur[3] ? 1 : rb == 5 and ur and ur[1] and ur[2] and ur[3] and ur[4] ? 1 : 0 dnrsi = rb == 1 and dr ? 1 : rb == 2 and dr and dr[1] ? 1 : rb == 3 and dr and dr[1] and dr[2] ? 1 : rb == 4 and dr and dr[1] and dr[2] and dr[3] ? 1 : rb == 5 and dr and dr[1] and dr[2] and dr[3] and dr[4] ? 1 : 0 //Body body = abs(close - open) emabody = ema(body, 30) //Signals bar = close > open ? 1 : close < open ? -1 : 0 up = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > emabody / 4 dn = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > emabody / 4 exit = ((strategy.position_size > 0 and fastrsi > dnlimit and bar == 1) or (strategy.position_size < 0 and fastrsi < uplimit and bar == -1)) and body > emabody / 2 //Trading if up strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))) if dn strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))) if time > timestamp(toyear, tomonth, today, 00, 00) or exit strategy.close_all()