Estratégia de negociação de reversão de velas baseada no canal de Fibonacci

Autora:ChaoZhang, Data: 2023-11-21 17:24:17
Tags:

img

Resumo

Esta estratégia calcula os canais de expansão de Fibonacci com base numa média móvel para identificar as principais áreas de suporte e resistência e ajudar os traders a antecipar potenciais pontos de inversão no mercado.

Estratégia lógica

O núcleo desta estratégia é calcular três canais de Keltner com base em uma média móvel, que ajudam a determinar os limites superior e inferior dos canais de Fibonacci.

Ao analisar a ação do preço, os comerciantes podem se concentrar nas Bandas de Fibonacci extremas, que são os limites superior e inferior das bandas. Se os preços se negociam fora das bandas por algumas barras e depois retornam para dentro, isso pode indicar uma reversão potencial. Este padrão sugere que o preço desviou temporariamente de sua faixa habitual e pode ser devido a uma correção.

Para melhorar a precisão do indicador de Bandas de Fibonacci, os traders geralmente usam vários prazos. Ao alinhar os sinais de curto prazo com o cenário de prazo maior, os traders podem obter uma melhor compreensão da tendência geral do mercado.

Além de identificar potenciais reversões, os traders também podem usar o indicador de Bandas de Fibonacci para determinar pontos de entrada e saída.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. Capaz de identificar as principais áreas de suporte e resistência para ajudar a prever pontos de reversão dos preços.

  2. Melhora a precisão do sinal de negociação quando combinado com análise de vários prazos.

  3. Pode identificar claramente os pontos de entrada e saída.

  4. Pode medir a força e a direção da tendência do mercado analisando a inclinação da linha média.

  5. Utiliza proporções naturais baseadas na teoria de Fibonacci para identificar níveis de preços chave.

Análise de riscos

Os principais riscos desta estratégia são:

  1. Como todos os indicadores de análise técnica, a estratégia não pode prever a ação dos preços e as reversões com 100% de precisão.

  2. As configurações incorretas ou subjetivas dos níveis de extensão de Fibonacci e dos parâmetros do canal de Keltner podem afetar a fiabilidade do sinal.

  3. Os preços podem romper as bandas de Fibonacci e continuar a correr, resultando em perdas.

  4. A análise de quadros de tempo múltiplos pode não ser sempre aplicável.

  5. Os sinais podem ser menos fiáveis em mercados de alta volatilidade ou baixa liquidez.

Para mitigar esses riscos, validar sinais com outros indicadores como RSI, ajustar parâmetros para atender a diferentes condições de mercado, usar stop losses para controlar o risco por negociação.

Orientações de otimização

Esta estratégia pode ser otimizada de várias maneiras:

  1. Testar diferentes tipos e comprimentos de parâmetros para otimizar a média móvel e os canais de Keltner para melhor adaptar as propriedades estatísticas de diferentes mercados.

  2. Teste outras áreas-chave de Fibonacci como 0,5 ou 0,786 como zonas de extensão para Bandas de Fibonacci.

  3. Combinar sinais de entrada com padrões de preços, volume ou outros indicadores para confirmação.

  4. Otimizar estratégias de stop loss para sair mais cedo quando a tendência se inverter.

  5. Optimização de regras de entrada e de saída de testes de retorno.

Conclusão

Em resumo, a estratégia baseada no canal de Fibonacci para identificar as principais áreas de suporte / resistência para a negociação de reversão de velas é uma abordagem eficaz para alavancar os princípios da proporção natural para guiar as decisões de negociação. A estratégia mostrou um desempenho robusto em várias condições de mercado.


/*backtest
start: 2023-10-21 00:00:00
end: 2023-11-20 00:00:00
period: 1h
basePeriod: 15m
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/
// © blackcat1402
//@version=5
strategy('[blackcat] L2 Fibonacci Bands', overlay=true)

// Define the moving average type and length
maType = input.string(title='MA Type', defval='WMA', options=['SMA', 'EMA', 'WMA', 'HMA'])
maLength = input.int(title='MA Length', defval=233, minval=1)
src = input(title='Data Source', defval=hl2)

// Define the Fibonacci expansion levels
fib1 = input.float(title='Fibonacci Level 1', defval=1.618, minval=0)
fib2 = input.float(title='Fibonacci Level 2', defval=2.618, minval=0)
fib3 = input.float(title='Fibonacci Level 3', defval=4.236, minval=0)

// Calculate the moving average
ma = maType == 'SMA' ? ta.sma(src, maLength) : maType == 'EMA' ? ta.ema(src, maLength) : maType == 'WMA' ? ta.wma(src, maLength) : maType == 'HMA' ? ta.hma(src, maLength) : na

// Calculate the Keltner Channels
kcMultiplier = input.int(title='Keltner Channel Multiplier', defval=2, minval=0)
kcLength = input.int(title='Keltner Channel Length', defval=89, minval=1)
kcTrueRange = ta.tr
kcAverageTrueRange = ta.sma(kcTrueRange, kcLength)
kcUpper = ma + kcMultiplier * kcAverageTrueRange
kcLower = ma - kcMultiplier * kcAverageTrueRange

// Calculate the Fibonacci Bands
fbUpper1 = ma + fib1 * (kcUpper - ma)
fbUpper2 = ma + fib2 * (kcUpper - ma)
fbUpper3 = ma + fib3 * (kcUpper - ma)
fbLower1 = ma - fib1 * (ma - kcLower)
fbLower2 = ma - fib2 * (ma - kcLower)
fbLower3 = ma - fib3 * (ma - kcLower)

// Plot the Fibonacci Bands
plot(ma, title='Midband', color=color.new(color.blue, 0), linewidth=2)
plot(fbUpper1, title='Upper Band 1', color=color.new(color.green, 0), linewidth=1)
plot(fbUpper2, title='Upper Band 2', color=color.new(color.green, 0), linewidth=1)
plot(fbUpper3, title='Upper Band 3', color=color.new(color.green, 0), linewidth=1)
plot(fbLower1, title='Lower Band 1', color=color.new(color.red, 0), linewidth=1)
plot(fbLower2, title='Lower Band 2', color=color.new(color.red, 0), linewidth=1)
plot(fbLower3, title='Lower Band 3', color=color.new(color.red, 0), linewidth=1)

// Define the entry and exit conditions
longCondition = ta.crossover(src, fbUpper3) and ta.rsi(src, 14) > 60
shortCondition = ta.crossunder(src, fbLower3) and ta.rsi(src, 14) < 40
exitCondition = ta.crossover(src, ma) or ta.crossunder(src, ma)

// Execute the trades
if longCondition
    strategy.entry('Long', strategy.long)
if shortCondition
    strategy.entry('Short', strategy.short)
if exitCondition
    strategy.close_all()



Mais.