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.
Diese Strategie beruht hauptsächlich auf folgenden Schlüsselpunkten:
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.
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.
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.
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.
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.
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.
Obwohl diese Strategie in mehrfacher Hinsicht optimiert wurde, bestehen nach wie vor einige potenzielle Risiken:
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.
Vorhandensein einer Fehlerquote des Signals
Handelssignale, die auf Indikatoren und Modellen basieren, werden mehr oder weniger falsche Signale oder fehlende Signale aufweisen.
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.
Übergewichtrisiko
Bei zu komplexen Parameter-Einstellungen besteht die Gefahr einer Überanpassung. Das System muss mit einer begrenzten Anzahl von Parameterkombinationen vereinfacht werden.
Es gibt noch einige Möglichkeiten, diese Strategie zu optimieren, vor allem in den folgenden Bereichen:
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.
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.
Einbeziehung von Grunddaten
Zusätzlich werden makroökonomische Daten, politische Informationen und andere grundlegende Faktoren hinzugefügt, um langfristige Entscheidungen zu optimieren.
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.
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") ///////////////////////////////////////////////////////////////////////////////////////////