Esta é uma estratégia de negociação de curto prazo baseada no indicador Relative Strength Index (RSI). Utiliza o RSI para identificar níveis de sobrecompra e sobrevenda e combina filtragem de velas para evitar sinais falsos, entrando em posições longas e curtas em pontos de reversão.
Em primeiro lugar, o indicador RSI é calculado com base no preço de fechamento com um período definido como 7. O nível de sobrecompra é definido em 70 e o nível de sobrevenda é definido em 30.
Para filtrar sinais falsos, o tamanho do corpo do candelabro precisa se expandir para 1-3 vezes do intervalo normal quando um sinal de negociação é acionado.
Quando o RSI permanece abaixo de 30 por 5 barras consecutivas, um sinal longo é gerado. Se a próxima vela mostrar um corpo de alta expandido mais de 4 vezes, uma posição longa será executada. Quando o RSI permanece acima de 70 por 5 barras consecutivas, um sinal curto é gerado. Se a próxima vela mostrar um corpo de baixa expandido mais de 4 vezes, uma posição curta será executada.
Para bloquear os lucros, as posições serão fechadas quando a direção atual da vela for consistente com a direção da posição e o corpo se expandir 2 vezes.
O RSI é bom em identificar condições de sobrecompra e sobrevenda. Quando uma ação atinge níveis extremos, há alta probabilidade de uma retração, e níveis extremos geralmente implicam uma reversão iminente. Esta estratégia é capaz de capturar tais oportunidades em pontos de virada.
Esta estratégia incorpora a expansão do corpo do candelabro como um filtro, entrando em posições quando um corpo ampliado aparece em torno de pontos de reversão, evitando batidas de mercados caóticos.
Requerendo 1-5 barras RSI consecutivas em zona de sobrecompra ou sobrevenda atua como uma confirmação, evitando sinais falsos de barras aberrantes ocasionais e melhorando a confiabilidade do sinal.
O multiplicador de expansão do corpo pode ser ajustado para diferentes produtos. Para estoques com grandes oscilações, os critérios podem ser relaxados, enquanto para estoques com intervalos estreitos, ele pode ser apertado. Isso permite ajustes flexíveis para diferentes produtos de negociação.
As configurações de parâmetros têm algumas limitações inerentes. Produtos diferentes e períodos de tempo podem exigir ajuste de parâmetros. Usar configurações fixas pode levar a problemas de sobreajuste.
O RSI em si tem algumas propriedades de atraso. combinando com a expansão do corpo sai posições prematuramente. portanto, a precisão de capturar fundos exatos ou tops geralmente não é muito alta.
Em mercados variados, o RSI pode desencadear sinais de compra e venda frequentes, resultando em longos períodos de retenção.
Como estratégia de negociação a curto prazo, devem ser combinadas estratégias de dimensionamento de posição adequadas, tais como movimentação de stop loss, take profit, etc., para garantir os lucros e controlar os riscos.
Diferentes combinações de parâmetros do RSI podem ser testadas, como período, níveis de sobrecompra/supervenda e filtros de velas, para encontrar parâmetros otimizados para diferentes produtos.
Movendo ou percentual stop loss pode ser adicionado para bloquear os lucros. ou definir stop loss com base em valores ATR ou canais Donchain etc.
As condições baseadas no MACD, KDJ e outros indicadores podem ser adicionadas para evitar sinais errados de breakouts inválidos.
Usar médias móveis para medir o viés da tendência. Considere apenas os sinais de negociação que se alinham com a tendência. A estratégia pode ser interrompida durante os mercados de faixa. Os indicadores de força da tendência também podem ser usados como filtros.
Em resumo, esta estratégia de reversão do RSI é uma estratégia comercial típica de curto prazo com seus próprios prós e contras. A principal vantagem reside na captura de retrações após extremos, enquanto o principal risco vem de baixa precisão do sinal e longos períodos de retenção em intervalos. Podemos melhorar a estratégia ajustando parâmetros, adicionando filtros, otimizando paradas, etc., para nos adaptar a mais produtos e condições de mercado e alcançar resultados mais estáveis.
/*backtest start: 2022-11-08 00:00:00 end: 2023-11-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "Noro's FRSI Strategy v1.21", shorttitle = "FRSI str 1.21", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_type = strategy.commission.percent, commission_value = 0.0) //Settings 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") sps = 0 fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2038, defval = 2018, 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)) //Limits bar = close > open ? 1 : close < open ? -1 : 0 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 up = bar == -1 and sps == 0 and dnrsi and body > emabody / 4 dn = bar == 1 and sps == 0 and uprsi and body > emabody / 4 exit = bar == 1 and fastrsi > dnlimit and body > emabody / 2 //Trading if up strategy.entry("Long", strategy.long, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))) sps := 1 if time > timestamp(toyear, tomonth, today, 00, 00) or exit strategy.close_all() sps := 0