Stratégie de contre-test du filtre vertical horizontal

Auteur:ChaoZhang est là., Date: 2024-01-08 10h20 et 25h
Les étiquettes:

img

Cette stratégie évalue si les prix sont dans une tendance en calculant le rapport entre la différence entre les prix les plus élevés et les prix les plus bas sur une certaine période et l'amplitude du prix de clôture, et en fait un indicateur de signal de négociation.

Principe de la stratégie: l'indicateur de base de cette stratégie est le filtre horizontal vertical (VHF), calculé selon la formule suivante:

VHF = (plus haute ((longueur) - plus basse ((longueur)) / SUM ((ABS ((close-close[1]), longueur)

Le nombre de fois où les prix sont inférieurs à un seuil de signal donné, on considère que les prix sont dans un état de tendance. Lorsque les prix sont inférieurs au seuil de signal donné, on considère que les prix sont en état de choc. Les signaux de trading sont générés en conséquence.

Cette stratégie est simple et intuitive. En comparant la plage de fluctuation des prix avec la fluctuation réelle pour juger de la tendance, elle évite le problème de se fier uniquement aux SMA, EMA et autres indicateurs tout en ignorant les caractéristiques du prix lui-même.

Analyse des avantages:

  1. Indicateur intuitif de jugement de tendance, simple et efficace.
  2. Considérons les caractéristiques du prix lui-même, ne dépend pas d'un ajustement de courbe.
  3. Les paramètres configurables permettent de régler la sensibilité du jugement.
  4. Peut être facilement intégré dans diverses stratégies commerciales.

Analyse des risques:

  1. Sensitifs aux paramètres, les paramètres incorrects peuvent provoquer trop de faux échanges.
  2. Incapable de distinguer les pseudo-tendances lorsque les prix sont à des points d'inflexion.
  3. Ne pas être sensible aux chocs de prix à court terme dans des conditions de grand cycle.
  4. Il faut utiliser le stop-loss pour contrôler les pertes uniques.

Directions d' optimisation:

  1. Optimiser le paramètre Longueur pour équilibrer la sensibilité du jugement de tendance.
  2. Combinez d'autres indicateurs pour filtrer les signaux VHF. Par exemple, le MACD peut déterminer les points de flexion.
  3. Essayez des méthodes d'apprentissage automatique pour s'adapter à la courbe VHF.
  4. Mettre en place des stratégies parallèles avec différents paramètres de cycle pour générer des signaux de stratégie à plusieurs niveaux.

Résumé: Cette stratégie détermine intuitivement la tendance en fonction des caractéristiques du prix lui-même, simple et valable, qui mérite une exploration, une optimisation et une vérification supplémentaires.


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

Plus de