Estrategia de backtesting con filtro de tendencia de rango promedio


Fecha de creación: 2024-01-08 10:20:25 Última modificación: 2024-01-08 10:20:25
Copiar: 0 Número de Visitas: 656
1
Seguir
1617
Seguidores

Estrategia de backtesting con filtro de tendencia de rango promedio

Descripción: Esta estrategia utiliza como indicador de señales de negociación la diferencia entre el precio más alto y el precio más bajo durante un período determinado y el aumento del precio de cierre para determinar si el precio está en una tendencia.

Principio de la estrategia: el indicador central de la estrategia es el filtro horizontal vertical ((VHF), que se calcula mediante la siguiente fórmula:

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

En este caso, el valor de VHF es el valor más alto y el valor más bajo en el ciclo de longitud. La parte molecular refleja el rango de oscilación del precio y la parte fraccionaria refleja la cantidad de fluctuación real del precio. Su relación permite determinar la tendencia de la tendencia del precio.

La estrategia es simple e intuitiva, para juzgar la tendencia mediante la comparación de la amplitud de fluctuación de los precios con la amplitud real, evitando el problema de depender únicamente de los indicadores SMA, EMA y otros para ignorar las características de los precios en sí mismos. Sin embargo, la estrategia es sensible a la optimización de los parámetros y requiere ajustar los parámetros de longitud y señal para adaptarse a diferentes ciclos y condiciones del mercado.

Análisis de las ventajas:

  1. El indicador intuitivo de tendencias es simple y eficaz.
  2. Se considera la propia característica del precio, sin depender de ninguna curva de ajuste.
  3. Sensibilidad de los parámetros configurables para ajustar el juicio.
  4. Se puede integrar fácilmente en todo tipo de estrategias comerciales.

Análisis de riesgos:

  1. La configuración inadecuada es sensible a los parámetros y puede causar demasiados trades erróneos.
  2. La tendencia falsa cuando el precio está en un punto de inflexión que no se puede distinguir.
  3. La configuración de ciclo grande es insensible a las fluctuaciones de precios de ciclo corto.
  4. Se requiere un par de paradas para controlar la pérdida individual.

La dirección de la optimización:

  1. Optimización de la sensibilidad del parámetro Length para equilibrar las tendencias.
  2. En combinación con otros indicadores para filtrar la señal VHF. Por ejemplo, el MACD puede determinar el punto de inflexión.
  3. Prueba el método de aprendizaje automático para ajustar la curva VHF.
  4. La configuración de diferentes ciclos en paralelo produce una señal de estrategia de varios niveles.

Resumen: La estrategia se basa en la tendencia de juicio intuitivo de las características del precio en sí, es simple y eficaz, vale la pena explorar, optimizar y verificar, puede ser una herramienta de juicio de tendencia básica, ampliamente utilizada en estrategias de comercio cuantitativo.

Código Fuente de la Estrategia
/*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")