Überschreitender Zeitrahmen Hull Moving Average Kauf-Verkaufsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-11-07 16:54:14
Tags:

img

Übersicht

Diese Strategie basiert auf dem Hull Moving Average-Indikator, berechnet den Hull MA in verschiedenen Zeitrahmen und vergleicht die Hull MA-Tendenzen in verschiedenen Zeitrahmen, um Trendveränderungen zu identifizieren.

Strategie Logik

  1. Eingabeparameter: Hull MA-Periode Periode, HMA2-Zeitrahmen Resolution2, HMA3-Zeitrahmen Resolution3

  2. Berechnen Sie den Hull-MA-Wert HMA

  3. Berechnung des Hull MA-Wertes HMA2 auf dem Resolution2-Zeitrahmen

  4. Berechnung des Hull MA-Wertes HMA3 auf dem Resolution3-Zeitrahmen

  5. Vergleichen Sie die Größenverhältnisse zwischen HMA, HMA2, HMA3

  6. Erstellen Sie ein Kaufsignal, wenn HMA>HMA2>HMA3

  7. Erzeugen Sie ein Verkaufssignal, wenn HMA

  8. Anzeige der Hull MA-Werte und -Signale für verschiedene Zeitrahmen oben links im Diagramm

  9. Verwenden Sie Farben, um Aufwärtstrend und Abwärtstrend zu unterscheiden

Analyse der Vorteile

  1. Mit mehreren Zeitrahmen kann man falsche Ausbrüche filtern und Fallen vermeiden.

  2. Anpassungsfähige Zeitrahmenparameter, die an unterschiedliche Perioden und Volatilität angepasst werden können.

  3. Echtzeitsignalanzeige, intuitive Bedienung.

  4. Visualisierte Hull MA-Trends helfen, den aktuellen Trend zu bestimmen.

Risikoanalyse

  1. Eine falsche Einstellung der Parameter kann zu einem Überhandel führen.

  2. Längere Zeitrahmen Hull MA hat Verzögerungseffekt, kann Trendwendepunkte verpassen.

  3. Kann falsche Signale gegen den Bullen-Bären-Übergang erzeugen.

  4. Ausbruchsstrategien sind anfällig für falsche Ausbrüche.

  5. Handelsprovisionen werden nicht berücksichtigt, was sich auf den tatsächlichen Gewinn auswirkt.

Die Risiken können reduziert werden, indem Parameter optimiert, andere Indikatoren für die Filtration kombiniert und ein breiteres Stop-Loss ermöglicht wird.

Optimierungsrichtlinien

  1. Optimierung der Hull-MA-Periode, die sich an verschiedene Perioden und Volatilität anpassen lässt.

  2. Fügen Sie den Lautstärkenanzeiger hinzu, um falsche Ausbrüche zu vermeiden.

  3. Fügen Sie Oszillatoren hinzu, um die Trendstärke zu bestimmen.

  4. Einbeziehung von Modellen des maschinellen Lernens für den Kauf-/Verkaufszeitplan.

  5. Kombinieren Sie Stimmungsindikatoren, um Markthype zu erkennen.

  6. Anpassung der Stop-Loss-Strategie für ein besseres Risikomanagement.

  7. Anpassung der Kauf-/Verkaufsbedingungen an andere Indikatorsignale.

  8. Hinzufügen von Preiskanal- oder Wellenhandelsstrategien.

Schlussfolgerung

Diese Strategie verwendet Multi-Timeframe Hull MA, um die Trendrichtung zu bestimmen, indem sie gleitende Durchschnittsneigungsschwellen über Zeiträume hinweg vergleicht und bei Trendumkehrungen Signale erzeugt. Multi-Timeframe Hull MA ist effektiver bei der Filterung falscher Ausbrüche als einzelne MA. Diese Strategie hat jedoch auch Einschränkungen bei Parameter-Tuning, Trendbestimmung usw. Die Integration mehrerer Indikatoren, die Optimierung von Parametern, die Verbesserung des Stop-Loss kann die Rentabilität und das Risikokontrolle verbessern.


/*backtest
start: 2023-10-07 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//
strategy("wtfBUYorSELLffs",overlay=true,currency="USD",initial_capital=100000,default_qty_type=strategy.percent_of_equity,default_qty_value=100,commission_type=strategy.commission.percent,commission_value=0.1)
Period=input(title="Hull MA Period",type=input.integer,defval=6,minval=1)
Resolution2=input(title="HMA2 Resolution", type=input.resolution,defval="60")
Resolution3=input(title="HMA3 Resolution", type=input.resolution,defval="240")
Price=input(title="Source of Price",type=input.source,defval=open)
xOffset       = input(40, title="Panel offset (X-Axis)")
yOffset       = input(0, title="Panel offset (y-Axis)")
lightgray = #D3D3D3FF
pnlTextColor = color.silver
pnlColor = color.black
HMA = hma(Price,Period)
HMA2 = security(syminfo.tickerid, Resolution2, HMA,barmerge.gaps_off,barmerge.lookahead_off)
HMA3 = security(syminfo.tickerid, Resolution3, HMA,barmerge.gaps_off,barmerge.lookahead_off) 
HUP = HMA > HMA[1]
H1UP = security(syminfo.tickerid, Resolution2, HUP,barmerge.gaps_off,barmerge.lookahead_off)
H2UP = security(syminfo.tickerid, Resolution3, HUP,barmerge.gaps_off,barmerge.lookahead_off) 

int barSize = timeframe.isdaily ? timeframe.multiplier*86400000 : 
           timeframe.isseconds? timeframe.multiplier*1000 :
           timeframe.isminutes? timeframe.multiplier*60000 : (time[0]-time[1])
int   lapos_x = timenow + barSize*xOffset
float lapos_y = highest(20) + yOffset*syminfo.mintick * syminfo.pointvalue
f_draw_infopanel(_x, _y, _line, _text)=>
    _rep_text = ""
    for _l = 0 to _line
        _rep_text := _rep_text + "\n"
    _rep_text := _rep_text + _text
    // var label _la = na
    // label.delete(_la)
//     _la := label.new(
//          x=_x, y=_y, 
//          text=_rep_text, xloc=xloc.bar_time, yloc=yloc.price, 
//          color=pnlColor, style=label.style_labelup, textcolor=pnlTextColor, size=size.normal)
// f_draw_infopanel(lapos_x, lapos_y, 8, "╚═══════════════════════╝")
f_draw_infopanel(lapos_x, lapos_y, 6,  "HMA3 on TF " + Resolution3 + "  = " + tostring(HMA3,"#.####") + (H2UP ? " BUY" : " SELL"))
f_draw_infopanel(lapos_x, lapos_y, 4,  "HMA2 on TF " + Resolution2 + "  = " +  tostring(HMA2,"#.####") + (H1UP ? " BUY" : " SELL"))
f_draw_infopanel(lapos_x, lapos_y, 2,  "HMA1 on TF " + timeframe.period + "  = " + tostring(HMA,"#.####") + (HUP ? " BUY" : " SELL"))
f_draw_infopanel(lapos_x, lapos_y, 0,  "╔═════════ HMA(" + tostring(Period,"#") +") ════════╗")
change_color=HMA>HMA3?color.green:color.red
change_color2=HMA2>HMA3?color.lime:color.yellow
plot1=plot(HMA3,color=change_color2,title="3 Hull MA Line",linewidth=2,transp=75)
plot2=plot(HMA2,color=change_color,title="2 Hull MA Line",linewidth=2,transp=75)
plot3=plot(HMA,color=color.white,title="Hull MA Line",linewidth=2,transp=75)
fill(plot1,plot3,color=change_color,transp=90)
fill(plot2,plot3,color=change_color2,transp=75)
if (H2UP and H1UP and HUP)
    strategy.entry("BUY",strategy.long)
if (not H2UP and not H1UP and not HUP)
    strategy.entry("SELL",strategy.short)

Mehr