
Die Binary Moving Average Multi-Target Trading Strategie ist ein quantitatives Handelssystem, das auf einem Kurz- und Langzeit-Kreuzsignal basiert. Die Strategie nutzt die Kreuzung der 9-Zyklus- und 21-Zyklus-EMA als Einstiegssignal und setzt bis zu 10 Gewinnziele und einen Stop-Loss-Punkt ein, um Risiken zu verwalten und Gewinne zu maximieren. Die Strategie unterstützt gleichzeitig den Multi-Zweig-Trading, bei dem ein Zwei-Zweig-Trading geöffnet wird, wenn die kurzfristige EMA durch die langfristige EMA fällt, beim Untergang der kurzfristigen EMA durch die langfristige EMA, und beim Rückkreuz aussteigt.
Die Kernprinzipien der Strategie basieren auf einem Index-Moving-Average-Kreuzungssystem, das wie folgt umgesetzt wird:
Die Strategie verwendet eine systematische Risikomanagement-Methode, bei der 10% der Kontomittel bei jedem Handel standardmäßig verwendet werden, die Startkapitalhöhe auf 100.000 gesetzt wird und die Überlagerung verboten wird.
Um diese Risiken zu mindern, empfiehlt es sich, zusätzliche Filterbedingungen wie Trendstärke-Indikatoren einzuführen und die Anpassung von Stop-Loss- und Zielpositionen an die dynamische Marktvolatilität zu berücksichtigen.
Durch diese Optimierungen kann die Stabilität und Profitabilität der Strategie deutlich verbessert und die Häufigkeit von Rücknahmen und verlustreichen Geschäften verringert werden.
Die Multi-Target-Handelsstrategie ist ein klar strukturiertes, logisch einfaches, quantitatives Handelssystem, das auf klassischen EMA-Kreuzsignal basiert und mit einer Multi-Target-Profit-Management- und Stop-Loss-Einstellung unterstützt wird. Die Strategie ist für den mittelfristigen Trendhandel geeignet und funktioniert besser in klaren Trendmärkten.
Obwohl die Strategie relativ einfach gestaltet ist, enthält sie die Kernelemente der Handelsstrategie: Eintrittssignale, Ausstiegsbedingungen, Stop-Loss-Management und Gewinnziele. Die Hauptvorteile der Strategie liegen in der Klarheit der Handlung, der Leichtigkeit des Verständnisses und der Ausführung und der guten visuellen Unterstützung.
Die Strategie hat jedoch auch Einschränkungen wie die Abhängigkeit von einem einzigen Indikator, die fehlende Identifizierung des Marktumfelds und die unzureichende Flexibilität der Geldverwaltung. Die Strategie hat viel Optimierungsraum durch die Hinzufügung von Trendfiltern, die Optimierung von Stop-Loss-Mechanismen, die Realisierung von echten Gewinnserien und die Verbesserung der Geldverwaltungsmethoden.
Für den Händler kann die Strategie als Basisrahmen dienen, der individuell angepasst und optimiert werden kann, um bessere Handelsergebnisse zu erzielen, je nach individuellen Risikopräferenzen und Eigenschaften der Handelsvariante.
/*backtest
start: 2024-08-21 00:00:00
end: 2025-08-20 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_OKX","currency":"BNB_USDT","balance":5000}]
*/
//@version=5
strategy("9/21 EMA with 10 Targets + Stoploss",
overlay = true,
initial_capital = 100000,
default_qty_type = strategy.percent_of_equity,
default_qty_value = 10,
pyramiding = 0)
// === Inputs ===
emaFastLen = input.int(9, "Fast EMA Length")
emaSlowLen = input.int(21, "Slow EMA Length")
slPercent = input.float(0.5, "Stoploss %", step=0.1)
// 10 Targets
tp1Percent = input.float(0.5, "Target 1 %", step=0.1)
tp2Percent = input.float(1.0, "Target 2 %", step=0.1)
tp3Percent = input.float(1.5, "Target 3 %", step=0.1)
tp4Percent = input.float(2.0, "Target 4 %", step=0.1)
tp5Percent = input.float(2.5, "Target 5 %", step=0.1)
tp6Percent = input.float(3.0, "Target 6 %", step=0.1)
tp7Percent = input.float(3.5, "Target 7 %", step=0.1)
tp8Percent = input.float(4.0, "Target 8 %", step=0.1)
tp9Percent = input.float(4.5, "Target 9 %", step=0.1)
tp10Percent = input.float(5.0, "Target 10 %", step=0.1)
// === EMA Calculation ===
emaFast = ta.ema(close, emaFastLen)
emaSlow = ta.ema(close, emaSlowLen)
// === Entry Conditions ===
longCond = ta.crossover(emaFast, emaSlow)
shortCond = ta.crossunder(emaFast, emaSlow)
// === Entry ===
if (longCond and strategy.position_size <= 0)
strategy.entry("BUY", strategy.long)
if (shortCond and strategy.position_size >= 0)
strategy.entry("SELL", strategy.short)
// === Series Variables for Targets ===
var float tp1 = na
var float tp2 = na
var float tp3 = na
var float tp4 = na
var float tp5 = na
var float tp6 = na
var float tp7 = na
var float tp8 = na
var float tp9 = na
var float tp10 = na
var float stopLevel = na
// === Long Positions ===
if strategy.position_size > 0
stopLevel := strategy.position_avg_price * (1 - slPercent/100)
tp1 := strategy.position_avg_price * (1 + tp1Percent/100)
tp2 := strategy.position_avg_price * (1 + tp2Percent/100)
tp3 := strategy.position_avg_price * (1 + tp3Percent/100)
tp4 := strategy.position_avg_price * (1 + tp4Percent/100)
tp5 := strategy.position_avg_price * (1 + tp5Percent/100)
tp6 := strategy.position_avg_price * (1 + tp6Percent/100)
tp7 := strategy.position_avg_price * (1 + tp7Percent/100)
tp8 := strategy.position_avg_price * (1 + tp8Percent/100)
tp9 := strategy.position_avg_price * (1 + tp9Percent/100)
tp10 := strategy.position_avg_price * (1 + tp10Percent/100)
strategy.exit("Exit Long", "BUY", stop=stopLevel, limit=tp1)
// === Short Positions ===
if strategy.position_size < 0
stopLevel := strategy.position_avg_price * (1 + slPercent/100)
tp1 := strategy.position_avg_price * (1 - tp1Percent/100)
tp2 := strategy.position_avg_price * (1 - tp2Percent/100)
tp3 := strategy.position_avg_price * (1 - tp3Percent/100)
tp4 := strategy.position_avg_price * (1 - tp4Percent/100)
tp5 := strategy.position_avg_price * (1 - tp5Percent/100)
tp6 := strategy.position_avg_price * (1 - tp6Percent/100)
tp7 := strategy.position_avg_price * (1 - tp7Percent/100)
tp8 := strategy.position_avg_price * (1 - tp8Percent/100)
tp9 := strategy.position_avg_price * (1 - tp9Percent/100)
tp10 := strategy.position_avg_price * (1 - tp10Percent/100)
strategy.exit("Exit Short", "SELL", stop=stopLevel, limit=tp1)
// === Plotting ===
plot(emaFast, "EMA 9", color=color.yellow, linewidth=2)
plot(emaSlow, "EMA 21", color=color.orange, linewidth=2)
// Global plots (avoid local scope error)
plot(tp1, "TP1", color=color.new(color.green, 0))
plot(tp2, "TP2", color=color.new(color.green, 10))
plot(tp3, "TP3", color=color.new(color.green, 20))
plot(tp4, "TP4", color=color.new(color.green, 30))
plot(tp5, "TP5", color=color.new(color.green, 40))
plot(tp6, "TP6", color=color.new(color.green, 50))
plot(tp7, "TP7", color=color.new(color.green, 60))
plot(tp8, "TP8", color=color.new(color.green, 70))
plot(tp9, "TP9", color=color.new(color.green, 80))
plot(tp10, "TP10", color=color.new(color.green, 90))
plot(stopLevel, "Stoploss", color=color.red, linewidth=2)
// Entry Signals
plotshape(longCond, title="BUY Signal", style=shape.labelup, color=color.green, text="BUY")
plotshape(shortCond, title="SELL Signal", style=shape.labeldown, color=color.red, text="SELL")