
A estratégia é baseada na observação simultânea de três indicadores RSI de diferentes períodos, para determinar se o mercado atingiu a zona de limite de sobrecompra e sobrevenda, emitindo assim sinais de compra e venda. A principal determinação da tendência do mercado é realizada pela observação de uma combinação de diferentes indicadores de períodos.
A estratégia utiliza os indicadores RSI de 2 ciclos, 7 ciclos e 14 ciclos ao mesmo tempo. Quando três indicadores RSI exibem sinais de sobrevenda ou sobrevenda ao mesmo tempo, um sinal de negociação é emitido.
Especificamente, quando o RSI de 2 ciclos é menor que 10, o RSI de 7 ciclos é menor que 20, o RSI de 14 ciclos é menor que 30, o mercado é considerado um estado de sobrevenda e emite um sinal de compra. Quando o RSI de 2 ciclos é maior que 90, o RSI de 7 ciclos é maior que 80, o RSI de 14 ciclos é maior que 70, o mercado é considerado um estado de sobrevenda e emite um sinal de venda.
O código usa um parâmetro de precisão para ajustar os limites de arbitragem do RSI, assumindo que, quanto menor o valor 3, mais rigoroso será o julgamento de arbitragem. A estratégia.long e a estratégia.short são usadas para controlar se a negociação é feita na direção correspondente.
Quando um sinal de compra ou venda é emitido, se o preço se inverter e ultrapassar o preço de abertura do dia, a posição atual é liquidada e um stop loss de acompanhamento de tendência é executado.
A combinação de indicadores de RSI com períodos múltiplos permite uma avaliação mais precisa da situação de sobrecompra e sobrevenda do mercado, filtrando os sinais falsos.
A estratégia pode ser ajustada de acordo com a sensibilidade do mercado.
Implementação de tracking de stop loss para o preço de abertura, que permite a parada de perdas em tempo hábil e o bloqueio de lucros.
O indicador RSI é propenso a desvios e não é muito eficaz para avaliar a inversão de tendências no mercado.
A configuração do RSI precisa ser ajustada para situações de alta volatilidade, caso contrário, a perda ocorre com frequência.
O RSI triplo é menos frequentemente desencadeado simultaneamente, podendo perder melhores oportunidades de negociação.
Os parâmetros para o julgamento de sobrecompra e sobrevenda devem ser adequadamente ajustados, e é recomendado testar a eficácia dos dados em diferentes mercados.
Pode-se considerar a inclusão de outros indicadores para confirmação, como linha de Brin, KDJ, etc., para evitar que o RSI se desvie.
Os parâmetros do RSI podem ser automaticamente otimizados para diferentes tipos de situações.
Outras condições de saída de parada de perda podem ser testadas, como parada de ATR, etc.
Pode-se adicionar condições de filtragem de períodos de negociação para evitar períodos de tempo inadequados.
A estratégia utiliza a combinação de indicadores RSI de vários períodos para determinar as áreas de sobrevenda e sobrevenda, implementando o rastreamento de tendências. A vantagem é que a precisão do julgamento pode ser melhorada e os prejuízos podem ser interrompidos em tempo; A desvantagem é que é fácil perder o formulário e os indicadores RSI são fáceis de errar.
/*backtest
start: 2023-10-25 00:00:00
end: 2023-10-28 10:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title = "Noro's Triple RSI Top/Bottom", shorttitle = "3RSI Top/Bottom", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
accuracy = input(3, defval = 3, minval = 1, maxval = 10, title = "accuracy")
fromyear = input(1900, defval = 1900, 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")
//RSI-2
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
//RSI-7
middleup = rma(max(change(close), 0), 7)
middledown = rma(-min(change(close), 0), 7)
middlersi = middledown == 0 ? 100 : middleup == 0 ? 0 : 100 - (100 / (1 + middleup / middledown))
//RSI-14
slowup = rma(max(change(close), 0), 14)
slowdown = rma(-min(change(close), 0), 14)
slowrsi = slowdown == 0 ? 100 : slowup == 0 ? 0 : 100 - (100 / (1 + slowup / slowdown))
//Signals
acc = 10 - accuracy
up = fastrsi < (5 + acc) and middlersi < (10 + acc * 2) and slowrsi < (15 + acc * 3)
dn = fastrsi > (95 - acc) and middlersi > (90 - acc * 2) and slowrsi > (85 - acc * 3)
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size > 0 and close > open)
//Trading
if up
if strategy.position_size < 0
strategy.close_all()
strategy.entry("Bottom", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if dn
if strategy.position_size > 0
strategy.close_all()
strategy.entry("Top", 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()