Dieser Artikel beschreibt eine quantitative Handelsstrategie namens “Kyrie Crossover @zaytrade”. Die Strategie kombiniert die DMI-Indikatoren für die Doppel-Gleichgewichtskreuzung und die Mehrzeitperiode, um Handelsentscheidungen durch die Erfassung von Markttrends zu treffen. Im Mittelpunkt der Strategie stehen die Kreuzungssignale der Kurzzeit-Gleichgewichtslinie (die 10-Zyklus-EMA) und der Langzeit-Gleichgewichtslinie (die 323-Zyklus-EMA), während die DMI-Indikatoren für mehrere Zeitperioden wie 5 Minuten, 15 Minuten, 30 Minuten und 1 Stunde kombiniert werden, um die Richtung und Stärke des Trends zu bestätigen.
Die Grundlagen dieser Strategie lassen sich in folgende Teile unterteilen:
Doppel-Even-Linien-Kreuzung:Die Strategie nutzt die kurzfristige EMA (10-Zyklen) und die langfristige EMA (323-Zyklen) zur Erfassung von Markttrends. Wenn die kurzfristige EMA über die langfristige EMA fällt, gibt es potenzielle Verkaufsmöglichkeiten; wenn die kurzfristige EMA unter die langfristige EMA fällt, gibt es potenzielle Verkaufsmöglichkeiten.
Mehrzeit-DMI-Wert:Um die Richtung und Stärke des Trends weiter zu bestätigen, verwendet die Strategie einen DMI-Indikator für mehrere Zeiträume. Der DMI-Indikator besteht aus ADX ((Directional Average Index), + DI ((Directional Upward Index) und -DI ((Directional Downward Index). Durch den Vergleich der relativen Stärke von + DI und -DI kann beurteilt werden, ob der aktuelle Trend bullish oder bearish ist. Die Strategie berechnet den DMI-Indikator für mehrere Zeiträume wie 5 Minuten, 15 Minuten, 30 Minuten und 1 Stunde, um umfassendere Trendinformationen zu erhalten.
Trends bestätigt:Die Strategie bestätigt den Trend, indem sie die Mesolinienkreuzung und die DMI-Indikatoren für mehrere Zeiträume zusammen berücksichtigt. Die Strategie erzeugt ein entsprechendes Handelssignal, wenn die Mesolinienkreuzung und die Richtung der DMI-Indikatoren übereinstimmen. Zum Beispiel erzeugt die Strategie ein Mehrfachsignal, wenn ein kurzfristiger EMA einen langfristigen EMA durchbricht und die DMI-Indikatoren für mehrere Zeiträume einen bullischen Trend zeigen.
Risikomanagement:Die Strategie verwendet eine Positionsverwaltungsmethode, die auf dem Risikoprozentsatz basiert.riskPercentageEMA
Parameter, die die Risikobereitschaft für jeden Handel kontrollieren. Darüber hinaus nutzt die Strategie Stop-Loss-Points, um potenzielle Verluste zu begrenzen.
Das ist eine sehr wichtige Frage.Durch die Kombination von DMI mit mehreren Zeitperioden kann die Strategie die wichtigsten Trends des Marktes effektiv erfassen. Diese Methode hilft den Händlern, sich der allgemeinen Richtung des Marktes anzupassen und die Wahrscheinlichkeit eines erfolgreichen Handels zu erhöhen.
Mehrfache Zeitspanne bestätigt:Die Strategie berechnet die DMI-Indikatoren über mehrere Zeiträume, einschließlich 5 Minuten, 15 Minuten, 30 Minuten und 1 Stunde. Diese Analyse über mehrere Zeiträume bietet ein umfassenderes und zuverlässigeres Trendbestätigungssignal und reduziert das Auftreten von Falschsignalen.
Flexible Einstellungen für Parameter:Die Strategie bietet mehrere anpassbare Parameter wie kurzfristige EMA-Zyklen, langfristige EMA-Zyklen, ADX-Gleichungszyklen und DI-Längen. Benutzer können diese Parameter optimieren, um eine bessere Handelsleistung zu erzielen, je nach ihrem Handelsstil und ihren Markteigenschaften.
Risikomanagement:Die Strategie bietet eine Position-Management-Methode basierend auf Risikoprozentsätzen, die der Benutzer durch die EinstellungriskPercentageEMA
Parameter, die die Risikothek für jeden Handel kontrollieren. Darüber hinaus nutzt die Strategie Stop-Loss-Points, um potenzielle Verluste zu begrenzen und die Effektivität des Risikomanagements zu verbessern.
Parameter optimiert:Die Performance einer Strategie hängt in hohem Maße von der Wahl der Parameter ab. Die falsche Einstellung der Parameter kann zu einer schlechten Strategieleistung oder sogar zu einem größeren Rückzug führen. Daher müssen die Parameter in der Praxis optimiert und getestet werden, um die optimale Kombination von Parametern zu finden, die für die aktuellen Marktbedingungen geeignet sind.
Die Tendenz verzögert sich:Da die Strategie auf die Meselinie-Kreuzung und die DMI-Anzeige zur Trendbestätigung angewiesen ist, kann es bei schnellen Marktveränderungen zu einer Verzögerung bei der Erzeugung von Signalen kommen. Dies bedeutet, dass die Strategie möglicherweise einige frühe Trendchancen verpasst oder nur dann Signale erzeugt, wenn sich der Trend bereits umgekehrt hat.
Der Markt ist erschüttert:In einem bewegten Markt können Preisschwankungen zu häufigen Durchschnittskreuzungen und Veränderungen der DMI-Indikatoren führen. Dies kann dazu führen, dass die Strategie mehr Handelssignale erzeugt, die Handelskosten und das Rücknahmerisiko erhöht. Daher kann die Performance der Strategie in einem bewegten Markt beeinträchtigt werden.
Der Schwarze Schwan:Die Strategie basiert auf historischen Daten und statistischen Modellen und kann nicht in der Lage sein, rechtzeitig auf einige extreme Marktereignisse wie Black Swan zu reagieren. Dies kann dazu führen, dass die Strategie in diesen besonderen Fällen große Verluste erleidet.
Anpassung der dynamischen Parameter:Es kann in Erwägung gezogen werden, eine dynamische Parameteranpassungsmechanik einzuführen, die die Strategieparameter entsprechend der Volatilität und der Trendstärke des Marktes anpasst. Dies kann dazu beitragen, dass die Strategie besser an unterschiedliche Marktumgebungen angepasst wird und die Stabilität der Strategie verbessert wird.
Mehrfach bestätigt:Zusätzlich zu den Kennzahlen für den Durchschnittskurs und den DMI können andere technische Kennzahlen oder grundlegende Faktoren eingeführt werden, um die Trends weiter zu bestätigen. So können beispielsweise Kennzahlen wie Umsatz, Volatilität und Marktemotion kombiniert werden, um zuverlässigere Handelssignale zu erhalten.
Stop Loss Optimierung:Die Position des Stop-Losses kann optimiert werden, z. B. durch den Einsatz von Moving Stop, Dynamic Stop und anderen Methoden. Dies kann der Strategie helfen, die Gewinne besser zu schützen und gleichzeitig potenzielle Verluste zu begrenzen.
Positionsverwaltung:Es kann auch ein höher entwickeltes Positionsmanagement eingeführt werden, wie z. B. die Kelly-Formel, Fixed-Proportion-Investments usw. Dies hilft der Strategie, ihre Positionen dynamisch in unterschiedlichen Marktumgebungen anzupassen, die Kapitalnutzungs-Effizienz zu verbessern und die Risikokontrolle zu verbessern.
Die Optimierung des maschinellen LernensEs kann versucht werden, die Algorithmen des maschinellen Lernens mit der Strategie zu kombinieren, um die Parameterwahl und Signalgenerierung der Strategie durch das Lernen von historischen Daten und die Erkennung von Mustern zu optimieren. Dies kann der Strategie helfen, sich automatisch an Marktveränderungen anzupassen und die Anpassungsfähigkeit und Robustheit der Strategie zu verbessern.
Der Vorteil der Strategie besteht darin, die wichtigsten Trends im Markt effektiv zu identifizieren und die Signalsicherheit durch die Bestätigung mehrerer Zeiträume zu verbessern. Es bestehen jedoch auch einige Risiken, wie die Optimierung von Parametern, Trendverzögerungen, Erschütterungen und Black Swan-Ereignissen auf dem Markt. Zur weiteren Optimierung der Strategie kann die Einführung von dynamischen Parametern, Multifaktor-Bestätigung, Stop-Loss-Optimierung, Positionsmanagement und Machine-Learning-Methoden in Betracht gezogen werden.
/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Kyrie Crossover @zaytrade ", overlay=true, calc_on_every_tick=true)
// Input parameters for EMA
shortTermEMA = input.int(9, title="Short-Term EMA Period")
longTermEMA = input.int(21, title="Long-Term EMA Period")
riskPercentageEMA = input.float(1, title="Risk Percentage EMA", minval=0.1, maxval=5, step=0.1)
// Calculate EMAs
emaShort = ta.ema(close, shortTermEMA)
emaLong = ta.ema(close, longTermEMA)
// EMA Crossover Strategy
longConditionEMA = ta.crossover(emaShort, emaLong)
shortConditionEMA = ta.crossunder(emaShort, emaLong)
// Input parameters for DMI
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
// DMI Logic
dirmov(len) =>
up = ta.change(high)
down = -ta.change(low)
truerange = ta.tr
plus = fixnan(100 * ta.rma((up > down ? up : 0), len) / truerange)
minus = fixnan(100 * ta.rma((down > up ? down : 0), len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adxValue = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
[adxValue, plus, minus]
// Function to get trend and strength for a given timeframe
getTrendAndStrength(_source, _dilen, _adxlen) =>
[adxValue, up, down] = adx(_dilen, _adxlen)
var string trendIndication = ""
var string trendStrength = ""
if (up > down) or ((up > down) and (up > down) and (up > adxValue)) // Bullish condition
trendIndication := "Bullish"
trendStrength := "Strengthening"
else if (down > up) or ((down > up) and (down > up) and (down > adxValue)) // Bearish condition
trendIndication := "Bearish"
trendStrength := "Weakening"
else
trendIndication := "No Clear Trend"
trendStrength := "Sideways"
[trendIndication, trendStrength]
// Get trend and strength for selected timeframes
[tf1_trend, tf1_strength] = request.security(syminfo.tickerid, "5", getTrendAndStrength(close, dilen, adxlen))
[tf2_trend, tf2_strength] = request.security(syminfo.tickerid, "15", getTrendAndStrength(close, dilen, adxlen))
[tf3_trend, tf3_strength] = request.security(syminfo.tickerid, "30", getTrendAndStrength(close, dilen, adxlen))
[tf4_trend, tf4_strength] = request.security(syminfo.tickerid, "60", getTrendAndStrength(close, dilen, adxlen))
[current_trend, _] = getTrendAndStrength(close, dilen, adxlen)
// Define colors based on trend indication
tf1_color = tf1_trend == "Bullish" ? color.green : (tf1_trend == "Bearish" ? color.red : color.white)
tf2_color = tf2_trend == "Bullish" ? color.green : (tf2_trend == "Bearish" ? color.red : color.white)
tf3_color = tf3_trend == "Bullish" ? color.green : (tf3_trend == "Bearish" ? color.red : color.white)
tf4_color = tf4_trend == "Bullish" ? color.green : (tf4_trend == "Bearish" ? color.red : color.white)
current_color = current_trend == "Bullish" ? color.green : (current_trend == "Bearish" ? color.red : color.white)
// Create and fill the enhanced table for DMI
var table dmiTable = na
if (barstate.islast)
dmiTable := table.new(position.top_right, 6, 1)
table.cell(dmiTable, 0, 0, "DMI Metrics", bgcolor=color.new(color.black, 90), width=15, height=4, text_color=color.white)
table.cell(dmiTable, 1, 0, "5m Trend: " + tf1_trend, bgcolor=tf1_color, width=15, height=4, text_color=color.white)
table.cell(dmiTable, 2, 0, "15m Trend: " + tf2_trend, bgcolor=tf2_color, width=15, height=4, text_color=color.white)
table.cell(dmiTable, 3, 0, "30m Trend: " + tf3_trend, bgcolor=tf3_color, width=15, height=4, text_color=color.white)
table.cell(dmiTable, 4, 0, "1h Trend: " + tf4_trend, bgcolor=tf4_color, width=15, height=4, text_color=color.white)
table.cell(dmiTable, 5, 0, "Current Trend: " + current_trend, bgcolor=current_color, width=15, height=4, text_color=color.white)
// Strategy logic
if (longConditionEMA)
strategy.entry("Long", strategy.long)
if (shortConditionEMA)
strategy.entry("Short", strategy.short)