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

Estratégia de negociação quantitativa multi-indicador de retracement e extensão de Fibonacci

Autora:ChaoZhang, Data: 2024-11-12 10:51:02
Tags:EMA

img

Resumo

Esta estratégia é um sistema de negociação quantitativo composto baseado em níveis de retração e extensão de Fibonacci, combinado com a determinação da tendência da EMA. A estratégia identifica níveis importantes de suporte e resistência no mercado e executa negociações com base em sinais de tendência.

Princípios de estratégia

A lógica principal consiste em três componentes principais: primeiro, calcula os preços mais altos e mais baixos nos últimos 10 períodos para determinar a faixa de preços; segundo, calcula cinco níveis de retração Fibonacci (0.236, 0.382, 0.5, 0.618, 0.786) com base neste intervalo; Finalmente, determina a direção da tendência através do cruzamento de EMAs de 20 e 50 períodos. Os sinais de compra são gerados quando o preço ultrapassa os níveis de retração em uma tendência de alta, enquanto os sinais de venda são acionados quando o preço ultrapassa os níveis de retração em uma tendência de baixa.

Vantagens da estratégia

  1. Combina os conceitos de tendência e retracement de preços, melhorando a precisão da negociação
  2. Utiliza sequências de Fibonacci como níveis de preço-chave, que têm forte significado psicológico nos mercados.
  3. Emprega crossovers da EMA para a identificação de tendências, evitando negociações frequentes em mercados variados
  4. Dispõe de um sistema limpo, de fácil compreensão e manutenção
  5. Adaptável a diferentes prazos, demonstrando uma forte versatilidade

Riscos estratégicos

  1. Pode gerar sinais falsos em mercados altamente voláteis
  2. Baseia-se na continuação da tendência, com um desempenho potencialmente inferior em diversos mercados
  3. Os cálculos do nível de retração baseados em máximos e mínimos históricos podem ficar para trás do mercado
  4. A seleção do ponto de entrada pode não ser suficientemente precisa, levando a perdas de parada mais amplas
  5. Sistema sem mecanismos dinâmicos de gestão de posições

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

  1. Incorporar indicadores de volume para melhorar a precisão da determinação da tendência
  2. Implementar mecanismos dinâmicos de stop-loss para um melhor controlo dos riscos
  3. Otimizar os períodos de cálculo do nível de retração para melhor corresponder ao ritmo do mercado
  4. Adicionar filtros de volatilidade para evitar a negociação durante períodos de alta volatilidade
  5. Projetar sistemas de gestão de posições mais flexíveis que ajustem as participações com base nas condições de mercado

Resumo

A estratégia constrói um sistema de negociação relativamente completo, combinando ferramentas clássicas de análise técnica. Embora existam áreas para otimização, a estrutura geral demonstra boa adaptabilidade do mercado. Através da otimização e melhoria contínua, a estratégia mostra promessa de melhor desempenho na negociação real.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-11 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Fibonacci Retracement and Extension Strategy", overlay=true)

// Define the Fibonacci levels for retracement and extension
fibRetracementLevels = array.new_float(5)
array.set(fibRetracementLevels, 0, 0.236)
array.set(fibRetracementLevels, 1, 0.382)
array.set(fibRetracementLevels, 2, 0.5)
array.set(fibRetracementLevels, 3, 0.618)
array.set(fibRetracementLevels, 4, 0.786)

fibExtensionLevels = array.new_float(5)
array.set(fibExtensionLevels, 0, 1.618)
array.set(fibExtensionLevels, 1, 2.618)
array.set(fibExtensionLevels, 2, 3.618)
array.set(fibExtensionLevels, 3, 4.236)
array.set(fibExtensionLevels, 4, 5.618)

// Calculate the high and low prices for the last 10 bars
highPrice = ta.highest(high, 10)
lowPrice = ta.lowest(low, 10)

// Calculate the Fibonacci retracement levels
fibRetracement = array.new_float(5)
for i = 0 to 4
    array.set(fibRetracement, i, highPrice - (highPrice - lowPrice) * array.get(fibRetracementLevels, i))

// Calculate the trend using the Exponential Moving Average (EMA)
shortEMA = ta.ema(close, 20)
longEMA = ta.ema(close, 50)

// Define the trend conditions
isUptrend = shortEMA > longEMA
isDowntrend = shortEMA < longEMA

// Generate buy and sell signals
var float lastFibRetracementLevel = na
var float lastFibExtensionLevel = na

// Buy condition: price crosses above the highest retracement level
if (isUptrend)
    for i = 0 to 4
        if (close > array.get(fibRetracement, i))
            lastFibRetracementLevel := array.get(fibRetracement, i)
            strategy.entry("Buy", strategy.long)

// Sell condition: price crosses below the lowest retracement level
if (isDowntrend)
    for i = 0 to 4
        if (close < array.get(fibRetracement, i))
            lastFibRetracementLevel := array.get(fibRetracement, i)
            strategy.entry("Sell", strategy.short)

// Plotting the Fibonacci levels on the chart
// for i = 0 to 4
//     line.new(bar_index[10], array.get(fibRetracement, i), bar_index, array.get(fibRetracement, i), color=color.new(color.blue, 70), width=1)

// Plot the EMAs
plot(shortEMA, color=color.red, title="Short EMA")
plot(longEMA, color=color.blue, title="Long EMA")

Relacionados

Mais.