Ausgereifte Handelsstrategie für maschinelles Lernen

Schriftsteller:ChaoZhang, Datum: 2024-01-29 11:20:42
Tags:

img

Übersicht

Diese Strategie nutzt maschinelle Lernmethoden, um eine automatische Handelsstrategie zu implementieren. Sie integriert mehrere Indikatoren und Modelle, um automatisch Handelssignale zu generieren und entsprechend Kauf- und Verkaufsentscheidungen zu treffen.

Strategieprinzip

Diese Strategie beruht hauptsächlich auf folgenden Schlüsselpunkten:

  1. Verwenden Sie Hull Moving Average, um die Markttrendrichtung zu bestimmen
  2. Verwenden der EMA zur Beurteilung von kurz- und mittelfristigen Trends
  3. Verwenden Sie den Kerzenkörperkanal, um die wichtigsten STUTZ-/Widerstandswerte zu lokalisieren
  4. Entscheidungen auf der Grundlage der Übergang zwischen den offenen und den geschlossenen Preisen aus Multi-Timeframe SECURITY

Insbesondere wird die Strategie den Hull-MA, den 13-Perioden-EMA und den 21-Perioden-EMA darstellen. Kurz- und mittelfristige Trendrichtungen werden anhand des langen und kurzen Status der EMAs beurteilt. In Kombination mit dem Hull-MA werden längere Zyklustrends bestimmt. Dies liefert Leitlinien für die allgemeine Richtung für nachfolgende Handelssignale.

Vor der Anpassung der Positionen bezieht sich die Strategie auf die höchsten und niedrigsten Preise im Entity-Kanal, die den Unterstützungs- und Widerstandsniveaus entsprechen.

Schließlich wird die Strategie auf die 60-Perioden-Offenen- und Schließpreise zurückgegriffen. Wenn der Schließpreis über dem Offenenpreis überschreitet, wird ein Kaufsignal generiert. Wenn er darunter überschreitet, wird ein Verkaufssignal generiert. Dies vervollständigt die gesamte Handelslogik.

Analyse der Vorteile

Der größte Vorteil dieser Strategie besteht darin, dass sie Indikatoren für maschinelles Lernen und technische Analyse kombiniert, um eine logische, anpassbare und einfach zu bedienende automatisierte Handelslösung zu erzielen.

  1. Multi-Indikator-Kombination verbessert die Signalgenauigkeit

    Die Strategie stützt sich nicht nur auf einen oder zwei Indikatoren, sondern berücksichtigt mehrere Faktoren wie Trends, Support/Resistance und Preisdurchbrüche, was die Zuverlässigkeit und Genauigkeit der Signale erheblich verbessert.

  2. Flexible Einstellungen der Parameter

    Die Länge der Hull-MA- und EMA-Perioden sowie der offenen/nahen Crossover-Perioden kann durch Parameter angepasst werden, wodurch die Strategie an unterschiedliche Marktumgebungen angepasst werden kann.

  3. Automatisierte Handelssignale

    Die auf Indikatoren und Crossovers basierenden Handelssignale können automatisch ohne manuelles Urteilen Kauf- und Verkaufsaktionen auslösen, wodurch die Schwierigkeiten verringert werden.

  4. Visualisierte Anzeige

    Die Diagramme in der Strategie können die Marktstruktur, den Trendstatus und die wichtigsten Preise deutlich darstellen und so die Grundlage für das Strategieurteil intuitiv darstellen.

Risikoanalyse

Obwohl diese Strategie in mehrfacher Hinsicht optimiert wurde, bestehen nach wie vor einige potenzielle Risiken:

  1. Nichtverfolgung drastischer Preisbewegungen

    In volatilen Märkten können Indikatoren unwirksam oder verzögert werden, wodurch die Strategie es versäumt, Preisänderungen zeitlich zu verfolgen.

  2. Vorhandensein einer Fehlerquote des Signals

    Handelssignale, die auf Indikatoren und Modellen basieren, werden mehr oder weniger falsche Signale oder fehlende Signale aufweisen.

  3. Risikopositionen, für die keine Risikopositionen gelten

    Die Strategie, bei der sowohl Long- als auch Short-Positionen gleichzeitig getätigt werden, birgt das Risiko von Verlusten auf beiden Seiten, wenn die Entscheidungen falsch verlaufen.

  4. Übergewichtrisiko

    Bei zu komplexen Parameter-Einstellungen besteht die Gefahr einer Überanpassung. Das System muss mit einer begrenzten Anzahl von Parameterkombinationen vereinfacht werden.

Optimierungsrichtlinien

Es gibt noch einige Möglichkeiten, diese Strategie zu optimieren, vor allem in den folgenden Bereichen:

  1. Hinzufügen von mehr Indikatorsignalen

    Zusätzlich zu den bestehenden Indikatoren können weitere Hilfsindikatoren eingeführt werden, wie BOLL-Kanäle, KD-Indikatoren usw., um die Systemreferenz zu erweitern.

  2. Anwendung von Deep-Learning-Modellen

    Verwenden Sie einfache Indikatoren als Merkmale, um LSTM und andere Deep-Learning-Modelle zu trainieren, um die Signalqualität zu verbessern.

  3. Einbeziehung von Grunddaten

    Zusätzlich werden makroökonomische Daten, politische Informationen und andere grundlegende Faktoren hinzugefügt, um langfristige Entscheidungen zu optimieren.

  4. Risiko- und Positionsgrößen

    Einführung von Stop-Loss-Strategien, dynamische Anpassung der Positionsgröße anhand der Strategie-Rendite-Volatilität, um Risiken streng zu kontrollieren.

Schlussfolgerung

Diese Strategie integriert Trends, Unterstützungs-/Widerstandsniveaus, Ausbrüche und mehrere andere Indikatoren und nutzt maschinelle Lernmethoden, um automatisierte, einsatzbereite quantitative Handelslösungen zu erzielen. Sie hat die Vorteile verschiedener Indikatorkombinationen, einstellbarer Parameter und automatisierter Signale, während sie auch mit Abweichungen, Signalfehlern, Long/Short Mix-Risiken in gewissem Maße konfrontiert ist. Es gibt noch Richtungen für weitere Optimierungen durch Einbeziehung mehrer Hilfsindikatoren und Modelle, Kombination von Grundfaktoren, dynamische Anpassung von Positionen und so weiter, um eine stabilere, genauere und intelligentere quantitative Handelsleistung zu erzielen.


/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title='Ali Jitu Abus', shorttitle='Ali_Jitu_Abis_Strategy', overlay=true, pyramiding=0, initial_capital=1000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:',  defval=10) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=1, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=2, title="Hull MA")

//============ signal Generator ==================================//
Period=input('60')
ch1 = request.security(syminfo.tickerid, Period, open)
ch2 = request.security(syminfo.tickerid, Period, close)
longCondition = crossover(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

plot(request.security(syminfo.tickerid, Period, close), color=red, title="Period request.security Close")
plot(request.security(syminfo.tickerid, Period, open), color=green, title="Period request.security Open")

///////////////////////////////////////////////////////////////////////////////////////////

Mehr