
Die Strategie ist ein Trend-Tracking-System, basierend auf der Überschneidung von zwei Index-Moving Averages (EMA), kombiniert mit einem Schritt-Exit-Mechanismus, um die Handelsergebnisse zu optimieren. Die Strategie verwendet 9- und 21-Zyklus-EMA als Schnell- und Schnelllinie, um durch ihre Überschneidung Veränderungen in den Markttrends zu erkennen, während ein zweistufiges Positions-Exit-System verwendet wird, um Risiken und Erträge auszugleichen.
Die Kernlogik der Strategie basiert auf dem Kreuzungssignal von schnellen EMA ((9 Zyklen) und langsamen EMA ((21 Zyklen)). Wenn die schnelle Linie durch die langsame Linie geht, eröffnet das System eine Mehrkopfposition mit 0,02 Hand; wenn die schnelle Linie unterhalb der langsamen Linie ist, eröffnet das System eine leere Position mit 0,02 Hand. Während der Positionshaltung verwendet die Strategie einen Ausgang in zwei Phasen: Die erste Phase ist die Ausbesserung der Hälfte der Positionen, wenn der Gewinn 200 Punkte erreicht hat ((0.01 Hand); Die zweite Phase ist die Ausbesserung der verbleibenden Positionen, wenn ein umgekehrtes Kreuzungssignal auftritt.
Es handelt sich um ein vollständiges Handelssystem, das die klassische Linear-Cross-Strategie mit modernem Positionsmanagement kombiniert. Die Strategie verbessert die Profitabilität der traditionellen Linear-Cross-Strategie durch einen schrittweisen Ausstiegsmechanismus, erfordert aber immer noch die entsprechende Anpassung des Händlers an die spezifische Marktumgebung und die eigene Risikoverantwortung. Die zukünftige Optimierungsrichtung konzentriert sich hauptsächlich auf die beiden Aspekte Signalfilterung und dynamische Risikomanagement.
/*backtest
start: 2024-02-25 00:00:00
end: 2025-02-22 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("EMA Crossover with Partial Exit", overlay=true, default_qty_type=strategy.cash, default_qty_value=50)
// Define lot sizes
lotSize = 0.02 // Initial trade size
partialLot = 0.01 // Half quantity to close at 20 pips profit
profitTarget = 200 // 20 pips = 200 points (for Forex, adjust accordingly)
// Define EMA lengths
fastLength = 9
slowLength = 21
// Compute EMAs
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)
// Define crossover conditions
longEntry = ta.crossover(fastEMA, slowEMA) // Buy when 9 EMA crosses above 21 EMA
shortEntry = ta.crossunder(fastEMA, slowEMA) // Sell when 9 EMA crosses below 21 EMA
// Track trade state
var float entryPrice = na
var bool inTrade = false
var bool isLong = false
// Entry Logic (Enter with 0.02 lot size)
if (longEntry and not inTrade)
strategy.entry("Long", strategy.long, qty=lotSize)
entryPrice := close
inTrade := true
isLong := true
if (shortEntry and not inTrade)
strategy.entry("Short", strategy.short, qty=lotSize)
entryPrice := close
inTrade := true
isLong := false
// Partial Exit Logic (Close 0.01 lot after 20 pips profit)
if (isLong and inTrade and close >= entryPrice + profitTarget * syminfo.mintick)
strategy.close("Long", qty=partialLot)
if (not isLong and inTrade and close <= entryPrice - profitTarget * syminfo.mintick)
strategy.close("Short", qty=partialLot)
// Full Exit (Close remaining 0.01 lot at the next major crossover)
if (isLong and shortEntry)
strategy.close("Long") // Close remaining position
inTrade := false
if (not isLong and longEntry)
strategy.close("Short") // Close remaining position
inTrade := false
// Plot EMAs
plot(fastEMA, color=color.blue, title="9 EMA")
plot(slowEMA, color=color.red, title="21 EMA")
// Mark Buy/Sell Signals
plotshape(series=longEntry, location=location.belowbar, color=color.green, style=shape.labelup, title="BUY Signal")
plotshape(series=shortEntry, location=location.abovebar, color=color.red, style=shape.labeldown, title="SELL Signal")