Hull gleitender Durchschnittswert nach Strategie

Schriftsteller:ChaoZhang, Datum: 2023-09-16 18:41:33
Tags:

Übersicht

Die Hull-Strategie verwendet den Hull-Drehdurchschnitt, um die Markttrendrichtung zu bestimmen und Kauf- und Verkaufssignale zu generieren.

Grundsätze

Die Strategie verwendet sowohl den Hull- gleitenden Durchschnitt als auch den einfachen gleitenden Durchschnitt, um die Trendrichtung zu bestimmen. Wenn der kürzere Zeitraum Hull MA über den längeren Zeitraum Hull MA überschreitet, erzeugt sie ein Kaufsignal. Wenn der kürzere Hull MA unter den längeren überschreitet, erzeugt sie ein Verkaufssignal.

Der einfache gleitende Durchschnitt bestimmt die Echtzeit-Trendrichtung. Wenn die kürzere EMA über die längere EMA überschreitet, zeigt dies einen Aufwärtstrend an. Wenn die kürzere EMA unter die längere EMA überschreitet, zeigt sie einen Abwärtstrend an. Trades werden nur getätigt, wenn die Hull MA- und EMA-Signale sich auf die bullische oder bärische Neigung einigen.

Darüber hinaus nutzt die Strategie K-Line-Body-Kanäle, um Marktfluktuationen zu messen und den Handel in Konsolidierung zu vermeiden.

Vorteile

  • Der Hull-MA ist empfindlicher bei der Erkennung von Preisänderungen und frühen Trendwechseln.

  • Die Verwendung von Hull MA und EMA eliminiert falsche Signale.

  • K-Line-Kanäle vermeiden einen übermäßigen Handel auf seitlichen Märkten.

  • Der Trend folgt, so dass man nachhaltige Gewinne erzielen kann, wenn sich der Trend ausdehnt.

Risiken

  • Die gleitenden Durchschnitte weisen Verzögerungen auf und können die optimalen Eintrittspunkte für eine Trendumkehr verpassen.

  • Eine ungenaue Konsolidierungserkennung kann zu schlechten Geschäften führen.

  • Eine geringe Handelsfrequenz führt zu großen Auswirkungen durch einzelne Verlustgeschäfte.

  • Unfähig, kurzfristige Schwankungen zu nutzen.

Risikomanagement

  • Optimierung von MA-Perioden für die zeitnahe Erzeugung von Trendsignalen.

  • Verwenden Sie andere Indikatoren wie RSI und BBANDS, um die Konsolidierung zu ermitteln.

  • Ausüben eines aggressiven Kapitalmanagements zur Begrenzung des Verlustprozentsatzes pro Handel.

  • Ergänzung mit anderen Strategien zur Nutzung kurzfristiger Gewinne.

Zusammenfassung

Die Hull Moving Average Trend Following-Strategie verfolgt mittelfristige und langfristige Trends durch die kombinierte Verwendung von Hull MA und EMA. Sie sammelt Gewinne während der Gewinntrends und geht früh vor Umkehrungen aus. Dies ist eine einfache und praktische Quant-Trading-Strategie, die empfehlenswert ist.


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

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

Mehr