Kombinationsstrategie für Richtungsindikatoren und gleitenden Durchschnitt von Hull


Erstellungsdatum: 2024-01-04 17:23:06 zuletzt geändert: 2024-01-04 17:23:06
Kopie: 0 Klicks: 688
1
konzentrieren Sie sich auf
1621
Anhänger

Kombinationsstrategie für Richtungsindikatoren und gleitenden Durchschnitt von Hull

Überblick

Die Strategie verwendet eine Kombination aus einem dynamischen Indikator (DMI) und einem Hull Moving Average (HMA), um die Richtung des Marktes zu bestimmen, die HMA zu bestätigen und einen risikofreien Handel zu ermöglichen.

Strategieprinzip

  1. Berechnung der realen Breite (True Range), des Mehrkopf-Bewegungsindikators (DIPlus), des Hohlkopf-Bewegungsindikators (DIMinus) und des mittleren Richtungsindex (ADX).

  2. Berechnen Sie die schnelle und die langsame Hull-Mittel.

  3. Der Auslöser ist mehrfach bedingt: DIMinus auf DIPlus und slowhull auf fasthull.

  4. Auslösung der Lücke: DIMinus durch DIPlus und fasthull durch slowhull.

  5. Nach Erfüllung der Mehr- und Leerlauf-Bedingungen werden jeweils ein Mehr- und Leerlaufsignal emittiert.

Analyse der Stärken

Die Strategie kombiniert die DMI-Doppelbestätigung und die Hull-Gleichgewichtung, um die Richtung der Markttrends zu erkennen und die Wiederholung von Über- und Leermarkt zu vermeiden. Die Risikomanagement reduziert die Handelsfrequenz und die Gesamtprofitabilität ist langfristig gut.

Risikoanalyse

Das größte Risiko dieser Strategie besteht in der Verlustlosigkeit, bei der es bei starken Schwankungen der Marktlage nicht möglich ist, die Verluste effektiv zu kontrollieren. Darüber hinaus ist der Raum für die Optimierung der Parameter begrenzt, und die schlechte Zielerfassung ist ein großer Nachteil.

Die Risiken können durch die Einbeziehung von mobilen Stop-Losses und Optimierungsparameterkombinationen verringert werden.

Optimierungsrichtung

  1. Zusätzliche ATR-Stopps nutzen die Trailing-Stopps der realen Bandbreite.

  2. Optimierung der Hull-Zyklus-Parameter, um die optimale Kombination zu finden.

  3. Dynamische Anpassung der Parameterschwelle für mehr Freiraum.

  4. Filter wie Energieindikatoren werden hinzugefügt, um sicherzustellen, dass der Trend anhält.

Zusammenfassen

Die Kombination von DMI und HMA-Strategien, präzise Beurteilung, einfache und effektive, geeignet für die mittlere und lange Linie Betrieb. Wenn Sie die entsprechenden Stopps und Parameter-Optimierung hinzufügen, kann es ein sehr gutes Trend-Tracking-System sein.

Strategiequellcode
/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Tuned_Official
//@version=4
strategy(title="DMI + HMA - No Risk Management", overlay = false, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.025)

//Inputs
hullLen1 = input(title="Hull 1 length", type=input.integer, defval=29)
hullLen2 = input(title="Hull 2 length", type=input.integer, defval=2)
len = input(title="Length for DI", type=input.integer, defval=76)

//Calculations
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0

SmoothedTrueRange = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = 0.0
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus

//Indicators
fasthull = hma(close, hullLen1)
slowhull = hma(close, hullLen2)
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, len)

//Plots
plot(DIPlus, color=color.green, title="DI+")
plot(DIMinus, color=color.red, title="DI-")
plot(ADX, color=color.black, title="ADX")

//conditions
go_long = crossover(DIPlus, DIMinus) and fasthull > slowhull //crossover(fasthull, slowhull) and DIPlus > DIMinus
go_short = crossover(DIMinus, DIPlus) and fasthull < slowhull //crossunder(fasthull, slowhull) and DIMinus > DIPlus

//Entry
if strategy.position_size < 0 or strategy.position_size == 0
    strategy.order("long", strategy.long, when=go_long)

if strategy.position_size > 0 or strategy.position_size == 0
    strategy.order("Short", strategy.short, when=go_short)