Handelsstrategie für den Hull Moving Average Oscillator


Erstellungsdatum: 2023-10-07 15:24:31 zuletzt geändert: 2023-10-07 15:24:31
Kopie: 0 Klicks: 1028
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

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.

Strategieprinzip

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:

  1. Berechnung von nma, Periode hullperiod

  2. Berechnen Sie n2ma, wobei die Periode die Hälfte der nma-Periode ist

  3. Berechnung der Differenz zwischen n2ma und nma

  4. 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

  5. Wenn der Preis die Hull-Linie überschreitet, gibt es ein Kaufsignal

  6. Verkaufssignale, wenn der Preis unter der Hull-Linie fällt

  7. Wenn der Preis von der Hull-Linie abweicht, überspringen Sie das Signal

  8. Eintritt mit einer bestimmten prozentualen Position und Eintritt mit einem Ausgangsstillstand

Analyse der Stärken

Diese Strategie hat folgende Vorteile:

  1. Der Hull Moving Average ist ein sehr schneller Trendfänger, der sich auf die Entwicklung des Tages stützt.

  2. Die Hull-Leitung filtert Falschsignale und verbessert die Signalqualität.

  3. Gute Rücknahme- und Verlustquote für Kurzstreckenoperationen

  4. Flexible Anpassung der Parameter an unterschiedliche Marktumstände

  5. Umkehrschluss, die Schadenbegrenzung und Risikokontrolle

  6. Systematische Risiken, die in Verbindung mit saisonalen Risiken zu bestimmten Zeiträumen vermieden werden können

Risikoanalyse

Die Strategie birgt auch einige Risiken:

  1. Trend-Tracking-Strategien, die nicht rund um die Uhr handeln können

  2. Wenn sich der Trend umkehrt, entstehen größere Verluste

  3. Der Moving Average ist nicht in der Lage, die Wendepunkte rechtzeitig zu erfassen

  4. Kurzstrecken sind häufig und mit hohen Transaktionsgebühren verbunden

  5. 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:

  1. Ein Martingale Stop-Loss-Strategie zur Kontrolle von Einzelschäden

  2. Optimierung von Parametern, um die Robustheit von Parametern in verschiedenen Marktumgebungen zu testen

  3. In Kombination mit Trends zu beurteilen, um Rückschlüsse auf die Umkehrung zu vermeiden

  4. Verlängerung der Lagerhaltung und Verringerung der Handelsfrequenz

Optimierungsrichtung

Die Strategie kann auch in folgenden Bereichen optimiert werden:

  1. Kombination von Dynamik-Indikatoren, die den Anfangspunkt des Trends bestimmen, bessere Layout-Eingabe

  2. Die Einführung von Machine-Learning-Modellen, die die Richtung und Stärke von Trends bestimmen

  3. Anpassung der Parameter an den Markt in Echtzeit

  4. Hull-System mit mehreren Zeitperioden und verschiedenen Positionen für verschiedene Zeitperioden

  5. In Kombination mit dem Energiekennzeichen für die Transaktionsmenge vermeidet man Fehlbrüche, bei denen die Kapazität nicht ausreicht

  6. Hinzufügen eines Moduls zur Positionsverwaltung basierend auf der Volatilität, um Positionen dynamisch an die Volatilität anzupassen

Zusammenfassen

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.

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