
Die Binäre Dynamometer-Synchronous-Trading-Strategie ist ein auf der technischen Analyse basierendes quantitatives Handelssystem, das die Vorteile eines relativ starken Indikators (RSI) und eines Moving Average Convergence Spread Indicators (MACD) geschickt kombiniert und sich darauf konzentriert, einen starken Aufwärtstrend in einem Markt zu erfassen. Die Strategie führt nur mehrköpfige Geschäfte durch und realisiert einen systematischen Handelsentscheidungsprozess durch die Identifizierung von Dynamometer-Breakout-Signalen und kombiniert mit einem Risikomanagementmechanismus.
Die Strategie basiert auf der Synergie zweier wichtiger technischer Indikatoren. Erstens verwendet die Strategie den RSI-Indikator, um die Geschwindigkeit und das Ausmaß der Preisänderungen zu messen, um zu beurteilen, ob der Markt überkauft oder überverkauft ist. Zweitens verwendet die MACD-Indikator, um die Veränderungen und die Stärke der Markttrends zu erkennen.
Teilnahmebedingungen:
Zusätzliche Filterbedingungen:
Bedingungen für die Teilnahme:
Die Strategie hat einen Status-Tracking-Mechanismus entwickelt, der sicherstellt, dass der Eintritt bei einem Off-Position-Zustand und der Ausgang bei einem Holding-Zustand erfolgen kann, um das Problem der Wiederholung von Signalen zu vermeiden. Diese Konstruktion ermöglicht, dass nach jedem Eintritt nur ein Ausgang erfolgt, um die Klarheit und Konsistenz der Handelslogik zu bewahren.
Synchronisierung der IndikatorenDie Kombination der Vorteile von RSI und MACD, bei denen der RSI schnell auf Preisänderungen reagiert und der MACD mittelfristige Trends bestätigt, erhöht die Signalsicherheit.
Flexible FiltermechanismenDie Strategie bietet EMA-Trendfilter und Übersell-Kontextfilter, die den Händlern die Möglichkeit geben, ihre Strategie an unterschiedliche Marktbedingungen anzupassen.
Gutes RisikomanagementEin eingebauter Stop-Loss-Mechanismus, der es dem Händler ermöglicht, die Prozentsatzparameter nach seinen Risikopräferenzen einzustellen und die Risikothek für einzelne Geschäfte effektiv zu kontrollieren.
Status ist klar: Über Statusvariablen wird die Positionshaltung verfolgt, um die Konsistenz und Logik der Handelssignale zu gewährleisten und das Problem des wiederholten Ein- oder Ausstiegs zu vermeiden.
Hohe AnpassbarkeitDie Strategie bietet mehrere anpassbare Parameter, darunter RSI-Längen, MACD-Parameter, Filterbedingungen und Risikomanagement-Parameter, die es dem Händler ermöglichen, sich an unterschiedlichen Marktbedingungen und Handelsarten zu optimieren.
Visuelle UnterstützungStrategie bietet visuelle Funktionen wie Ein-/Aus-Markierung, K-Linien-Farbgebung und Trigger-Hintergrundanzeige, die es dem Händler erleichtern, die Strategie intuitiv zu verstehen und anzupassen.
Falsche DurchbruchgefahrIn einem bewegten Markt können die RSI und MACD häufige falsche Durchbruchsignale erzeugen, die zu einer Reihe von Verlustgeschäften führen. Um dieses Risiko abzumildern, können zusätzliche Filter für die Marktumgebung, wie z. B. ein Volatilitätsindikator oder ein Trendstärkeindikator, hinzugefügt werden.
Einschränkung der einseitigen TransaktionenDie Strategie führt nur mehrere Geschäfte aus und verpasst potenzielle Short-Opportunitäten in einem Abwärtstrend. In einem umfassenden Handelssystem kann man erwägen, eine entsprechende Leerlaufstrategie hinzuzufügen oder den Handel in einem eindeutigen Abwärtstrend auszusetzen.
ParameterempfindlichkeitDie Strategie-Performance ist sehr sensibel für Parameter-Einstellungen, unterschiedliche Märkte und Zeitrahmen können unterschiedliche Kombinationen von Parametern benötigen. Es wird empfohlen, die Parameter durch Rückverfolgung unter mehreren Marktbedingungen zu optimieren und die Verwendung von Adaptive-Parameter-Methoden zu berücksichtigen.
Stop-Loss-Risiko-EinstellungZu kleine Stop-Losses können zu häufigen Triggern führen, während zu große Stop-Losses zu großen Einzelschäden führen können. Die Stop-Loss-Prozentsätze sollten an die schwankenden Eigenschaften des Zielmarkts angepasst werden, oder es sollte in Betracht gezogen werden, dynamische Stop-Loss-Methoden wie die ATR-Multiplikatoren zu verwenden.
SignalverzögerungAls Rückstandsindikatoren können die Signale des RSI und MACD auftreten, nachdem der Preis sich bereits deutlich verändert hat, was sich auf den Einstiegspreis und die Rendite auswirkt. Es kann in Kombination mit einem sensibleren Vorläuferindikator in Erwägung gezogen werden, um den Einstieg zu optimieren.
Anpassungs-ParametersystemEntwicklung eines Anpassungsmechanismus für die Anpassung der RSI- und MACD-Parameter an die aktuellen Marktbedingungen, um die Anpassung der Strategien an verschiedene Marktbedingungen zu verbessern.
Mehrfache ZeitrahmenanalyseEinführung von mehreren Zeitrahmen-Bestätigungsmechanismen, z. B. die Bestätigung der Trendrichtung in einem größeren Zeitrahmen und dann die Ausführung bestimmter Geschäfte in einem kleineren Zeitrahmen, um Falschsignale zu reduzieren und die Gewinnrate zu erhöhen.
Dynamische SchadensbegrenzungUmsatz: Umstellung von Fixed Percentage Stop auf Dynamische Stop, basierend auf ATR (Average True Range), um besser an Veränderungen in der Marktvolatilität angepasst zu sein und gleichzeitig den Preisen genügend Atemraum zu geben, um ihre Kapital zu schützen.
Optimierung der GeldverwaltungDie Einführung von Positionsmanagement-Algorithmen, die auf dem Nettowert, der Volatilität und der Gewinnquote des Kontos basieren, wie z. B. die Kelly-Formel oder das Fixed-Ratio-Risiko-Modell, um die Risikolockage für jeden Handel mit den aktuellen Konto- und Marktbedingungen zu vergleichen.
Integrierte Marktumfeldfilter: Hinzufügen von Filtern, die die Marktumgebung (Trends, Schwankungen oder Umkehrungen) erkennen, wie z. B. ADX (Durchschnittskurvenindex), Volatilitätsindikatoren oder Tools zur zyklischen Analyse, um den Handel unter den für die Strategie geeigneten Marktbedingungen auszuführen.
Hinzugefügt wird eine Null-Trading-Logik.Die Strategie wurde erweitert, um die Regeln für den Kauf und Verkauf von Fremdwährungen einzubeziehen, so dass sie bei Abwärtstrends ebenso wirksam sind und somit ein umfassendes Handelssystem aufbauen.
Die Strategie konzentriert sich auf die Erfassung von dynamischen Quantitätschancen in steigenden Trends und erhöht die Handelsqualität durch mehrere Filtermechanismen und Risikomanagement-Tools. Obwohl es inhärente Risiken wie False Breakouts und Parameter-Sensitivität gibt, hat die Strategie das Potenzial, ihre Performance in verschiedenen Marktumgebungen durch empfohlene Optimierungsrichtungen wie Anpassung an Parameter, Multi-Time-Framework-Analyse und Dynamische Risikomanagement weiter zu verbessern. Die Strategie ist besonders für Investoren geeignet, die Trends verfolgen und dynamische Quantitäten handeln möchten.
/*backtest
start: 2025-02-28 00:00:00
end: 2025-08-10 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
// Vibe coded by Andrew Grothe 2025-08-08. Adjust the TP/SL on lines 28 & 29 to fine tune the strategy
strategy("RSI + MACD Long-Only Strategy", overlay=true, pyramiding=0, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.0)
// Inputs — RSI
rsiLen = input.int(14, "RSI Length", minval=1, group="RSI")
rsiOB = input.int(70, "RSI Overbought", minval=50, maxval=100, group="RSI")
rsiOS = input.int(30, "RSI Oversold", minval=0, maxval=50, group="RSI")
rsiMid = input.int(50, "RSI Midline", minval=0, maxval=100, group="RSI")
// Inputs — MACD
fastLen = input.int(12, "MACD Fast Length", minval=1, group="MACD")
slowLen = input.int(26, "MACD Slow Length", minval=1, group="MACD")
sigLen = input.int(9, "MACD Signal Length", minval=1, group="MACD")
requireAboveZero = input.bool(false, "Require MACD > 0 (trend filter)", group="MACD")
// Inputs — Filters & Visuals
useOversoldContext = input.bool(false, "Entry must be within N bars after RSI < Oversold", group="Signals")
oversoldWindowBars = input.int(10, "N bars after oversold", minval=1, group="Signals")
useEMATrend = input.bool(false, "Only Long if price > EMA", group="Signals")
emaLen = input.int(200, "EMA Length", minval=1, group="Signals")
showMarkers = input.bool(true, "Plot Entry/Exit Markers", group="Visuals")
colorBars = input.bool(false, "Color Bars on Signals", group="Visuals")
// Inputs — Risk
// 1 hour = 2.0/1.0, 2 hour = 10.5/2.5
useTPSL = input.bool(true, "Use Take Profit / Stop Loss", group="Risk")
tpPerc = input.float(11.5, "Take Profit %", minval=0.0, step=0.1, group="Risk")
slPerc = input.float(2.5, "Stop Loss %", minval=0.0, step=0.1, group="Risk")
// Core calculations
rsi = ta.rsi(close, rsiLen)
[macd, macdSignal, macdHist] = ta.macd(close, fastLen, slowLen, sigLen)
emaTrend = ta.ema(close, emaLen)
// Conditions
macdBull = macd > macdSignal and (not requireAboveZero or macd > 0)
rsiBull = rsi > rsiMid
recentlyOversold = ta.barssince(rsi < rsiOS) <= oversoldWindowBars
trendOk = not useEMATrend or close > emaTrend
// Precompute cross events to avoid conditional execution warnings
rsiCrossUpMid = ta.crossover(rsi, rsiMid)
macdCrossUp = ta.crossover(macd, macdSignal)
rsiCrossDownMid = ta.crossunder(rsi, rsiMid)
macdCrossDown = ta.crossunder(macd, macdSignal)
// Signals (long-only)
longTrigger = (rsiCrossUpMid and macdBull) or (macdCrossUp and rsi >= rsiMid)
longEntry = longTrigger and (not useOversoldContext or recentlyOversold) and trendOk
exitSignal = rsiCrossDownMid or (macdCrossDown and macdHist <= 0)
// Stateful gating so we only get one exit per entry
var bool inLong = false
inLongPrev = barstate.isfirst ? false : inLong[1]
finalLongEntry = longEntry and not inLongPrev
finalExit = exitSignal and inLongPrev
inLong := (inLongPrev or finalLongEntry) and not finalExit
// Plots
plot(useEMATrend ? emaTrend : na, title="EMA", color=color.orange, linewidth=2)
plotshape(showMarkers and finalLongEntry, title="Long Entry", style=shape.triangleup, location=location.belowbar, color=color.lime, size=size.tiny, text="Long")
plotshape(showMarkers and finalExit, title="Exit", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, text="Exit")
barcolor(colorBars ? (finalLongEntry ? color.lime : finalExit ? color.red : na) : na)
// Debug background to visualize when raw long trigger occurs
bgcolor(longTrigger ? color.new(color.lime, 90) : na)
// Alerts
//alertcondition(finalLongEntry, title="RSI+MACD Long Entry", message="RSI+MACD Long Entry on {{ticker}} {{interval}} at {{close}}")
//alertcondition(finalExit, title="RSI+MACD Exit", message="RSI+MACD Exit on {{ticker}} {{interval}} at {{close}}")
// Strategy Orders — Long only
if finalLongEntry
strategy.entry("Long", strategy.long)
// Protective exits (TP/SL) while in position
if useTPSL and strategy.position_size > 0
longSL = strategy.position_avg_price * (1 - slPerc / 100.0)
longTP = strategy.position_avg_price * (1 + tpPerc / 100.0)
strategy.exit("Long TP/SL", from_entry="Long", stop=longSL, limit=longTP)
// Signal-based exit
if finalExit and strategy.position_size > 0
strategy.close("Long", comment="Signal Exit")