Candela de média de Fibonacci com estratégia de média móvel para negociação quantitativa

Autora:ChaoZhang, Data: 2024-01-19 14:36:45
Tags:

img

Resumo

Esta estratégia constrói velas médias e médias móveis com base na sequência de Fibonacci para implementar negociação quantitativa com apenas posições longas e sem posições curtas.

Princípio da estratégia

As principais etapas desta estratégia são:

  1. Calcule os preços médios de fechamento, alto, baixo e aberto dos 10 ciclos de Fibonacci mais recentes para construir uma vela média.

  2. Calcular as médias móveis exponenciais (EMA) de 1, 2, 3, 5, 8, 13, 21, 34 e 55 períodos do preço médio de fechamento e tomar a sua média para obter a EMA média.

  3. Estabelecer condições longas e de fechamento: abrir posição longa quando a vela média apresenta padrões de alta (como fechamento acima da abertura, engulfamento de alta) e fechar acima da EMA média; fechar posição longa quando a vela média apresenta padrões de baixa (como fechamento abaixo da abertura, engulfamento de baixa) e fechar abaixo da EMA média.

Com base no cálculo das velas médias para filtrar as flutuações de preços e na combinação com os indicadores da média móvel para gerar sinais de negociação, esta estratégia pode identificar efetivamente as tendências e controlar os riscos comerciais.

Vantagens

  1. As velas médias baseadas na sequência de Fibonacci podem filtrar o ruído aleatório dos preços de forma eficaz e identificar sinais de tendência.

  2. A média de múltiplas EMA aumenta a estabilidade dos níveis de suporte/resistência e melhora a qualidade do sinal.

  3. Apenas as posições longas reduzem o número de transacções, reduzem os custos de negociação e os impactos do deslizamento.

  4. Performa bem em prazos mais longos, adequado para negociações de médio a longo prazo.

Riscos

  1. A estratégia de longo prazo pode incorrer em perdas significativas nos mercados de baixa.

  2. As linhas EMA são propensas a atrasos, potencialmente faltando os melhores pontos de entrada.

  3. A busca excessiva de grandes prazos pode perder oportunidades em prazos mais curtos.

  4. O espaço limitado de otimização de parâmetros significa que o desempenho real das negociações pode ser inferior aos resultados dos backtests.

Áreas de melhoria

  1. Pode testar a adição de stop loss apropriados às posições de saída quando as perdas aumentarem.

  2. Pode combinar medidas de volatilidade como o ATR para ajustar dinamicamente o dimensionamento das posições.

  3. Pode testar a tomada de posições curtas adequadamente durante tendências de queda para aumentar os lucros.

  4. Pode otimizar os parâmetros do período EMA para encontrar as melhores combinações.

Conclusão

Esta estratégia identifica sinais de tendência para negociação quantitativa através da construção de velas médias de Fibonacci e indicadores de média móvel. Ela se beneficia de filtrar o ruído dos preços com velas médias e reduzir os custos de negociação apenas indo longo.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
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/
// © SoftKill21

//@version=4
strategy("Fibonacci candle", overlay=false  )


//plot of our fibonacci candle
// Fibonacci 
// Fn = Fn-1 + Fn-2
// F10 = 55
// 0 1 2 3 5 8 13 21 34 55

avg_close = (close[0] + close[1] + close[2] + close[3] +close[5] + close[8] + close[13]+ close[21] + close[34] + close[55]) / 10
avg_high = (high[0] + high[1] + high[2] + high[3] +high[5] + high[8] + high[13]+ high[21] + high[34] + high[55]) / 10
avg_low = (low[0] + low[1] + low[2] + low[3] +low[5] + low[8] + low[13]+ low[21] + low[34] + low[55]) / 10
avg_open = (open[0] + open[1] + open[2] + open[3] +open[5] + open[8] + open[13]+ open[21] + open[34] + open[55]) / 10


src = avg_close//input(avg_close, title="Source")


out55 = ema(src, 55)
out1 = ema(src, 1)
out2 = ema(src, 2)
out3 = ema(src, 3)
out5 = ema(src, 5)
out8 = ema(src, 8)
out13 = ema(src, 13)
out21 = ema(src, 21)
out34 = ema(src, 34)

avg_ema = (out55 + out1 + out2 + out3+ out5 + out8 + out13 + out21 + out34)/9

plot(avg_ema)

plotcandle(avg_open, avg_high, avg_low, avg_close, title='Title', color = avg_open < avg_close ? color.green : color.red, wickcolor=color.white)

long = avg_open < avg_close and avg_close > avg_close[1] and avg_high > avg_high[1] and  avg_close[1] > avg_close[2] and avg_high[1] > avg_high[2]
short = avg_open > avg_close and avg_close < avg_close[1] and avg_low < avg_low[1] and avg_close[1] < avg_close[2] and avg_low[1] < avg_low[2]

strategy.entry("long",1,when=long and avg_close > avg_ema)
strategy.close('long',when=short and avg_close < avg_ema)


Mais.