Visão geral: Esta é uma estratégia de negociação de gap RSI rápida projetada para mercados de criptomoedas.
Princípios: A estratégia utiliza duas técnicas principais: indicadores rápidos do RSI e padrões de lacuna.
Em primeiro lugar, ele calcula um indicador RSI rápido baseado em apenas 7 velas. Isso torna o RSI mais sensível para detectar rapidamente condições de sobrecompra / sobrevenda. O limite superior do RSI é definido em 70 e o limite inferior em 30. Acima de 70 é considerado sobrecomprado, enquanto abaixo de 30 é considerado sobrevendido.
Em segundo lugar, detecta padrões de gaps em gráficos de velas. Gaps referem-se a espaços vazios entre o preço de abertura atual e o preço de fechamento anterior. Gaps sinalizam alta volatilidade e reversões de tendência potenciais.
Quando um gap para baixo aparece enquanto o RSI rápido mostra uma condição de sobrevenda, vá longo.
Além disso, a estratégia utiliza outros filtros, incluindo os indicadores SMA e Min/Max, para evitar sinais falsos.
Vantagens: A maior vantagem desta estratégia é a captura de voltas ultra rápidas de sobrecompra / sobrevenda e oportunidades de reversão de lacuna. É especialmente adequado para mercados de criptomoedas altamente voláteis para aproveitar mudanças rápidas de tendência. Em comparação com o RSI regular, o RSI rápido reage muito mais rapidamente, adequando-se à natureza de alta frequência da negociação de criptomoedas. Os filtros adicionais também ajudam a remover sinais falsos e melhorar a confiabilidade.
Riscos:
Os principais riscos que a estratégia enfrenta incluem:
O RSI rápido pode ser excessivamente sensível, causando sinais falsos excessivos.
As diferenças podem ser apenas oscilações normais de preços em vez de reversões reais.
Durante períodos de baixa volatilidade, as posições podem ser mantidas inativas por períodos prolongados.
Configurações incorretas de parâmetros como período Min/Max podem levar a sinais diluídos e baixa eficiência.
Em consequência, os seguintes métodos poderão ajudar a mitigar os riscos acima referidos:
Ajustar parâmetros RSI rápido e aumentar o período RSI para torná-lo menos sensível.
Aplique stop loss dinâmico para bloquear lucros.
Otimizar a taxa de participação na estratégia. Limitar o envolvimento durante ambientes de baixa volatilidade.
Testar e otimizar continuamente os parâmetros para garantir configurações robustas.
Reforço: As principais direcções de otimização incluem:
Explore outros indicadores como MACD, KDJ combinados com lacunas para melhorar a precisão.
Construir mecanismos adaptativos de stop loss baseados na volatilidade do mercado.
Incorporar indicadores de volume como OBV para confirmar a reversão após as lacunas.
Otimizar parâmetros de filtro como período Min/Max para descobrir as melhores configurações para reduzir os falsos sinais.
Pesquise a adaptabilidade dos parâmetros em diferentes ativos criptográficos.
Estes esforços poderiam melhorar significativamente a estabilidade, a adaptabilidade e a fiabilidade da estratégia.
Conclusão: Em resumo, a estratégia de negociação de gap RSI rápida é uma abordagem eficiente projetada explicitamente para mercados de criptomoedas voláteis.
/*backtest start: 2023-10-27 00:00:00 end: 2023-11-26 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's Fast RSI Strategy v1.5", shorttitle = "Fast RSI str 1.5", overlay = true) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") usersi = input(true, defval = true, title = "Use Fast RSI Strategy") usemm = input(true, defval = true, title = "Use Min/Max Strategy") usesma = input(false, defval = false, title = "Use SMA Filter") smaperiod = input(20, defval = 20, minval = 2, maxval = 1000, title = "SMA Filter Period") fast = input(7, defval = 7, minval = 2, maxval = 50, title = "Fast RSI Period") limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit") rsisrc = input(close, defval = close, title = "RSI Price") rsibars = input(1, defval = 1, minval = 1, maxval = 20, title = "RSI Bars") mmbars = input(1, defval = 1, minval = 1, maxval = 5, title = "Min/Max Bars") showsma = input(false, defval = false, title = "Show SMA Filter") showarr = input(false, defval = false, title = "Show Arrows") 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), fast) fastdown = rma(-min(change(rsisrc), 0), fast) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) //Limits bar = close > open ? 1 : close < open ? -1 : 0 uplimit = 100 - limit dnlimit = limit //RSI Bars upsignal = fastrsi > uplimit ? 1 : 0 dnsignal = fastrsi < dnlimit ? 1 : 0 uprsi = sma(upsignal, rsibars) == 1 dnrsi = sma(dnsignal, rsibars) == 1 //Body body = abs(close - open) abody = sma(body, 10) //MinMax Bars min = min(close, open) max = max(close, open) minsignal = min < min[1] and bar == -1 and bar[1] == -1 ? 1 : 0 maxsignal = max > max[1] and bar == 1 and bar[1] == 1 ? 1 : 0 mins = sma(minsignal, mmbars) == 1 maxs = sma(maxsignal, mmbars) == 1 //SMA Filter sma = sma(close, smaperiod) colorsma = showsma ? blue : na plot(sma, color = colorsma, linewidth = 3) //Signals up1 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > abody / 5 and usersi dn1 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > abody / 5 and usersi up2 = mins and (close > sma or usesma == false) and fastrsi < 70 and usemm dn2 = maxs and (close < sma or usesma == false) and fastrsi > 30 and usemm exit = ((strategy.position_size > 0 and fastrsi > dnlimit and bar == 1) or (strategy.position_size < 0 and fastrsi < uplimit and bar == -1)) and body > abody / 2 //Arrows col = exit ? black : up1 or dn1 ? blue : up2 or dn2 ? red : na needup = up1 or up2 needdn = dn1 or dn2 needexitup = exit and strategy.position_size < 0 needexitdn = exit and strategy.position_size > 0 plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0) plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0) plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0) plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0) //Trading if up1 or up2 strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn1 or dn2 strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) or exit strategy.close_all()