O recurso está a ser carregado... Carregamento...

Tendência modificada do índice de força relativa na sequência da estratégia

Autora:ChaoZhang, Data: 2024-03-29
Tags:

img

Resumo

Esta estratégia capta tendências de mercado com base no Índice de Força Relativa Modificado (RSI Modificado). A ideia principal da estratégia é usar os sinais de cruzamento e os sinais de histograma do indicador RSI Modificado para determinar a tendência do mercado e fazer negociações de acordo com a direção da tendência.

Princípio da estratégia

  1. Calcular a EMA do preço como entrada para o RSI modificado
  2. Calcular o indicador RSI modificado
  3. Calcular a EMA do RSI modificado como linha de sinal
  4. Calcular a diferença entre o RSI modificado e a linha de sinal como o histograma
  5. Quando o RSI modificado cruzar acima da linha de sinal e o histograma for maior que 0, gerar um sinal de compra
  6. Quando o RSI modificado cruzar abaixo da linha de sinal e o histograma for inferior a 0, gerar um sinal de venda

Vantagens da estratégia

  1. O indicador RSI modificado pode capturar melhor as tendências em comparação com o indicador RSI tradicional.
  2. Combinando os sinais de cruzamento e sinais de histograma do RSI modificado pode efetivamente filtrar sinais falsos
  3. Os parâmetros são ajustáveis e aplicáveis a diferentes mercados e prazos
  4. O programa é conciso e computacionalmente eficiente

Riscos estratégicos

  1. O indicador RSI modificado é propenso a gerar falsos sinais em mercados de intervalo
  2. A captura dos pontos de virada da tendência pode ter um atraso
  3. Um único indicador é facilmente afectado pelo ruído dos preços

Orientações para a otimização da estratégia

  1. Pode ser combinado com outros indicadores de tendência, tais como médias móveis, para melhorar a fiabilidade do sinal
  2. Um módulo de stop-loss e take-profit pode ser adicionado para controlar o risco de uma única transação
  3. Os parâmetros podem ser otimizados com base nas diferentes características do mercado
  4. Um módulo de gestão de posições pode ser adicionado para ajustar dinamicamente as posições

Resumo

Esta estratégia utiliza as características do indicador RSI modificado para construir um sistema de negociação a partir da perspectiva da tendência seguinte. O indicador RSI modificado supera alguns dos defeitos do indicador RSI tradicional e tem uma capacidade de captura de tendência relativamente forte. No entanto, as estratégias baseadas em um único indicador muitas vezes têm limitações e precisam ser melhoradas em combinação com outros meios técnicos.


/*backtest
start: 2023-03-23 00:00:00
end: 2024-03-28 00:00:00
period: 1d
basePeriod: 1h
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/
// © YogirajDange

//@version=5


// Verical lines


// // Define the times
// t1 = timestamp(year, month, dayofmonth, 09, 15) // 9:15
// t2 = timestamp(year, month, dayofmonth, 11, 15) // 11:15
// t3 = timestamp(year, month, dayofmonth, 13, 15) // 1:15
// t4 = timestamp(year, month, dayofmonth, 15, 25) // 3:25

// // Check if the current bar is on the current day
// is_today = (year(time) == year(timenow)) and (month(time) == month(timenow)) and (dayofmonth(time) == dayofmonth(timenow))

// // Draw a vertical line at each time
// if is_today and (time == t1 or time == t2 or time == t3 or time == t4)
//     line.new(x1 = bar_index, y1 = low, x2 = bar_index, y2 = high, extend = extend.both, color=color.red, width = 1)

strategy('Modified RSI')
col_grow_above = input(#02ac11, "Above   Grow", group="Histogram", inline="Above")
col_fall_above = input(#6ee47d, "Fall", group="Histogram", inline="Above")
col_grow_below = input(#e5939b, "Below Grow", group="Histogram", inline="Below")
col_fall_below = input(#dd0000, "Fall", group="Histogram", inline="Below")
EMA_length = input.int(13, 'Price_EMA', minval=1)
RSI_length = input.int(14, 'RSI_Period', minval=1)
Avg_length = input.int(5, 'RSI_Avg_EMA', minval=1)
fastMA = ta.ema(close, EMA_length)
modrsi = ta.rsi(fastMA, RSI_length)
RSIAVG = ta.ema(modrsi, Avg_length)
plot(modrsi, color=color.rgb(38, 0, 255), linewidth=2)
plot(RSIAVG, color=color.rgb(247, 0, 0))
rsiUpperBand = hline(60, 'RSI Upper Band', color=#099b0e)
//hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(40, 'RSI Lower Band', color=#e90101)

RSI_hist = modrsi - RSIAVG

//plot(RSI_hist,"RSI_Histogram", color = #c201e9, style = plot.style_columns,linewidth= 5)

plot(RSI_hist, title="RSI_Histogram", style=plot.style_columns, color=(RSI_hist>=0 ? (RSI_hist[1] < RSI_hist ? col_grow_above : col_fall_above) : (RSI_hist[1] < RSI_hist ? col_grow_below : col_fall_below)))


/////// Moving Averages 20 50 EMA

fast_ma = input.int(20, minval=2, title="Fast_EMA")
slow_ma = input.int(50, minval=2, title="Slow_EMA")

src = input.source(close, title="Source")

out = ta.ema(src, fast_ma)
out1 = ta.ema(src, slow_ma)

//plot(out, title="20 EMA", color=color.rgb(117, 71, 247), linewidth = 2)
//plot(out1, title="50 EMA", color=color.rgb(0, 0, 0), linewidth = 2)


longCondition = ((ta.crossover(modrsi, RSIAVG)) and (RSI_hist > 0))
if longCondition
    strategy.entry('B', strategy.long)

shortCondition = ((ta.crossunder(modrsi, RSIAVG)) and (RSI_hist < 0))
if shortCondition
    strategy.entry('S', strategy.short)



Mais.