Estratégia de extração de tendência de filtragem de passagem de banda

Autora:ChaoZhang, Data: 2024-01-03 15:22:49
Tags:

img

Resumo

A Estratégia de Extração de Tendências de Filtragem de Bandpass é uma estratégia de rastreamento de tendências de ações baseada em filtros de bandpass.

Princípios

A estratégia primeiro constrói uma média móvel exponencial dupla ajustando os parâmetros de comprimento e delta para controlar o comprimento da média móvel e suavidade. Em seguida, usa um conjunto de transformações matemáticas para extrair o componente de tendência da série de preços e armazená-lo na variável xBandpassFilter. Finalmente, calcula a média móvel simples do xBandpassFilter, xMean, como o indicador para entradas e saídas.

A sensibilidade das entradas e saídas pode ser controlada ajustando o nível do gatilho.

Vantagens

  1. A dupla EMA efetivamente filtra algum ruído nos preços para estratégias mais estáveis.
  2. A filtragem de passagem de banda só extrai o componente de tendência nos preços, evitando batidas.
  3. Menos parâmetros facilitam a otimização e o controlo dos riscos.

Riscos

  1. O atraso de tempo causa oportunidades perdidas por reversões rápidas.
  2. A dupla EMA e a filtragem de passagem de banda têm efeitos de passagem baixos, reduzindo a sensibilidade.
  3. A filtragem excessiva pode causar tendências fortes faltantes se os parâmetros forem mal ajustados.

A redução de comprimento pode melhorar os problemas de atraso.

Melhorias

  1. Adicionar stop loss para controlar a perda de uma única transação.
  2. O sistema de médias móveis duplas pode melhorar a estabilidade.
  3. Combinar com o volume ou outros sinais de reversão para evitar batidas de punho.
  4. Usar machine learning ou algoritmos genéticos para otimizar parâmetros.

Conclusão

A estratégia é relativamente estável com bom desempenho em mercados de forte tendência.


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

//@version = 2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 14/12/2016
// The related article is copyrighted material from Stocks & Commodities Mar 2010
//
// You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect...
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Extracting The Trend Strategy Backtest")
Length = input(20, minval=1)
Delta = input(0.5)
Trigger = input(0)
reverse = input(false, title="Trade reverse")
hline(Trigger, color=blue, linestyle=line)
xPrice = hl2
beta = cos(3.1415 * (360 / Length) / 180)
gamma = 1 / cos(3.1415 * (720 * Delta / Length) / 180)
alpha = gamma - sqrt(gamma * gamma - 1)
xBandpassFilter = 0.5 * (1 - alpha) * (xPrice - xPrice[2]) + beta * (1 + alpha) * nz(xBandpassFilter[1]) - alpha * nz(xBandpassFilter[2])
xMean = sma(xBandpassFilter, 2 * Length)
pos = iff(xMean > Trigger, 1,
	   iff(xMean < Trigger, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xMean, color=red, title="ExTrend")

Mais.