Vertikaler Horizontalfilter Zurückprüfung Strategie

Schriftsteller:ChaoZhang, Datum: 08.01.2024
Tags:

img

Übersicht: Diese Strategie beurteilt, ob sich die Preise in einem Trendzustand befinden, indem sie das Verhältnis zwischen der Differenz zwischen dem höchsten und dem niedrigsten Preis in einem bestimmten Zeitraum und der Amplitude des Schlusskurses berechnet und dies als Handelssignalindikator verwendet.

Strategieprinzip: Der Kernindikator dieser Strategie ist der vertikale horizontale Filter (VHF), der nach der folgenden Formel berechnet wird:

VHF = (höchste ((Länge) - niedrigste ((Länge)) / SUM ((ABS ((Nahe-nahe[1]), Länge)

Der Zähler spiegelt die Amplitude der Preise wider, und der Nenner spiegelt die tatsächliche Kursschwankung wider. Ihr Verhältnis kann den Trend der Preisbewegungen beurteilen. Wenn VHF über einer gegebenen Signalschwelle liegt, wird davon ausgegangen, dass die Preise sich in einem Trendzustand befinden. Wenn sie unter der gegebenen Signalschwelle liegen, wird davon ausgegangen, dass sich die Preise in einem Schockzustand befinden. Handelssignale werden entsprechend generiert.

Diese Strategie ist einfach und intuitiv. Durch den Vergleich der Preisschwankungen mit der tatsächlichen Schwankung, um den Trend zu beurteilen, vermeidet sie das Problem, sich ausschließlich auf SMA, EMA und andere Indikatoren zu verlassen, während die Eigenschaften des Preises selbst ignoriert werden.

Vorteilsanalyse:

  1. Ein intuitiver Trendbeurteilungsindikator, einfach und effektiv.
  2. Betrachtet man die Eigenschaften des Preises selbst, so hängt es nicht von einer Kurvenanpassung ab.
  3. Die Empfindlichkeit des Urteils wird durch konfigurierbare Parameter angepasst.
  4. Kann leicht in verschiedene Handelsstrategien integriert werden.

Risikoanalyse:

  1. Unpassende Einstellungen können zu vielen falschen Trades führen.
  2. Nicht in der Lage, Pseudo-Tendenzen zu unterscheiden, wenn die Preise an Wendepunkten sind.
  3. Nicht empfindlich gegenüber kurzfristigen Preisschokken unter großen Zyklusbedingungen.
  4. Sie müssen einen Stop-Loss verwenden, um einen einzigen Verlust zu kontrollieren.

Optimierungsrichtlinien:

  1. Optimieren Sie den Parameter Länge, um die Empfindlichkeit des Trendurteils auszugleichen.
  2. Kombinieren Sie andere Indikatoren, um VHF-Signale zu filtern.
  3. Versuchen Sie maschinelle Lernmethoden, um die VHF-Kurve anzupassen.
  4. Es werden parallele Strategien mit unterschiedlichen Zyklus-Einstellungen eingerichtet, um mehrstufige Strategiesignale zu erzeugen.

Zusammenfassung: Diese Strategie bestimmt intuitiv den Trend anhand der Eigenschaften des Preises selbst, ist einfach und gültig, lohnt sich weiter zu erforschen, zu optimieren und zu überprüfen.


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

Mehr