Handelsstrategie basierend auf der Kreuzung von Hull Moving Average und WT-Indikator


Erstellungsdatum: 2023-09-26 20:00:32 zuletzt geändert: 2023-09-26 20:00:32
Kopie: 0 Klicks: 611
1
konzentrieren Sie sich auf
1237
Anhänger

Überblick

Die Strategie kombiniert hauptsächlich die Kreuzung der Hull Moving Average und der WT-Indikatoren, um die Vorteile der jeweiligen Indikatoren zu nutzen, um eine genauere Entscheidung bei der Trendbeurteilung und der Auswahl der Einstiegsmomente zu treffen.

Strategieprinzip

Die Strategie besteht hauptsächlich aus dem Hull Moving Average und dem WT Crossover Signal.

Der Hull Moving Average-Teil, der die Richtung des Trends durch die Berechnung der kurz- und langfristigen Hull MA und die Füllung in Farbe ermittelt. Die Berechnungsformel lautet:

Kurzzeit Hull MA = WMA*WMA(n/2) - WMA(n), sqrt(n))

Langzeit-Hull-MA = WMA (WMA) (n/3)*3 - WMA(n/2), n/2)

Der WMA ist ein gewichteter Moving Average. Wenn eine kurze Linie eine lange Linie durchschreitet, ist dies ein bullish Signal, ansonsten ein bearish Signal.

WT-Indikator-Teil, der die Einreise durch Berechnung der polygonalen Mittellinie des WT-Indikators und die Beobachtung der Kreuzung der Mittellinie bestimmt. Die Berechnungsformel lautet:

TCI = (Close - EMA(Close,n1)) / (k * STD(Close - EMA(Close,n1),n1))

WT1 = EMA(TCI,n2)

WT2 = SMA(WT1,m)

Der TCI ist der Trend Composite Index, der die Abweichung des Kurses von der mittleren EMA des Kanals widerspiegelt. WT1 ist der EMA-Gleichwert des TCI, WT2 ist der SMA-Wert des WT1 und m ist in der Regel 4. Wenn der WT1 über den WT2 geht, ist es ein Mehrkopfsignal, und wenn der WT1 unter dem WT2 geht, ist es ein leeres Signal.

Die Kombination von Hull MA-Trendbeurteilung und WT-Index-Kreuzsignal kann nur eingegeben werden, wenn die Trendrichtung korrekt ist.

Analyse der Stärken

Die Strategie kombiniert die Vorteile der Hull MA und WT-Indikatoren und bietet folgende Vorteile:

  1. Durch die Änderung der Berechnungsmethode des Moving Averages kann die Hull MA die Tendenz der Preisänderungen schneller erfassen und den Marktrauschen effizient ausfiltern, um die Trends zuverlässig und genau zu beurteilen.

  2. Der WT-Indikator nutzt die Eigenschaften von Preisschwankungen innerhalb des Kanals, um Wendepunkte schnell zu erfassen und ein genaueres Handelssignal zu erzeugen.

  3. In Kombination mit diesen beiden Methoden können sowohl Trendurteile als auch Kreuzsignale berücksichtigt werden, um Risiken im Trendfeld zu kontrollieren.

  4. Die Hull MA-Gleichungsparameter und die WT-Indikatorparameter sind individuell anpassbar und optimierbar, je nach Sortencharakteristik und Handelspräferenzen.

  5. Der Hull MA oder der WT-Indikator kann für den Handel einzeln verwendet werden, aber auch in Kombination mit dem Trend-Tracking und der Cross-Verifizierung.

  6. Es ist möglich, eine Stop-Loss-Stop-Strategie einzurichten, um das Risiko eines einzelnen Handels effektiv zu kontrollieren.

Risikoanalyse

Die Risiken dieser Strategie sind:

  1. Die Hull MA und WT Indikatoren haben eine gewisse Verdunkelung der Preise, die möglicherweise ein wenig zurückbleiben und zu einer ungenauen Eintrittszeit führen können.

  2. Der WT-Indikator ist anfällig für falsche Signale von Mehrkopf- und Hohlkopf-Backs, die das Handelsrisiko erhöhen, wenn sie nicht mit dem Trendbeurteilung kombiniert werden.

  3. Die falsche Einstellung der Parameter beeinflusst auch die Ergebnisse der Transaktion und erfordert ständige Optimierung aufgrund der Merkmale der Sorte.

  4. In Zeiten von Trendschwankungen können Stop-Losses häufig ausgelöst werden, was zu einem gewissen Verlust des Handels führt.

Risiken können optimiert und verbessert werden, indem:

  1. Anpassung der Hull MA- und WT-Parameter zur Ermittlung der optimalen Balance. Es können auch andere Indikatoren in Kombination mit der Hull MA getestet werden.

  2. Die WT-Indikatoren werden von der WT-Indikator-Gruppe entwickelt, um Trends beurteilen zu können.

  3. Die Optimierung der Parameter mit Rückmeldungen und simulierten Transaktionen und die Einrichtung einer angemessenen Stop-Loss-Marge.

  4. Wenn die Trends unklar sind, reduzieren Sie die Größe Ihrer Position oder halten Sie sie vorübergehend aus.

Optimierungsrichtung

Die Strategie kann in folgenden Richtungen weiter optimiert werden:

  1. Verschiedene Kombinationen von Moving Averages und WT-Indikatoren werden getestet, um bessere Ausgleichspunkte zu finden.

  2. Die Einführung anderer Indikatoren, wie beispielsweise Schwingungsindikatoren und Bollinger Bands, verbessert die Entscheidungsgenauigkeit.

  3. Optimierung der Parameter-Einstellungen, um die optimale Parameterkombination durch Rückmessung und Simulation zu finden. Parameteroptimierungsprogramme können erstellt werden, um schnell die optimale Parameter zu finden.

  4. Optimierung von Stop-Loss-Strategien, wie z. B. die Verwendung von beweglichen Stop-Losses, Schwingungsstop-Losses, Stop-Losses aus der Nähe und aus der Ferne, um die Wahrscheinlichkeit zu verringern, dass Stop-Losses ausgelöst werden.

  5. Optimierung der Positionsmanagement-Strategie, reduzieren Sie die Häufigkeit und die Größe der Positionen, wenn der Trend unklar ist, und verringern Sie das Risiko.

  6. Die Einführung von High-Tech-Technologien wie Machine Learning, um intelligentere Handelsentscheidungen zu treffen und die Parameter selbst anzupassen.

Zusammenfassen

Die Strategie kombiniert die Charakteristik von Hull MA Glatten Moving Average und WT Indikator-Kreuzung, kombiniert mit Trendbeurteilung und Cross-Verifizierung Vorteile. Der Handel unter der Voraussetzung, dass die richtige Richtung sichergestellt wird, kann das Risiko effektiv kontrolliert werden. Die Stabilität und die Effektivität der Strategie können durch Optimierung der Parameter-Einstellung, Stop-Loss-Strategie und Positionsmanagement weiter verbessert werden.

Strategiequellcode
/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// WT CROSS @author [© LazyBear]
// © pigsq
// @version=5

strategy("Kahlman HullMA / WT Cross Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100)

_1 = input(false, '───────── SP/TP SETTINGS ─────────')

stoploss1 = input(title='Stop Loss On/Off?', defval=true)
stoploss = input.float(5, "Stop Loss", minval = 1, step = 1)/100
takeprofit1 = input(title='Take Profit On/Off?', defval=true)
takeprofit = input.float(10, "Take Profit", minval = 1, step = 1)/100

_2 = input(false, '──────── WT CROSS SETTINGS ────────')

wtcross = input(title='WT Cross On/Off?', defval=true)
wtcross2 = input(title='Change WT Cross Method ( If WT Cross ON )', defval=false)

/// WT CROSS ///

n1 = input(10, 'Channel Length')
n2 = input(21, 'Average Length')

ap = hlc3
esa = ta.ema(ap, n1)
r = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * r)
tci = ta.ema(ci, n2)

wt1 = tci
wt2 = ta.sma(wt1, 4)

/// WT CROSS ///

/// HULL TREND WITH KAHLMAN ///

_3 = input(false, '──────── HULLMA SETTINGS ────────')

srchull = input(hl2, 'Source')
lengthhull = input(24, 'Lookback')
gain = input(10000, 'Gain')
kh = input(true, 'Use Kahlman')

hma(_srchull, _lengthhull) =>
    ta.wma((2 * ta.wma(_srchull, _lengthhull / 2)) - ta.wma(_srchull, _lengthhull), math.round(math.sqrt(_lengthhull)))

hma3(_srchull, _lengthhull) =>
    p = lengthhull / 2
    ta.wma(ta.wma(close, p / 3) * 3 - ta.wma(close, p / 2) - ta.wma(close, p), p)

kahlman(x, g) =>
    kf = 0.0
    dk = x - nz(kf[1], x)
    smooth = nz(kf[1], x) + dk * math.sqrt(g / 10000 * 2)
    velo = 0.0
    velo := nz(velo[1], 0) + g / 10000 * dk
    kf := smooth + velo
    kf

a = kh ? kahlman(hma(srchull, lengthhull), gain) : hma(srchull, lengthhull)
b = kh ? kahlman(hma3(srchull, lengthhull), gain) : hma3(srchull, lengthhull)
c = b > a ? color.lime : color.red
crossdn = a > b and a[1] < b[1]
crossup = b > a and b[1] < a[1]

p1hma = plot(a, color=c, linewidth=1, title='Long Plot', transp=75)
p2hma = plot(b, color=c, linewidth=1, title='Short Plot', transp=75)
fill(p1hma, p2hma, color=c, title='Fill', transp=55)

/// HULL TREND WITH KAHLMAN ///

/// DATE ///

_4 = input(false, '───────── DATE SETTINGS ─────────')

FromMonth = input.int(defval=1, title='From Month', minval=1, maxval=12)
FromDay = input.int(defval=1, title='From Day', minval=1, maxval=31)
FromYear = input.int(defval=999, title='From Year', minval=999)
ToMonth = input.int(defval=1, title='To Month', minval=1, maxval=12)
ToDay = input.int(defval=1, title='To Day', minval=1, maxval=31)
ToYear = input.int(defval=9999, title='To Year', minval=999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() =>
    time >= start and time <= finish ? true : false

/// DATE ///

/// LONG/SHORT CONDITION ///

longCondition = crossup and ta.crossover(wt1,wt2)
longCondition1 = crossup
longCondition2 = crossup and wt1 > wt2

if (wtcross == true ? longCondition : wtcross == false ? longCondition1:na)
    strategy.entry("LONG", strategy.long, when=window(), comment="Enter Long")
else if (wtcross2 == true ? longCondition2 : wtcross2 == false ? longCondition:na)
    strategy.entry("LONG", strategy.long, when=window(), comment="Enter Long")
    
shortCondition = crossdn and ta.crossunder(wt1,wt2)
shortCondition1 = crossdn
shortCondition2 = crossdn and wt1 < wt2

if (wtcross == true ? shortCondition : wtcross == false ? shortCondition1:na)
    strategy.entry("SHORT", strategy.short, when=window(), comment="Enter Short")
else if (wtcross2 == true ? shortCondition2 : wtcross2 == false ? shortCondition:na)
    strategy.entry("LONG", strategy.long, when=window(), comment="Enter Short")

/// LONG/SHORT CONDITION ///

/// CLOSE STRATEGY ///

strategy.close("LONG", when=wtcross == true ? shortCondition : wtcross == false ? shortCondition1:na, comment = "Close Long")
strategy.close("SHORT", when=wtcross == true ? longCondition : wtcross == false ? longCondition1:na, comment = "Close Short")

/// EXIT STRATEGY ///

strategy.exit("LONG", when=strategy.position_size > 0, stop=stoploss1 == true ? strategy.position_avg_price * (1 - stoploss):na, limit=takeprofit1 == true ? strategy.position_avg_price * (1 + takeprofit):na, comment="Exit Long")
strategy.exit("SHORT", when=strategy.position_size < 0, stop=stoploss1 == true ? strategy.position_avg_price * (1 + stoploss):na, limit=takeprofit1 == true ? strategy.position_avg_price * (1 - takeprofit):na, comment ="Exit Short")

/// LONG SL/TP LINE ///

plot(strategy.position_size > 0 ? strategy.position_avg_price * (1 - stoploss) : na, title='Long Stop Loss', color=stoploss1 == true ? color.new(color.red, 0):na, style=plot.style_linebr)
plot(strategy.position_size > 0 ? strategy.position_avg_price * (1 + takeprofit) : na, title='Long Take Profit', color=takeprofit1 == true ? color.new(color.green, 0):na, style=plot.style_linebr)

/// LONG SL/TP LINE ///

/// SHORT SL/TP LINE ///

plot(strategy.position_size < 0 ? strategy.position_avg_price * (1 + stoploss) : na, title='Short Stop Loss', color=stoploss1 == true ? color.new(color.red, 0):na, style=plot.style_linebr)
plot(strategy.position_size < 0 ? strategy.position_avg_price * (1 - takeprofit) : na, title='Short Take Profit', color=takeprofit1 == true ? color.new(color.green, 0):na, style=plot.style_linebr)

/// SHORT SL/TP LINE ///