
Die Strategie nutzt die Index Moving Average Crossover Intelligente Spin-Chain Stop-Tracking-System ist eine quantitative Trading-Strategie, basierend auf der technischen Analyse und fine-tune-Fundmanagement. Die Strategie nutzt die Index Moving Average (EMA) Crossover-Signal Identifizierung potenziellen Aufwärtstrends, in Verbindung mit der Dollar-Kosten-Durchschnitts-Gesetz (DCA) für die Intelligente Gewichtung, und durch die doppelte Tracking Stop-Loss-Mechanismus zu schützen, die Gewinne.
Die Strategie basiert auf mehreren wichtigen Komponenten:
Trend-Erkennung: Die Kreuzung der schnellen EMA (Standard 9-Zyklus) und der langsamen EMA (Standard 21-Zyklus) wird verwendet, um einen potenziellen Aufwärtstrend zu erkennen. Wenn die schnellen EMA nach oben über die langsamen EMA geht, erzeugt das System ein Kaufsignal.
Basis- und SicherheitsbestellungenDie Strategie verwendet eine stratifizierte Kapitalverwaltung, beginnend mit einem Basis-Auftrag (standardmäßig \( 1000) und mit zwei zusätzlichen Sicherheitsaufträgen (standardmäßig \) 1250 für SO1 und $ 1750 für SO2) bei Preisrückgängen.
Dynamische AbstandsberechnungDer Triggerpreis für einen Sicherheitsbefehl kann auf zwei Arten berechnet werden:
Doppelverfolgungsschutz:
RücktrittsbedingungenDie Strategie besteht darin, in folgenden Situationen zu platzieren:
Abkühlungszeit- und DatumsfilterDie Strategie beinhaltet eine Abkühlzeit nach der Basisbestellung (default 4 Stunden) und einen optionalen Datumsfilter, um die Rückmessung oder die Ausführung auf einen bestimmten Zeitraum zu beschränken.
Wenn wir den Code der Strategie genauer analysieren, können wir folgende Hauptvorteile feststellen:
AnpassungsfähigkeitsmanagementDie Strategie nutzt die Dollar-Kosten-Einheit in Kombination mit dynamischen Sicherheitsaufträgen, um die Positionen automatisch an die Marktbedingungen anzupassen. Diese Methode ist besonders effektiv in schwindelerregenden Märkten und kann den durchschnittlichen Einstiegspreis senken und die potenziellen Gewinne erhöhen.
Positionsanpassungen basierend auf SchwankungenDie Strategie kann die Aufnahmeintervalle automatisch an die aktuellen Marktschwankungen anpassen, indem sie die Position der sicheren Bestellungen mit der ATR berechnet.
Doppelte GewinnschutzDie doppelte Tracking-Stop-System bietet innovative Risikomanagement, Standard-Tracking-Stop schützt den Großteil der Gelder, während der Profit-Lock-Mechanismus aktiviert wird, wenn ein bestimmtes Gewinnziel erreicht wird, um die erzielten Gewinne in einem engeren Prozentsatz zu schützen.
Vollständig anpassbarAlle wichtigen Parameter (EMA-Länge, Auftragsgröße, Tracking Stop-Loss-Prozentsatz, Sicherheits-Order-Intervall) können an die Risikopräferenzen und die Marktbedingungen des Traders angepasst werden.
Integrierte FrühwarnsystemeDie Strategie beinhaltet formatierte Vorwarnbedingungen, die mit einer Drittanbieter-Automatisierungsplattform wie 3Commas integriert werden können, um vollautomatisierte Transaktionen zu ermöglichen.
Transparente EinstellungsdatenDie Datenbank enthält detaillierte Formulierungen, die wichtige Handelsindikatoren und -zustände anzeigen, um die Überwachung und Strategieoptimierung in Echtzeit zu erleichtern.
Obwohl diese Strategie viele Vorteile hat, gibt es folgende potenzielle Risiken:
Die Lösung: Anpassung der Tracking-Stopp-Prozentsätze und des Sicherheits-Order-Intervalls an die spezifischen Handelsarten und Zeitrahmen; Berücksichtigung des Hinzufügens eines globalen Stopps als zusätzliche Schutzschicht.
Die Lösung: Umfangreiche Rückmeldungen und Optimierungen für bestimmte Handelsarten und Marktbedingungen; Implementierung eines Anpassungsparameter-Anpassungsmechanismus.
*Die Lösung*Erwägen Sie die Implementierung flexiblerer Sicherheitsauftrags-Triggermechanismen, wie z. B. eine zeitbasierte Zwangsvollstreckung oder die Anpassung der Intervalle an bestimmte Marktbedingungen.
*Die Lösung*Erhöhung der Abkühlzeit, um die Häufigkeit der Transaktionen zu verringern.
*Die Lösung*Erwägen Sie die Integration eines grundlegenden Filters oder eines Risikostimulans; Hinzufügen eines cross-market relevance checks als Bestätigungssignal.
Basierend auf einer eingehenden Analyse des Strategie-Codes sind hier einige mögliche Optimierungsmöglichkeiten:
Anpassung der AnpassungsparameterEin Mechanismus zur automatischen Anpassung der EMA-Länge und der ATR-Multiplikatoren basierend auf der Marktvolatilität oder der Transaktionsmenge. Zum Beispiel die Verwendung von längeren EMAs und größeren ATR-Multiplikatoren in hochvolatilen Umgebungen und die Verwendung von kürzeren EMAs und kleineren ATR-Multiplikatoren in niedrigen Umgebungen. Dies erhöht die Anpassungsfähigkeit der Strategie unter verschiedenen Marktbedingungen.
Mehrfache BestätigungZusätzliche Bestätigungsindikatoren wie der Relative Strength Index (RSI), der Transaktionsmenge oder der Brin-Band können hinzugefügt werden, um falsche Signale zu reduzieren. Filter können realisiert werden, die mehrere technische Indikatoren zur gleichzeitigen Bestätigung von eingehenden Signalen erfordern, um die Signalqualität zu verbessern.
Dynamische MittelzuweisungAnpassung der Auftragsgröße an die Marktsituation und die historische Volatilität. Zum Beispiel Erhöhung der Basis-Auftragsgröße in einer Phase des Marktes, in der die Volatilität geringer ist oder in der es historisch wahrscheinlicher ist, zu steigen, während sie in einer Umgebung mit hohem Risiko reduziert wird.
Intelligente AusstiegsstrategienDie Einführung eines Teilergebnismechanismus, der es erlaubt, schrittweise an verschiedenen Gewinnniveaus auszutreten, anstatt einmalig zu platzieren. Dies kann erreicht werden, indem mehrere Gewinnziele und entsprechende Auszugsprozentsätze festgelegt werden, um die Rendite-Risiko-Verhältnis zu optimieren.
Integration der EmotionsindikatorenDas Hinzufügen von Marktstimmungsanalysen, wie z. B. dem Fear and Greed Index oder der Analyse von Handelsvolumen, als zusätzliche Filter für Ein- und Ausgänge. Dies hilft der Strategie, unnötige Geschäfte in Zeiten extremer Marktstimmung zu vermeiden.
Risikoverwaltung: Implementieren Sie die Funktion, die maximale Risikobereitschaft (die Summe aller möglichen Sicherheitsaufträge) dynamisch zu berechnen, und setzen Sie eine maximale Risikogrenze, die akzeptabel ist. Dies wird sicherstellen, dass die Strategie zu keinem Zeitpunkt zu viel Geld für einen einzelnen Handel ausgesetzt ist.
Das Index Moving Average Crossover Intelligent Fixed-Price-Chain Stop-Tracking-System ist eine gut konzipierte quantitative Handelsstrategie, die Trenddetektion, stratifizierte Einlagerung und fortschrittliche Stop-Loss-Management kombiniert. Seine Kernvorteile liegen in der Fähigkeit, sich an Marktfluktuationen anzupassen, dem intelligenten Kapitalmanagement und dem Dual-Level-Profit-Protection-System. Die Strategie ist besonders geeignet für ein marktübliches Umfeld mit mittlerer Volatilität, in dem Trends ausreichend Beständigkeit und Richtung haben.
Durch geeignete Parameteroptimierungen und Empfehlungsverstärkungen kann die Strategie ihre Leistung und Stabilität weiter verbessern. Insbesondere die Anpassung der adaptiven Parameter und die Mehrfachbestätigung der Signale können die Einstiegsqualität erheblich verbessern, während die dynamische Kapitalverteilung und die intelligente Ausstiegsstrategie die Risiko-Rendite-Eigenschaften optimieren können.
Letztendlich repräsentiert diese Strategie eine ausgewogene, quantitative Handelsmethode, die sich auf die Erhaltung und Konsistenz von Geldern konzentriert, anstatt auf die Maximierung der Gewinne bei jedem Handel. Sie bietet Händlern einen starken Rahmen, der auf individuelle Risikopräferenzen und Marktbedingungen zugeschnitten werden kann, um potenziell langfristig nachhaltige Handelsergebnisse zu erzielen.
/*backtest
start: 2025-04-15 00:00:00
end: 2025-07-13 19:30:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":200000}]
*/
//@version=5
strategy(
title="DCA + Dual Trailing Strategy",
overlay=true
)
// --- Trend ---
fastMALen = input.int(9, title="Fast EMA Length")
slowMALen = input.int(21, title="Slow EMA Length")
// --- Trailing Stops ---
trailStopPerc = input.float(8.0, title="Standard Trailing Stop (%)", minval=0.1) / 100
lockInThreshold = input.float(2.5, title="Profit Lock-In Trigger (%)", minval=0.1) / 100
lockInTrailPct = input.float(1.5, title="Lock-In Trail (%) after Trigger", minval=0.1) / 100
// --- Safety Orders (SO) ---
useATRSpacing = input.bool(true, title="Use ATR-Based Spacing?")
atrLength = input.int(14, title="ATR Length", minval=1)
atrSo1Multiplier = input.float(1.2, title="ATR SO1 Multiplier", minval=0.1)
atrSo2Multiplier = input.float(2.5, title="ATR SO2 Multiplier", minval=0.1)
// --- Fallback SO Spacing (if not using ATR) ---
fallbackSo1Perc = input.float(4.0, title="Fallback SO1 Drop (%) ", minval=0.1) / 100
fallbackSo2Perc = input.float(8.0, title="Fallback SO2 Drop (%) ", minval=0.1) / 100
// --- Entry Cooldown ---
cooldownBars = input.int(4, "Cooldown Bars After Base Entry", minval=0)
// --- Order Sizes in USD ---
baseUsd = input.float(10000.0, title="Base Order Size (USD)", minval=1.0)
so1Usd = input.float(12500.0, title="Safety Order 1 Size (USD)", minval=1.0)
so2Usd = input.float(17500.0, title="Safety Order 2 Size (USD)", minval=1.0)
// 2) CALCULATIONS
// --- Trend & Reversal Detection ---
fastMA = ta.ema(close, fastMALen)
slowMA = ta.ema(close, slowMALen)
trendUp = ta.crossover(fastMA, slowMA)
trendDown = ta.crossunder(fastMA, slowMA)
// --- ATR Value ---
atrValue = ta.atr(atrLength)
// 3) BASE ENTRY LOGIC
// Base Buy Signal: EMA crossover
baseBuySignal = trendUp
var int lastBuyBar = na // Tracks the bar index of the last base entry
inCooldown = not na(lastBuyBar) and (bar_index - lastBuyBar < cooldownBars)
var float baseEntryPrice = na // Stores the price of the initial base entry for SO calculations
// --- Execute Base Entry ---
if baseBuySignal and strategy.position_size == 0 and not inCooldown
baseQty = baseUsd / close // Calculate quantity based on USD
strategy.order("Base Order", strategy.long, qty=baseQty, comment="Base Entry")
baseEntryPrice := close
lastBuyBar := bar_index
// 4) SAFETY ORDERS LOGIC
// --- Calculate SO Trigger Prices ---
float so1TriggerPrice = na
float so2TriggerPrice = na
if strategy.position_size > 0 // Only calculate if a base order has been placed
so1TriggerPrice := useATRSpacing ?
(baseEntryPrice - atrValue * atrSo1Multiplier) :
(baseEntryPrice * (1 - fallbackSo1Perc))
so2TriggerPrice := useATRSpacing ?
(baseEntryPrice - atrValue * atrSo2Multiplier) :
(baseEntryPrice * (1 - fallbackSo2Perc))
// --- Conditions for SO Execution ---
// Added 'inDateRange' check
// Ensure base order exists, price trigger hit, and the specific SO hasn't filled yet
bool so1Condition = strategy.position_size > 0 and close <= so1TriggerPrice and strategy.opentrades == 1
bool so2Condition = strategy.position_size > 0 and close <= so2TriggerPrice and strategy.opentrades == 2
// --- Execute SO1 ---
if so1Condition
so1Qty = so1Usd / close // Calculate quantity based on USD
strategy.order("Safety Order 1", strategy.long, qty=so1Qty, comment="SO1")
// --- Execute SO2 ---
if so2Condition
so2Qty = so2Usd / close // Calculate quantity based on USD
strategy.order("Safety Order 2", strategy.long, qty=so2Qty, comment="SO2")
// 5) AVERAGE ENTRY PRICE
// Use the built-in variable for the average price of the open position
avgEntryPrice = strategy.position_avg_price
// 6) DUAL TRAILING STOP LOGIC
// Variables to track trailing stop levels and states
var float highestSinceEntry = na
var float trailStopPrice = na
var bool stopHitNormal = false
var bool lockInTriggered = false
var float lockInPeak = na
var float lockInStopPrice = na
var bool stopHitLockIn = false
// --- Update Trailing Logic when in a Position ---
if strategy.position_size > 0
// --- Standard Trail ---
highestSinceEntry := na(highestSinceEntry) ? close : math.max(highestSinceEntry, close)
trailStopPrice := highestSinceEntry * (1 - trailStopPerc)
stopHitNormal := close < trailStopPrice
// --- Lock-In Trail ---
if not lockInTriggered and close >= avgEntryPrice * (1 + lockInThreshold)
lockInTriggered := true
lockInPeak := close
if lockInTriggered
lockInPeak := math.max(lockInPeak, close)
lockInStopPrice := lockInPeak * (1 - lockInTrailPct)
stopHitLockIn := close < lockInStopPrice
else
stopHitLockIn := false
lockInStopPrice := na
// --- Reset Variables when Flat ---
else
highestSinceEntry := na
trailStopPrice := na
stopHitNormal := false
lockInTriggered := false
lockInPeak := na
lockInStopPrice := na
stopHitLockIn := false
// lastBuyBar is intentionally NOT reset here, cooldown depends on it
// 7) EXIT CONDITIONS
// Added 'inDateRange' check
// Exit if either trailing stop is hit OR if the trend reverses downward
exitCondition = (stopHitNormal or stopHitLockIn or trendDown) and strategy.position_size > 0
if exitCondition
strategy.close_all(comment="Exit: SL / LockIn / TrendDown")
// 9) PLOTS & DEBUG TABLE
// --- Plot MAs ---
plot(fastMA, color=color.new(color.green, 0), title="Fast EMA", linewidth=2)
plot(slowMA, color=color.new(color.red, 0), title="Slow EMA", linewidth=2)
// --- Plot Trailing Stops ---
plot(strategy.position_size > 0 ? trailStopPrice : na, color=color.new(color.orange, 0), title="Standard Trailing Stop", style=plot.style_linebr, linewidth=2)
plot(lockInTriggered ? lockInStopPrice : na, color=color.new(color.fuchsia, 0), title="Lock-In Trailing Stop", style=plot.style_linebr, linewidth=2)