Handelsstrategie für den Schwenk des gleitenden Durchschnitts der Hull

Schriftsteller:ChaoZhang, Datum: 2023-10-07 15:24:31
Tags:

Übersicht

Diese Strategie ist eine kurzfristige Handelsstrategie, die auf dem Indikator Hull Moving Average basiert.

Strategie Logik

Diese Strategie basiert hauptsächlich auf dem Hull Moving Average-Indikator. Die Hull Moving Average-Linie besteht aus zwei gleitenden Durchschnitten. Zuerst berechnet sie die mediane gleitende Durchschnittslinie nma des Preises mit einer Periode der Hullperiod. Dann berechnet sie die schnelle gleitende Durchschnittslinie n2ma mit einer Periode von der Hälfte der nmas. Wenn n2ma über nma geht, wird ein Kaufsignal generiert. Wenn n2ma unter nma geht, wird ein Verkaufssignal generiert.

Um einige falsche Signale auszufiltern, führt die Strategie auch die Hull Line (Hull_Line) ein. Die Hull Line ist ein lineares Regressionsergebnis der Differenz zwischen nma und n2ma. Wenn zwischen Preis und Hull Line eine Divergenz besteht, überspringt die Strategie das Handelssignal.

Insbesondere sind die Strategievorschriften wie folgt:

  1. Berechnen Sie die nma mit Periode-Rumpfperiode

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

  3. Berechnen Sie die Differenzdifferenz zwischen n2ma und nma

  4. Moving average the diff with period sqrt ((hullperiod), erhalten und erhalten die Hull Line Hull_Line

  5. Wenn der Preis über die Hull Line geht, wird ein Kaufsignal generiert.

  6. Wenn der Preis unterhalb der Hull-Linie fällt, wird ein Verkaufssignal generiert.

  7. Wenn es eine Abweichung zwischen Preis und Hull Line gibt, überspringen Sie das Signal.

  8. Eintritt mit einem bestimmten Prozentsatz der Position, Annahme von Exit Stop Loss

Analyse der Vorteile

Zu den Vorteilen dieser Strategie gehören:

  1. Auf der Grundlage des Hull Moving Average kann er den Trend schnell erfassen und dem Trend folgen

  2. Verwenden Sie Hull Line, um falsche Signale zu filtern und die Signalqualität zu verbessern

  3. Gute Risiko-Rendite-Ratio und Auslastung, geeignet für den kurzfristigen Handel

  4. Flexible Einstellung der Parameter, an unterschiedliche Marktumgebungen angepasst

  5. Annahme der Umkehrung Stop-Loss, kann Stop-Loss in der Zeit und Risiken zu kontrollieren

  6. Kombination der Saisonalität zur Vermeidung von Systemrisiken in bestimmten Zeiträumen

Risikoanalyse

Diese Strategie birgt auch einige Risiken:

  1. Trend nach Strategie, kann nicht den ganzen Tag handeln

  2. Größere Verluste bei Trendumkehr

  3. Verzögerung der gleitenden Durchschnittswerte, nicht in der Lage, die Wendepunkte rechtzeitig zu erfassen

  4. Hohe Handelsfrequenz führt zu höheren Handelskosten

  5. Unangemessene Parameter-Einstellungen können zu einer geringeren Rentabilität in den Bereichsmarkt führen

Um diese Risiken zu kontrollieren, können wir folgende Maßnahmen ergreifen:

  1. Einführung einer Martingale-Stop-Loss-Strategie zur Kontrolle von Einzelverlusten

  2. Optimierung der Parameter und Testrobustheit in verschiedenen Marktumgebungen

  3. Kombination von Trendbeurteilungsindikatoren, um bei Umkehrungen nicht nach Trends zu jagen

  4. Erhöhen Sie die Haltedauer um die Handelsfrequenz zu senken

Optimierungsrichtlinien

Diese Strategie kann auch in folgenden Aspekten optimiert werden:

  1. Kombination von Dynamikindikatoren zur Ermittlung des Ausgangspunktes von Trends für einen besseren Einstieg

  2. Hinzufügen von Modellen für maschinelles Lernen zur Beurteilung der Trendrichtung und -stärke

  3. Anpassung von Parametern für die Anpassung von Parametern anhand der Marktdynamik in Echtzeit

  4. Konfiguration von Hullsystemen mit mehreren Zeiträumen mit unterschiedlichen Positionsgrößen für verschiedene Zeiträume

  5. Kombination von Volumenindikatoren, um falsche Ausbrüche mit unzureichender Dynamik zu vermeiden

  6. Hinzufügen eines volatilitätsbasierten Positionsgrößenmodells zur dynamischen Anpassung der Positionsgrößen basierend auf der Volatilität

Zusammenfassung

Die Hull Moving Average Swing Trading Strategie ist eine effiziente kurzfristige Trend-Folge-Strategie insgesamt. Sie verwendet das Hull Moving Average-System, um die Trendrichtung zu bestimmen, um dem Trend zu folgen. Im Vergleich zu einzelnen gleitenden Durchschnittssystemen hat sie eine höhere Signalqualität und Parameterflexibilität. Der Vorteil dieser Strategie liegt darin, Trendänderungen schnell mit relativ kleinen Drawdowns zu erfassen. Die Schwäche ist die Unfähigkeit, mit Trendumkehrungen fertig zu werden.


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


Mehr