Hull-Strategie für den gleitenden Durchschnitt und Trendfolge


Erstellungsdatum: 2023-09-16 18:41:33 zuletzt geändert: 2023-09-16 18:41:33
Kopie: 0 Klicks: 696
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Hull Moving Average Trend-Tracking-Strategie ist eine quantitative Handelsstrategie, die die Hull Moving Average nutzt, um die Richtung der Markttrends zu bestimmen und Kauf- und Verkaufssignale auszusenden. Die Strategie ist in der Lage, die mittleren und langen Trends zu erfassen, Positionen zu erstellen, wenn der Trend beginnt, und die Position zu beenden, bevor der Trend umkehrt.

Grundsätze

Die Strategie nutzt sowohl den Hull Moving Average als auch den Ordinary Moving Average, um die Richtung des Trends zu bestimmen. Es handelt sich um ein Kaufsignal, wenn der kurze Hull MA über den langen Hull MA geht.

Normaler Moving Average wird verwendet, um die unmittelbare Richtung des Trends zu bestimmen. Wenn ein kurzer EMA einen langfristigen EMA durchbricht, ist er positiv, und wenn ein kurzer EMA einen langfristigen EMA durchbricht, ist er negativ. Nur ein Hull MA-Signal und ein EMA sind gleichbedeutend.

Darüber hinaus nutzt die Strategie auch die K-Linie-Einzelkanal, um die Schwankungen des Marktes zu beurteilen, um Fehlhandlungen in einem wackligen Markt zu vermeiden. Nur bei einem Preisbruch kann ein Lagerplatz in Betracht gezogen werden.

Vorteile

  • Der Hull-Moving-Average ist empfindlicher auf Preisänderungen und kann Trendwechsel frühzeitig erfassen.

  • In Kombination mit Hull MA und EMA können falsche Signale gefiltert werden.

  • Verwenden Sie die K-Linie-Kanal, um Schwankungen zu beurteilen und vermeiden Sie häufige Transaktionen in der Berechnung.

  • Der Trend-Tracking-Methode ermöglicht es, die langfristigen und mittleren Trends zu erfassen.

Die Gefahr

  • Der Moving Average ist nachlässig und könnte die besten Einstiegspunkte für eine Trendwende verpassen.

  • Die Schwingungsmomente sind nicht genau beurteilt und können bei der Berechnung falsch gehandelt werden.

  • Die Anzahl der Transaktionen ist geringer und sie sind anfällig für einmalige Verluste.

  • Die Kurzstrecken-Schwankungen können nicht effektiv genutzt werden.

Wie man damit umgeht

  • Optimierung der periodischen Parameter des Moving Averages, um eine zeitnahe Reaktion auf Trends zu erreichen.

  • Es ist wichtig, die Schwingungen mit anderen Indikatoren zu messen, wie z. B. RSI, BBANDS usw.

  • Aktive Vermögensverwaltung und Kontrolle des Verlustanteils.

  • Es gibt auch andere Strategien, um kurzfristige Gewinne zu erzielen.

Zusammenfassen

Die Hull Moving Average Trend-Tracking-Strategie, die durch die Kombination von Hull MA und EMA verwendet wird, kann die mittleren und langen Trends effektiv verfolgen. Es ist eine einfache, praktische und quantitative Handelsstrategie, die empfohlen wird.

Strategiequellcode
/*backtest
start: 2023-08-16 00:00:00
end: 2023-09-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

// strategy(title='HULLMiguel 2019/ Strategy v3', shorttitle='HULLMiguel_2019_Strategy', overlay=true, pyramiding=0, default_qty_value=1000, initial_capital=1000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance Channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=blue, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:',  defval=15) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=3, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? green: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=2, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(16, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(10, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=5, title="Hull MA")
dif_close_hull= (close-hullma(hma_src, hma_base_length+hma_length_scalar*6))/close
Percent_dif = (dif_close_hull/(hullma(hma_src, hma_base_length+hma_length_scalar*6)))
//direction3 = Percent_dif>0 ? +1 : Percent_dif<0 ? -1 : 0
//plot_color3 = direction3 > 0  ? lime: direction3 < 0 ? red : na
//plot(dif_close_hull, title="dif close hull", style=line, linewidth=6, color = plot_color3)

//============ signal Generator ==================================//
Piriod=input('720')
ch1 = security(syminfo.tickerid, Piriod, open)
ch2 = security(syminfo.tickerid, Piriod, close)
plot(ch1, title="EMA Signal 2", style=line, linewidth=1, color = blue)
//longCondition = crossover(security(tickerid, Piriod, close),security(tickerid, Piriod, open))
//plot((close-ema02)/ema02+close)
longCondition = direction > 0 and direction2> 0

if (longCondition)
    strategy.entry("BUY", strategy.long)
//shortCondition = crossunder(security(tickerid, Piriod, close),security(tickerid, Piriod, open))
shortCondition = direction < 0 and direction2 < 0

if (shortCondition)
    strategy.entry("SELL", strategy.short)

///////////////////////////////////////////////////////////////////////////////////////////