Estratégia de negociação quantitativa baseada em fractal e padrão

Autora:ChaoZhang, Data: 2024-02-19 14:32:45
Tags:

img

Resumo

Este artigo apresenta uma estratégia quantitativa de negociação que combina análise fractal e padrões de velas. Ao detectar pontos de reversão chave e padrões de velas de reversão de alta / baixa, esta estratégia permite negociação automatizada de baixo risco e alto retorno.

Princípio da estratégia

Esta estratégia baseia-se na análise detalhada da ação do preço, utilizando uma combinação de análise fractal e reconhecimento de padrões de velas para definir uma lógica clara de entrada e stop loss para capturar a tendência.

Especificamente, sua condição de entrada é: o preço quebra acima da alta das 2 barras anteriores e ocorre uma quebra fractal ou engulfamento de alta ou padrão de martelo. Esta combinação confirma solidamente os sinais longos. A lógica de stop loss que define a saída na quebra do preço abaixo da baixa das 2 barras anteriores garante paradas rápidas e eficazes.

Para a detecção de padrões, esta estratégia usa a teoria fractal comumente usada para identificar pontos-chave de reversão, bem como algoritmos para detectar os 3 padrões clássicos de reversão de velas.

A codificação é feita em código Pine. Alto/baixo fractal é identificado quando o preço faz um novo alto/baixo de 3 bares, e regras rigorosas sobre preços abertos/fechados são usadas para padrões de engulfing.

Vantagens

Principais vantagens desta estratégia:

  1. Um sinal preciso combinando fractais e padrões
  2. Logic de entrada e stop loss clara
  3. As teorias maduras impedem o sobreajuste
  4. O script Pine permite backtesting

Riscos

Ainda há riscos a serem observados:

  1. Subjetividade na detecção de fractal e padrão
  2. Atividades que podem gerar perdas consecutivas
  3. O tamanho do stop loss requer ajustamento para negociação de alta frequência

Métodos como paradas otimizadas, filtragem de tendências e análise de caminhada adiante podem ajudar a controlar os riscos acima.

Melhorias

Áreas de reforço:

  1. Parâmetro de padrão de candelabro de sintonização fina para robustez
  2. Adicione o filtro de tendência para evitar fendas
  3. Introduzir aprendizado de máquina para otimização automática de parâmetros

Estas melhorias reforçarão ainda mais a estabilidade e a rentabilidade da estratégia.

Conclusão

Este artigo abrange minuciosamente uma estratégia de negociação de ação de preço que combina fráctais e padrões de velas. Com sinalização precisa, implementação fácil e seguimento de tendência eficaz, essa estratégia pode beneficiar muito os traders sistemáticos e os traders discricionários.


/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Fractal & Pattern Entry/Exit Strategy", overlay=true)

// Fractal calculation
fractalHigh = high == highest(3)
fractalLow = low == lowest(3)

// Pattern detection
bullishEngulfing = open < close[1] and close > open[1] and close > open + (open[1] - close[1]) * 2 and low < min(open, close) and high > max(open, close) and open[1] > close[1]
bearishEngulfing = open > close[1] and close < open[1] and open > close + (close[1] - open[1]) * 2 and high > max(open, close) and low < min(open, close) and open[1] < close[1]
hammer = open < close and close > (high + low + open * 2) / 4 and close - open > (high - low) * 0.6 and high - close < (high - low) * 0.1 and open - low < (high - low) * 0.1
hangingMan = open > close and open < (high + low + close * 2) / 4 and open - close > (high - low) * 0.6 and high - open < (high - low) * 0.1 and close - low < (high - low) * 0.1

// Entry condition
longCondition = crossover(close, highest(2)[1]) and (fractalHigh or bullishEngulfing or hammer)
shortCondition = crossunder(close, lowest(2)[1]) and (fractalLow or bearishEngulfing or hangingMan)

// Exit condition
exitLongCondition = crossunder(close, lowest(2)[1])
exitShortCondition = crossover(close, highest(2)[1])

// Entry and exit orders
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)
if (exitLongCondition)
    strategy.close("Long")
if (exitShortCondition)
    strategy.close("Short")

// Plot fractals
plotshape(fractalHigh, title="Fractal High", style=shape.triangledown, location=location.abovebar, color=color.green, size=size.small)
plotshape(fractalLow, title="Fractal Low", style=shape.triangleup, location=location.belowbar, color=color.red, size=size.small)

// Plot patterns
plotshape(bullishEngulfing, title="Bullish Engulfing", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(bearishEngulfing, title="Bearish Engulfing", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)
plotshape(hammer, title="Hammer", style=shape.arrowup, location=location.belowbar, color=color.green, size=size.small)
plotshape(hangingMan, title="Hanging Man", style=shape.arrowdown, location=location.abovebar, color=color.red, size=size.small)


Mais.