Estratégia de ensaio posterior do filtro vertical horizontal

Autora:ChaoZhang, Data: 2024-01-08 10:20:25
Tags:

img

A estratégia é baseada em uma análise de preços de mercado, que consiste em calcular a relação entre a diferença entre os preços mais altos e os preços mais baixos durante um determinado período e a amplitude do preço de fechamento.

Princípio da estratégia: o indicador central desta estratégia é o Filtro Horizontal Vertical (VHF), calculado pela seguinte fórmula:

VHF = (Melhor ((Length) - Menor ((Length)) / SUM ((ABS ((Close-Close[1]), Length)

Quando o VHF é superior a um determinado limiar de sinal, considera-se que os preços estão em um estado de tendência. Quando inferior ao limiar de sinal, considera-se que os preços estão em estado de choque. Os sinais de negociação são gerados de acordo.

Esta estratégia é simples e intuitiva. Ao comparar a faixa de flutuação de preços com a flutuação real para julgar a tendência, evita o problema de depender apenas de SMA, EMA e outros indicadores, ignorando as características do preço em si.

Análise das vantagens:

  1. Indicador intuitivo de tendência, simples e eficaz.
  2. Considere as características do preço em si, não depende de qualquer curva de ajuste.
  3. Os parâmetros configuráveis ajustam a sensibilidade do julgamento.
  4. Pode ser facilmente integrado em várias estratégias comerciais.

Análise de riscos:

  1. Sensível aos parâmetros, configurações inadequadas podem causar demasiados negócios falsos.
  2. Incapaz de distinguir pseudo tendências quando os preços estão em pontos de inflexão.
  3. Não são sensíveis a choques de preços a curto prazo em condições de grandes ciclos.
  4. Preciso de usar stop loss para controlar a perda única.

Orientações de otimização:

  1. Otimizar o parâmetro de comprimento para equilibrar a sensibilidade do julgamento da tendência.
  2. Combine outros indicadores para filtrar sinais VHF. Por exemplo, o MACD pode determinar pontos de inflexão.
  3. Tente métodos de aprendizagem de máquina para se encaixar na curva de VHF.
  4. Estabelecer estratégias paralelas com diferentes configurações de ciclo para gerar sinais de estratégia de vários níveis.

Resumo: Esta estratégia determina intuitivamente a tendência com base nas características do preço em si, simples e válida, vale a pena explorar, otimizar e verificar.


/*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")

Mais.