
Die Doppel-Equilibrium-Kreuz-Dynamik-Trading-System ist eine dynamisch-basierte Trading-Strategie, die die klassische 8⁄21-Index-Moving-Average ((EMA) -Kreuzung nutzt, um eine Trendwende zu erkennen und ein Mehrfach-Trading-Signal zu erzeugen. Die Strategie enthält integrierte Stop-and-Loss-Parameter, die das Risiko automatisch verwalten und die Gewinne sperren können. Die Kernlogik der Strategie besteht darin, mehrere Signale zu erzeugen, wenn die 8-Zyklus-EMA nach oben über die 21-Zyklus-EMA geht.
Die Kernprinzipien der Strategie basieren auf der Überschneidung von Index-Moving Averages aus zwei verschiedenen Perioden, um die Richtung der Marktentwicklung zu bestimmen. Die Strategie wird hauptsächlich durch folgende Schlüsselkomponenten umgesetzt:
Indikatorberechnung:
shortEma = ta.ema(close, shortEmaLength)longEma = ta.ema(close, longEmaLength)Geschäftsbedingungen:
longCondition = ta.crossover(shortEma, longEma)shortCondition = ta.crossunder(shortEma, longEma)Risikomanagement:
longTakeProfit = close * (1 + takeProfitPerc / 100)longStopLoss = close * (1 - stopLossPerc / 100)shortTakeProfit = close * (1 - takeProfitPerc / 100)shortStopLoss = close * (1 + stopLossPerc / 100)Ausführung der Transaktion:
noOpenPosition = strategy.position_size == 0Diese Konzeption gewährleistet, dass die Strategie die Chancen bei Trendwechseln schnell erfasst und gleichzeitig die Sicherheit des Fonds durch vorgegebene Risikoparameter gewährleistet.
Durch die tiefgreifende Analyse des Codes hat diese Strategie folgende deutliche Vorteile:
Trends einfach und effektiv zu erkennenDie 8⁄21 EMA-Kreuzung ist eine weitgehend bewährte Methode zur Trenderkennung, die die Veränderungen der Marktdynamik effektiv erfasst.
Umfassendes RisikomanagementDie integrierte Stop-Loss-Methode schützt automatisch die Gelder und sperrt die Gewinne ein, wodurch das Risiko eines emotionalen Handels erheblich reduziert wird.
Flexible ParameterkonfigurationDer Benutzer kann die Länge der EMA-Zyklen, die Stop-Loss-Prozentsätze und die Stop-Loss-Prozentsätze an die verschiedenen Märkte und persönliche Risikopräferenzen anpassen.
Zwei-Wege-TransaktionsfähigkeitDie Strategie unterstützt sowohl Über- als auch Unternehmungen und bietet die Möglichkeit, in verschiedenen Marktumgebungen nach Chancen zu suchen.
Überschneidungen verhindernDie Strategie soll sicherstellen, dass keine neuen Geschäfte eröffnet werden, bevor ein Geschäft vollständig geschlossen ist, und vermeidet die Gefahr von Überhandel und Geldverschwendung.
Klar sichtbarDie EMA-Linien und die Handelssignalmarkierungen ermöglichen es den Händlern, den Zustand der Strategie zu verstehen.
Weit verbreitetStrategie für verschiedene Handelsarten und Zeiträume, einschließlich Kryptowährungen, Devisen, Aktien und Indizes.
Obwohl die Strategie so konzipiert ist, gibt es folgende potenzielle Risiken:
Der Horizontalmarkt schneidet.In einem bewegten Markt ohne klaren Trend können EMA-Kreuzsignale häufig auftreten, was zu mehreren Stop-Losses führt.
Die Einschränkung des Fixprozentsatzes des Stop LossesEs gibt große Unterschiede in der Volatilität zwischen verschiedenen Märkten und Zeiträumen, und ein fester prozentualer Stop-Loss ist möglicherweise nicht für alle Situationen geeignet.
Ausrutschpunkte und AusführungsrisikenEs kann nicht möglich sein, die Aufträge in der Praxis exakt zu den von der Strategie erzeugten Preisen auszuführen, insbesondere in Märkten mit geringer Liquidität.
Übermäßige Abhängigkeit von historischen DatenDie Strategieparameter basieren auf der Optimierung der historischen Daten, aber die zukünftige Marktbewegung kann sich ändern.
EinzelindikatorabhängigkeitDie Strategie beruht auf EMA-Kreuzungen ohne die Verwendung von Hilfsindikatoren zur Bestätigung des Signals, was zu einem falschen Signal führen kann.
Um diese Risiken abzumildern, wird empfohlen:
Nach der Analyse des Codes sind folgende Optimierungsmöglichkeiten möglich:
adxLength = input.int(14, title="ADX Length")
adxThreshold = input.int(25, title="ADX Threshold")
adxValue = ta.adx(high, low, close, adxLength)
isTrending = adxValue > adxThreshold
atrPeriod = input.int(14, title="ATR Period")
atrMultiplierSL = input.float(2.0, title="ATR Multiplier for Stop Loss")
atrMultiplierTP = input.float(3.0, title="ATR Multiplier for Take Profit")
atrValue = ta.atr(atrPeriod)
dynamicStopLoss = atrValue * atrMultiplierSL
dynamicTakeProfit = atrValue * atrMultiplierTP
Handelszeitfilter hinzugefügtEs ist wichtig, dass Sie nicht in den schwankenden Zeiten handeln, wenn der Markt geöffnet und geschlossen wird.
Teilweise GewinnabsperrungWenn der Handel ein gewisses Gewinnniveau erreicht, wird der Stop-Loss auf den Kostenpreis oder einen Teil des Platzes verschoben, um die Gewinne zu sperren.
Erhöhung der BestätigungDie EMA-Kreuzsignale werden in Kombination mit dem Handelsvolumen-Indikator bestätigt und nur dann ausgeführt, wenn der Handelsvolumen steigt.
volumeCondition = volume > ta.sma(volume, 20) * 1.2
validLongCondition = longCondition and volumeCondition
Diese Optimierungsrichtungen können nicht nur die Stabilität der Strategie verbessern, sondern auch an unterschiedliche Marktumgebungen anpassen, die Gesamtprofitabilität verbessern und das Risiko senken.
Die Doppel-Linien-Kreuz-Dynamik-Trading-System ist eine Handelsstrategie, die klar strukturiert ist, leicht zu verstehen und umzusetzen. Es nutzt die 8⁄21 EMA-Kreuzsignale, um Markttrendänderungen zu erfassen, und verwaltet das Risiko automatisch durch die vorgefertigte Stop-Loss-Parameter. Die Strategie ist für verschiedene Handelsvarianten und Zeiträume geeignet und funktioniert besonders gut in Trends.
Die Hauptvorteile der Strategie liegen in ihrer einfachen Logik und umfassenden Risikomanagementmechanismen, die den Handelsprozess hochgradig automatisieren und die Störung durch emotionale Faktoren verringern. Gleichzeitig wird das Risiko eines Überhandels durch die Vorbeugung von überlappenden Transaktionen vermieden.
Die Strategie kann jedoch in einem bewegten Markt herausgefordert werden und muss durch die Hinzufügung von Trendfiltern und Optimierungsmaßnahmen wie dynamische Stop-Losses verbessert werden. Darüber hinaus ist die Bestätigung von Handelsvolumen und die Optimierung der Eintrittszeit ein wirksamer Weg, um die Strategie zu verbessern.
Insgesamt ist dies eine Strategie, die Einfachheit und Effektivität in Einklang bringt und sich sowohl als Einstiegspunkt für Anfänger für den Einstieg in den automatisierten Handel als auch als Teil des Portfolios von erfahrenen Händlern eignet. Durch vernünftige Parameteranpassungen und kontinuierliche Optimierung ist die Strategie in der Lage, eine stabile Leistung unter verschiedenen Marktbedingungen zu halten.
/*backtest
start: 2024-07-14 00:00:00
end: 2025-07-12 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":200000}]
*/
//@version=5
strategy("JWs Algo", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// === INPUTS ===
shortEmaLength = input.int(8, title="Short EMA Length")
longEmaLength = input.int(21, title="Long EMA Length")
takeProfitPerc = input.float(2.0, title="Take Profit (%)", step=0.1)
stopLossPerc = input.float(1.0, title="Stop Loss (%)", step=0.1)
// === INDICATORS ===
shortEma = ta.ema(close, shortEmaLength)
longEma = ta.ema(close, longEmaLength)
// === CONDITIONS ===
longCondition = ta.crossover(shortEma, longEma)
shortCondition = ta.crossunder(shortEma, longEma)
// === PLOTTING ===
plot(shortEma, title="8 EMA", color=color.orange)
plot(longEma, title="21 EMA", color=color.blue)
// === STRATEGY EXECUTION ===
// Convert percentage inputs into price levels
longTakeProfit = close * (1 + takeProfitPerc / 100)
longStopLoss = close * (1 - stopLossPerc / 100)
shortTakeProfit = close * (1 - takeProfitPerc / 100)
shortStopLoss = close * (1 + stopLossPerc / 100)
// === CHECK FOR OPEN POSITION ===
noOpenPosition = strategy.position_size == 0
if (longCondition and noOpenPosition)
strategy.entry("Long", strategy.long)
strategy.exit("Long TP/SL", from_entry="Long", limit=longTakeProfit, stop=longStopLoss)
if (shortCondition and noOpenPosition)
strategy.entry("Short", strategy.short)
strategy.exit("Short TP/SL", from_entry="Short", limit=shortTakeProfit, stop=shortStopLoss)
// === SIGNAL MARKERS ===
plotshape(longCondition and noOpenPosition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(shortCondition and noOpenPosition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)