Tendência de Retração Dinâmica de Fibonacci Seguindo Estratégia Quantitativa

FIBONACCI RETRACEMENT TA RSI MA
Data de criação: 2025-05-26 16:12:41 última modificação: 2025-05-26 16:12:41
cópia: 0 Cliques: 309
2
focar em
319
Seguidores

Tendência de Retração Dinâmica de Fibonacci Seguindo Estratégia Quantitativa Tendência de Retração Dinâmica de Fibonacci Seguindo Estratégia Quantitativa

Visão geral

A estratégia de quantificação do rastreamento de tendências de reversão dinâmica de Fibonacci é um sistema de negociação de análise técnica baseado em níveis de reversão de Fibonacci, projetado especificamente para identificar potenciais sinais de compra e venda em mercados em tendência. A estratégia usa os níveis de reversão de Fibonacci calculados entre os altos e baixos dos preços (23,6%, 38,2%, 50% e 61,8%), usando esses níveis como potenciais áreas de suporte e resistência, gerando sinais de negociação quando os preços interagem com esses níveis críticos. O principal benefício da estratégia reside na sua flexibilidade, permitindo que os comerciantes escolham a direção da tendência (“de cima para baixo” ou “de baixo para cima”) de acordo com as condições do mercado e definam os níveis de entrada, parâmetros de parada e de perda, adaptando-se assim a diferentes ambientes de risco e preferências de mercado.

Princípio da estratégia

O princípio de funcionamento da estratégia gira em torno da aplicação dos números de Fibonacci, uma relação matemática amplamente utilizada nos mercados financeiros. Os passos concretos para sua implementação são os seguintes:

  1. Análise de retrocesso: a estratégia identifica primeiro o preço máximo e o preço mínimo dentro do período de retorno definido pelo usuário (default 144 ciclos), como base para o cálculo do nível de retração de Fibonacci.

  2. Escolha de direção: Dependendo da direção de Fibonacci escolhida pelo usuário ((“de cima para baixo” ou “de baixo para cima”), a estratégia usa um método de cálculo diferente. Se você escolher “de cima para baixo”, o ponto mais alto será o nível de 0% e o ponto mais baixo será o nível de 100%; se você escolher “de baixo para cima”, o contrário.

  3. Cálculo horizontal: com base nos altos e baixos identificados e nas direções escolhidas, a estratégia calcula quatro níveis de retração Fibonacci: 23,6%, 38,2%, 50% e 61,8%

  4. Geração de sinal:

    • Sinais de compra: são acionados quando o preço atravessa o nível de Fibonacci escolhido pelo usuário (default 61.8%) e o preço de fechamento é superior a esse nível.
    • Sinais de venda: são acionados quando o preço atravessa o nível de Fibonacci escolhido pelo usuário (o padrão é de 38,2%) e o preço de fechamento está abaixo desse nível.
  5. Gerenciamento de risco: a estratégia configura automaticamente o stop e o stop loss ao acionar o sinal de negociação, o stop padrão é de 24 pontos e o stop é de 4 pontos, com a conversão de preço por 10 vezes via syminfo.mintick.

  6. Visualização: A estratégia traça todos os níveis de Fibonacci, máximos e mínimos, bem como os sinais de compra e venda em um gráfico, fornecendo uma assistência intuitiva à análise visual.

Vantagens estratégicas

  1. Adaptabilidade: A estratégia permite que os usuários escolham a direção de Fibonacci de acordo com a tendência atual do mercado, podendo ser efetivamente aplicada em tendências de alta ou baixa, aumentando a flexibilidade e a adaptabilidade da estratégia.

  2. Parâmetros personalizáveis: O usuário pode personalizar o nível de entrada, o ciclo de retorno, os parâmetros de parada e parada, ajustando-os de acordo com o estilo de negociação e as preferências de risco individuais, aumentando a personalização da estratégia.

  3. Base técnica sólida: a estratégia é baseada na reconhecida teoria da retração de Fibonacci, que tem uma base teórica sólida e testes práticos no campo da análise técnica, aumentando a confiabilidade da estratégia.

  4. Ajuda à clareza visual: Ao mostrar os níveis de Fibonacci, os máximos e mínimos e os sinais de negociação de forma intuitiva no gráfico, os comerciantes podem entender mais facilmente a estrutura do mercado e a lógica da estratégia, auxiliando o processo de decisão.

  5. Integração do gerenciamento de risco: mecanismo de stop loss incorporado na estratégia, configuração automática de parâmetros de risco em cada transação, ajuda a manter regras consistentes de gerenciamento de risco e protege a segurança dos fundos.

  6. Computação dinâmica em tempo real: a estratégia atualiza constantemente os níveis de Fibonacci, garantindo que a computação seja sempre baseada nos altos e baixos mais recentes, o que torna a análise sempre relevante para as condições atuais do mercado.

Risco estratégico

  1. Sensibilidade ao ciclo de retrospectiva: a estratégia depende do ciclo de retrospectiva para determinar os altos e baixos, e diferentes ciclos de retrospectiva podem levar a resultados significativamente diferentes. Ciclos muito curtos podem causar muitos sinais de ruído, enquanto ciclos muito longos podem perder importantes pontos de inflexão do mercado.

  2. Falsos sinais em mercados de turbulência: Em mercados de travessia ou de turbulência, os preços podem frequentemente atravessar os níveis de Fibonacci, gerando excesso de sinais de negociação, aumentando os custos de negociação e podendo causar perdas contínuas. Solução: Considere a adição de condições de filtragem adicionais, como indicadores de confirmação de tendência (como a média móvel ou ADX) para reduzir os falsos sinais.

  3. Limitações do Stop Loss de Ponto Fixo: A estratégia de usar um Stop Loss de Ponto Fixo como um Stop Loss pode não ser adequada para todas as condições de mercado, especialmente quando a volatilidade muda. Método de Solução: Considere o uso de um Stop Loss Dinâmico baseado no ATR (Average True Range) para se adequar à volatilidade do mercado atual.

  4. Dependência de um único indicador: baseia-se apenas em retrações de Fibonacci para tomar decisões de negociação, ignorando outros fatores e indicadores importantes do mercado, o que pode levar a uma qualidade de sinal insuficiente. Solução: Combine a estratégia com outros indicadores técnicos ou análise de comportamento de preços, construindo um sistema de confirmação múltipla.

  5. Retardo na identificação de mudanças de tendência: a estratégia pode ser mais lenta em reagir a mudanças de tendência, uma vez que se baseia em níveis de cálculo de altos e baixos do passado. Método de solução: reduzir o ciclo de retrospectiva ou aumentar o mecanismo de alerta de mudança de tendência, como o indicador de dinâmica.

Direção de otimização da estratégia

  1. Integração da análise de múltiplos prazos: a estratégia atual funciona apenas em um único período de tempo. Pode-se considerar a integração da análise de múltiplos prazos, por exemplo, a confirmação da direção da tendência em um período de tempo maior e, em seguida, a execução de sinais de entrada em um período de tempo menor, aumentando a robustez da estratégia.

  2. Introdução do gerenciamento de risco dinâmico: a substituição do stop loss de pontos fixos por parâmetros dinâmicos baseados no ATR, permitindo que o gerenciamento de risco se adapte à volatilidade do mercado. Motivo: O ATR pode medir o grau de volatilidade do mercado, expandindo automaticamente o alcance do stop loss em alta volatilidade e diminuindo em baixa volatilidade, mais de acordo com a realidade do mercado.

  3. Adição de confirmação de volume de transação: Adição de análise de volume de transação na geração de sinais para garantir que a quebra de preço seja suportada por volume de transação suficiente. Motivo: A quebra com suporte de volume de transação é mais confiável e reduz os prejuízos causados por brechas falsas.

  4. Implementar o cálculo de Fibonacci de auto-adaptação: não apenas baseado em um ciclo de retorno fixo, mas ajustando automaticamente o ciclo de retorno de acordo com a volatilidade do mercado, usando um ciclo mais longo quando há alta volatilidade e um ciclo mais curto quando há baixa volatilidade. Motivo: Este método de auto-adaptação pode capturar melhor os verdadeiros pontos de mudança do mercado.

  5. Adição de classificadores de estado de mercado: adição de funções na estratégia que permitem identificar o estado atual do mercado (trend, convergência ou transição), adotando diferentes regras de negociação de acordo com diferentes estados de mercado. Motivação: diferentes estados de mercado são adequados para diferentes estratégias de negociação, mercados de tendências são adequados para rastreamento, mercados de convergência são adequados para o alcance de negociação.

  6. Otimizar o tempo de entrada: com base no atual, pode-se adicionar o padrão de curva ou a análise de comportamento de preços para encontrar um tempo de entrada mais preciso perto do nível de Fibonacci. Motivo: Isso pode aumentar a precisão de entrada e melhorar a taxa de retorno do risco.

Resumir

A estratégia de Fibonacci retracção dinâmica de rastreamento de tendências de quantificação é um método de negociação sistematizado baseado na teoria da análise técnica clássica, que fornece aos comerciantes uma entrada de sinais de entrada e uma estrutura de gerenciamento de risco objetivas, identificando o apoio e a resistência dos níveis de retracção de Fibonacci. A principal vantagem da estratégia reside na sua adaptabilidade e personalização, permitindo ao comerciante ajustar os parâmetros de configuração de acordo com diferentes condições de mercado.

Código-fonte da estratégia
/*backtest
start: 2025-05-18 00:00:00
end: 2025-05-19 16:00:00
period: 2m
basePeriod: 2m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("简单斐波那契回撤策略", overlay=true, initial_capital=1000,default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// 输入回看周期以识别高点和低点
lookback = input.int(144, title="回看周期", minval=10)

// 输入选择斐波那契计算方向
fib_direction = input.string(title="斐波那契方向", defval="从上到下", options=["从上到下", "从下到上"])

// 输入斐波那契水平
fib_level_236 = input.float(0.236, title="斐波那契 23.6% 水平")
fib_level_382 = input.float(0.382, title="斐波那契 38.2% 水平")
fib_level_50 = input.float(0.5, title="斐波那契 50% 水平")
fib_level_618 = input.float(0.618, title="斐波那契 61.8% 水平")

// 输入选择买入和卖出信号的水平
buy_entry_level = input.string(title="买入入场水平", defval="斐波那契 61.8%", options=["斐波那契 23.6%", "斐波那契 38.2%", "斐波那契 50%", "斐波那契 61.8%"])
sell_entry_level = input.string(title="卖出入场水平", defval="斐波那契 38.2%", options=["斐波那契 23.6%", "斐波那契 38.2%", "斐波那契 50%", "斐波那契 61.8%"])

// 输入止盈和止损(以点数为单位)
take_profit_pips = input.int(24, title="止盈(点数)")
stop_loss_pips = input.int(4, title="止损(点数)")

// 识别回看周期内的高点和低点
highestHigh = ta.highest(high, lookback)
lowestLow = ta.lowest(low, lookback)

// 根据选择的方向计算斐波那契水平
var float fib_0 = na
var float fib_100 = na
var float fib_236 = na
var float fib_382 = na
var float fib_50 = na
var float fib_618 = na

if fib_direction == "从上到下"
    fib_0 := highestHigh
    fib_100 := lowestLow
    fib_236 := highestHigh - (highestHigh - lowestLow) * fib_level_236
    fib_382 := highestHigh - (highestHigh - lowestLow) * fib_level_382
    fib_50 := highestHigh - (highestHigh - lowestLow) * fib_level_50
    fib_618 := highestHigh - (highestHigh - lowestLow) * fib_level_618
else
    fib_0 := lowestLow
    fib_100 := highestHigh
    fib_236 := lowestLow + (highestHigh - lowestLow) * fib_level_236
    fib_382 := lowestLow + (highestHigh - lowestLow) * fib_level_382
    fib_50 := lowestLow + (highestHigh - lowestLow) * fib_level_50
    fib_618 := lowestLow + (highestHigh - lowestLow) * fib_level_618

// 根据用户输入确定买入和卖出信号的水平
var float buy_fib_level = na
var float sell_fib_level = na

if buy_entry_level == "斐波那契 23.6%"
    buy_fib_level := fib_236
if buy_entry_level == "斐波那契 38.2%"
    buy_fib_level := fib_382
if buy_entry_level == "斐波那契 50%"
    buy_fib_level := fib_50
if buy_entry_level == "斐波那契 61.8%"
    buy_fib_level := fib_618

if sell_entry_level == "斐波那契 23.6%"
    sell_fib_level := fib_236
if sell_entry_level == "斐波那契 38.2%"
    sell_fib_level := fib_382
if sell_entry_level == "斐波那契 50%"
    sell_fib_level := fib_50
if sell_entry_level == "斐波那契 61.8%"
    sell_fib_level := fib_618

// 将点数转换为价格单位(假设1点 = 0.0001,适用于如EURUSD的货币对)
pip_value = syminfo.mintick * 10
take_profit = take_profit_pips * pip_value
stop_loss = stop_loss_pips * pip_value

// 交易信号
var bool longSignal = na
var bool shortSignal = na

if fib_direction == "从上到下"
    longSignal := ta.crossover(close, buy_fib_level) and close > buy_fib_level
    shortSignal := ta.crossunder(close, sell_fib_level) and close < sell_fib_level
else
    longSignal := ta.crossover(close, buy_fib_level) and close > buy_fib_level
    shortSignal := ta.crossunder(close, sell_fib_level) and close < sell_fib_level

// 根据信号执行交易,设置止盈和止损
if (longSignal)
    strategy.entry("多头", strategy.long, comment="买入")
    strategy.exit("止盈/止损", "多头", limit=close + take_profit, stop=close - stop_loss)

if (shortSignal)
    strategy.entry("空头", strategy.short, comment="卖出")
    strategy.exit("止盈/止损", "空头", limit=close - take_profit, stop=close + stop_loss)

// 绘制斐波那契水平
plot(fib_0, title="斐波那契 0%", color=color.blue, linewidth=1, style=plot.style_line)
plot(fib_236, title="斐波那契 23.6%", color=color.green, linewidth=1, style=plot.style_line)
plot(fib_382, title="斐波那契 38.2%", color=color.green, linewidth=1, style=plot.style_line)
plot(fib_50, title="斐波那契 50%", color=color.red, linewidth=1, style=plot.style_line)
plot(fib_618, title="斐波那契 61.8%", color=color.green, linewidth=1, style=plot.style_line)
plot(fib_100, title="斐波那契 100%", color=color.blue, linewidth=1, style=plot.style_line)

// 为斐波那契水平创建带有白色文本的标签
var label fibLabel0 = na
var label fibLabel236 = na
var label fibLabel382 = na
var label fibLabel50 = na
var label fibLabel618 = na
var label fibLabel100 = na

if (na(fibLabel0))
    fibLabel0 := label.new(bar_index, fib_0, text="斐波那契 0%", color=na, textcolor=color.white, style=label.style_label_right, yloc=yloc.price)
    fibLabel236 := label.new(bar_index, fib_236, text="斐波那契 23.6%", color=na, textcolor=color.white, style=label.style_label_right, yloc=yloc.price)
    fibLabel382 := label.new(bar_index, fib_382, text="斐波那契 38.2%", color=na, textcolor=color.white, style=label.style_label_right, yloc=yloc.price)
    fibLabel50 := label.new(bar_index, fib_50, text="斐波那契 50%", color=na, textcolor=color.white, style=label.style_label_right, yloc=yloc.price)
    fibLabel618 := label.new(bar_index, fib_618, text="斐波那契 61.8%", color=na, textcolor=color.white, style=label.style_label_right, yloc=yloc.price)
    fibLabel100 := label.new(bar_index, fib_100, text="斐波那契 100%", color=na, textcolor=color.white, style=label.style_label_right, yloc=yloc.price)
else
    label.set_xy(fibLabel0, bar_index, fib_0)
    label.set_xy(fibLabel236, bar_index, fib_236)
    label.set_xy(fibLabel382, bar_index, fib_382)
    label.set_xy(fibLabel50, bar_index, fib_50)
    label.set_xy(fibLabel618, bar_index, fib_618)
    label.set_xy(fibLabel100, bar_index, fib_100)

// 绘制信号
plotshape(series=longSignal, location=location.belowbar, color=color.green, style=shape.labelup, title="买入信号", text="买入")
plotshape(series=shortSignal, location=location.abovebar, color=color.red, style=shape.labeldown, title="卖出信号", text="卖出")

// 绘制最高点和最低点
plot(highestHigh, title="最高点", color=color.purple, linewidth=2, offset=-lookback)
plot(lowestLow, title="最低点", color=color.purple, linewidth=2, offset=-lookback)