Estratégia de filtro RSI sem desvio da nuvem Ichimoku


Data de criação: 2023-11-07 15:31:06 última modificação: 2023-11-07 15:31:06
cópia: 0 Cliques: 798
1
focar em
1621
Seguidores

Estratégia de filtro RSI sem desvio da nuvem Ichimoku

Visão geral

Esta é uma estratégia de acompanhamento de tendências que utiliza um indicador de nuvem de equilíbrio de primeira vista para determinar a tendência e, em combinação com o indicador RSI para filtrar. Esta estratégia ignora os desvios observados e consegue capturar as mudanças de tendência em tempo hábil e filtrar as falsas rupturas através do indicador RSI para controlar o risco de negociação.

Princípio da estratégia

A estratégia baseia-se principalmente na nuvem de equilíbrio primário (Ichimoku Cloud) para determinar a direção da tendência. A nuvem de equilíbrio primário é composta por uma linha de conversão de Coulomb, uma linha de referência, uma linha de orientação 1, uma linha de orientação 2 e uma linha de atraso. A estratégia usa uma nuvem de equilíbrio primário sem desvio, ou seja, os segmentos de linha de conversão, linha de referência e outros usam valores futuros, evitando o atraso no julgamento da tendência causado pelo desvio observado.

A estratégia julga primeiro se o preço atravessou a linha da nuvem, se a linha de atraso atravessou a linha da nuvem, considera-se início de uma tendência ascendente; se a linha de atraso atravessou a linha da nuvem, considera-se início de uma tendência descendente. Após o início da tendência, a estratégia continua a acompanhar a relação do preço com a linha da nuvem, para determinar a direção da tendência contínua. Quando a linha de atraso permanece acima da linha da nuvem, considera-se que está em uma tendência ascendente; ao contrário, considera-se que está em uma tendência descendente.

Além de julgar a tendência, a estratégia também gera um sinal de compra quando a linha de conversão e a linha de referência se cruzam em ouro, e um sinal de venda quando a linha de referência se cruza. Esses sinais de negociação só são adotados quando precisam estar de acordo com a direção da tendência. Por exemplo, um cruzamento de ouro na linha de conversão que atravessa a linha de referência só será recebido em uma tendência ascendente.

Finalmente, a estratégia também introduziu o indicador RSI para filtrar os sinais. Somente quando o RSI estiver abaixo da zona de supera venda, será recebido o sinal de compra; somente quando o RSI estiver acima da zona de supera compra, será recebido o sinal de venda. Isso pode filtrar, em parte, os sinais errados causados pela falsa ruptura.

Análise de vantagens

  • Utilizando um indicador de nuvem de equilíbrio de um só olho sem desvio, é possível determinar a mudança de tendência em tempo real, sem perder o momento de reversão
  • A análise de múltiplos fatores pode filtrar os sinais de erro de falhas
  • A introdução do RSI pode evitar a entrada desejável em casos de sobrecompra e sobrevenda.
  • A estratégia foi otimizada para levar em consideração os dados futuros e também para obter melhores resultados no disco.

Análise de Riscos

  • Considerando que os dados futuros podem gerar erros, o código precisa ser otimizado para ser usado no disco rígido.
  • Os indicadores de nuvens de equilíbrio são sensíveis aos parâmetros, e diferentes variedades precisam ajustar os parâmetros para obter o melhor resultado.
  • É melhor negociar uma variedade isolada, e considerar a correlação entre variedades para negociar várias variedades ao mesmo tempo.
  • Mais regras para julgar tendências, que necessitam de um ciclo de retrospectiva suficiente para verificar o efeito

Pode-se encontrar a melhor combinação de parâmetros através da otimização de parâmetros. Em um mercado real, pode-se considerar apenas a negociação de uma variedade específica ou reduzir o número de posições abertas para controlar o risco. Também pode-se introduzir uma estratégia de parada de perda para limitar a perda individual.

Direção de otimização

A estratégia pode ser melhorada em alguns aspectos:

  1. Otimização dos parâmetros da nuvem de equilíbrio de primeira vista para encontrar a melhor combinação de parâmetros para diferentes variedades de transação

  2. Aumentar as estratégias de stop loss para manter as perdas individuais dentro de limites aceitáveis

  3. Aumentar a estratégia de gestão de posições para gerir o risco global por meio de ajustamento preciso do tamanho das posições

  4. A introdução de mais indicadores para um julgamento integrado, como indicadores de taxa de flutuação, volume de transação, etc., para melhorar a precisão do sinal

  5. Optimizar a escolha do tempo de entrada, que pode ser adotado por meio de confirmação ou retorno de entrada

  6. Optimização de passo a passo, seleção dos melhores parâmetros de ciclo da faixa de betão de acordo com as características das diferentes variedades

Resumir

A estratégia é uma estratégia de acompanhamento de tendências mais robusta. Ela usa o indicador de nuvem de equilíbrio para determinar a direção da tendência, depois combina o cruzamento da linha de conversão com a linha de referência para emitir o sinal de negociação, e finalmente ultrapassa a brecha falsa através do indicador RSI. O espaço para otimização da estratégia é grande, e os melhores resultados podem ser obtidos através do ajuste de parâmetros, da estratégia de parada de perdas e do gerenciamento de posição.

Código-fonte da estratégia
/*backtest
start: 2022-10-31 00:00:00
end: 2023-02-20 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/
// © KryptoNight

//@version=4
// comment/uncomment Study/Strategy to easily switch modes
// study("Ichimoku Kinko Hyo Cloud - no offset - no repaint - RSI filter - alerts", shorttitle="IchiCloud + RSI - alerts", overlay=true)
// ============================================================================== Strategy mode - uncomment to activate
strategy("Ichimoku Kinko Hyo Cloud - no offset - no repaint - RSI filter - strategy", shorttitle="IchiCloud + RSI - Strategy Tester Mode", overlay=true, pyramiding = 0,
  currency = currency.USD, initial_capital = 10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100,
  calc_on_every_tick = true, calc_on_order_fills = true, commission_type = strategy.commission.percent, commission_value = 0.075)
// ==============================================================================

// ------------------------------------------------------------------------------

ichiCloud_offset   = input(false, title="Standard Ichimoku Cloud")                  // with the visual offset
ichiCloud_noOffset = input(true,  title="Ichimoku Cloud - no offset - no repaint")  // without the visual offset

conversion_prd = input(9, minval=1, title="Conversion Line Period - Tenkan-Sen")
baseline_prd   = input(26, minval=1, title="Base Line Period - Kijun-Sen")
baselineA_prd  = input(52, minval=1, title="Base Line Period - Kijun-Sen (auxiliary)")
leadingSpan_2prd = input(52, minval=1, title="Lagging Span 2 Periods - Senkou Span B")
displacement = input(26, minval=0, title="Displacement: (-) Chikou Span; (+) Senkou Span A")
extra_bars = input(1, minval=0, title="Displacement: additional bars")
laggingSpan_src = input(close, title="Lagging Span price source - Chikou-Span")

donchian(len) => avg(lowest(len), highest(len))
displ = displacement-extra_bars
// ------------------------------------------------------------------------------
// OFFSET:
conversion = donchian(conversion_prd)   // Conversion Line - Tenkan-Sen (9 Period)
baseline  = donchian(baseline_prd)      // Base Line - Kijun-Sen (26 Period)
baselineA = donchian(baselineA_prd)     // Base Line Period - Kijun-Sen (auxiliary)
leadingSpanA = avg(conversion, baseline)
leadingSpanB = donchian(leadingSpan_2prd)
laggingSpan = laggingSpan_src

// Color - bullish, bearish
col_cloud = leadingSpanA>=leadingSpanB ? color.green : color.red

// Cloud Lines
spanA = plot(ichiCloud_offset? leadingSpanA : na, offset=displ, title="Offset: Lead Line 1 - Senkou Span A cloud", color=color.green)
spanB = plot(ichiCloud_offset? leadingSpanB : na, offset=displ, title="Offset: Lead Line 2 - Senkou Span B cloud", color=color.red)
fill(spanA, spanB, color=col_cloud, transp=80, title="Offset: Ichimoku Cloud - Leading Span 1 & 2 based coloring")

// Other Lines
conversion_p = plot(ichiCloud_offset? conversion : na, title="Offset: Conversion Line - Tenkan-Sen", color=#0496ff)
standard_p = plot(ichiCloud_offset? baseline : na, title="Offset: Base Line - Kijun-Sen", color=#991515)
standardA_p = plot(ichiCloud_offset? baselineA : na, title="Offset: Base Line - Kijun-Sen (auxiliary)", color=color.teal)
lagging_Span_p = plot(ichiCloud_offset? laggingSpan : na, offset=-displ, title="Offset: Chikou Span (Lagging Span)", color=#459915)

// ------------------------------------------------------------------------------
// NO OFFSET:
conversion_noOffset = conversion[displ] // Conversion Line - Tenkan-Sen (9 Period)
baseline_noOffset  = baseline[displ]    // Base Line - Kijun-Sen (26 Period)
baselineA_noOffset = baselineA[displ]   // Base Line Period - Kijun-Sen (auxiliary)
leadingSpanA_noOffset = leadingSpanA[displ*2]
leadingSpanB_noOffset = leadingSpanB[displ*2]
laggingSpan_noOffset = laggingSpan[0]

// Color - bullish, bearish
col_cloud_noOffset = leadingSpanA_noOffset>=leadingSpanB_noOffset ? color.green : color.red

// Cloud Lines
spanA_noOffset = plot(ichiCloud_noOffset? leadingSpanA_noOffset : na, title="No offset: Lead Line 1 - Senkou Span A cloud", color=color.green, transp=0)
spanB_noOffset = plot(ichiCloud_noOffset? leadingSpanB_noOffset : na, title="No offset: Lead Line 2 - Senkou Span B cloud", color=color.red, transp=0)
fill(spanA_noOffset, spanB_noOffset, color=col_cloud_noOffset, transp=80, title="No offset: Ichimoku Cloud - Leading Span 1 & 2 based coloring")

// Other Lines
conversion_p_noOffset = plot(ichiCloud_noOffset? conversion_noOffset : na, title="No offset: Conversion Line - Tenkan-Sen", color=#0496ff, transp=0)
baseline_p_noOffset = plot(ichiCloud_noOffset? baseline_noOffset : na, title="No offset: Base Line - Kijun-Sen", color=#991515, transp=0)
baselineA_p_noOffset = plot(ichiCloud_noOffset? baselineA_noOffset : na, title="No offset: Base Line - Kijun-Sen (auxiliary)", color=color.teal, transp=0)
laggingSpan_p_noOffset = plot(ichiCloud_noOffset? laggingSpan_noOffset : na, title="No offset: Chikou Span (Lagging Span)", color=#459915, transp=0)

// ==============================================================================
// Conditions & Alerts (based on the lines without offset)

maxC = max(leadingSpanA_noOffset,leadingSpanB_noOffset)
minC = min(leadingSpanA_noOffset,leadingSpanB_noOffset)

// Trend start signals: crosses between Chikou Span (Lagging Span) and the Cloud (Senkou Span A, Senkou Span B)
uptrend_start   = crossover(laggingSpan_noOffset,maxC)
downtrend_start = crossunder(laggingSpan_noOffset,minC)

// Trends
uptrend   = laggingSpan_noOffset>maxC // Above Cloud
downtrend = laggingSpan_noOffset<minC // Below Cloud

// No trend: choppy trading - the price is in transition
notrend = maxC>=laggingSpan_noOffset and laggingSpan_noOffset>=minC

// Confirmations
uptrend_confirm   = crossover(leadingSpanA_noOffset,leadingSpanB_noOffset)
downtrend_confirm = crossunder(leadingSpanA_noOffset,leadingSpanB_noOffset)

// Signals - crosses between Conversion Line (Tenkan-Sen) and Base Line (Kijun-Sen)
bullish_signal = crossover(conversion_noOffset,baseline_noOffset)
bearish_signal = crossunder(conversion_noOffset,baseline_noOffset)

// Various alerts
alertcondition(uptrend_start,   title="Uptrend Started",   message="Uptrend Started")
alertcondition(downtrend_start, title="Downtrend Started", message="Downtrend Started")

alertcondition(uptrend_confirm,   title="Uptrend Confirmed",   message="Uptrend Confirmed")
alertcondition(downtrend_confirm, title="Downtrend Confirmed", message="Downtrend Confirmed")

alertcondition(bullish_signal, title="Buy Signal",  message="Buy Signal")
alertcondition(bearish_signal, title="Sell Signal", message="Sell Signal")

rsi_OBlevel = input(50, title="RSI Filter: Overbought level (0 = off)")
rsi_OSlevel = input(100,title="RSI Filter: Oversold level (100 = off)")
rsi_len = input(14,title="RSI Length")
rsi_src = input(close,title="RSI Price source")
rsi = rsi(rsi_src,rsi_len)

// Strategy -------------------------------
long_signal  = bullish_signal and uptrend   and rsi<=rsi_OSlevel // breakout filtered by the rsi
exit_long    = bearish_signal and uptrend
short_signal = bearish_signal and downtrend and rsi>=rsi_OBlevel // breakout filtered by the rsi
exit_short   = bullish_signal and downtrend

// Strategy alerts
alertcondition(long_signal, title="Long Signal - Uptrend",      message="Long Signal - Uptrend")
alertcondition(exit_long,   title="Long Exit Signal - Uptrend", message="Long Exit Signal - Uptrend")

alertcondition(short_signal, title="Long Signal - Downtrend",       message="Long Signal - Downtrend")
alertcondition(exit_short,   title="Short Exit Signal - Downtrend", message="Short Exit Signal - Downtrend")

// Plot areas for trend and transition
color_trend = uptrend? #00FF00 : downtrend? #FF0000 : notrend? color.new(#FFFFFF, 50) : na
fill(spanA_noOffset, spanB_noOffset, color=color_trend, transp=90, title="No offset: Ichimoku Cloud - Lagging Span & Cloud based coloring")

plotshape(ichiCloud_noOffset?uptrend_start:na, title="No offset: Uptrend Started", color=color.green, style=shape.circle, location=location.belowbar, size=size.tiny, text="Up")
plotshape(ichiCloud_noOffset?downtrend_start:na, title="No offset: Downtrend Started", color=color.red, style=shape.circle,location=location.abovebar, size=size.tiny, text="Down")

plotshape(ichiCloud_noOffset?uptrend_confirm:na, title="No offset: Uptrend Confirmed", color=color.green, style=shape.circle, location=location.belowbar, size=size.small, text="Confirm Up")
plotshape(ichiCloud_noOffset?downtrend_confirm:na, title="No offset: Downtrend Confirmed", color=color.red, style=shape.circle, location=location.abovebar, size=size.small, text="Confirm Down")

plotshape(ichiCloud_noOffset?long_signal:na, title="No offset: Long Signal", color=#00FF00, style=shape.triangleup, location=location.belowbar, size=size.small, text="Long")
plotshape(ichiCloud_noOffset?exit_long:na, title="No offset: Exit Long Signal", color=color.fuchsia, style=shape.triangledown, location=location.abovebar, size=size.small, text="Exit long")

plotshape(ichiCloud_noOffset?short_signal:na, title="No offset: Short Signal", color=#FF0000, style=shape.triangledown, location=location.abovebar, size=size.small, text="Short")
plotshape(ichiCloud_noOffset?exit_short:na, title="No offset: Exit Short Signal", color=color.fuchsia, style=shape.triangleup, location=location.belowbar, size=size.small, text="Exit short")

// ============================================================================== Strategy Component - uncomment to activate
if (long_signal)
    strategy.entry("Long",strategy.long)
if (exit_long)
    strategy.close("Long")
if (short_signal)
    strategy.entry("Short",strategy.short)
if (exit_short)
    strategy.close("Short")
// ==============================================================================