Die Strategie basiert auf dem Hull Moving Average. Die Strategie nutzt den Hull Moving Average, um ein Kauf- und Verkaufssignal zu erzeugen. Die Strategie gehört zu den Trend-Tracking-Strategie.
Die Strategie basiert hauptsächlich auf dem Hull Moving Average, der aus zwei Moving Averages besteht. Zuerst wird der mittlere Moving Average der Preise nma berechnet, mit der Periode hullperiod.
Die Hull-Linie ist die lineare Regression zwischen den Werten nma und n2ma. Wenn der Preis von der Hull-Linie abweicht, überspringt die Strategie das Kauf- und Verkaufssignal.
Die Regeln der Strategie lauten:
Berechnung von nma, Periode hullperiod
Berechnen Sie n2ma, wobei die Periode die Hälfte der nma-Periode ist
Berechnung der Differenz zwischen n2ma und nma
Der Moving Average für die Diff mit der Periode sqrt{\displaystyle \sqrt{\mathrm {hull } } } {\displaystyle \sqrt{{\mathrm {hull } } } } ergibt die Hull-Linie Hull_Line
Wenn der Preis die Hull-Linie überschreitet, gibt es ein Kaufsignal
Verkaufssignale, wenn der Preis unter der Hull-Linie fällt
Wenn der Preis von der Hull-Linie abweicht, überspringen Sie das Signal
Eintritt mit einer bestimmten prozentualen Position und Eintritt mit einem Ausgangsstillstand
Diese Strategie hat folgende Vorteile:
Der Hull Moving Average ist ein sehr schneller Trendfänger, der sich auf die Entwicklung des Tages stützt.
Die Hull-Leitung filtert Falschsignale und verbessert die Signalqualität.
Gute Rücknahme- und Verlustquote für Kurzstreckenoperationen
Flexible Anpassung der Parameter an unterschiedliche Marktumstände
Umkehrschluss, die Schadenbegrenzung und Risikokontrolle
Systematische Risiken, die in Verbindung mit saisonalen Risiken zu bestimmten Zeiträumen vermieden werden können
Die Strategie birgt auch einige Risiken:
Trend-Tracking-Strategien, die nicht rund um die Uhr handeln können
Wenn sich der Trend umkehrt, entstehen größere Verluste
Der Moving Average ist nicht in der Lage, die Wendepunkte rechtzeitig zu erfassen
Kurzstrecken sind häufig und mit hohen Transaktionsgebühren verbunden
Unkorrekt eingestellte Parameter könnten zu rückläufigen Erträgen in den Schwankungen führen
Diese Risiken können mit folgenden Maßnahmen bekämpft werden:
Ein Martingale Stop-Loss-Strategie zur Kontrolle von Einzelschäden
Optimierung von Parametern, um die Robustheit von Parametern in verschiedenen Marktumgebungen zu testen
In Kombination mit Trends zu beurteilen, um Rückschlüsse auf die Umkehrung zu vermeiden
Verlängerung der Lagerhaltung und Verringerung der Handelsfrequenz
Die Strategie kann auch in folgenden Bereichen optimiert werden:
Kombination von Dynamik-Indikatoren, die den Anfangspunkt des Trends bestimmen, bessere Layout-Eingabe
Die Einführung von Machine-Learning-Modellen, die die Richtung und Stärke von Trends bestimmen
Anpassung der Parameter an den Markt in Echtzeit
Hull-System mit mehreren Zeitperioden und verschiedenen Positionen für verschiedene Zeitperioden
In Kombination mit dem Energiekennzeichen für die Transaktionsmenge vermeidet man Fehlbrüche, bei denen die Kapazität nicht ausreicht
Hinzufügen eines Moduls zur Positionsverwaltung basierend auf der Volatilität, um Positionen dynamisch an die Volatilität anzupassen
Die Hull Moving Average Schwingungs-Trading-Strategie insgesamt ist eine sehr praktische Short-Line-Tracking-Strategie. Sie nutzt die Hull Moving Average-System, um die Richtung des Trends zu bestimmen, um einen Übergang zu erreichen. Im Vergleich zu einem einzigen Moving Average-System hat sie eine höhere Signalqualität und Parameters Flexibilität.
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// Hull Moving Average Swing Trader by SEASIDE420
strategy("Hull Moving Average Swing Trader", shorttitle="HMA_Swing_Trader", default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0)
hullperiod = input(title="HullMA Period", type=input.integer, defval=210, minval=1)
price = input(open, type=input.source, title="Price data")
FromMonth = input(defval=1, title="From Month", minval=1, maxval=12)
FromDay = input(defval=1, title="From Day", minval=1, maxval=31)
FromYear = input(defval=2020, title="From Year", minval=2017)
ToMonth = input(defval=1, title="To Month", minval=1, maxval=12)
ToDay = input(defval=1, title="To Day", minval=1, maxval=31)
ToYear = input(defval=9999, title="To Year", minval=2017)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() => true
n2ma = 2 * wma(price, round(hullperiod / 2))
nma = wma(price, hullperiod)
diff = n2ma - nma
sqn = round(sqrt(hullperiod))
n2ma1 = 2 * wma(price[1], round(hullperiod / 2))
nma1 = wma(price[1], hullperiod)
diff1 = n2ma1 - nma1
n1 = wma(diff, sqn)
n2 = wma(diff1, sqn)
Hull_Line = n1 / n1 * n2
Hull_retracted = if n1 > n2
Hull_retracted = Hull_Line - 2
else
Hull_retracted = Hull_Line + 2
c1 = Hull_retracted + n1 - price
c2 = Hull_retracted - n2 + price
c4 = n1 > n2 ? color.green : color.red
c2p = plot(c2, color=color.black, linewidth=1)
c3p = plot(price, color=color.black, linewidth=1)
fill(c3p, c2p, color=c4, transp=75)
//plot(cross(c1, c2) ? c1 : na, style=plot.style_circles, color=c4, linewidth=4)
if price < c2
strategy.close("BUY", when=window())
if price > c2
strategy.close("SELL", when=window())
if price > c2 and price[1] > c1
strategy.entry("BUY", strategy.long, when=window())
if price < c1 and price[1] < c2
strategy.entry("SELL", strategy.short, when=window()) // /L'-,
// ,'-. ` ```` / L '-,
// . _,--dMMMM\ ` ` ` '`.. / '-,
// : _,--, )MMMMMMMMM),. ` ,<> /_ '-,'
// ; ___,--. \MM( `-' )M//MM\ ,',.; .-'* ; .'
// | \MMMMMM) \MM\ ,dM//MMM/ ___ < ,; `. )`--' /
// | \MM()M MMM)__ /MM(/MP' ___, \ \ ` `. `. /__, ,'
// | MMMM/ MMMMMM( /MMMMP'__, \ | / `. `-,_\ /
// | MM /MMM---' `--'_ \ |-' |/ `./ .\----.___
// | /MM' `--' __,- \"" |-' |_, `.__) . .F. )-.
// | `--' \ \ |-' |_, _,-/ J . . . J-'-. `-.,
// | __ \`. | | | \ / _ |. . . . \ `-. F
// | ___ / \ | `| ' __ \ | /-' F . . . . \ '`
// | \ \ \ / | __ / \ | |,-' __,- J . . . . . \
// | | / |/ __,- \ ) \ / |_,- __,--' |. .__.----,'
// | |/ ___ \ |'. |/ __,--' `.-;;;;;;;;;\
// | ___ \ \ | | ` __,--' /;;;;;;;;;;;;.
// | \ \ |-'\ ' __,--' /;;;;;;;;;;;;;;\
// \ | | / | __,--' `--;;/ \;-'\
// \ | |/ __,--' / / \ \
// \ | __,--' / / \ \
// \|__,--' _,-;M-K, ,;-;\
// <;;;;;;;; '-;;;;
// :D