
Die Strategie ist ein Trend-Tracking-System, basierend auf einer doppelten Gleichgewicht-Kreuzung, um Markttrends durch die Kreuzung von kurz- und langfristigen Moving Averages zu erfassen und das Handelsrisiko mit einem Risiko-Gewinn-Verhältnis von 1:3 zu verwalten. Die Strategie verwendet feste Stop-Loss- und Gewinnziele und kombiniert mit einem Moving-Loss-Mechanismus, um Gewinne zu schützen.
Die Strategie verwendet den 74-Zyklus-Kurz- und den 70-Zyklus-Lang-SMA als Hauptindikator. Wenn der Kurz- und der Lang-Zyklus-Moving Average den langfristigen Durchschnitt aufwärts überschreitet, wird ein Multi-Signal erzeugt. Wenn der Kurz- und der Lang-Zyklus-Moving Average nach unten überschreitet, wird ein Shutdown-Signal erzeugt.
Es handelt sich um eine strukturierte, logisch eindeutige Trendverfolgungsstrategie. Die Strategie wird durch die gleichmäßige Kreuzung von Trends und die Anwendung strenger Risikomanagement- und Positionskontrollen für den mittleren und langen Handel geeignet. Obwohl es inhärente Mängel wie ein Gleichgewichtsrückstand gibt, wird die Optimierungsrichtung durch die Empfehlung, insbesondere die Einführung von dynamischen Parameteranpassungen und Marktumfeldfilterungen, die Stabilität und Profitabilität der Strategie weiter verbessern.
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-17 00:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bitcoin Strategy by Jag", overlay=true)
// Input Parameters
shortSMALength = input.int(74, title="Short SMA Length")
longSMALength = input.int(70, title="Long SMA Length")
trailStopOffset = input.float(353, title="Trailing Stop Offset (USD)") // Trailing Stop Loss Offset in USD
tradeSize = input.float(1, title="Trade Size")
// Automatically set Take Profit as 3 times Stop Loss
fixedTakeProfit = trailStopOffset * 3
// Backtesting Date Range
startDate = timestamp(2025, 02,13, 0, 0)
endDate = timestamp(2025, 03, 31, 23, 59)
withinDateRange = true
// Indicators
shortSMA = ta.sma(close, shortSMALength)
longSMA = ta.sma(close, longSMALength)
// Crossover Conditions
longCondition = withinDateRange and ta.crossover(shortSMA, longSMA)
shortCondition = withinDateRange and ta.crossunder(shortSMA, longSMA)
// Entry Logic
if (strategy.position_size == 0) // Only allow new trades if no position is open
if (longCondition)
strategy.entry("Long", strategy.long, tradeSize)
if (shortCondition)
strategy.entry("Short", strategy.short, tradeSize)
// Exit Logic for Long Position
if (strategy.position_size > 0)
strategy.exit("Long exit", "Long", stop=strategy.position_avg_price - trailStopOffset, limit=strategy.position_avg_price + fixedTakeProfit) // Using stop and limit
// Exit Logic for Short Position
if (strategy.position_size < 0)
strategy.exit("Short Exit", "Short", stop=strategy.position_avg_price + trailStopOffset, limit=strategy.position_avg_price - fixedTakeProfit) // Using stop and limit
// Plot Moving Averages
plot(shortSMA, color=color.blue, title="Short SMA")
plot(longSMA, color=color.black, title="Long SMA")
// Visual Signals
plotshape(series=longCondition and strategy.position_size == 0, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=shortCondition and strategy.position_size == 0, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)