Estratégia de Backtesting de Filtro de Tendência de Intervalo Médio


Data de criação: 2024-01-08 10:20:25 última modificação: 2024-01-08 10:20:25
cópia: 0 Cliques: 656
1
focar em
1617
Seguidores

Estratégia de Backtesting de Filtro de Tendência de Intervalo Médio

Descrição: Esta estratégia é usada como um indicador de sinal de negociação para determinar se o preço está em uma tendência, calculando o rácio entre o preço de diferença entre o preço mais alto e o preço mais baixo em um determinado período e o aumento do preço de fechamento.

Princípio da estratégia: O indicador central da estratégia é o filtro vertical horizontal (VHF), que é calculado pela seguinte fórmula:

VHF = (Highest(Length) - Lowest(Length)) / SUM(ABS(Close - Close[1]), Length)

Os valores mais altos (Length) e mais baixos (Length), respectivamente, são os preços mais altos e mais baixos no período de Length. A parte molecular reflete a amplitude do preço e a parte decimal reflete a quantidade de flutuação real do preço.

A estratégia é simples e intuitiva, julgando a tendência comparando a amplitude de flutuação dos preços com a amplitude real, evitando o problema de depender apenas de indicadores como SMA, EMA e ignorar as características do preço em si. Mas a estratégia é sensível à otimização de parâmetros e precisa ajustar os parâmetros de comprimento e sinal para se adaptar a diferentes ciclos e condições de mercado.

Análise de vantagens:

  1. Os indicadores intuitivos de tendências são simples e eficazes.
  2. O preço é considerado por sua própria natureza, não dependendo de qualquer curva de adequação.
  3. Sensibilidade de ajuste de julgamento de parâmetros configuráveis.
  4. O Bitcoin é um sistema de negociação que pode ser facilmente integrado em várias estratégias de negociação.

Análise de Riscos:

  1. Os parâmetros são sensíveis e a configuração inadequada pode causar muitos erros de negociação.
  2. Falsa tendência quando o preço está em um ponto de inflexão.
  3. A configuração de grande ciclo não é sensível a oscilações de preços de curto período.
  4. O que é necessário para controlar um único prejuízo?

Otimização:

  1. Optimizar a sensibilidade do parâmetro Length para equilibrar o julgamento de tendências.
  2. Em combinação com outros indicadores de filtragem de sinais VHF. Por exemplo, o MACD pode determinar o ponto de viragem.
  3. Tente um método de aprendizagem de máquina que se adapte à curva VHF.
  4. Diferentes configurações de períodos em paralelo geram sinais de estratégia de vários níveis.

Conclusão: A estratégia baseia-se nas tendências intuitivas de determinação das próprias características do preço, é simples e eficaz, vale a pena explorar, otimizar e verificar ainda mais, pode ser uma ferramenta básica de determinação de tendências e é amplamente utilizada em estratégias de negociação quantitativa.

Código-fonte da estratégia
/*backtest
start: 2023-01-01 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 27/04/2018
// Vertical Horizontal Filter was initiated by Adam White. It was first published 
// in a magazine called “Issues of Futures” in August, 1991. The Vertical Horizontal 
// Filter (VHF) is a very common Indicator used by traders to find out the Phase of 
// a Price Trend. Normally, a price trend can be in a Trending Phase or a Congestion 
// Phase/Choppy Movement Phase. Adam White created this particular Technical Indicator 
// to determine whether prices are trending in a particular direction or are they going 
// through a transitional period. He used it to measure the range of Futures available
// in the market.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Vertical Horizontal Filter Backtest")
Length = input(28, minval=1)
Signal = input(0.4, step=0.01)
reverse = input(false, title="Trade reverse")
hline(Signal, color=blue, linestyle=line)
xHH = highest(high, Length)
xLL = lowest(low, Length)
xNumerator = abs(xHH - xLL)
xDenominator = sum(abs(close - close[1]), Length)
xVHF = xNumerator / xDenominator 
pos = iff(xVHF > Signal, 1,
       iff(xVHF < Signal, -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(xVHF, color=blue, title="VHF")