
Eine Multi-Indicator-Konsens-Trading-Strategie ist ein quantitatives Trading-System, das drei verschiedene technische Indikatoren kombiniert, um ein Handelssignal durch gegenseitige Verifizierung zwischen den Indikatoren zu bestätigen. Die Strategie integriert einen liquiditätsgewichteten Supertrend (LWST), ein Trendsignal-System und einen verstärkten Wellen-Trend-Oszillator (WT), der nur dann ein Kauf- oder Verkaufsaktion ausführt, wenn mindestens zwei Indikatoren ein Signal in die gleiche Richtung geben. Diese Konsens-Strategie erhöht die Signalzuverlässigkeit erheblich und reduziert die Verluste durch False-Breakouts.
Die Kernprinzipien der Multi-Indicator-Konsens-Trading-Strategie bestehen darin, die Richtung des Handels durch eine mehrdimensionale Analyse der Marktsituation zu bestätigen:
Liquiditätsgewichtung Supertrend (LWST)Der Indikator kombiniert die herkömmliche Supertrend-Anzeige mit einem Verkehrsgewicht, um die Bandbreite in den hochverkehrsreichen Gebieten empfindlicher zu machen. Die Berechnungsmethode umfasst:
TrendsignalsystemeDer Markttrend wird mit Hilfe der Doppel-EMA-Systeme ermittelt. Die Markttrendstärke wird durch den Vergleich der prozentualen Differenz zwischen dem schnellen und dem langsamen Moving Average ermittelt. Wenn der schnellen EMA den festgelegten Schwellenwert überschreitet, wird ein Mehrkopfsignal erzeugt; umgekehrt wird ein Hohlkopfsignal erzeugt.
Erweiterte Wellen-Trend-OszillatorDer Schwankungswert wird auf der Grundlage der Abweichung des Preises von seinem Gleitmittelwert berechnet, um einen Überkauf zu erkennen. Der Indikator erzeugt die Signale durch folgende Schritte:
Sympathie-Signal-MechanismusStrategie: Der Handel wird nur ausgeführt, wenn mindestens zwei Indikatoren übereinstimmen. Dies wird durch Berechnung der Anzahl der mehrköpfigen Indikatoren erreicht (in der Spanne von -3) und erzeugt ein Kaufsignal, wenn der Wert größer als 2 und kleiner als 2 ist.
RisikomanagementDer Stop-Loss (Standard: 2%) und der Stop-Loss (Standard: 4%) für jeden Handel basieren auf dem Einstiegspreis und werden automatisch bei Erfüllung einer der Bedingungen beendet.
Signalfilter verstärktDie Einführung von mehreren Indikatoren erfordert eine Konsensverhandlung, wodurch die möglichen Fehlsignale eines einzelnen Indikators erheblich reduziert und die Genauigkeit der Transaktionen erhöht wird.
Anpassung an unterschiedliche MarktbedingungenDie drei Indikatoren konzentrieren sich auf verschiedene Merkmale des Marktes (Trends, Dynamik, Volatilität), so dass die Strategie in verschiedenen Marktumgebungen wirksam bleibt.
Liquiditätssensible AnpassungDie Strategie wird so angepasst, dass sie die Trendänderungen in den hoch- und in den niedrig-liquiditätsorientierten Regionen schneller erfasst und in den weniger liquiditätsorientierten Regionen eher konservativ ist.
Eingebettete RisikomanagementDie vorgegebenen Stop-Loss- und Stop-Stop-Mechanismen bieten eine eindeutige Risiko-Rendite für jeden Handel und halten das Risiko für einen einzelnen Handel in einem akzeptablen Bereich.
Intuitive Visualisierungs-ToolsStrategie: Die Strategie bietet eine Echtzeit-Signaltabelle und Graphik, die Händlern hilft, schnell über den aktuellen Marktzustand und die Signale der einzelnen Indikatoren zu erfahren.
FinanzierungsintegrationSmart Money Management: Vermeiden Sie übermäßige Risiken, indem Sie die Positionsgröße auf Basis der Konto-Eigenschaften festlegen.
ParameterempfindlichkeitStrategie: Die Verwendung von mehreren einstellbaren Parametern, bei denen eine falsche Parameter-Einstellung zu einer Überoptimierung oder zu einer Fehlsignalisierung führen kann. Lösung: Eine umfassende Parameter-Sensitivitätsanalyse durchführen und eine Kombination von Parametern auswählen, die unter mehreren Marktbedingungen stabil sind.
SignalverzögerungDie Strategie kann anfangs einen Teil des Trends verpassen, da sie Moving Averages und mehrere Indikatoren verwendet. Lösung: Es kann in Betracht gezogen werden, verschiedene Kombinationen von Parametern für verschiedene Zeiträume zu setzen oder einen sensibleren kurzfristigen Indikator hinzuzufügen.
Der Horizontalmarkt wirkt nicht gutLösung: Fügen Sie einen Filter hinzu, der speziell für den Markt identifiziert wird, um den Handel zu pausieren, wenn er identifiziert wird, oder wechseln Sie zu einer Strategie, die speziell für den Markt entwickelt wurde.
Das Risiko eines festen Stop-LossLösungen: Anpassung der Stop-Distance auf Basis des ATR oder der historischen Volatilität.
VermögensverwaltungsrisikenLösung: Positiongröße entsprechend der Marktlage und der Dynamik der Signalstärke anpassen und eine dezentrale Handelsstrategie implementieren.
Anpassung der dynamischen Parameter:
Marktumfeldfilter hinzufügen:
Optimierung der Stopp-/Verlustmechanismen:
Signalstärken:
Zeitfilter:
Die Multi-Indicator-Konsens-Trading-Strategie erzeugt ein robustes Trading-System durch die Integration von liquiditätsgewichteten Supertrends, Trendsignal-Systemen und erweiterten Wellen-Trend-Oszillatoren. Ihr Kernvorteil liegt darin, dass die Multi-Indicator-Konsens-Strategie die Signalzuverlässigkeit erheblich erhöht, während die liquiditätsgewichtete Komponente der Strategie eine erhöhte Sensibilität für die Markttiefe verleiht.
Trotzdem bleibt Raum für Optimierungen in der Strategie, insbesondere in Bezug auf die Anpassungsfähigkeit der Parameter, die Erkennung des Marktzustands und die dynamische Stop-Loss-Stopp. Durch die Umsetzung der empfohlenen Optimierungsrichtungen, insbesondere durch die Einrichtung von Filtern für die Marktumgebung und einer Gradation der Signalstärke, kann die Strategie die Anpassungsfähigkeit und Stabilität unter verschiedenen Marktbedingungen weiter verbessern.
Insgesamt ist es ein gut gestaltetes quantitatives Handelssystem, das für erfahrene Händler geeignet ist, um vor dem Einstieg in den Markt Rückmeldung und Parameteroptimierung durchzuführen. Die modulare Gestaltung der Strategie macht es auch einfach, sie nach individuellen Bedürfnissen zu ändern und zu erweitern.
/*backtest
start: 2024-03-25 00:00:00
end: 2025-03-24 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Multi-Indicator Consensus Strategy", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// =================== Input Parameters ===================
// Liquidity Weighted Supertrend
lwst_period = input.int(10, "LWST Period", minval=1, tooltip="Period for ATR calculation")
lwst_multiplier = input.float(3.0, "LWST Multiplier", minval=0.1, tooltip="Multiplier for ATR bands")
lwst_length = input.int(20, "Volume SMA Length", minval=1, tooltip="Length for volume SMA")
// Trend Signals
trend_length = input.int(14, "Trend Length", minval=1, tooltip="Length for EMA calculation")
trend_threshold = input.float(0.5, "Trend Threshold", minval=0.1, tooltip="Percentage threshold for trend signals")
// Enhanced Wavetrend
wt_channel_length = input.int(9, "WT Channel Length", minval=1, tooltip="Smoothing period for initial calculations")
wt_average_length = input.int(12, "WT Average Length", minval=1, tooltip="Smoothing period for final signal")
wt_ma_length = input.int(3, "WT MA Length", minval=1, tooltip="Moving average length for signal line")
wt_overbought = input.float(53, "WT Overbought", minval=0, tooltip="Level to identify overbought conditions")
wt_oversold = input.float(-53, "WT Oversold", minval=-100, tooltip="Level to identify oversold conditions")
// Risk Management
sl_percent = input.float(2.0, "Stop Loss %", minval=0.1, tooltip="Stop loss percentage from entry")
tp_percent = input.float(4.0, "Take Profit %", minval=0.1, tooltip="Take profit percentage from entry")
// =================== Indicator 1: Liquidity Weighted Supertrend ===================
// Volume-weighted component for dynamic sensitivity
vol_sma = ta.sma(volume, lwst_length)
vol_weight = volume / vol_sma
// ATR-based bands with volume weighting
atr = ta.atr(lwst_period)
upperBand = hl2 + lwst_multiplier * atr * vol_weight
lowerBand = hl2 - lwst_multiplier * atr * vol_weight
// Trend determination based on price action
var float lwst_trend = 0.0
lwst_trend := close > lwst_trend[1] ? 1 : close < lwst_trend[1] ? -1 : lwst_trend[1]
// =================== Indicator 2: Trend Signals ===================
// Dual EMA system for trend detection
fast_ema = ta.ema(close, trend_length)
slow_ema = ta.ema(close, trend_length * 2)
trend_diff = (fast_ema - slow_ema) / slow_ema * 100
trend_signal = trend_diff > trend_threshold ? 1 : trend_diff < -trend_threshold ? -1 : 0
// =================== Indicator 3: Enhanced Wavetrend ===================
// Calculate Wavetrend components
ap = hlc3 // Typical price
esa = ta.ema(ap, wt_channel_length) // Smoothed price
d = ta.ema(math.abs(ap - esa), wt_channel_length) // Average volatility
ci = (ap - esa) / (0.015 * d) // Base oscillator
tci = ta.ema(ci, wt_average_length) // Smoothed oscillator
// Generate main and signal lines
wt1 = tci
wt2 = ta.sma(wt1, wt_ma_length)
// Generate Wavetrend Signal based on overbought/oversold conditions
wt_signal = 0
wt_signal := wt1 > wt_overbought and wt2 > wt_overbought ? -1 :
wt1 < wt_oversold and wt2 < wt_oversold ? 1 :
wt_signal[1]
// =================== Consensus Signal Generation ===================
// Count bullish signals (1 point for each bullish indicator)
var int consensus_count = 0
consensus_count := (lwst_trend == 1 ? 1 : 0) +
(trend_signal == 1 ? 1 : 0) +
(wt_signal == 1 ? 1 : 0)
// Generate trading signals when majority (2+ indicators) agree
bool buy_signal = consensus_count >= 2
bool sell_signal = consensus_count <= -2
// =================== Trade Execution ===================
// Long position entry and exit with risk management
if (buy_signal and strategy.position_size <= 0)
strategy.entry("Long", strategy.long)
strategy.exit("Long TP/SL", "Long",
profit = close * tp_percent / 100,
loss = close * sl_percent / 100)
// Short position entry and exit with risk management
if (sell_signal and strategy.position_size >= 0)
strategy.entry("Short", strategy.short)
strategy.exit("Short TP/SL", "Short",
profit = close * tp_percent / 100,
loss = close * sl_percent / 100)
// =================== Visualization ===================
// Signal markers for entry points
plotshape(buy_signal ? low : na, "Buy Signal", shape.triangleup, location.belowbar, color.green, size=size.small)
plotshape(sell_signal ? high : na, "Sell Signal", shape.triangledown, location.abovebar, color.red, size=size.small)
// Indicator lines
plot(wt1, "Wavetrend 1", color.blue, linewidth=1)
plot(wt2, "Wavetrend 2", color.orange, linewidth=1)
plot(wt_overbought, "Overbought", color.red, linewidth=1)
plot(wt_oversold, "Oversold", color.green, linewidth=1)
plot(fast_ema, "Fast EMA", color.yellow, linewidth=1)
plot(slow_ema, "Slow EMA", color.white, linewidth=1)
plot(lwst_trend == 1 ? upperBand : na, "Upper Band", color.green, linewidth=2)
plot(lwst_trend == -1 ? lowerBand : na, "Lower Band", color.red, linewidth=2)
// =================== Information Table ===================
// Real-time display of indicator signals
var table info = table.new(position.top_right, 2, 4)
table.cell(info, 0, 0, "Indicator", bgcolor=color.gray, text_color=color.white)
table.cell(info, 1, 0, "Signal", bgcolor=color.gray, text_color=color.white)
table.cell(info, 0, 1, "LWST", text_color=color.white)
table.cell(info, 1, 1, str.tostring(lwst_trend), text_color=lwst_trend == 1 ? color.green : color.red)
table.cell(info, 0, 2, "Trend", text_color=color.white)
table.cell(info, 1, 2, str.tostring(trend_signal), text_color=trend_signal == 1 ? color.green : color.red)
table.cell(info, 0, 3, "Wavetrend", text_color=color.white)
table.cell(info, 1, 3, str.tostring(wt_signal), text_color=wt_signal == 1 ? color.green : color.red)